From 26fb9a6b9d2bde821778e28846bb32cc19cac0bd Mon Sep 17 00:00:00 2001 From: netsecsp Date: Mon, 11 Nov 2024 17:09:27 +0800 Subject: [PATCH] 1.8.0-20241111 --- ChangeLog | 2 +- README.md | 10 +- client/3rd/bin/asyncore.dll | Bin 514048 -> 514560 bytes client/3rd/bin/asynfile.dll | Bin 157184 -> 157184 bytes client/3rd/bin/asynsock.dll | Bin 297472 -> 296960 bytes client/3rd/bin/crashexplorer.dll | Bin 141824 -> 141824 bytes client/3rd/bin/dns.dll | Bin 166912 -> 166912 bytes client/3rd/bin/ftp.dll | Bin 148480 -> 148480 bytes client/3rd/bin/http.dll | Bin 155136 -> 155136 bytes client/3rd/bin/proxy.dll | Bin 193536 -> 193536 bytes client/3rd/bin/ssl.dll | Bin 136192 -> 136704 bytes client/3rd/bin/x64/asyncore.dll | Bin 615424 -> 615424 bytes client/3rd/bin/x64/asynfile.dll | Bin 197632 -> 197632 bytes client/3rd/bin/x64/asynsock.dll | Bin 382976 -> 382976 bytes client/3rd/bin/x64/crashexplorer.dll | Bin 181760 -> 181760 bytes client/3rd/bin/x64/dns.dll | Bin 213504 -> 213504 bytes client/3rd/bin/x64/ftp.dll | Bin 190464 -> 191488 bytes client/3rd/bin/x64/http.dll | Bin 199168 -> 199168 bytes client/3rd/bin/x64/proxy.dll | Bin 249856 -> 249856 bytes client/3rd/bin/x64/ssl.dll | Bin 171520 -> 171520 bytes client/3rd/bin/x64/zip.dll | Bin 249344 -> 249344 bytes client/3rd/bin/zip.dll | Bin 201216 -> 201216 bytes client/3rd/include/frame/AsynCore.h | 4 +- client/3rd/include/frame/app/Setting.h | 6 +- .../3rd/include/frame/asm/IAsynFileSystem.h | 2 +- .../3rd/include/frame/asm/IAsynFileSystem_i.c | 2 +- client/3rd/include/frame/asm/IAsynFrame.h | 2 +- client/3rd/include/frame/asm/IAsynFrame_i.c | 2 +- .../3rd/include/frame/asm/IAsynIpcChannel.h | 2 +- .../3rd/include/frame/asm/IAsynIpcChannel_i.c | 2 +- client/3rd/include/frame/asm/IAsynNetAgent.h | 2 +- .../3rd/include/frame/asm/IAsynNetAgent_i.c | 2 +- client/3rd/include/frame/asm/IAsynNetwork.h | 2 +- client/3rd/include/frame/asm/IAsynNetwork_i.c | 2 +- client/3rd/include/frame/asm/IConsole.h | 2 +- client/3rd/include/frame/asm/IConsole_i.c | 2 +- client/3rd/include/frame/asm/IDtp.h | 2 +- client/3rd/include/frame/asm/IDtp_i.c | 2 +- .../3rd/include/frame/asm/IExceptionTrapper.h | 2 +- .../include/frame/asm/IExceptionTrapper_i.c | 2 +- client/3rd/include/frame/asm/INet.h | 2 +- client/3rd/include/frame/asm/INet_i.c | 2 +- client/3rd/include/frame/asm/IProxy.h | 2 +- client/3rd/include/frame/asm/IProxy_i.c | 2 +- client/3rd/include/frame/asm/IScriptHost.h | 2 +- client/3rd/include/frame/asm/IScriptHost_i.c | 2 +- client/3rd/include/frame/asm/ISsl.h | 2 +- client/3rd/include/frame/asm/ISsl_i.c | 2 +- client/3rd/include/frame/asm/ITypedef.h | 3 +- client/3rd/include/frame/asm/ITypedef_i.c | 2 +- client/3rd/include/frame/com/ObjPtr.h | 27 +- client/3rd/include/frame/com/Unknown.h | 4 +- client/3rd/include/frame/jvm/JniProxy.h | 8 +- client/3rd/include/frame/lua/JniProxy.h | 7 +- client/3rd/include/frame/lua/LuaTinker.h | 49 +- client/3rd/include/frame/net/Utility.h | 2 +- .../include/frame/python/JniProxy.h} | 64 +- client/3rd/include/frame/python/PyPtr.h | 131 + client/3rd/include/frame/python/Python-ast.h | 715 ++++ client/3rd/include/frame/python/Python.h | 160 + client/3rd/include/frame/python/abstract.h | 844 +++++ client/3rd/include/frame/python/asdl.h | 46 + client/3rd/include/frame/python/ast.h | 37 + client/3rd/include/frame/python/bitset.h | 23 + client/3rd/include/frame/python/bltinmodule.h | 14 + client/3rd/include/frame/python/boolobject.h | 34 + .../include/frame/python/bytearrayobject.h | 62 + .../3rd/include/frame/python/bytes_methods.h | 69 + client/3rd/include/frame/python/bytesobject.h | 224 ++ client/3rd/include/frame/python/cellobject.h | 29 + client/3rd/include/frame/python/ceval.h | 231 ++ client/3rd/include/frame/python/classobject.h | 59 + client/3rd/include/frame/python/code.h | 180 + client/3rd/include/frame/python/codecs.h | 240 ++ client/3rd/include/frame/python/compile.h | 106 + .../3rd/include/frame/python/complexobject.h | 69 + client/3rd/include/frame/python/context.h | 84 + .../include/frame/python/cpython/abstract.h | 319 ++ .../include/frame/python/cpython/dictobject.h | 94 + .../include/frame/python/cpython/fileobject.h | 24 + .../include/frame/python/cpython/initconfig.h | 434 +++ .../python/cpython/interpreteridobject.h | 19 + .../3rd/include/frame/python/cpython/object.h | 470 +++ .../include/frame/python/cpython/objimpl.h | 113 + .../include/frame/python/cpython/pyerrors.h | 188 + .../frame/python/cpython/pylifecycle.h | 78 + .../3rd/include/frame/python/cpython/pymem.h | 108 + .../include/frame/python/cpython/pystate.h | 252 ++ .../include/frame/python/cpython/sysmodule.h | 21 + .../include/frame/python/cpython/traceback.h | 22 + .../frame/python/cpython/tupleobject.h | 36 + .../frame/python/cpython/unicodeobject.h | 1239 +++++++ client/3rd/include/frame/python/datetime.h | 259 ++ client/3rd/include/frame/python/descrobject.h | 108 + client/3rd/include/frame/python/dictobject.h | 94 + client/3rd/include/frame/python/dtoa.h | 19 + .../frame/python/dynamic_annotations.h | 499 +++ client/3rd/include/frame/python/enumobject.h | 17 + client/3rd/include/frame/python/errcode.h | 38 + client/3rd/include/frame/python/eval.h | 37 + client/3rd/include/frame/python/fileobject.h | 49 + client/3rd/include/frame/python/fileutils.h | 185 + client/3rd/include/frame/python/floatobject.h | 130 + client/3rd/include/frame/python/frameobject.h | 92 + client/3rd/include/frame/python/funcobject.h | 104 + client/3rd/include/frame/python/genobject.h | 109 + client/3rd/include/frame/python/graminit.h | 94 + client/3rd/include/frame/python/grammar.h | 77 + client/3rd/include/frame/python/import.h | 149 + .../frame/python/internal/pycore_accu.h | 39 + .../frame/python/internal/pycore_atomic.h | 558 +++ .../frame/python/internal/pycore_ceval.h | 37 + .../frame/python/internal/pycore_code.h | 27 + .../frame/python/internal/pycore_condvar.h | 95 + .../frame/python/internal/pycore_context.h | 42 + .../frame/python/internal/pycore_fileutils.h | 54 + .../frame/python/internal/pycore_getopt.h | 22 + .../frame/python/internal/pycore_gil.h | 50 + .../frame/python/internal/pycore_hamt.h | 128 + .../frame/python/internal/pycore_initconfig.h | 168 + .../frame/python/internal/pycore_long.h | 49 + .../frame/python/internal/pycore_object.h | 81 + .../frame/python/internal/pycore_pathconfig.h | 75 + .../frame/python/internal/pycore_pyerrors.h | 62 + .../frame/python/internal/pycore_pyhash.h | 10 + .../python/internal/pycore_pylifecycle.h | 118 + .../frame/python/internal/pycore_pymem.h | 212 ++ .../frame/python/internal/pycore_pystate.h | 328 ++ .../frame/python/internal/pycore_traceback.h | 96 + .../python/internal/pycore_tupleobject.h | 19 + .../frame/python/internal/pycore_warnings.h | 25 + .../frame/python/interpreteridobject.h | 17 + client/3rd/include/frame/python/intrcheck.h | 33 + client/3rd/include/frame/python/iterobject.h | 25 + client/3rd/include/frame/python/listobject.h | 81 + client/3rd/include/frame/python/longintrepr.h | 99 + client/3rd/include/frame/python/longobject.h | 242 ++ client/3rd/include/frame/python/marshal.h | 28 + .../3rd/include/frame/python/memoryobject.h | 72 + .../3rd/include/frame/python/methodobject.h | 131 + client/3rd/include/frame/python/modsupport.h | 248 ++ .../3rd/include/frame/python/moduleobject.h | 90 + .../include/frame/python/namespaceobject.h | 19 + client/3rd/include/frame/python/node.h | 48 + client/3rd/include/frame/python/object.h | 753 ++++ client/3rd/include/frame/python/objimpl.h | 284 ++ client/3rd/include/frame/python/odictobject.h | 43 + client/3rd/include/frame/python/opcode.h | 148 + client/3rd/include/frame/python/osdefs.h | 51 + client/3rd/include/frame/python/osmodule.h | 17 + client/3rd/include/frame/python/parsetok.h | 110 + client/3rd/include/frame/python/patchlevel.h | 35 + .../include/frame/python/picklebufobject.h | 31 + client/3rd/include/frame/python/py_curses.h | 100 + client/3rd/include/frame/python/pyarena.h | 64 + .../3rd/include/frame/python/pybind11/attr.h | 690 ++++ .../frame/python/pybind11/buffer_info.h | 208 ++ .../3rd/include/frame/python/pybind11/cast.h | 1848 ++++++++++ .../include/frame/python/pybind11/chrono.h | 225 ++ .../include/frame/python/pybind11/common.h | 2 + .../include/frame/python/pybind11/complex.h | 74 + .../frame/python/pybind11/detail/class.h | 754 ++++ .../frame/python/pybind11/detail/common.h | 1268 +++++++ .../frame/python/pybind11/detail/descr.h | 172 + .../frame/python/pybind11/detail/init.h | 434 +++ .../frame/python/pybind11/detail/internals.h | 753 ++++ .../python/pybind11/detail/type_caster_base.h | 1214 +++++++ .../frame/python/pybind11/detail/typeid.h | 65 + .../3rd/include/frame/python/pybind11/eigen.h | 12 + .../frame/python/pybind11/eigen/common.h | 9 + .../frame/python/pybind11/eigen/matrix.h | 714 ++++ .../frame/python/pybind11/eigen/tensor.h | 517 +++ .../3rd/include/frame/python/pybind11/embed.h | 313 ++ .../3rd/include/frame/python/pybind11/eval.h | 156 + .../frame/python/pybind11/functional.h | 138 + .../3rd/include/frame/python/pybind11/gil.h | 219 ++ .../python/pybind11/gil_safe_call_once.h | 91 + .../include/frame/python/pybind11/iostream.h | 265 ++ .../3rd/include/frame/python/pybind11/numpy.h | 2135 ++++++++++++ .../include/frame/python/pybind11/operators.h | 202 ++ .../include/frame/python/pybind11/options.h | 92 + .../include/frame/python/pybind11/pybind11.h | 3026 +++++++++++++++++ .../include/frame/python/pybind11/pytypes.h | 2604 ++++++++++++++ .../3rd/include/frame/python/pybind11/stl.h | 448 +++ .../frame/python/pybind11/stl/filesystem.h | 115 + .../include/frame/python/pybind11/stl_bind.h | 822 +++++ .../pybind11/type_caster_pyobject_ptr.h | 61 + .../include/frame/python/pybind11/typing.h | 157 + client/3rd/include/frame/python/pycapsule.h | 59 + client/3rd/include/frame/python/pyconfig.h | 684 ++++ client/3rd/include/frame/python/pyctype.h | 39 + client/3rd/include/frame/python/pydebug.h | 40 + client/3rd/include/frame/python/pydtrace.d | 22 + client/3rd/include/frame/python/pydtrace.h | 59 + client/3rd/include/frame/python/pyerrors.h | 335 ++ client/3rd/include/frame/python/pyexpat.h | 57 + client/3rd/include/frame/python/pyfpe.h | 12 + client/3rd/include/frame/python/pyhash.h | 145 + client/3rd/include/frame/python/pylifecycle.h | 75 + client/3rd/include/frame/python/pymacconfig.h | 102 + client/3rd/include/frame/python/pymacro.h | 106 + client/3rd/include/frame/python/pymath.h | 230 ++ client/3rd/include/frame/python/pymem.h | 150 + client/3rd/include/frame/python/pyport.h | 850 +++++ client/3rd/include/frame/python/pystate.h | 136 + client/3rd/include/frame/python/pystrcmp.h | 23 + client/3rd/include/frame/python/pystrhex.h | 22 + client/3rd/include/frame/python/pystrtod.h | 45 + client/3rd/include/frame/python/pythonrun.h | 210 ++ client/3rd/include/frame/python/pythread.h | 161 + client/3rd/include/frame/python/pytime.h | 246 ++ client/3rd/include/frame/python/rangeobject.h | 27 + client/3rd/include/frame/python/setobject.h | 108 + client/3rd/include/frame/python/sliceobject.h | 65 + .../3rd/include/frame/python/structmember.h | 74 + client/3rd/include/frame/python/structseq.h | 49 + client/3rd/include/frame/python/symtable.h | 123 + client/3rd/include/frame/python/sysmodule.h | 41 + client/3rd/include/frame/python/token.h | 92 + client/3rd/include/frame/python/traceback.h | 28 + client/3rd/include/frame/python/tracemalloc.h | 38 + client/3rd/include/frame/python/tupleobject.h | 48 + client/3rd/include/frame/python/typeslots.h | 85 + client/3rd/include/frame/python/ucnhash.h | 36 + .../3rd/include/frame/python/unicodeobject.h | 1044 ++++++ client/3rd/include/frame/python/warnings.h | 67 + .../3rd/include/frame/python/weakrefobject.h | 86 + client/bin/aftpx-x64.exe | Bin 1708544 -> 1796096 bytes client/bin/aftpx.exe | Bin 1277952 -> 1337856 bytes client/project/windows/aftpxclient.vcxproj | 2 - client/src/Main.cpp | 3 +- client/src/ftpx_Downloader.cpp | 22 +- client/src/ftpx_Downloader.h | 67 +- client/src/setting.cpp | 121 - client/src/stdafx.h | 2 +- server/3rd/bin/asyncore.dll | Bin 514048 -> 514560 bytes server/3rd/bin/asynfile.dll | Bin 157184 -> 157184 bytes server/3rd/bin/asynsock.dll | Bin 297472 -> 296960 bytes server/3rd/bin/crashexplorer.dll | Bin 141824 -> 141824 bytes server/3rd/bin/ftp.dll | Bin 148480 -> 148480 bytes server/3rd/bin/ssl.dll | Bin 136192 -> 136704 bytes server/3rd/bin/x64/asyncore.dll | Bin 615424 -> 615424 bytes server/3rd/bin/x64/asynfile.dll | Bin 197632 -> 197632 bytes server/3rd/bin/x64/asynsock.dll | Bin 382976 -> 382976 bytes server/3rd/bin/x64/crashexplorer.dll | Bin 181760 -> 181760 bytes server/3rd/bin/x64/ftp.dll | Bin 190464 -> 191488 bytes server/3rd/bin/x64/ssl.dll | Bin 171520 -> 171520 bytes server/3rd/bin/x64/zip.dll | Bin 249344 -> 249344 bytes server/3rd/bin/zip.dll | Bin 201216 -> 201216 bytes server/3rd/include/frame/AsynCore.h | 4 +- server/3rd/include/frame/app/Setting.h | 6 +- .../3rd/include/frame/asm/IAsynFileSystem.h | 2 +- .../3rd/include/frame/asm/IAsynFileSystem_i.c | 2 +- server/3rd/include/frame/asm/IAsynFrame.h | 2 +- server/3rd/include/frame/asm/IAsynFrame_i.c | 2 +- .../3rd/include/frame/asm/IAsynIpcChannel.h | 2 +- .../3rd/include/frame/asm/IAsynIpcChannel_i.c | 2 +- server/3rd/include/frame/asm/IAsynNetAgent.h | 2 +- .../3rd/include/frame/asm/IAsynNetAgent_i.c | 2 +- server/3rd/include/frame/asm/IAsynNetwork.h | 2 +- server/3rd/include/frame/asm/IAsynNetwork_i.c | 2 +- server/3rd/include/frame/asm/IConsole.h | 2 +- server/3rd/include/frame/asm/IConsole_i.c | 2 +- server/3rd/include/frame/asm/IDtp.h | 2 +- server/3rd/include/frame/asm/IDtp_i.c | 2 +- .../3rd/include/frame/asm/IExceptionTrapper.h | 2 +- .../include/frame/asm/IExceptionTrapper_i.c | 2 +- server/3rd/include/frame/asm/INet.h | 2 +- server/3rd/include/frame/asm/INet_i.c | 2 +- server/3rd/include/frame/asm/IProxy.h | 2 +- server/3rd/include/frame/asm/IProxy_i.c | 2 +- server/3rd/include/frame/asm/IScriptHost.h | 2 +- server/3rd/include/frame/asm/IScriptHost_i.c | 2 +- server/3rd/include/frame/asm/ISsl.h | 2 +- server/3rd/include/frame/asm/ISsl_i.c | 2 +- server/3rd/include/frame/asm/ITypedef.h | 3 +- server/3rd/include/frame/asm/ITypedef_i.c | 2 +- server/3rd/include/frame/com/ObjPtr.h | 27 +- server/3rd/include/frame/com/Unknown.h | 4 +- server/3rd/include/frame/jvm/JniProxy.h | 8 +- server/3rd/include/frame/lua/JniProxy.h | 7 +- server/3rd/include/frame/lua/LuaTinker.h | 49 +- server/3rd/include/frame/net/Utility.h | 2 +- .../include/frame/python/JniProxy.h} | 64 +- server/3rd/include/frame/python/PyPtr.h | 131 + server/3rd/include/frame/python/Python-ast.h | 715 ++++ server/3rd/include/frame/python/Python.h | 160 + server/3rd/include/frame/python/abstract.h | 844 +++++ server/3rd/include/frame/python/asdl.h | 46 + server/3rd/include/frame/python/ast.h | 37 + server/3rd/include/frame/python/bitset.h | 23 + server/3rd/include/frame/python/bltinmodule.h | 14 + server/3rd/include/frame/python/boolobject.h | 34 + .../include/frame/python/bytearrayobject.h | 62 + .../3rd/include/frame/python/bytes_methods.h | 69 + server/3rd/include/frame/python/bytesobject.h | 224 ++ server/3rd/include/frame/python/cellobject.h | 29 + server/3rd/include/frame/python/ceval.h | 231 ++ server/3rd/include/frame/python/classobject.h | 59 + server/3rd/include/frame/python/code.h | 180 + server/3rd/include/frame/python/codecs.h | 240 ++ server/3rd/include/frame/python/compile.h | 106 + .../3rd/include/frame/python/complexobject.h | 69 + server/3rd/include/frame/python/context.h | 84 + .../include/frame/python/cpython/abstract.h | 319 ++ .../include/frame/python/cpython/dictobject.h | 94 + .../include/frame/python/cpython/fileobject.h | 24 + .../include/frame/python/cpython/initconfig.h | 434 +++ .../python/cpython/interpreteridobject.h | 19 + .../3rd/include/frame/python/cpython/object.h | 470 +++ .../include/frame/python/cpython/objimpl.h | 113 + .../include/frame/python/cpython/pyerrors.h | 188 + .../frame/python/cpython/pylifecycle.h | 78 + .../3rd/include/frame/python/cpython/pymem.h | 108 + .../include/frame/python/cpython/pystate.h | 252 ++ .../include/frame/python/cpython/sysmodule.h | 21 + .../include/frame/python/cpython/traceback.h | 22 + .../frame/python/cpython/tupleobject.h | 36 + .../frame/python/cpython/unicodeobject.h | 1239 +++++++ server/3rd/include/frame/python/datetime.h | 259 ++ server/3rd/include/frame/python/descrobject.h | 108 + server/3rd/include/frame/python/dictobject.h | 94 + server/3rd/include/frame/python/dtoa.h | 19 + .../frame/python/dynamic_annotations.h | 499 +++ server/3rd/include/frame/python/enumobject.h | 17 + server/3rd/include/frame/python/errcode.h | 38 + server/3rd/include/frame/python/eval.h | 37 + server/3rd/include/frame/python/fileobject.h | 49 + server/3rd/include/frame/python/fileutils.h | 185 + server/3rd/include/frame/python/floatobject.h | 130 + server/3rd/include/frame/python/frameobject.h | 92 + server/3rd/include/frame/python/funcobject.h | 104 + server/3rd/include/frame/python/genobject.h | 109 + server/3rd/include/frame/python/graminit.h | 94 + server/3rd/include/frame/python/grammar.h | 77 + server/3rd/include/frame/python/import.h | 149 + .../frame/python/internal/pycore_accu.h | 39 + .../frame/python/internal/pycore_atomic.h | 558 +++ .../frame/python/internal/pycore_ceval.h | 37 + .../frame/python/internal/pycore_code.h | 27 + .../frame/python/internal/pycore_condvar.h | 95 + .../frame/python/internal/pycore_context.h | 42 + .../frame/python/internal/pycore_fileutils.h | 54 + .../frame/python/internal/pycore_getopt.h | 22 + .../frame/python/internal/pycore_gil.h | 50 + .../frame/python/internal/pycore_hamt.h | 128 + .../frame/python/internal/pycore_initconfig.h | 168 + .../frame/python/internal/pycore_long.h | 49 + .../frame/python/internal/pycore_object.h | 81 + .../frame/python/internal/pycore_pathconfig.h | 75 + .../frame/python/internal/pycore_pyerrors.h | 62 + .../frame/python/internal/pycore_pyhash.h | 10 + .../python/internal/pycore_pylifecycle.h | 118 + .../frame/python/internal/pycore_pymem.h | 212 ++ .../frame/python/internal/pycore_pystate.h | 328 ++ .../frame/python/internal/pycore_traceback.h | 96 + .../python/internal/pycore_tupleobject.h | 19 + .../frame/python/internal/pycore_warnings.h | 25 + .../frame/python/interpreteridobject.h | 17 + server/3rd/include/frame/python/intrcheck.h | 33 + server/3rd/include/frame/python/iterobject.h | 25 + server/3rd/include/frame/python/listobject.h | 81 + server/3rd/include/frame/python/longintrepr.h | 99 + server/3rd/include/frame/python/longobject.h | 242 ++ server/3rd/include/frame/python/marshal.h | 28 + .../3rd/include/frame/python/memoryobject.h | 72 + .../3rd/include/frame/python/methodobject.h | 131 + server/3rd/include/frame/python/modsupport.h | 248 ++ .../3rd/include/frame/python/moduleobject.h | 90 + .../include/frame/python/namespaceobject.h | 19 + server/3rd/include/frame/python/node.h | 48 + server/3rd/include/frame/python/object.h | 753 ++++ server/3rd/include/frame/python/objimpl.h | 284 ++ server/3rd/include/frame/python/odictobject.h | 43 + server/3rd/include/frame/python/opcode.h | 148 + server/3rd/include/frame/python/osdefs.h | 51 + server/3rd/include/frame/python/osmodule.h | 17 + server/3rd/include/frame/python/parsetok.h | 110 + server/3rd/include/frame/python/patchlevel.h | 35 + .../include/frame/python/picklebufobject.h | 31 + server/3rd/include/frame/python/py_curses.h | 100 + server/3rd/include/frame/python/pyarena.h | 64 + .../3rd/include/frame/python/pybind11/attr.h | 690 ++++ .../frame/python/pybind11/buffer_info.h | 208 ++ .../3rd/include/frame/python/pybind11/cast.h | 1848 ++++++++++ .../include/frame/python/pybind11/chrono.h | 225 ++ .../include/frame/python/pybind11/common.h | 2 + .../include/frame/python/pybind11/complex.h | 74 + .../frame/python/pybind11/detail/class.h | 754 ++++ .../frame/python/pybind11/detail/common.h | 1268 +++++++ .../frame/python/pybind11/detail/descr.h | 172 + .../frame/python/pybind11/detail/init.h | 434 +++ .../frame/python/pybind11/detail/internals.h | 753 ++++ .../python/pybind11/detail/type_caster_base.h | 1214 +++++++ .../frame/python/pybind11/detail/typeid.h | 65 + .../3rd/include/frame/python/pybind11/eigen.h | 12 + .../frame/python/pybind11/eigen/common.h | 9 + .../frame/python/pybind11/eigen/matrix.h | 714 ++++ .../frame/python/pybind11/eigen/tensor.h | 517 +++ .../3rd/include/frame/python/pybind11/embed.h | 313 ++ .../3rd/include/frame/python/pybind11/eval.h | 156 + .../frame/python/pybind11/functional.h | 138 + .../3rd/include/frame/python/pybind11/gil.h | 219 ++ .../python/pybind11/gil_safe_call_once.h | 91 + .../include/frame/python/pybind11/iostream.h | 265 ++ .../3rd/include/frame/python/pybind11/numpy.h | 2135 ++++++++++++ .../include/frame/python/pybind11/operators.h | 202 ++ .../include/frame/python/pybind11/options.h | 92 + .../include/frame/python/pybind11/pybind11.h | 3026 +++++++++++++++++ .../include/frame/python/pybind11/pytypes.h | 2604 ++++++++++++++ .../3rd/include/frame/python/pybind11/stl.h | 448 +++ .../frame/python/pybind11/stl/filesystem.h | 115 + .../include/frame/python/pybind11/stl_bind.h | 822 +++++ .../pybind11/type_caster_pyobject_ptr.h | 61 + .../include/frame/python/pybind11/typing.h | 157 + server/3rd/include/frame/python/pycapsule.h | 59 + server/3rd/include/frame/python/pyconfig.h | 684 ++++ server/3rd/include/frame/python/pyctype.h | 39 + server/3rd/include/frame/python/pydebug.h | 40 + server/3rd/include/frame/python/pydtrace.d | 22 + server/3rd/include/frame/python/pydtrace.h | 59 + server/3rd/include/frame/python/pyerrors.h | 335 ++ server/3rd/include/frame/python/pyexpat.h | 57 + server/3rd/include/frame/python/pyfpe.h | 12 + server/3rd/include/frame/python/pyhash.h | 145 + server/3rd/include/frame/python/pylifecycle.h | 75 + server/3rd/include/frame/python/pymacconfig.h | 102 + server/3rd/include/frame/python/pymacro.h | 106 + server/3rd/include/frame/python/pymath.h | 230 ++ server/3rd/include/frame/python/pymem.h | 150 + server/3rd/include/frame/python/pyport.h | 850 +++++ server/3rd/include/frame/python/pystate.h | 136 + server/3rd/include/frame/python/pystrcmp.h | 23 + server/3rd/include/frame/python/pystrhex.h | 22 + server/3rd/include/frame/python/pystrtod.h | 45 + server/3rd/include/frame/python/pythonrun.h | 210 ++ server/3rd/include/frame/python/pythread.h | 161 + server/3rd/include/frame/python/pytime.h | 246 ++ server/3rd/include/frame/python/rangeobject.h | 27 + server/3rd/include/frame/python/setobject.h | 108 + server/3rd/include/frame/python/sliceobject.h | 65 + .../3rd/include/frame/python/structmember.h | 74 + server/3rd/include/frame/python/structseq.h | 49 + server/3rd/include/frame/python/symtable.h | 123 + server/3rd/include/frame/python/sysmodule.h | 41 + server/3rd/include/frame/python/token.h | 92 + server/3rd/include/frame/python/traceback.h | 28 + server/3rd/include/frame/python/tracemalloc.h | 38 + server/3rd/include/frame/python/tupleobject.h | 48 + server/3rd/include/frame/python/typeslots.h | 85 + server/3rd/include/frame/python/ucnhash.h | 36 + .../3rd/include/frame/python/unicodeobject.h | 1044 ++++++ server/3rd/include/frame/python/warnings.h | 67 + .../3rd/include/frame/python/weakrefobject.h | 86 + server/bin/aftpxserver-x64.exe | Bin 1691648 -> 1780736 bytes server/bin/aftpxserver.exe | Bin 1261056 -> 1324032 bytes server/project/windows/aftpxserver.vcxproj | 2 - server/src/Main.cpp | 13 +- server/src/Service.cpp | 18 +- server/src/Service.h | 25 +- server/src/setting.cpp | 121 - server/src/stdafx.h | 2 +- 462 files changed, 79334 insertions(+), 564 deletions(-) rename client/{src/setting.h => 3rd/include/frame/python/JniProxy.h} (54%) create mode 100755 client/3rd/include/frame/python/PyPtr.h create mode 100755 client/3rd/include/frame/python/Python-ast.h create mode 100755 client/3rd/include/frame/python/Python.h create mode 100755 client/3rd/include/frame/python/abstract.h create mode 100755 client/3rd/include/frame/python/asdl.h create mode 100755 client/3rd/include/frame/python/ast.h create mode 100755 client/3rd/include/frame/python/bitset.h create mode 100755 client/3rd/include/frame/python/bltinmodule.h create mode 100755 client/3rd/include/frame/python/boolobject.h create mode 100755 client/3rd/include/frame/python/bytearrayobject.h create mode 100755 client/3rd/include/frame/python/bytes_methods.h create mode 100755 client/3rd/include/frame/python/bytesobject.h create mode 100755 client/3rd/include/frame/python/cellobject.h create mode 100755 client/3rd/include/frame/python/ceval.h create mode 100755 client/3rd/include/frame/python/classobject.h create mode 100755 client/3rd/include/frame/python/code.h create mode 100755 client/3rd/include/frame/python/codecs.h create mode 100755 client/3rd/include/frame/python/compile.h create mode 100755 client/3rd/include/frame/python/complexobject.h create mode 100755 client/3rd/include/frame/python/context.h create mode 100755 client/3rd/include/frame/python/cpython/abstract.h create mode 100755 client/3rd/include/frame/python/cpython/dictobject.h create mode 100755 client/3rd/include/frame/python/cpython/fileobject.h create mode 100755 client/3rd/include/frame/python/cpython/initconfig.h create mode 100755 client/3rd/include/frame/python/cpython/interpreteridobject.h create mode 100755 client/3rd/include/frame/python/cpython/object.h create mode 100755 client/3rd/include/frame/python/cpython/objimpl.h create mode 100755 client/3rd/include/frame/python/cpython/pyerrors.h create mode 100755 client/3rd/include/frame/python/cpython/pylifecycle.h create mode 100755 client/3rd/include/frame/python/cpython/pymem.h create mode 100755 client/3rd/include/frame/python/cpython/pystate.h create mode 100755 client/3rd/include/frame/python/cpython/sysmodule.h create mode 100755 client/3rd/include/frame/python/cpython/traceback.h create mode 100755 client/3rd/include/frame/python/cpython/tupleobject.h create mode 100755 client/3rd/include/frame/python/cpython/unicodeobject.h create mode 100755 client/3rd/include/frame/python/datetime.h create mode 100755 client/3rd/include/frame/python/descrobject.h create mode 100755 client/3rd/include/frame/python/dictobject.h create mode 100755 client/3rd/include/frame/python/dtoa.h create mode 100755 client/3rd/include/frame/python/dynamic_annotations.h create mode 100755 client/3rd/include/frame/python/enumobject.h create mode 100755 client/3rd/include/frame/python/errcode.h create mode 100755 client/3rd/include/frame/python/eval.h create mode 100755 client/3rd/include/frame/python/fileobject.h create mode 100755 client/3rd/include/frame/python/fileutils.h create mode 100755 client/3rd/include/frame/python/floatobject.h create mode 100755 client/3rd/include/frame/python/frameobject.h create mode 100755 client/3rd/include/frame/python/funcobject.h create mode 100755 client/3rd/include/frame/python/genobject.h create mode 100755 client/3rd/include/frame/python/graminit.h create mode 100755 client/3rd/include/frame/python/grammar.h create mode 100755 client/3rd/include/frame/python/import.h create mode 100755 client/3rd/include/frame/python/internal/pycore_accu.h create mode 100755 client/3rd/include/frame/python/internal/pycore_atomic.h create mode 100755 client/3rd/include/frame/python/internal/pycore_ceval.h create mode 100755 client/3rd/include/frame/python/internal/pycore_code.h create mode 100755 client/3rd/include/frame/python/internal/pycore_condvar.h create mode 100755 client/3rd/include/frame/python/internal/pycore_context.h create mode 100755 client/3rd/include/frame/python/internal/pycore_fileutils.h create mode 100755 client/3rd/include/frame/python/internal/pycore_getopt.h create mode 100755 client/3rd/include/frame/python/internal/pycore_gil.h create mode 100755 client/3rd/include/frame/python/internal/pycore_hamt.h create mode 100755 client/3rd/include/frame/python/internal/pycore_initconfig.h create mode 100755 client/3rd/include/frame/python/internal/pycore_long.h create mode 100755 client/3rd/include/frame/python/internal/pycore_object.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pathconfig.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pyerrors.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pyhash.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pylifecycle.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pymem.h create mode 100755 client/3rd/include/frame/python/internal/pycore_pystate.h create mode 100755 client/3rd/include/frame/python/internal/pycore_traceback.h create mode 100755 client/3rd/include/frame/python/internal/pycore_tupleobject.h create mode 100755 client/3rd/include/frame/python/internal/pycore_warnings.h create mode 100755 client/3rd/include/frame/python/interpreteridobject.h create mode 100755 client/3rd/include/frame/python/intrcheck.h create mode 100755 client/3rd/include/frame/python/iterobject.h create mode 100755 client/3rd/include/frame/python/listobject.h create mode 100755 client/3rd/include/frame/python/longintrepr.h create mode 100755 client/3rd/include/frame/python/longobject.h create mode 100755 client/3rd/include/frame/python/marshal.h create mode 100755 client/3rd/include/frame/python/memoryobject.h create mode 100755 client/3rd/include/frame/python/methodobject.h create mode 100755 client/3rd/include/frame/python/modsupport.h create mode 100755 client/3rd/include/frame/python/moduleobject.h create mode 100755 client/3rd/include/frame/python/namespaceobject.h create mode 100755 client/3rd/include/frame/python/node.h create mode 100755 client/3rd/include/frame/python/object.h create mode 100755 client/3rd/include/frame/python/objimpl.h create mode 100755 client/3rd/include/frame/python/odictobject.h create mode 100755 client/3rd/include/frame/python/opcode.h create mode 100755 client/3rd/include/frame/python/osdefs.h create mode 100755 client/3rd/include/frame/python/osmodule.h create mode 100755 client/3rd/include/frame/python/parsetok.h create mode 100755 client/3rd/include/frame/python/patchlevel.h create mode 100755 client/3rd/include/frame/python/picklebufobject.h create mode 100755 client/3rd/include/frame/python/py_curses.h create mode 100755 client/3rd/include/frame/python/pyarena.h create mode 100755 client/3rd/include/frame/python/pybind11/attr.h create mode 100755 client/3rd/include/frame/python/pybind11/buffer_info.h create mode 100755 client/3rd/include/frame/python/pybind11/cast.h create mode 100755 client/3rd/include/frame/python/pybind11/chrono.h create mode 100755 client/3rd/include/frame/python/pybind11/common.h create mode 100755 client/3rd/include/frame/python/pybind11/complex.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/class.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/common.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/descr.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/init.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/internals.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/type_caster_base.h create mode 100755 client/3rd/include/frame/python/pybind11/detail/typeid.h create mode 100755 client/3rd/include/frame/python/pybind11/eigen.h create mode 100755 client/3rd/include/frame/python/pybind11/eigen/common.h create mode 100755 client/3rd/include/frame/python/pybind11/eigen/matrix.h create mode 100755 client/3rd/include/frame/python/pybind11/eigen/tensor.h create mode 100755 client/3rd/include/frame/python/pybind11/embed.h create mode 100755 client/3rd/include/frame/python/pybind11/eval.h create mode 100755 client/3rd/include/frame/python/pybind11/functional.h create mode 100755 client/3rd/include/frame/python/pybind11/gil.h create mode 100755 client/3rd/include/frame/python/pybind11/gil_safe_call_once.h create mode 100755 client/3rd/include/frame/python/pybind11/iostream.h create mode 100755 client/3rd/include/frame/python/pybind11/numpy.h create mode 100755 client/3rd/include/frame/python/pybind11/operators.h create mode 100755 client/3rd/include/frame/python/pybind11/options.h create mode 100755 client/3rd/include/frame/python/pybind11/pybind11.h create mode 100755 client/3rd/include/frame/python/pybind11/pytypes.h create mode 100755 client/3rd/include/frame/python/pybind11/stl.h create mode 100755 client/3rd/include/frame/python/pybind11/stl/filesystem.h create mode 100755 client/3rd/include/frame/python/pybind11/stl_bind.h create mode 100755 client/3rd/include/frame/python/pybind11/type_caster_pyobject_ptr.h create mode 100755 client/3rd/include/frame/python/pybind11/typing.h create mode 100755 client/3rd/include/frame/python/pycapsule.h create mode 100755 client/3rd/include/frame/python/pyconfig.h create mode 100755 client/3rd/include/frame/python/pyctype.h create mode 100755 client/3rd/include/frame/python/pydebug.h create mode 100755 client/3rd/include/frame/python/pydtrace.d create mode 100755 client/3rd/include/frame/python/pydtrace.h create mode 100755 client/3rd/include/frame/python/pyerrors.h create mode 100755 client/3rd/include/frame/python/pyexpat.h create mode 100755 client/3rd/include/frame/python/pyfpe.h create mode 100755 client/3rd/include/frame/python/pyhash.h create mode 100755 client/3rd/include/frame/python/pylifecycle.h create mode 100755 client/3rd/include/frame/python/pymacconfig.h create mode 100755 client/3rd/include/frame/python/pymacro.h create mode 100755 client/3rd/include/frame/python/pymath.h create mode 100755 client/3rd/include/frame/python/pymem.h create mode 100755 client/3rd/include/frame/python/pyport.h create mode 100755 client/3rd/include/frame/python/pystate.h create mode 100755 client/3rd/include/frame/python/pystrcmp.h create mode 100755 client/3rd/include/frame/python/pystrhex.h create mode 100755 client/3rd/include/frame/python/pystrtod.h create mode 100755 client/3rd/include/frame/python/pythonrun.h create mode 100755 client/3rd/include/frame/python/pythread.h create mode 100755 client/3rd/include/frame/python/pytime.h create mode 100755 client/3rd/include/frame/python/rangeobject.h create mode 100755 client/3rd/include/frame/python/setobject.h create mode 100755 client/3rd/include/frame/python/sliceobject.h create mode 100755 client/3rd/include/frame/python/structmember.h create mode 100755 client/3rd/include/frame/python/structseq.h create mode 100755 client/3rd/include/frame/python/symtable.h create mode 100755 client/3rd/include/frame/python/sysmodule.h create mode 100755 client/3rd/include/frame/python/token.h create mode 100755 client/3rd/include/frame/python/traceback.h create mode 100755 client/3rd/include/frame/python/tracemalloc.h create mode 100755 client/3rd/include/frame/python/tupleobject.h create mode 100755 client/3rd/include/frame/python/typeslots.h create mode 100755 client/3rd/include/frame/python/ucnhash.h create mode 100755 client/3rd/include/frame/python/unicodeobject.h create mode 100755 client/3rd/include/frame/python/warnings.h create mode 100755 client/3rd/include/frame/python/weakrefobject.h delete mode 100755 client/src/setting.cpp rename server/{src/setting.h => 3rd/include/frame/python/JniProxy.h} (54%) create mode 100755 server/3rd/include/frame/python/PyPtr.h create mode 100755 server/3rd/include/frame/python/Python-ast.h create mode 100755 server/3rd/include/frame/python/Python.h create mode 100755 server/3rd/include/frame/python/abstract.h create mode 100755 server/3rd/include/frame/python/asdl.h create mode 100755 server/3rd/include/frame/python/ast.h create mode 100755 server/3rd/include/frame/python/bitset.h create mode 100755 server/3rd/include/frame/python/bltinmodule.h create mode 100755 server/3rd/include/frame/python/boolobject.h create mode 100755 server/3rd/include/frame/python/bytearrayobject.h create mode 100755 server/3rd/include/frame/python/bytes_methods.h create mode 100755 server/3rd/include/frame/python/bytesobject.h create mode 100755 server/3rd/include/frame/python/cellobject.h create mode 100755 server/3rd/include/frame/python/ceval.h create mode 100755 server/3rd/include/frame/python/classobject.h create mode 100755 server/3rd/include/frame/python/code.h create mode 100755 server/3rd/include/frame/python/codecs.h create mode 100755 server/3rd/include/frame/python/compile.h create mode 100755 server/3rd/include/frame/python/complexobject.h create mode 100755 server/3rd/include/frame/python/context.h create mode 100755 server/3rd/include/frame/python/cpython/abstract.h create mode 100755 server/3rd/include/frame/python/cpython/dictobject.h create mode 100755 server/3rd/include/frame/python/cpython/fileobject.h create mode 100755 server/3rd/include/frame/python/cpython/initconfig.h create mode 100755 server/3rd/include/frame/python/cpython/interpreteridobject.h create mode 100755 server/3rd/include/frame/python/cpython/object.h create mode 100755 server/3rd/include/frame/python/cpython/objimpl.h create mode 100755 server/3rd/include/frame/python/cpython/pyerrors.h create mode 100755 server/3rd/include/frame/python/cpython/pylifecycle.h create mode 100755 server/3rd/include/frame/python/cpython/pymem.h create mode 100755 server/3rd/include/frame/python/cpython/pystate.h create mode 100755 server/3rd/include/frame/python/cpython/sysmodule.h create mode 100755 server/3rd/include/frame/python/cpython/traceback.h create mode 100755 server/3rd/include/frame/python/cpython/tupleobject.h create mode 100755 server/3rd/include/frame/python/cpython/unicodeobject.h create mode 100755 server/3rd/include/frame/python/datetime.h create mode 100755 server/3rd/include/frame/python/descrobject.h create mode 100755 server/3rd/include/frame/python/dictobject.h create mode 100755 server/3rd/include/frame/python/dtoa.h create mode 100755 server/3rd/include/frame/python/dynamic_annotations.h create mode 100755 server/3rd/include/frame/python/enumobject.h create mode 100755 server/3rd/include/frame/python/errcode.h create mode 100755 server/3rd/include/frame/python/eval.h create mode 100755 server/3rd/include/frame/python/fileobject.h create mode 100755 server/3rd/include/frame/python/fileutils.h create mode 100755 server/3rd/include/frame/python/floatobject.h create mode 100755 server/3rd/include/frame/python/frameobject.h create mode 100755 server/3rd/include/frame/python/funcobject.h create mode 100755 server/3rd/include/frame/python/genobject.h create mode 100755 server/3rd/include/frame/python/graminit.h create mode 100755 server/3rd/include/frame/python/grammar.h create mode 100755 server/3rd/include/frame/python/import.h create mode 100755 server/3rd/include/frame/python/internal/pycore_accu.h create mode 100755 server/3rd/include/frame/python/internal/pycore_atomic.h create mode 100755 server/3rd/include/frame/python/internal/pycore_ceval.h create mode 100755 server/3rd/include/frame/python/internal/pycore_code.h create mode 100755 server/3rd/include/frame/python/internal/pycore_condvar.h create mode 100755 server/3rd/include/frame/python/internal/pycore_context.h create mode 100755 server/3rd/include/frame/python/internal/pycore_fileutils.h create mode 100755 server/3rd/include/frame/python/internal/pycore_getopt.h create mode 100755 server/3rd/include/frame/python/internal/pycore_gil.h create mode 100755 server/3rd/include/frame/python/internal/pycore_hamt.h create mode 100755 server/3rd/include/frame/python/internal/pycore_initconfig.h create mode 100755 server/3rd/include/frame/python/internal/pycore_long.h create mode 100755 server/3rd/include/frame/python/internal/pycore_object.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pathconfig.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pyerrors.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pyhash.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pylifecycle.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pymem.h create mode 100755 server/3rd/include/frame/python/internal/pycore_pystate.h create mode 100755 server/3rd/include/frame/python/internal/pycore_traceback.h create mode 100755 server/3rd/include/frame/python/internal/pycore_tupleobject.h create mode 100755 server/3rd/include/frame/python/internal/pycore_warnings.h create mode 100755 server/3rd/include/frame/python/interpreteridobject.h create mode 100755 server/3rd/include/frame/python/intrcheck.h create mode 100755 server/3rd/include/frame/python/iterobject.h create mode 100755 server/3rd/include/frame/python/listobject.h create mode 100755 server/3rd/include/frame/python/longintrepr.h create mode 100755 server/3rd/include/frame/python/longobject.h create mode 100755 server/3rd/include/frame/python/marshal.h create mode 100755 server/3rd/include/frame/python/memoryobject.h create mode 100755 server/3rd/include/frame/python/methodobject.h create mode 100755 server/3rd/include/frame/python/modsupport.h create mode 100755 server/3rd/include/frame/python/moduleobject.h create mode 100755 server/3rd/include/frame/python/namespaceobject.h create mode 100755 server/3rd/include/frame/python/node.h create mode 100755 server/3rd/include/frame/python/object.h create mode 100755 server/3rd/include/frame/python/objimpl.h create mode 100755 server/3rd/include/frame/python/odictobject.h create mode 100755 server/3rd/include/frame/python/opcode.h create mode 100755 server/3rd/include/frame/python/osdefs.h create mode 100755 server/3rd/include/frame/python/osmodule.h create mode 100755 server/3rd/include/frame/python/parsetok.h create mode 100755 server/3rd/include/frame/python/patchlevel.h create mode 100755 server/3rd/include/frame/python/picklebufobject.h create mode 100755 server/3rd/include/frame/python/py_curses.h create mode 100755 server/3rd/include/frame/python/pyarena.h create mode 100755 server/3rd/include/frame/python/pybind11/attr.h create mode 100755 server/3rd/include/frame/python/pybind11/buffer_info.h create mode 100755 server/3rd/include/frame/python/pybind11/cast.h create mode 100755 server/3rd/include/frame/python/pybind11/chrono.h create mode 100755 server/3rd/include/frame/python/pybind11/common.h create mode 100755 server/3rd/include/frame/python/pybind11/complex.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/class.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/common.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/descr.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/init.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/internals.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/type_caster_base.h create mode 100755 server/3rd/include/frame/python/pybind11/detail/typeid.h create mode 100755 server/3rd/include/frame/python/pybind11/eigen.h create mode 100755 server/3rd/include/frame/python/pybind11/eigen/common.h create mode 100755 server/3rd/include/frame/python/pybind11/eigen/matrix.h create mode 100755 server/3rd/include/frame/python/pybind11/eigen/tensor.h create mode 100755 server/3rd/include/frame/python/pybind11/embed.h create mode 100755 server/3rd/include/frame/python/pybind11/eval.h create mode 100755 server/3rd/include/frame/python/pybind11/functional.h create mode 100755 server/3rd/include/frame/python/pybind11/gil.h create mode 100755 server/3rd/include/frame/python/pybind11/gil_safe_call_once.h create mode 100755 server/3rd/include/frame/python/pybind11/iostream.h create mode 100755 server/3rd/include/frame/python/pybind11/numpy.h create mode 100755 server/3rd/include/frame/python/pybind11/operators.h create mode 100755 server/3rd/include/frame/python/pybind11/options.h create mode 100755 server/3rd/include/frame/python/pybind11/pybind11.h create mode 100755 server/3rd/include/frame/python/pybind11/pytypes.h create mode 100755 server/3rd/include/frame/python/pybind11/stl.h create mode 100755 server/3rd/include/frame/python/pybind11/stl/filesystem.h create mode 100755 server/3rd/include/frame/python/pybind11/stl_bind.h create mode 100755 server/3rd/include/frame/python/pybind11/type_caster_pyobject_ptr.h create mode 100755 server/3rd/include/frame/python/pybind11/typing.h create mode 100755 server/3rd/include/frame/python/pycapsule.h create mode 100755 server/3rd/include/frame/python/pyconfig.h create mode 100755 server/3rd/include/frame/python/pyctype.h create mode 100755 server/3rd/include/frame/python/pydebug.h create mode 100755 server/3rd/include/frame/python/pydtrace.d create mode 100755 server/3rd/include/frame/python/pydtrace.h create mode 100755 server/3rd/include/frame/python/pyerrors.h create mode 100755 server/3rd/include/frame/python/pyexpat.h create mode 100755 server/3rd/include/frame/python/pyfpe.h create mode 100755 server/3rd/include/frame/python/pyhash.h create mode 100755 server/3rd/include/frame/python/pylifecycle.h create mode 100755 server/3rd/include/frame/python/pymacconfig.h create mode 100755 server/3rd/include/frame/python/pymacro.h create mode 100755 server/3rd/include/frame/python/pymath.h create mode 100755 server/3rd/include/frame/python/pymem.h create mode 100755 server/3rd/include/frame/python/pyport.h create mode 100755 server/3rd/include/frame/python/pystate.h create mode 100755 server/3rd/include/frame/python/pystrcmp.h create mode 100755 server/3rd/include/frame/python/pystrhex.h create mode 100755 server/3rd/include/frame/python/pystrtod.h create mode 100755 server/3rd/include/frame/python/pythonrun.h create mode 100755 server/3rd/include/frame/python/pythread.h create mode 100755 server/3rd/include/frame/python/pytime.h create mode 100755 server/3rd/include/frame/python/rangeobject.h create mode 100755 server/3rd/include/frame/python/setobject.h create mode 100755 server/3rd/include/frame/python/sliceobject.h create mode 100755 server/3rd/include/frame/python/structmember.h create mode 100755 server/3rd/include/frame/python/structseq.h create mode 100755 server/3rd/include/frame/python/symtable.h create mode 100755 server/3rd/include/frame/python/sysmodule.h create mode 100755 server/3rd/include/frame/python/token.h create mode 100755 server/3rd/include/frame/python/traceback.h create mode 100755 server/3rd/include/frame/python/tracemalloc.h create mode 100755 server/3rd/include/frame/python/tupleobject.h create mode 100755 server/3rd/include/frame/python/typeslots.h create mode 100755 server/3rd/include/frame/python/ucnhash.h create mode 100755 server/3rd/include/frame/python/unicodeobject.h create mode 100755 server/3rd/include/frame/python/warnings.h create mode 100755 server/3rd/include/frame/python/weakrefobject.h delete mode 100755 server/src/setting.cpp diff --git a/ChangeLog b/ChangeLog index 3125d67..7cb8a3d 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1 +1 @@ -2024-08-16 aftpx 集成asynframe-sdk_v1.7.1-20240816 https://github.com/netsecsp/asynframe +2024-11-11 aftpx 集成asynframe-sdk_v1.8.0-20241111 https://github.com/netsecsp/asynframe diff --git a/README.md b/README.md index 7055907..efdac9a 100755 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -> asynframe-sdk_v1.7.1-20240816.zip is from https://github.com/netsecsp/asynframe +> asynframe-sdk_v1.8.0-20241111.zip is from https://github.com/netsecsp/asynframe -# aftpx.exe -> IPv4/IPv6 ftp/ftps client program under windows +# aftpx +> IPv4/IPv6 ftp/ftps client program 1. support ftp/http and socks4/4a/5 proxy 2. support download directory -# aftpxserver.exe -> IPv4/IPv6 ftp/ftps server program under windows +# aftpxserver +> IPv4/IPv6 ftp/ftps server program 1. support download directory 2. support download from offset diff --git a/client/3rd/bin/asyncore.dll b/client/3rd/bin/asyncore.dll index 60cd4dd9bf2d9943adf8e8c276f72d575c99220c..2c520363e94aafa6de6a1b025b2b3329f10cf813 100755 GIT binary patch delta 142537 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

0a3t6T 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 E-+1yq{{R30 delta 142121 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 kpy6Z0P@iVN4@*d0WH+5d4~Ye1 zguifmjEcsHmY$V3)Jzl|8&BDd27N3Coxo#6x2lPoJuXZkG%itu`}TR)0d>@ys$SRe z5i?zmL-7LoIc=*W{Qa-W^T?&v3+h^P(5FD)JypYvvHNJbIsv%vF+|CLuHQj{$xuT@ zv@{uGW8b&vKbTgEMsLw)$xv?Rs2o3G{)LSdh_vwrdX;o}g}QxMsho*6XQm_GQfLy#TKXR7YM#Cf zDlkt!B%cZ5Wica_@+XLyK?BpF!s}UVd`gj(7525cr_1gyQ=f?^hlW|`|YAPCW=PF{T=#Xq6ih{UG(cjSjzZ~`=ld{NB>h! z(SMs3(4Jtk2RdK=Bv=`-FH!5sC{$-B#p8w!(c~36G#P~&AEgVE#cAQ4Mmwj7mdzTy z$_=Z2)~A~HV9QtN#uRArQVN_Z`it%dX~I;%A90w@P8AEp3uzSpkXR&|y-dd+LbmVe zmxsh_>5@ei+hg2bR~I*RUbvLCq+^Lk4ZWt96m^};B)COlhf1)>n%I?fQIQtuU_@2c zUo>YpL2o9VM*{gw7tb~Qa3}b^g$G14cmSdUBUl_NXxV6<=PsnP(=qsbK^`;2Fyo6(pos5k6(~w1H+=GmT zvA8+d&22_*>;m4A_DADu>z=b}CN%RTIzLl9RV)7$9++;)Fru_sqNi6K@Q~M|Z^{t4xSLG#_P;k<3^JK!P@TD=Rp5+`s*%H)0x_Ps1_u6UTW#6%4YJ^K&1U*@?br5a z&J`U@#!FkADnA?Y@^32t`KPtYhsQ_1R1xU@0?@d3f&Jt{QQPFd7XpHHO>DFRKVKWJPgCfkzoGR3prw}B-jZQ?jwfi%pnW=-L$b?X+AHA{qcnz2e%2}f$w zI=V1gp9+oEE)j0ZuOV8yL_}+sh-kP(9Ly3k#dixSA{#@^3p6BK1l}`r?}P%vxOak< zW{V&rG21cR@5&aQu&C8x)vy-Md2srAo(E4?nDtmh@v8uLB|W-I1P0!15)@=9xRgUj#Z>g7sYzh7`(*V;))6$x zCi+mu6QV{$q5P{*Su}+&Ks@sCexl=(e;5E|26M4 zop&kcjiO~w2+!6&@}&$HR2tt6{+6bP4@%OpT)63{Pw^0`i)r&3(KxWPvuJ5`vi!+p zNfdh*Q-n=~2ELqrFZGxtGngcUq6gx$!!f4}la)uYK;XLq!`JYryIph+Wr8lT<|6g* zyrCXmZX|86x+hbEwPJv{v6zzAipD`{%kQm|Iab3)=hlcZqSF$RYk}L(%kIs`xGkW@ zb`dAimnbP0Q85CKmm z>d{_W4tHw07pRA45gwZSIP$AxsI`}@;R@g$#ub2sVCJ`YR59-BCDd)5Xx!zg$16!* z$-0}Vi$QsXM65=_{StTLShH^iKRmmUeVqshjYC;Bpxkn!&AG8~M-MBE4Pc}#g|RTn z-&-d-);{Wp7UwCG$&@G3M32X5Q6ALT$R)HjPXyevcxGj6Uuv9LddHlJ!yuv%F zfJ~2@8&JLVBHZhUkCT>xtC*H)BI|L=Uk`@+A@ALG9W#8xa?S7)k5l}UA~a~#qI>f( z!_CVn%r0U@&{8_}q-Y#h1NofpVovG4nVJG}XcB3C;hwK(W4@stifk#qDIM&?d6h)S z$R*Tv1FY-GG;9Ob9Of+5D#(AK69@GEdsI*-&3cPgLC2R;@Mtnj#k zOXlPG!=RMaIq>0LXaR!@W7fo)$KwI}as5;1JSoda0!qS9srRGNh`VW2rXd6@wNOn;WRhG&)1DSX z8rFo4)}I38HH^P0*d-2_RZb7|HpO_a%XXjyd{4}Dv}`q$nRAOj)tPw6nG=|XI}+=B z0?AT2k@z`zZp9{6HjUpZ<_Nzm`e-XQ7K)cq&a+}N_DD*eg=8YrbK)8CU<$qT9QtRM z6gvH!Xzb^g0yty%MkU-<<_{^woRZdaQ4DDX<^&9 zAe+W*6AxG(v?_Y$HrD6Dus!1IxRfYqlzhArMxvZk1))$un23bT6XDfLBD}`AZDK{E zuG93w!n#?&4+{%E(gYbyi3Av$wOzynx5iIid3XlufHMTh5)4u)VTscFVfuKxxbAUa zW;vhdQHDM3X7|%e&x;WAVkB=^cf1i_%tYZYV1m4iR=j|PfH79u@`7mGV9H8vcQDSA zp!G(fMOs$UnHR(yl*uPM#6n?Pt`82v#;*U?3O1C?bM25Uut-2C_1X zGiRuW=Vm(dGEc^*k$f4`t75A2ifCiJ^^is>z-kJG+L((m4r;^G9v1<%fnXrp=n>9l zkF(JFouZqFOXX*G1Y=Lwi8dV4k7D%@W)rR3i5XNRrmmL4)e(3o6xp-*A!S{S%TSH2 z9uZ|N8vt?UJrw?$Xznq7ZaExpJjwE!m?2)*`R^glTuq#{F2pICq=jPegy{~D* z6CZPJr+<%ZK6!t|>!Pbk6ld@)oz8rY#?GbX4?n>)7h52T5a)FZVZ7yNG#J*#hp(RzoLM zI`_<)Q7>f+Htyw)P|1t#%|89E>;+C_pj;yE%8n$zyRr{Mk8 zzyfq7df89~d%5u_t0O>{V^sYvpPqZfQE|S@Cneo;S5W+0Vx;IdhPJ*XrnhK6p<2Zy zS);4{)=u5qS5U;;V!9YUn%2E79%;@qE|_5E6Uu1wb@8;qR{oK3=o~OzC}gh)6lYgZ zx4ojN4^O7J$R+L-Y`mrH6+yLYfc%4Co%C6z(yHs%!5Eh=%|&-VLw_;nqtk#s!TUsCQX;YaaE_er$)Vp6^j8%*|^o| zQcDMIaR61bt61|=SD;@^REXRSv`|UFzW}XMXi~GTs*CAxbX0iyuwrMzv1Tuf?KPQN ze*sc;Rit_z)5|YJBj0Znsl4Q8csg*MNXOn1ooRc%@a)DDCNl}lN9A5g5r^PwrpCuu^Byo=)`fJ#r>6>O7fB}jr5d$NnY8ne=+xYkbLZYR zseq?Tm_RG>!&aou>B1!|7r`Ta$aEN2xo=4 z{)oR`^PYHWhWG4~*Sza_h2!NEvY$RC8z1|Z;)zmT@9R>@=0Ej| z2FYL)2vsP_8i7KiWP0?-N>S1);q9stJi&ZiuTYhsbJVFy&^gK=O5g(v-4HWwp97by zy#U_Y0!_CTV9J6|7HimW{EFn8>qp!IHO5>4Kd9uGh=g0q#3Q0j`geb6igB13S%e=I z3nOsT&|HA3SQu$ts-8Xy|3ukCS6a1%-}3H+fa(d11IJ$f3tZIb4X=(~?MnO}`iuOI zV)b|j#UB-4nfnewSK+%A#p2;)`Az((^=nkas#JO>D$6{IxozyritX5w7sUGK=rO>1nR$O$mirbZ`#ue|o7fcqsCn5(78mQaH3nlTO z2>iZ>^3`4^W4q}!lS-dx1cRvRpgg%L1}S+_hJJcaO!0IslF;xI@E(2w=9Y43SvWw! zzrR~f-U$)m!&Wa7gU#N;*yzdB=U3Kc!5{ zIVqY%^9qOkF$BQ(CE7Wl(D)1E32&K$k)ZR-qfN zW_Q(oN(fJ0C_rOgP3G2~9A*MWYPx_KZ%t!>1ad2OR& z;b>jIu9p`!;$Y_<0YPjFDPf+uvG;Sm@Q(2A&_cXw$d=I}F{UqVJ|$Km>_p?!qJ^+$ zQT%Dq+V9JF^RMRVu8@to+3!mnnbcD-rNBqrZ(h3;zpP$^L0;_{9-aV#RJ;m4wt7V!;WL^X2yDp(M4kkcQ0 zjxKb+-;ARJTRdNg;P6vuKMxoMc)GT}c1m)h9NmGTdn$IS2_!=u1gKGk?*9*ykP=9R zhOMQgb_#-B7PMEq+;imqze+z%9$y&ZiG(lZ$cgQ6G%$C;s;=tB$upDc-TmE%*!m!fv(|7wKX z0mrLX9EIDuRq@D1$_R)A$&Uq?KvlW}~a zoQA||;-{>KRmz45|G(QXoqAH}HzLp}bKv-Ek(C`y8xE_LzVLKfFLd-9(a@P6{jIjj z-$$DYt104J(Yg*>E$_0ef}uZ}CVwk@TksB!GEm@4EnC1iP%Uvpr>$!(LgpknvNdIZ zX7rzLu_2iOV6a%ax>_uHOBw-cUAJoHL0wj-3&dv|4Z9!)i9M@T-~mtP#tao)5We0D z8MaztVYL+YP$NX+R~}F!#5yN#mEyK2QJ!w8hK3>91!BQPG0@oEt(?Qf8c#T$v%8hk z1wtt6;ZQfuqoz7sLBl9q5&5Li$Ov`hz0;M;h6?ovF^)K%&tU*kAeMK%8^nnA3PfN- zPdWUak58d$4POH?;c!SXwl*$8r&Pye5bP(;i32_=#}oJD=-b8tYhoAOzCMm;sN;DD z;|b%g9>85cA**M;7pp^ez~)Tgz&PI7?od(PW6E?KM!si$RV2;*0W1E0(%K(Hl!%U? zBR}9^M@R&H|AT1mAKDD`FI}-bSY4ntF(7psE>HWOf`1g_>jdGOcJJ%-wu#!e6XQ5K zeQjKDc;!biSj@_yZkOPp9!cq!!~-Eo%t;;p0%83ywRTqGX&>$>M~5&{h$@6Gf~Z0&j*v`mrgvg$ z#N^qxMbhS9L?02*g^GR=EscMgI(BIqN;t2j(ikb4HOy)XniL^~5Jtk>2{~#{+rB@N z)=3c)CL7_SyREe6dugR9VTCc0ZXji8OcnhTL!}iGV&NSs$(ah@$AnQoF zL3zIlU(-Q)=~ry$#8b(ya4#B4O)rbc^jr{%*Wv^ujo0E%v2XsCme7_lML-1sJX1kg zwI)}DPrN2KB2>|~%Ez#ePQW2kv;d0KBAaO*<0ebHy%@zTvO`BmUpY=NJJ#no5K%o# z3Vn1Lv!j*t#br1e7L(T%cq8Fp&lM3;e<*U)ubSW@gS_L!Y~ zebnIgOgBUqlD)wL)Q^H5c12i4Y+hwU=u9*e(R@^~?Og0Pj3ihvOWQ8pQOq8bGs+_8 zH0QKY@nPKj?8h?0 zVG}r2_YW{ElG^?uX0%BPPLmL$S-mj&kSsPbd{Ho5a`6=+AzDE2;T4F-6SErJQR}{N`qK?wV-XHcvH;Jv&*F zEVx(JJ^~v?f3PH{eW+%OZF#oHt1paW-j-z zoy?8NyKLBE@>1Gj<954DY{Dq|(uNx%DE&epBeWU%4RUBfDIJptp8N@z6xoMmpiYj5 z)|#20mXn*dR^c94iMw!W6^ZW$H-DWdClNikVDK^|(1DiMjTIo142ghiC>04Tsj zX)HHibHaehupH=>c-xpAHq*!? z47IjfNJ1aEZzHQzklk)o$mt4ShbWeO>gG1l&6cf@cBKxZRG7`#t0>89NvtnaZdMty zfihMp_i<_2ysn~wZo*Qu+4jjn4l+WKON{8wX=}0V)$mytN zSVH4(xwR^#ykiArPB6C*ez=YTY%46`NF#u{8FF)k_uFRVkNo7^8n*!S#f1DNcX(8 zzlTr9_u(Cym;{A#V;V0JyWzU=!{gCFSTB54`##=w$<4OlZ(;UO{N+4$_2yJk){G4h z8o0Dt!#09qels7&LV8q9EIKI4X(lbAEq6r6bf|h!#h~1Uz2Fk)u6l~uX6H)qF$BR6 zpBjz#kt*h(GOd72HYZ*7L?k-(21x8-9dGlokFX@D>Z5Edyq1cQUK}eeGkq>jF^->a z*y6_9*JS|h!tD0UVQxXLeKOwc3&-0=%sg0vLvWXu@aQCOK=64KR{1Rwm&f-u8ST@b z^i({_Jj#}ck9~Cp9`l9G&9;s$6oBdYsg@oFmAj8&S2+H1jR}^KGSnY}tT4|!!S~gU z0OIS4QCj2P%N6&InMd6~He|S>DoVH2w6FF-3POWa?B}5&!OAts4-~q-C4V8wMhX{& zc|IylZ+$%TmZ$g1iy?@Dy4cspb_^JsQar8ksA{Aop<*Ai**aI+9Eov7jYKg;DQ?JyJ)4-Fkir_)X~<}ib0P5vMyWC5kd%H;oiZXQ z%HJ@Dy;?&zcFYxrs&wc{R*wK-ruIifWakMwmm=rKXk}g9UfsBg{XAbxfU2&69uDP< zhH@XE;f4{}yv(dBkW=2q-iwo@VKz_uQ#>Y&RNZ4PZ8Hr2fLE0AHmB6IE(PAUQvl*F z<7<|0sP|m3``Q`a=k3$z55tIRoCKKOJ~5|Y8(sHaZl4A~5DR1&mZK`}V@5En8fJRT zY;@?+&y=gw=NeN#Oe}7TVp1kxiQ7t7pXH3dXGbF;aN%I>IC1G4$tU6;*1nYPt1{OEgOwCTE7DD;x#T=W8)Qh!hr4kTbm zvFdz2%c^T$iYM2cW96EI`)Jb~ktIh2ROwJT2Ou>bs&dB>JXFhcR?TH9=bF@3_|yX? zO`qEpWo(-)hp5<+y8Rm!y2+z3F>FZ#|1HD7=kvgPCQ}ZcjO<3b<8Fkt2aXyk<`NL7 zC9_cT|3oDJ6JQO5CB>sKhGo?a1h;Os(UkgzUyp8}8^G0;af;?j`;G`uqHqDl{-+B3 zLhe(67d>Co@E^Gz>ckc|kb{ZDBZj~p{K+ifnFS(hSY%WPJ01E~woDn-q5o^Wh`P7l z!)Snb>s(czPeFUl(mKpixe_e-H~cX+<$6{QcxFhv5_iA%@08s`s!j@gyY7|X>niXi z$oj9~*KMYZS`H!gYk41_77g@S^kt2+w*orszXC0G0ctPTn0mP|HCz+IR0$Ll5)k4| zWc^o6N2K155H)X;&Y3=Xix@)Q9M48fbk5 zbSbj_E1qy0p%t|ZU)Ar^5B;OjGn9LZ+yYg`vu_@Ac=o-KXWy^FIM5~m#I1qFx&u9` zLfK9B>>bEp-HQarDe44G&8oS0v`)Ys8(INYeThdxI=YiZ`qozc3d4=vzDv!{o7Knc zd@!aZj@dbnL%w{1pPgvrV_+_i>#;0J3P*f4WNpZ4=3%y?+`O~HF+`@okmKuFEjDG} zS!DDZ7zaWFpQL$%Ra}{ zibqVpfQLMI#~4!|==y=cLye}65!2ry4`2+#V41lHmIIGK4Kdtda_$3|9F+SoK649F zSi*+!!iJxmh^s+h~#g{%ys*%SkpD zqoua@$^)3AxEL+9t!KfZYDUX>5V&F=SAiPXdI9tR*#|WNEv`xa2ken;KxsZh?NxP# z+OgAS8xfryQW^OvrH+eK7PH1(7){^TGaB^S$NGF>G}8%P2#^EiRA8N(t!(gWqY|g& zM!6Ww4rS7N=PlJtn}@ZOC9Po+=AD_nbL{RuFnQUiW@YT1brgR)-po9*mOprBv$bg3 zltUIDqgi)`T{(2~4?T3BMf+f5y_1I`x(5Z}hFaPBCXgO;h3P;cM@6&fVSm8LNRU7M zr4iZ3mB!|(hrQE+V?T?`BMKew>;d=!J?*qhAcHnfs~36KGyLkXg`xYUeD-f@kEB3O zO2K92mE*|{%%4$jBSpRD61_*`6^vK|oLPSSXBiJPjSAU7- z3T!h?u5b7^pHT@V#0h2Szd)JmfZ{sD?b1*#L91w7LY+`PxN(16eg|~M#Z{-~YbaAI zp)__viN8OTx-&JD%w=nR&~}>8zz7oK+-Y$GBRpv{FEivrd2xHyDk_}jtegtkxU6>a zWc?&E$hF9;v2Wt6cm8!GX|pfN9+PL0Q?Anu0Qc^%@)iJ6Qw*(FsfDl6U5vXyQ+cx+W7Un_HVSW{~z=t=1CJ_ADmz64^$IY8Mw&Stnx+zeUd;k3tqNn#GHnZEKG*y%fD;=8S-Nuq4IL0;F7)c3gcvT8D7I|w+NdA#sj(izKX^T6 z4-7b7k5TJWd2484U7kj`FF}_Ndu!0?!1?t$$sGOnbo!uu%i{lHH%^On#2 zI??DwShFpV$MFeGx)1-4Fi+LU+D5*G_w1Wc5GrhuT1E99SSrW`6Y zb`X6&2CVKF$n%sbwH~cUA`>6w1834>p>oE5hACM^v=d zBWg!^2C%H#K|Q;DAesyao#cx!9c-n#xS~LhUr}LQTcR1CJLcjpz@51kv-}jQ(5{$j zNqHcpcSTx`-M)yq2PyKAvJ%lU3U%t}DnL0TV08F>3LcE6jta=p`pW?4GC> zmA^s<0e7sJ!GU8~;DM2T{MWK{PF&3`M!~09q!nUv64>S7)Ep&wZ2!o=SqVhMf(PsmuIKLWseA$Gr3Z{o9_fFe z%*lxyX&_98`|)UDG!}VlDWZij3+tVmS{Sim@fGvED&~9Q#)tXliVnEq!nb5!7uYZ# z7b-J5naYq$bpDYBMqpv0EQ1zDVD-8tvdD9P(F+mA2u{2nVf5o?mzGA;Izu~Gm6!Bt zJEJjWwKO_o^XFhoBSDTGE>YK3#+;y<|CroPX7vsOP25WC(5x%) zR*~+#T2MhNBUrq7kuJ6}Lh3zvQOU;TdN74+TjYFfn6);-#p1uILu;d_SpNsjX>AM; z2fn4ft&R3RAN~w7*f+z%?>=m&_sUP{&(=mu@yL%97HM>@yZh_1iYg^T4@DZ?#My7? z*+?T&9JoSfB8>^1zxhh>3J@T(4x_%1(}razu`R&6MXrVLLR)a+Et&WeO=x4Z7Z<*! zyf(%d|5d04Di<6F6#42mWqkWb1ubiBbQV3orVee5HsJ%lLIgx@UFe?&{Ow<0g^LOtIWT;L1N z;2OxU4u)=KhJ;XBJHtQpgG(&lc_@&m7Sl^S0m+%Mh%=4^)5_Wz5j96bbb-P0Vrmm* zG(+gbgeW7~)RA6`G6qy~^4SaYSCp|Vd=2+wyWJB6ldYs8lx+EZH8ymj&Fzhr=_k=t zD_fs>S3y4aC334}8kA3ET7`YV#OL+iDmEd%e5cr{Y}7|N?Vgf9e}4axOSvT5N_KlX z!DZ1-liuUKC`Bmtap1&L2`TtVV6D2bb2ctSv%MD9ll}blD7=G!yA)%~D?cMNM zQA6ecuq#~_sfzf!lP-UM#;s#WER@_1i~O0>976dW-YxR{IUdDsK`wI-vk>8{oDDg1 zkozHiO;`2GWV~lqnCCZh5WXWg%Ky?b- z2Z3Hr1O{Q`>#PunbVXo0Bf$N`Ndfh$DWG0e_sCQ7=E-z<`T_-ZHj-)%WrcT2hW<*6 zI~xf#hhQkh&xEt|S!ZKN&27xfQ*!Z7)S`J7OI$|f)><#Un)YXVH^`UKDVT$jdb6t(lN|o@;dAi-z2*WKQ zLEVftV%zsLsGBjxbLF=R`k(YxH{;cspPs?5PvpVxX7oBm-HV%NPi9Fuj;Q1N@f9wE6`L0l$ix|l+M5T z0R!dNs{Z-|r#brTH+aWoFQ;5YkUOlLsk)&O>?!KC8!Hi+sNNOiE?k#xbM$$7td}u( z=$s-&-s>QNtA57?pEXn`=F#FTx=Gb&(dimS7&Tge#XFl+5k8+;JVnf3M%%j@&Amcw z?shv5F$vZk^lWbtp!$ zbc0N}60L~IQH>K1f*kkbL@6EbW3)=&q()Vz;#7>73mC32Co7n)jQF9DVOD3v$DHP1 zL?PaB0^$9;8Ii2Cm}0~*^{N@sU%e|vH08Qw_au}W^a7`?yb{O^i7ia+vUPC0=T=V;73)d#!LlxQQYLue@22?Ton4ldk?ImPy|bHWQ~DkuE{DoSXXx!{BVp`z>?&4+cWX9o_h_5}&~7%|_2Qjf z6Oqp{kC`)%n={{Fh~~$B;d{BJazSr)bxGzoR5y*QgRzJ`VXQvUgnmXZsFJ7q86hJ7 zJRRs~G!qLyr;GiJ_HlXG24s6A2TwS?B*=~shK{G%Eym7u*e#~qr&yx8*WuMH@2r=A zPUZn#Pcx-0u&OEbTK{rKw2i3p4^iYdi%)uUqdTsg%tsj8pjb3Ny>;S{R8R3(2 z>32GK%nQ_fZ5=OA@4_;sOgl%D#$fa=1K^55$FR1* ztX!{TD+)M{f*R6ObpR#EMM`z3<~)y7Ub^N*M$k<47+ZD*h+jkPk=tW3aJWSge(?ipYe+5gq$pV3{%llO}*F`-EG>p!PUH0aD8o8d9_i zB=4;Gpu061bPNyzw((@UGV1BKL`-UqzfX0OV3!W0pJT8@{V5v5wzzVBkXso& zZLF+Um~NK2c)}MXE#R&m5dp6d-4$BZyKh(M!zEN#=)`a63Oo!~c7?{AXiw*~%-e?d zs&(kMnYU}q_pxO!LR!Wmb6@Z5B}ml2S9F{4$js^9*;Y;&VJ=i=4;qUrE4{Pc#nql% z0r!oO*6r}6arnc&z#l5@{H^?px1>3nUXcm%&R)o=c4nVbH?Tj6bt$!uGrISW$C!u? z2xSaH24Q=kVxLlo`{tqmuB!Q%Kl@&;=b9{+DY@b9DE}y=m*b44jZZ>@+w56LLU!Ps z9Z(zXJ-ikPX79|}^h=yEA-yp;&An$~EtlTYjwLTKohlxqBmGB75?;m@$eG=Kq8}i^w!?U7or@lEU~jaCPst@H zI_os98e&TYj0@y4n@1=}wQA#Lw2i;Mdz#FHjOd1E5A(S2280!o1z)La{Bhc88aK!o znf?x%!)<)kRYRO)JEB?}XWqAs^HG1b&OJpZSmY8YA*B&w6-UrUt21Sie$j2jaSGrz z0JvF~RrdOr4AoX#1t1ATV{}v0c&hq)$Ky14u;D*pm?s2f-*)C|7C>rqp<>@sB)}fX zo$FOm&vvV%1#($aHN6Veg;y-4^3;+0QSLMt!nIu~q@F{Jpy4eJG3Bl+jfLHPwygQ{ z0dUE>$O&^YQWea}_k}sd0W(X(Oh5WA!?ZbJa%qN{z%Z9OVREY!%v<2yy&S#`qH>{N z6tXGa_snM2r?#n>8-WiMb0cMvs%Q8CJ!F|@U?h9$Sgt*tL37#fK{IQXv%>Mt3UlsT zVXmXXT`2T#75;LN8+I}Ot_m44*Ef&rTbt8PNp4{__cYAM++@IgD-3j0*o%4$F&cGP zs9+C(nZgr7RhVJc1kB9C%oaEJ*s}?6SaAb)AkZg6jkxq-D8bUrTOO6;-vr2#O~J5O zH-Z57_FZq_R86k$KoFETH^jK@_`>&%DAw53$aS4A)}}HNDGejp-BE#jV6N7W}Q=5AUyQu7TIp@cmvVSmfVMrE?PSRSTpu zl(fFUx+V*{#<7{4!A)q$TtX9mMf)91cpFJ2#dK*nCKfwDXAFp0 zko9V2`>m3#V6sh(#uz{|D`2Xf#YP-!+*5caSa*Q|dR*NCQB_{3@(4Nylo@Mh8FpM( zJRB9<_HhzM=;n#m0+w8z#rGgRF~SHHALh{R5ypV@R8WnXe$AEXSxozCD((KHjDn<9 zBV}WqV3FONy3MRiF{rc$oGBstMUzsiG!sZ+-Rmk2J3vw<-$}7Q!CfcCk^qF^XM?}4 z6q8jH8qBDk2Jz-?Q;A+aFjep868B6_o&w>qkV&D4Ek*0cf(Uz_&*+}j8TSvOKs1;0s+$Y zyhvMQ+sC$%?J2f~T9?AEhqZ2;r78W5Mgyl{zk3aCpH1tUd8gbvYb5{dXX?@4l=eX8 zojcxH{ZxYJ(O;zbW!}NOBuXV1J^CBoS>brMW#>>qeG2<0 zFczCL6Zg@Pu||`+JzXSj>0$b9tg*#8J1xw11N9+&Zq??gYJPV2Jax2^F=o3Gt#x`7 zx5zi0Da)KG+ngznI#cXArBcQWxpW`>F~$gZAQ_yq2J_mn4o#F%IUn7%NAvOPH_Iw0 z@09S6V?3YK>k&Of+W=PH>CJ4Btw8#BbQ zWAyBJqkXd`s&33g8EJVL8zuP_3@dCdN{=AAVII91tYUZ5w>shaQ7 zAS=U3`RW9VYy-M0rr%bL2gwFx$Ydx!Yo|)iW$#qvx2rlmShG5@8vO>hjz7zAR+c); zZ*S0^iAIwa3qd^I!VGYe7T_lzfnJi+_|GK%^C17}`gYm=diC7z)Zse;sm3hqpnblD zy3N8a*-y{YoLNSEJfGW0)aOFE_0~q17sJwnNA&L?wQaya`&%5B`7^G_oQ*}R>)UC{Y$L3R;{etn=K-v} z3HAYD*x1d*{d!PC8PCuQvyCh4t2b#k5(a6=0wLmMc22{lsQHd z^Vw}>6&nf;Sa7iaK`PD1J-P$t8sRN3Kc|V}gX`=xYwx_QSzDjY6s$ExLKtP;mnd(p z5z=lMvL{)~;DfEM5XlzTSNg!x85oeNu?&6RI$q>NDGIURfpThfmi zac$dd#^<8kWv5cYawp{HHp(4mmVrn^eYr7*)JapB_7wd1aGGFM1U>thF(Wdx5(PNanKROwAs+&{*&~@<_~>w|;UNk)(8*Nj{MlRRpH!n| z-$kehzLOY);&S6XZ9~kt@#frs+yUlX$njZOj2>?r_F@o4(1XdwQ#gfu*g{u03}A< zUvRvP( zKu!b@LooGc(agwEvcY;}QKC!FztXP3 zkWRA5gFuYq0Qb$K;fstQ-)4EbQMkP+?Y9)KQL=ts*@oR;2Q@gv^oHgMcGD-n_k^1E z<6@VECiaS`VR#)hQ^XQuohZ(x1N{6DN_W=)MEq%-W}2!lLb{T5cS>HiO9~X6*LX4qqF+;S z$7?isuQV2!{u>Gno@NyMg1ioHNBlutGrY{lc19h6D}(`~4#Fj58GgRr32+9n;1Xb5 zbIBJp+Rhv-r9oLn$o;lZ_xBjC(lko7*-mM1?!ruFc2nX`u4t%vc^b`8y4 zZ;UlQ%Ppfl%S4z8=0X`;%w}r1-tZUea>@HiqlwpN3mL3gPRoVKhTC3zRV;$mRoA8W zwds00A;W#@jaox1o-_h|1wL1gEAiqQ+Wn*vY70YjcA z7>n^tX_u5Jn?N+NdXrgzgJ0|?22VNff!}3+ z6R9+p;5o2`))VFg7R*gYCCCTRJT?c?ikt?MTZSG8x1(A%0C;6q`YdO(5rk6h$H7U@ zG07>wAh-t^tRJG87Wv&G1WIn9X%e6&IH+*X>a)wq79-Jw zo%aB;+gYIGr*j!|UfPg9Gnxt<1TM;24B8>IWxA>knmRNQ7#7&hSY*yDTC&AxE{>$q z^IMFzB5V$w+XD6vT1>xhfiZt}HZ_5=s{dFT0AfVO?Y~1oUKzJ&Ka9Zt|@go=>BX11_$tKLI=o6)KXeFd4Ou>uJNAe2EDNnhdJAZx z!q--$ouEbAjF|pcFa{zX%^s{nGR~qck7-ZT!tL0!wb)5+H^!L@UN?L;Ov!0UdEXlDwBUK8uW{+2GRMu0A&&#{zuesT z*77oab7Kv3_xs=6*aPD4xVaHZ+Rr#O*9rJ7$iu$@E}Z5795n6U0Dtmub-=$bbOIjF zW&Q=@kqE4z?wWjw33K1OCKo^C1iatJX7;ZEJfIU0GC2XgB(wqxM3X7JOa5h>(RQ;Z7MXSdVN zcMYpJIEv~YGX991{RoaD%jq^CBAjmF+@ zj47*d*pYH8n1Hr)R-iB1Y4c&@O=Cqu*@jOJCeRz9!joP)Vl?n5fG52CVJaOxf*yS`qnG&n3^hAuOlg#M#_(B*|LgF7EB?QV|L@@cduI%qmoM6FSU$y5v|2|+$Bbb$ zuYn@0Qfks44~e!k{gYKf^Z4na5&6Am ztZLj2txlP4y@b3N4p0;}1)?9Aq0oxsVG(h7aHD@r8Ew68>L5x6Q`iZktMSZ`GD`SO zyrb4+{N6W)sUX&cF}L{G3nEz8*ol@S)O1YI1^f#Rmusf5G2nS&LeVvxbT5);L5@cY z21FZ$X*F|WZsZKCap`hxEX?sj!%`NjVa3plnaghZupx3O$+{T;aZyU{gl{dm!@iZT z$8oEC9eM0t^!@urr&`;QDaD*5C&f|YlW-0CoL)F-MAwW%WwtT5Y^4;v)YQhezb44A zG8>c?YoychWgGIo=erqw)%1_vFNECKlj!$CW2*Ug3#JC=E(a@_tCdHKP8p4(UK+r% zfDs}$&E@8&C`WKi#2N-2+zQ?Efe_NZwNv3K;{mTE+|-vA#8&c~Bk1-iV}h8JN7gZ> z#x36mQcidnP{Z#ARHgy>K0$lNn1brarcOYYz|A!unZ{D_&&K2pr56!jK2L`&udExQ z>-!sqsDBA1O!jX?EyNiuiV$I;&T9TOig0Tmj%X`mdGf<=mOixpjNvCrb*=4PYc*fF ztJdm)^l;^A$KGW$;)3W`d9hO1dWDCl6Avo*M)=p^05Ry6=yuQaQU!XGGSWXDqK)+3 zL#XUSta|_5hX#HG8{=pXO8p2+cN=@smXD044Vv`^b&GJhEDp?aoFlm;o<9Bv=MG-) zM@>F9Mz+fD;gkvc0N>o$fQ}zwnPgIKRL6peoFbd#s3p*cwMr) z%op#SylXr=IPk1Lgg!iL3>AT0Dd?QhM3{O~?{k=IrFExA&tZl$q>EB-T^v$)&gfXP zUjiyWCC7Cp)2Bv^cy>L-e~Pu_Gec?5rzrV*FS_`t@u*nQi-vq=3=vOtrp=#W!DM(W zUHHrhwFE!G-9}pEYv{~~+65Wo7*8=p@ZILn8cD`UME8mx2_-yiBa&gT8-H;Y{#cQ= z1M1iltH-|#1{Pzkpa*gM46(Np)hjjpX}hnfhIwL7sEOjKVlw(qJXu;HY}u0(|Amq3 zf4e(R_Hp~98*D+GmN6mr^2R~*%NJ-!MF(no9t!a20GfH;7}hLOBbp?yU{BT&hpHlN zm-hgKqq=2$0yF;!`u4oB%j3oNidAH(hl_k({L*M{wCYyI_tLp7B+^>Z#czy;?lU^US}8zRR?#s%sKvL~H@TuX?=@-MhV{q8+1dydDLrVzp+&B8Me$9YfMwgZm0xtU z{R3_3@gIyWA@4+D3|RxkV%-dCLH8ZVS64Y0(%Q0&-rQ%3s`Wv0T{b&{=6q>tE#|eR z%|9B^Mo^?0lbJ@%br9VRlyk{Q6$#Dh&LyKmgAi2^PE6{Wsydec!`Yj_Rata@;N0iV zW#5!V1VljGaKk`z4;9=|6h(12wFoUWz%3OGE%ACwMIHAv&B!)Qi>tYy7^0zKS}(a2 zmeq6B64Ts3@Be#d9=I3Y-rxWK`TM@{Joh{2oS8Xu=FIxcsFlrl@89%EowkP~x4}ab z(I8CkMpN2Xan|8N)tZh2*PPW9K)5@z%=oRgmOfH_8VXy9FXwj`D86loJOSq<#Jb(3LHJns*DMAR#c-}(c_y(*V? zQuV{?O>Tr3&Zz^VA;W#7x+auwRuOzQm#eD2mD0I2_p|7GD3)+O!lDmXns?^&Eczz; zjv=CU^%VK{Sj$z5zGsjRvS&=d+_m)OMwgtybc}>SeW@*vyQy!kTg<25)b~|#!uXdr zvCT9wgkQS}BZ&&(PwD9`pZbbMRs0>gJ-ZYy@&=u?eC{p%YsyT-bPM|s9dL-BzD@lD z4MpO&w8P`Px}^;&Pgt??0t&`aBn;<+5V=zFF88>tZ(W~B`r9xH(BFm$)TY0-mXC^5 zTIoBZgx`w9J?!g4K#8+t7(W)NMCiM0yprK#^fI}hrLMrxk?O?uReVWn#V7Ypt_ys2h(Dg%f=jvsh|4$k z-FMrIJ27WUZpyx?Lf<+x!&k76MY_N~7G^_@NJce#F88j``_*u7UC-6K`T@$ra31rw zKGDC5v^=iBm~hxQ!aOVq_U07<1&RX*;~Me3f9rdAS?deYe?ate1-G{5UIf9=eggx^&Rx^JUytcJ!8fCwIEHhGyL!l{%9>;v;;X*g z4BElLuX(sz}eEvWB7$u_>-}{fgkx+JT#uI&* z%h({1uktXy@rk~r=d^nG8GpNLEA;C#%3nViwAW_}r%5$C}`EUF2gU|F^m1~e^ zg}0yN%YU}&`?(Yugxt??6&~|d=GR--hgB(iJ$amt#bmvQN<>}wzi7GvvjWaE8vh)& zZp|z;^%hq8F63MmA2@I?QWT{>1AZkk+AX}XP8zAo~ajFYE@T?V0>J@65#v%o1nlQs4@^lq6 zbY99OIxnRq)JQ%2sw{7sRS*Q<0JB)YX?!S%()2l*m((RNBGM0iPG6&+)uX_1$*)XD5!54+6vaFLme~mnf=H#p;0u{2Rt%yrU7n z@sVj@1kD4g$&I*+fdwhi2HwoTIw&|RZJdF%%QC_}Qb{beFNw{_lQlg~D~Vkw^0aYD zG*Oidqes=VSzf#Z64mi;H6f((RGPZ1Yb2cC-?Sa{#jxQZXt~J4m9LQZj&P!tdn&s48>@Yvy(SP>z)~Q+#=%Dc+o@{zgoh<;I04 zZ`CvQaW|ebI^g6b^_hAo9$Ym6p5>s9`p7YY{>rdFr7|X@dz)rQO}UqyIw3Z zs|p4~29T#UKQzy*xRh zb&=&ZKpM>)8z2q%rMkcf&ZP>|8VzB4M(Y{$JUV#(djaSv%=h zY=BJH85eJ`3&BwyF|3E0<7RX$@G6vh_aS z(SSt+kY^T-vp738w8n9c@Z&w*nQuZjTy5Wi)+4QRViMK&A0duD5y*FqAJy8bYCrk| zNn2Qq&1CTfIho{1(G@Ddi7M{u@6NnO09^NX_xSVx7NK-B@HGLfRsCsyL8zT0y<+9( z1K7ggkEyW(cey1NW+U5xrSQo%=jzcA#<`;*WJUeOPc>v=k**J_i@Ely)!(EX(QvA# z{;agBC;qJVu#I(`*7{wOl1JjGjvv*}D)_1(mg3d=W~DXfg`6yA?U=0YyT=~|v38zr zP-OL0!H;h94#BL6=Mf9)JLWOIy-fzeFO0!-e|cCCFJHi%aM80lm_4T-cBhi>2-N$m zZ^Xtb?QZe$jaZZBIiyTS`m*C(nhu9ZBvhym5h+GXUE|fvi>3rs{RuT*%oo&L29>yh zJBP4I&BeGsy~>ncr47^4oRicvSU^6(yy z31dkvFG+at6TT{pwQ-4(KLeidqA=Dw>QJL;ghsYpD#b;MXD$$&qpafAD~JZi-0WmOp1a;4_*c zk{dVqmZq$?Zapt=%D#8$^s^ui{f8fI#@Z{-e&TnVu@TBADi6(Jp(r{t=79~oX$v+$ zIb6DQ_S52CF755X^8 z(*z&9`o9Fff;`)=ivE44TJRmx?f(#*bX^m?n^g9%DRu|D6r7(J&HP=I#T$8QH#Wd$ z^I5WYh7$<m+o#)?lV`2V@-%>;5Y&@^cDPjxDx2G%lg%=ec?$w>SHz>G_$cj~V zK{k}?a~MCWoqwVl*@N$W9`|M7PdeWp%LRd{&&F70aA; zULK?ly15%OHXBY=^7Wl{J?iHdRpRiQZ&k-1AszvJPv!sKlTFfjJv(QkF8fBKo}y9T z`$kf~{SDvUn=MwlZ{jWDSP$igQ#>_}_0uiR-xtST(K|goQ;Gde&bdR&{FDisd8d9X zSqUuVtNO7JT^|3uAG@dwF5pZ1v+n)gI3W~-UL_{a73j!cjuEYyH*lkXgSw&s>8XI@ zd_a@y@N-%R;d7)jO@~e?V7+?nB6k_Uy85p?hH`Mnob|b!zAeebrw4P6KrFDlH zODfT)J15}M#|-|4< zX8q5EUfglFfxFt~NTqeJj!voa<%<*8tIF=f{7wSniqjUpd@yQc&Jq6QVAi-EM?#VR zg6x8^iPqV%sYU#^!R$5vWLzOkd&n?3Kh84xaHZ9J3<&PUY9OXqM?uOE*3Y%5nS=K& zr{tljGx+5pEF!!iGDD5~F0Ciof_lX*QNBs38E?>x%W@u?$Qoq*c&JXxT`U1inW02# zwdticfZB8#X=~Ry7a$~c6Jko;1!d8wH=>sl9RR0Ot;iMaK>rTquTgJCCX9vh6fn+x zb)HJwW7Y0v08LlA9NSN!>*VlpW)^#*>Xjl*hk6g8U|)!+T9PPWP=kf=UJx{zU9LyvgG%O4W4 z%>evR8$ia8NeA`WQDjc2BQ%E6bO>arSf;Gj2dmbHqCU=-`Y0h5lgPn3Gyh^Zi)3#g zS{^n*@n=;i1G<%E0xWf;SeO2C1lz0pwvWG@%+g)Sq-YIe-+q20nRRw4{Y+TA`6O>P zk`?$rLMbEpMX}a4{chp3>3HmqxKYHbMzTonU5Fl?0b^10+41VJ{7PE+j+9GuQ%A8< zT@3G-!UpK>@FgkCPj`{?6gH;en7xvz)EG})s$0Q0jM0CX8vO-#8_nA5+VJk9S+JjX z2{zoJ{Vt@r8uTu(`6YtzUp<`K??jcVf%bEsvfOd_Ui_sIKU4i6HXjh=MBksxB&ku}c z9hIJ+@Y`cqoM+|7LVq}flM0tF_SJ{;iQ^bkPJPT@8pj5E%+UyzQCh_Wyho!iAYEqq z!GY>bXVIS9fM%m39K4U0yV5lbA_LZrIemv8?6(^0((&jzdc_wHRlnTF{~FIaDSq2{ ziwW#G<-$jN>;yJmIsGL+Jb}HUG~C0RPh?}lVvi#pbOW6iFUrKxoZ>Q*1zocjRybt( z!09=e`Ob-Ko69G=Kz2@Ddx#I1#BM7I+jyrJ;d*}hf`9lTq_zE!q&4TAC!^~-;wYan znKgAud0+7KH1n;KS$`KN`SVUbHfFFNm41i#nJFw<@j1k;Q`m|?I&u+{nW)(%FjhG0 zKIm&DTpF4>o$s8=n(NB=w^K0#_w##PoyuCr&Ho5Q1sQQ*5ZkWQ%>eAaBRPtnvP()7 zw82W9SDRwXM|{*vETUdqZTRJnxalR z1$BXGAMw*Kv&LENP%Z4oXCf;vz}RhB5vlt>b0f!R*1S3?|H}r*WL>iXGFc^Ab&;=a zfEb@)M+82%gBi;ya*@0pprP?uEd0Ov*G}?vH`L>M$k&PR6=az4htnMJ`3CBC8k)5N zb<{S1c4MAm6qj)@FL;ejQnnu8{a?YrZ1EOg=hRfHXSS)&8N2y}87w$x=x)GbL{odD z(|NaT4Bu3a;r~fv8Ftot`@sKUz1EGqcp9vC6EafEdcOu>XT3k+XC3R^SexSTPTpxc ztanOn`0bti)#n*PfoR6=I9JK+` zOg^;%(oDA01&llSN3XKrtYIj0%1ZTAmdMJBFb`W+{=ZspxGfGcJnVV30Ww(*Hb5rp zP8QskmRpJZWCO%hR%~6-9$cpHtXWN9G+yP`qn1?*=)AM^9?9AH4jkQ;MA(seB2y1Oj)p+ z@0-Iq>66xK>^PUIQG>UH2f|U&FTx1W1c`2E#zuZ^F7(wTk9*I0H)ftapQjyP=m!4wJY2?gp1e`fzZ`QLhJ0f; zDeYWY$!G4w7S9$tmHJAr)x2sx%To55_`)|>h<=r+lKzla3~ zf0K)t5`2v#yp7{W|Hj}Lvs~+3=KUwIJTsHD4i&-<}3nO1i&t2R2fyJ2gXug8~XEAH)@zE-f z$6uvfMJ(qoOIVoC7jFToz>>TvL3Gg6v{k(O5{y!_R`6p>SU<(`E_Zno6C&rf@|ZW- z3r-W3VUBC`vg%&hhxs$J*=muHxL~lRS*P4k9dQX?2 z8y-7f7b>n!kKe%q-eSk}Q6Ia8H}Ib4^+8Yz$7&Bp``wzjO@!RM}E%{}J5 zO{vRlpO&buS;9YA0adqKonO3yg*qv|CVq1@3vDs(e7ZTyTV5{G7%&L+}V5rw* z4f^R}d;~r2@VD2n&MoFcD;UYr&AwK@V2pZAgIkZcOaUs+Tt0!${PEV7;mf$X1{L}1 zOzxS>2I|i6(YdU<@?ZgJvk6&-BR`RgJpqN8yeyZcu(1m&t+_)he0aaLEI@fVgTJ_z zJ+FK79q+B%U#+FeF9DM5 zAs{vuX#)O`0=}Zq@LT280tRUU3iyR?I{*A$oUPV*`k^$_+*2zWp)Gjpb$)#Vo2?|y z;!7T~2)WlJdn5B{^>8IFZtG;6&D4AJ7Nx#va&WL6SzS_+7Le*40uj4s@#7m=THuQy zGbY@~!7X{^xX4x=CE5O1>5#kQ=VpA`Cgw8kYhWoTH!sTFdhN&W;|jAEI%5@ZC+xs7 zVwP4)T3ncvAmU9kDy=Ew3IS@s1r&w^)Sg*r-PCFP!X`FeSD#01M%{cen`dpta=?+< z!t$NegLt_Wp!QrOXpJ%*`sWG?)hYO~S4X0?f0(j)_jPLFQ@qv{5UzT@K|eDExdBFq zcPI5YQhMu88>bq9DAbREN(>2Al^(Ns*Db7B)+Ou*Op)oWjs|iaWa`{gSB`-u&k;?b z>OYr~?6vd)e%7Q4X*vu0O|iryDUbl+P?|%gQ;}ggcy;QbOhmp3NIO=KH}ABS^-})Mq)HIsiu>!LsF07m z%J*z#`<1{9K4BY+as3g+LB*2$GT*w5g?nsT4qJAU65r${+gQtHX@Ec?#SX*|`|N9l zczQMudXEJSc>0pa)G1xWMn~^L1k(HyYVavX0y13FaNGNZSCIV_e4bzZ)gkH8lJK^J zgXLmcr4>x$EJvs3FMf|j>pXY81{?QIO%w*2#*c4jQL)X~>u%OFcqZk@Zz^(!shJFDg!-WukaTtWZ2t0Y z)~si*DP#i~3F@>7u!xP5@#i5_ms;8ZhX|I$z>O9!roup(w^YAQ6~v*b#nA|Lh(hQt zer`8w>hojAUct0A}>rEByY4tb?y7 zm2sgl^M)FX=nK=F)b`UTrgpG^)B=j>?u&eO9(ytH5oFP1!HsOIF0(nzxk(b7p0iq> z#{bS^gT34DWpJVRzqo98(qx|a5u1TNTER!?1oWB94SQHm$Jp(T-Uk^Uw1)*%zrVVN zHK~4IZ%1=&4-55i0DZO^+cn;Mw$CAAHZ$)1F>7ic(4ab?-^Z+#za2-6F~PYyEazj^ zzr7aLIo>;{;9;5YZLnyghr?b>(-tgwoYBO=TXR6bQ%`@z^`EfC!5yGuwBk9AGJDCX zeFCv%FO_=smHfR=&{Iz2zkR}9=o>wc+zHhZau&C7WaNGI6j?$!6p3$(64eHvpm6$U zqp2DL8i#Tk`-0|P{3KVY39(ghQ3j5(`KUgZV**|##Z(Q62OUW|Y9&mCX} zougp-p07T@I)SOam}6}56+7E|&kRi=<_!~^ybIND;dPAtShjNnPH|8RP!+^41;48O zu6Zv}CM6#&Epzn#y7WgrBcHXw65`Ra%lKV(g?`Tq{{mXgZsuSbOdpZJsPS+f73GA7 z`>6IPm)Mcq)y$$jpA1I7pflvloRzD z`vwg0Mj$~`E2wT!O`{dZ84$E{7jgslAB+Q5^6-k@Q_R=cv64T4JY&O-Y0R8P>^p~7 zVh29%!Og+d83tm?c;P5rADOKFJ`FlFdJtw>STS;0LF!Dt=W9&0Jtt&@(DqlKp>W;V zi<})Y!jW`S!Xx$Gi`?%p7FV|O@rPMlqj^xgbv83P;|_+L1QitM@~V@8j>NY6V~5$C z`lXX7-?Ub0>_okZ@2B#9M_6prZwA4}#uXwHn9TkV`n+{F8jYQ_Vf;;tQdbY=pB`at zyf=+RfyTS1qzK2*dmz7ggoQ?rgC4|qAz&aRrPOLoPzREYnYbVkC8^#RPlU;8#Q@&@ zC~K3Dhu>K39;_Rx{(!{cvp8H6iDNb=;O;VC_4>=`{Xp9%gN^Z3MJ&XD?wxUqO|(9* zKI%si;Yb7;9iOJTk% z1rQU}6LR#%LXzd}pw3MqS|lv7UPa_GK{ z?%19%p11#j`L2IQ7v*8e8z)-iG;8YW_sKY0C>xXc;{q02KWZwjUOO5epnqn}^i572 zskY(+kF&P**PtwcnAik-r+{s{Jx6ilan`26>&QK(7d((iu_)zASIUp?%g-NYqn&;y zYrUJmqfTH(e>v}Sg7sChdy_GTQ2*V)zc_)Oxl3RE#|hRWG;k-V>!m>6LSGn$F*Bg^ zLg!2$6eQhF`}QCnU&z`v9zTG_kyK3@;rkXG%vVNt;9_SDeV%i;7hhAzdIatwCC6Vv zeF_~N|NcDY8x|8-nGBW$Y_mwH5c`qp4Ydw) zHWsO?Vkx~H`SyFv#U;wTkrJ7n%+Gwo8Y{C$^IPAr=UjFoI*^_pOQell;Uq2-*`@wG zp@=o>kcX4Vhb2aTXNvdjJi^y2?gVa9P7b)0mJ=UvRNkdpm8||Yk=#atGqOQGBai15 zp_`V+uNGlI*x&_{++HqQwm*fU%;SAevF5#-??ODEzyPwR-bR<9!T|;MHQn>vwNhIj zFvr3x9g4vpulUk~5qO#d@aO1QfgC@W$oHLM4PA$#Ni&VBNJ@3)mrk+7RzJYl=#*p+ zTB1EipS`R_eSmV7kE^PspTh1!KWIlB(T_Gyq6Dq%%hwgNAxdiz7AVI|j;Argzc7He zJ$v$vr`ZII=)3Xe-?Hc2|AuQ$p&qd6n8>Go%epp;6nSxvE_f-2VcvGa zm|L)D_o8@bhoNx)Ls55L>xFUa>JvfYm=rgC0sNup70u;;f6F@Rb%QH;=np!7-m`>- z>J7ccFJC^lgzZpVVtLS6Ot&q^H(F;|B!BHJ7M1&oAJ4o#=}J1&7TjL!iFUZ5Xl(bM zV?Dfj+6O+2tqBY|&wN{LLA#EAK~APQEjCe|l|ZFI0M)}AUF@W8B1V596^w3t@p;zK zYo0wtJEEYErVYHBB9Ob3vS3eFd$Iz)`W)uU-o2`K;+0_r5B-dUO8(XreMAG;^Pf~+ z@4kR|ALlHrpl)QxSpHrqOf$JVKU#`~?B*T#s$W=R@!1;pzQ8<{`a^l>1s3Jm18J-o+QJ&fSfvWrAelX9r@_*Ft?K5kF6oJMUJ^7)jsr>KnSU2UD=g2BUG zi!9aYQxg2RFOR##TI#&{YnNENm^MfZrQCQAOFDg9Jxm^{X2c?W_%II_ce}Sb58oAE z<`sX}m~b)?mXN6C#_$W5Sf{XQL>6B{uJ#gKtxpW45ldUf!d69S$f{o8k>9hZfIvZ3 zT1|EW`bbGpvlFW8FFx|-N;~S9RL15m}7J4%tnR*63Ci`3Vpis$h!=WtMzdltPci^9wv6eAg z$P(hWQ0jLflW|d$`s}GH)U2x0a#5$_Wp9kB?G(AiY-KOpR_>Ld3fZ4GliZ7Td!0VKu?j1oy zW=5tku06l|BSv~_W4QZe7O7lrMHN7J|J_7{x>8xjmytb{!=AoqN%2!oZh6t}3U`?Jt%KsQ z4>)l8wtghUpXNL6DbI^~a^+_hp_{V4oCWI+^G4;E&-}FoPc3JI626Q_N4HO?&dJ!9 z>7CFE#^DeEWH4fXK{UX)p?wE z=4>RE>iXEGyul6D)a`50(%~b6Ep2$;8!RH$g^bzObKDmpBNOwuO6I%9=P9??)O8q{ z?^@)wbUtcw^p)PXK9Jey&)@xp^+bO}To>rVpWa}u9@kMJsA}gx@yXoxHx}7grSx3| zP9}O=bTdIf9(`PuI;#yI_Zu7AE&;94#$kzRj>*;}TJrFtPx0Pp0w%Oj=SHfBk=9#o z_(AyOCLCW%G-fWLsME8$DbLG}Pru)pZ$w}6FY)fT0*SCZoMzw8s}Yn_RKIxlt`(WT zPe2dE54PpZxBkvt>%FfL{Rbt5LBKz4x%qe2+IcEqqu%%ik7|V5<=G!BPHEek5BP)q zs_cp2?Nru9IoX0wQ&~`>q0pRhMAfbSi|4sJWcn5Lbk`ZrBp3C8+g{m%?^M~8@KVZ3 z?aht}RmnxM?mE@21?HM3z&Y(OY!DXzjRhZWZ4c+2Z^Dz5!H#air{^`3zhlDlKe)-d z>y%~f`HfqwY3p$)9e5RM<|DNMs#;3QX=;46e;7s%Mc)fsc^)OI(QSB#+pJ9pvvC|n zo~a3|GM+cW**;P?h4RI>S)%R(e&IG7t(*#nUyh_jG$%g(Pu4(L-<;3+ll5~7&O@Qj zY0HcLWD(6LreTxKIdwnOkp0M-(Kj)POb>PBYs7?C6f~?MoY(t{h5Bu7TxnfVc*~VG zwY-b>=L*!%W2gaXCc8AR|HUST?R;J=H<*?^Li2&^3!8{-J?e`zXOQWiTDp;ERj{IZ zvjd@3+o>Fpp-3%F&jiYz!TP^gH(dihp#rP3)hssyYO!n!sm=1)UDm6?3pF%U+3q(Y zcdQQdqpna;Lo^@bDD(BmqG89VBlP*<>4FKoYr)L~cf~ok#~MvfV2rGT2V!S*R_|8VgD2bzFw|kj!$@MUm7Ntj4*9+~r{*t!2DT7<8~1@e!QH0@$WtR3%rkF~9L$R8qX>U=F2x(TP$ z{YyFZIMN-gvfTk`qjyB zUx=*9@NiA$Xeo2PkZH?s0N;O~we(7YjG7UFOAvA*dgd;{X~DFSCbcv7`3Fm6A^e?x zSf?%pagC9O02RkIf#1qx4+V5M= z7>lK~MK8TN7kSIMdFr|ra-)?>4$KEiPuIN3G+5yrAHpiWGkh?9Dg)$82l5$n`o2<$Co zukMxy?G{c}W9jE}1>^bMr|=EplN~ZNzU~pWlNR#*kC@T>uD7NUaa_)Be`utW^wKLI zv&p)*c*SG3%=?g+J=F|98&%;GHn+ijWKP;6sr4hM9`(?{UDQKtn0MsqmF$@k>BiHm z*x=B^k?jRK22 zQ>c?S#h2^xi*x={D^op`KCb)^4?}aMkt_H1G)!szjw`GO88j9le~!qU7&-@9pTMTv zyY`{QDThSZ=u4oZRaPIq-_tP2`7^S>AYCPQ@-nmzJ?~OW2p#UFvPVJ$yvMNzd|y*T zLq6Th;G(D-`5Z4pQ=h&lrR8kS3KkOK<@HqoEYiryVH&HNH02?pBM!0AlYlp}kP#Qrk z138W>!1S!woAvqV`i8(P`ncb;Y&yIH(v(3D^_~J92*^UWw4{b^q6v#UM4(4fAu4+= zOrjVGaD-Vn<8x7TzYA0^N=rhXNS8C-qpu)UNtn1zL}|)orPB9OA+VU7@!mP(ebsp$ zm?|aSAD`F~_7dVWCX~hIh~(sm%cjL)n_h4B5{VV5)Y7c>6^SJX?o7~Hf{6-3mpMB4;BE$gKj|)tEd?%Fh=~yE>MP=OcXja)t91EuT+qJyt5xEnH}UM0LOp# z)_+OFU7P-t9&TDjG2pra+*gN!%b*|C*bdUtPrRqUA;eSUC3}Bj!9u_}j&x`IB z&I)nlU-=uNl;0k3)!)!qDRt&94e&evG4I;I&_+qO^0Wqq4ob*B_yo`}M9Eh8-wh1Y zyZ-{c(CTSb3L2Nd?3bJ!st+=A?1!Y|#}qv1ixs0I)@Zs%1>+nuS2_^Q*P)Vc4lp$L zSp*Si>S(qIBUx;F+VBtmKEM#8y#18BH8eC-%#OTSLqkYd^3x|)7)v0k16pBNP@^=5 z)Yx8L_|TAHb!7BCKDD7?l;UuY9|N1qAh^nxyxJKy@aqi?(E;NfQNo$dU~xFJsq3)B z9LJnwrsn?5TL&6qo$tdJ;wrIwJR{H$;q{2BHgyhfpou7W%s&h?gtdQ!vNgruhX3?L zm7r5azoJSiXqG_9!m2Zmp+TVL&f%XYT=#&539lIvWN^=-g$^tS<@9kr{|N=_eOT(B5>HpIS$PLPq|q&~j&gjV;j zIbZ-e(_PHv)mo7%iIEb0PxbNEMACkyQ;tiKEUnBm>4+Q=pu_s{99SqC|t`Fww6??`5i+IUOHuumG=!Z z99K#zxofx~!-<9yYSRk7EZoql-U}#kROdt_8FNai{xLruZU~>?@G%_GNUE+2-7%np zt;%5tjZZ!zBRP-ZS!PR&Muh*_OTLC&lJL68>Kn2rL4%2%$j>d;SQ@veIUs}I%ePY3 zAXxVICO0vRQ99k`1x*Y)^|`l%r8WypT}ke+KcylMZIh@hBw@)@zB|Iu!hJ7vftXPx z&fMUaBMf1F->XOhxw|!Rccx`);dd~Z>D|=eKf(-RT+4_?RL%p7RKl}^d(sV=aFdA` zgtNsrcc|Q0%7CxesbzObKcVDMCsPc$a6-8rAxE*~~JwV7=Aly6B5YAt1X}AYR$N0oZL;Z&D{rto_)HEoq9<1KuAlIkTcc~a7k&zm zp+B6Kp|dHp1%+O_DneHg@A}jH*%a`0q|m&d5xP}|mi9MvcmMtyLazbsMrZ>bHNfDc zcpT+XW5JV4p|KSDG0<@4&Z;~G=Q6V9h(3v9E%OX}mJDE`RDrnD0bo)Squi?{EPppOOry6|S z{V4n@aV?v~$xf=(Vql?uC2saL>!rN`UnM+Ad63J=e8>)#|Dny*LctHf$r5Swv*VizuB&N9Q zV7ga^42Iw%MFVra26dYf_FBIGhQEV!`uC`zk0JWQM8BEn;m;BbPFdrRf!;Ln9xkBE zB34r#y=I8lGJ1VQyso0x@#3|BUX#SDVCyGd=Mvf-ufi4Ca=KzAF7QSccOI|K>_)tq zRZ53LnU$}}G(_^yw+*b-H58c1M2DbTN-ohWT?%5^d=#$`3e{}?B9v>sL}(YuBP8u4 zbeFI&i3%%ECp6{;XfJ;+Yf@0SB-U!L{*p1gNGRc z-990b8${wmByHW(2{=H&<%@QCB-HnJpnD`*Fbw6hx`fI{wWOaDrReqyRlvOR4^U0z zcZL~4-7gX_oPaKN!gdlGN5WhsIxz{t`X3@;hb@^$_-jdq=d#wJ@G-NVUCz9gx}%-Q zo?2Q-R`wATTSzb4@nT9Swwxie17lmWe13|w((e_g<+Gjkd&C$2ZTV)HGA#cG)MaT{ zC3rJWN7@uiG!GkY=v{wvK8aB+fkKRG*>#x5ZiUGv6J;pn?Z^dTPNb5EkZ=Dhk^wgm zgFjJM5cNVyEllTEsweb@3N+0Qy$Hpd-HEn~M1?)?B(xi$ zt`Zd)NGCLuBwRi(VxzXt_aWqBG03u4l*m=fVz@Qo8r_=_{Y0WS5q$tJPeu)0`K_#> zzk}YqmO>L`s7U*MLJt!fDC0;RX>jU(a$hYa^@b4$eYsmch5E#+ucbYR#A~o+EO{bQ zXsBh#QGPxhCD@4sZ}<~}-#bSx3E%2YhP#caEty<_COHpnN$SZK4&G@B4!(}B$S%N& z(g_GItc?ca&S*jfTZE+#3{Skauyn0{ZEe~2nTAGLR=_jWlrZl)*5Kwo3sz^oPiZSV zOKFSddq)|Z#!uN>E7uoM?X|R(Q6ob6^R+C6ix;l}mU-2$!IqWPx(Kyg_(UU!usr-! zdu?GUJtj*b|0_g2{VzlvBBE}|C#D!&m3^N}k1>{lZ&Pp~U!7uT>(+#T07~i#0&v|0cEci0>Eibhga@ zRBK>ic;+oc*hY$r9cOTQ`LEB3y3A4^MTigPsa?M!paP2(8Z{-DEpy?lO$o~_qhO;{ zr^8^jri25QDrAnl?8h)cEz3(2)okQOX8Ew?vY;?qa*p!P#-T3|M7A&bQuQb?he-)@ zi=}aUk2g5^FpXKW=xjJ#{_YHepBpUKyrBZ*ZpBcAKNseaPN*}Xmrn_!5$4gG&?rLp zNK`h)gia)MzC@+>MP)Jv-vK&6qM;KEtW)DXl(7=aMxlrjODSbT935wQfXYJZ3WQbE z)K^(%D<1LV;|zXI2T0ttB2i+iCcv9)(|Asxq~sY57NZ7zZiD7(5SfRZ&9O|?pd3JT zBcn+k*vK6uQEK!zyqV)D?mm(Z0&`-Hcj3<(0AOy~hZ&q!3rjV9Fh9?(q^ z6>{~2P9a)+kpKznC&Mq)+s)l4!!I00Ce1e}un7e=Yku;BT5h{H8XnEaAHxR4YYR)- zVc9GVChi3f!2RV3svV)SVfP`pjNthvgpz4sH{?sS6N2B_GOb!vgk=`04mPZ09}l*8 zp#F;2P)jiiRlG)6j#R(4u=Lxlp{*@@Kb9>(4l1JA;Xb0OI8G^OB|8zl37$@x*mGQ@ zK-5DYLT3{3e1THG-gN_nVuOvv`hgh9x}8I%GVdbR4!rSH^bB_rP)2~OlqKqEI-z?h zkC$=&dbJ_-CNxgOE75|f29|Yb7e!HEnIRk%hHyLScZnt7eX2sY$(IfOkf1Wl>nJSp zRf9B=e|FT6w9-h1Xe2EKNwMWSA^}T7@%yCZ1b)}5g`w`o6{@U;>pp@8g{d0xX5K)$ z`1=?su8rv5#O)ACtgsA%k>kT>%Vi-{wQx!*v~(Dq!&<^I`YfkTBZ*u555z4z26Y5* z>SESk0BUmaf552`_w=vjY(Y^TsD~4E8%a(6$Mr9mo^bJ>@S!im3(p0WOzdk!A4SUk z{;0IG?Jpag!ZMIka^bKP%LDix&0@m0lN@);j04g}7;)dH*rpvt+Wdu&Y5TrlfH!fs z+$OEa4oM0MP`n0PdQtr+w3Fq_z0%$}iohK85R#r9fux4gdrT&@+hd?-2(9kN61tRV zH%U~Ojh@iyM4Kj2;odL82F=by+eM<(*9`m|UWvN%zat^^d?YMYwcPno&d4kxt|^be z_1j^o712c<^0{nBJ5ull3f_8H773;kn$O%u!b&WcpzO3MxUdOVguW-$m`X<&2_*bI zUipe4(ElumWC;}F&FoF-jude<6$Px^*``enQE)NEb?s{z7djuFOAwcAVnZ#5_DdB; z5M=;S8i^AAEX}}J515^Bx{Y9G|K@btqYQ=9ZILIOuKzozQ!;5w@n-&nly~b8siB!H zmEHtzp%m{qM5RKNJtAxCf159jc^rwjgos}y;(+zjX~e%(+D{ScfVuS(1hx@@a;$FM zA~W5i@rXe{B}TdqEsLr8e=e z@Grvd-7P(~O1{UaXy%n};G0N%L2~fNYV&1-?_X0$%!{2Vg)&mnG2ORG>!VZXCzK@g z(O)yPR3>ebJyv%LxIt{`{Q7H#W{R)IaSYYle3dww@wPLtdV;%?MISed0(?mozw_59 zVC_a3#|sp&fH-!`fZ>wE(+bNsAD}p1`U*34Lti!c*Yn+2OLe&)OBEa-(qd9U&{slr zGyv;ya)TYQvxS-+p*lp{mo`!K z|Ce&Rd@zgN7Ju*c|DKPABz3J5q%J;SGl_`Wa(2S8)>Q%-?MYNab0=3Yw<2bAi(WUl zMqfZw(w)QNaShMEFp~yn5pxygr))o%ab+r|Vttm@X4Zq5dr^;^s7ooGMxutlc^%~z zQ=57}wKU}F(P+Tw)=e_SdK%TyTtKl#k(?mm{~`iWq3cqUKY5F&3B{zj7^BKNh7h5E#6u;sM0JGZB(WabSFJX3HShoQO0nrd=)%f9u} zHu8w3lL0hdBsY*x%s_X(S2ZE5ySh9BEC;JiG}O`q6*g6eQ{*s5fUSp^BWRJRc7=bI zvjLqf^;T=i>1Jt1?v^wZYpGYQtT;;sj6k6MEY3)ScpYTj`MtD(akOasJx(B(BDL<8yZGperdY~Q@6Gt+!Q1k}UZF&+RXDrb=-T8-y5&Sy zMFn!_b3rHlJ)yVBq7M;T?e7VlLg)&KN`H^aZazs8MoUz5P74Vw(E*LLqs=9B6wyBU zOvn|qlL?(d1%5`Na=w93<_L6?9j#u_5}Ia*UWBEYPZHWiqET}V_5HV#{fX}3dJ0dh zg5I8fig+>mMe8h+33aB_oFNoFow)|D;OH8zmK45=bhzqM>1uf5D+b?g`WlMIsCec< zL@`mLs9Sx=KU^d#Un;dOG9D58PD1aKhFtB?bV3i1E-rr}(j;_DZp(aM0lG(`LV^#W zafHs7sLws<{bbv&u@2VW!B>SqnDU^}p^`KC#XM0feF;z>Js3K*SKR3vZP%=@+ zQW}qZY|~p4LW8OCSV5?t)aJdlK-ZFWjJ87y30+C~iIk{FV=kdFR9;W^*d$CQ^dw0* zV~0iyxxxvr5u2=MgbpWnen_H1ZWBUp zi++_rMPKhN6b-JDx3otKK+lIJs`KTRsVEHk-3Pdw>Ma7Ld6xr(wjp*bw=6QSF@K{2 zVoKOxnGYXN(@IN4k#D!8;dhPOlpC`W)tBM^&_B(y92Q)qmJ>O|RbpvIsW27O7;pPK z1Rb!PT+82Egn5HVvK>*|LMZ_yR%rHZ-agCF7;Ce>>$A`=9*05`Y4j^vRZV;tZ)OKF zF$~$W4DJ0F*96U`pl(kg=h|+{NS4Voh?c#=kvfx!HVj$bUrw*Ify<%?waGM`UL)Zq zX@t51#YRK0jpCVSS*`uf(Vk1R=REB>OMAYeJtt{Ta{G{zWf`gg{k3OL?b%s-wx_39 zCAU0TNj!O$5D`>h@z+Q^#WT<1s6C&duqllXwC7*+G)b-)hf7 z?fJEMuCkEnQNBOc@SWQ4&02V_h8s1Uj1v3mEN_Tso+VuipQeRR*22fo(=;lJ64g~C zD$mkSqm32MJWD6>EU-k0=PFAJdg3N*usCZhej=#M;vt@S7K29mR2UUqT5LJ7f>M-c zxe2I_D_yZRSdRJ=VR+Ke`rysHiwxw`UDO;d=TUEx->0e}{XX8z2ZZ0>DXId(-8C^2 zYp9ZmYB^CI(WvGc+!}3>v4z%<`4ib(ify4J6U#ooqMXg!$$keAsx5uq+aR0Q-4q%@ z72HGeOw2a;HvRKmRIfVO6Y~xuho!b+lFxsT}S@ViSfX+|@G>ri+8ZE*S#v?>Ot+uxBhf{x&p`m93nm`9Nu z%)2kejNpC(4iFG11k1r{Hla5Ny}6wd9G`}7Fb?@mUsbm6^WBmkm-a56YXU_>Fw%? z$=-zCC)z!Bs1KoWL_1%iqx*q#uUD?1=BQQ#B`Ji7%+2@ru3*UKrP zW)zq~v6w`ltS$GJ0li8rqY2gKuL=d~4>Zya%_X!op-(mwtq>o(M0S;uDe$%r0*_E& zfVAxfDO2=qB>ox7oq)wQ?1WN#qW?2XvQlCXOlk9T9WQ690&(D|7Q}g)}+F~%6n7m2tUvfDYS?~@jVPnCz z!Lm!V-McI^1luml%kyO={A+QwQg7hRyq01e$dM-DdfdEeEWMvXN-4F06e3d_kqfkL zF%k7_qGqJ5YwJl_a-5#@Kd3trbqrB&71Tnt?;2%O^dJj?hbeHJ6eVhPA)(y@fJPFk z`Gs6U-3fiNPN32Q5ULV-MxxRK5IUXEO%kQ`(ugh8reoH6!JL{^%5rSMo+}NKKZXrZ= zmB^Oy^SK5;#ky1)`|r?_c@zaCtg&TaKcU+xsey!QhLKI^OhRw2CX_6!{%dFtX+5Mw zv~jmB#&@LPjzqi|hYeb`60xZ1^+Pn`1sZWzjre!y-h7gX69h32U58npU=*n_!AyrX zc7mPZG=S`KrFvUZ$x|w%1|SjL6;Hh2uv3d48bEq_Xio#4bxKieF`R%Hr3Ob(+>a<% zhga2_Q{>ilhI$yjxKNR_*^1JuD~LRrV~wDyc@Pv!nLz(&ouNsS>qzv!v3x~@r4(Z$ zBE-@Qw(msVd7V%~X?2ssV4lCRRRPP9TDa zP!Jrj5s2u@EWOdt)h(zJMAQ&G(n!3BdnH9VyB4>W-k=Op_Ek$twrDxSOJ{@pFh%x! z9da5+FGi>s3AfsWHyOby;s~V(9<2t+ZISsKCSgwE{j(~NR_3p`TI3y3?8xPRrd zHXD2cuTl}mZ?IF^hG$g!PR`-)Z8kLUZ(YM0POJ-vHD^VQPYn1w9q2^LLCOkyHQ=iR zgC8#)YhWSAiDYjCNLtuPG(|*6Lk}?#O*zrrh3a&_DC^IYLkLsEz)k!T8P(U3yf zG^x<0M6;M^R^~{BK12OCuc8D_wQ*4nr_2^jga26&NaYj~X#tT&=J4xV4L(Yf*<#ma ztCcl0ZxT%f(O8z-Csd@h!ZPIzk=FhLi7b@T@kK2%iuf}WdfigGgi>ly6Nv|L$2J9b z1`pe2@Ks*T6k`2;m{pzD61@yRbZvcV=v;_yCeh7&yKdISN5+;eukokb3=Q2%W`fe2D3Q4L z3{4D;U^{YWebzDxi=u?zeyffY)bujT4V0k#%+c~Ay`mRzK|BjAr^PeRLIy>o2Q_@3 zhJS=-9mTFll|2?O#3~BeLp4wWMo|K$zXdxE5qr#)B)Rt$NGg&wl8Zw$lEgBDlP;wiP0-NNuYiu0j7eXEan)#zBz>U0 zY>j095t3a^;?rLvS-f25q#Glp_!NL7af~Kqe;-LAE|poVk))ph$=+&`q_}F5H4vil zCH2xohu+mY>Bd&0u^PHpakN8wXsFOa4Q;n-+7d&v{Nw_|XV6y{4HMZOr|Ih)WqX_! z#l`0}l8Sp!>4a*ugG5C(R!!9ObrFmO6E%|bXpK>%VyYzB|2;@5rfMWU?KKjiuU9mE zm4PJj6^&$n+iEE{P%!X*bP{IzWspQo(@2t9Ya~K7(8bJz3U*Un4ytejF2Qk15xRcBEW6bVQQJx zXlOMfig&i;+pmJp8*K#T&c}iuv2!%?{f+F%-Y&Q8jz&01ESKvGam zl552mgU~TwMV5+PD3q>T7suY*-^nqA-*<8Bl|S3b5w-4Om86tDV4I{&a)+?J+qC%7 zpHvI;baZSN^U*W-$b+56zyZ$pAb*L&3Xkl-CxH`m7;EEm!-Ed7IHB#R^2Dlkf5<0! zIW}s4vGTF?U?N~km5=6PiOoP~YSyd8Hj~)yJdkY5YS=!rXZw=a3LWfY3n#W68r$+4fu=#GzERxNah9^%coweO#Ty7WQ1{=>zrdwYatrSCHUx z-&ezRxn90^J;(d?@@Ez}Zr8D4uQ_=CKa70~m`>IA|C#a5nNfzm zdDg6R_GRt0*Is+=wbwp#&f5O@Y(y}t1LO5}WV{)`slW-H886d?@fHE{lNoPPH{3ss zdqBoBDASYiCih~zTyNCtgYp18L%=Y7Q3jCzEXq8`c+&wSIVA-&`ZL~?K`1{2FqH8Y z11A9E|E=r0m4~4+Ab&XH&3%FKW&ud$j1eFqnoC+zBV`6X);R$eqQ_*k(=3 z&tA!TD>Zftr>|kXjNQB^Td(pNTpp~iX1sN)Gv1}Zxp-0b5|k%wEkfRT{EG;=z61_7*JZr# zt@L0%Gehb-nXZcn@w006PGLNa&ZoiuI1MpYFw4 zk*TTp-vP|nt-aW~JJ0lDlOtNH>sW7j)F!1faDBWP`moh&F2iL2+2sH2ZE)C*_Jmo_dhr$CK5VO))_Py1Z-1AC zRt=aTBVK&I{|JVOM~U#7=@;AvrXhXM&R%_4yHvu;k2}mb+vjZOjVE{f_~GujnwP$~ zGq?1_&5ut#HSv!HzMR~h-W2xlNYcIX16a{+HGt)VjW)1e4IT4B_5pOLB}Q~P?mq)( ztH5b($UZWj@lHcpPmJB4NY`*b8!shqhVkhQoCmq%9qHbS5WrXnq!_qA%BYnX??H^; zD-g=PnvAyw=$A&>kYIr4HH(eP1PgvUY9RXrVXf;x_OYG8f$ZLhpt+It3ZTCUG@{Y| zShTSLnAFcg-Z$WnT<78XN$}!azt4LAPGG!`6Un09Eby@pecAxNNIv=9*~EIAK|S-R zih6TdZxQ9o*s^BgoBur4Vfl+i_U^%K>0l#d9tZRN@Fl-%5I|iNJcrT!oT@${xC~{U zL#G$gv~9SrjLwrh2@G|>SM*vyz_r1Y2lXF8{Zug22zU_ElF`W@!EA5Pm$q;K||PMCdsv;TUL zglh>9qH!H%0`^a-Y-3Uvb3ESWM?>meMzj6vFdyKh#L&qERDK=$W`Nk6V3<@Mh`d7k z#Avp9a1t(eVr=(=*Ykjn(XT7ueJF~zz*zi+`$JTzxPn9tM)F(5JVFEHFNg zK%GfG`E^8@1)-*Jy%n-~8g;${D~Ca|JMIU7{=(W!(0d)kHHgmF$PFGA(EcH=P+PA)Eq(vjqty?8_b#Xkn!=4d+`178(Y zRnUA2d}pIWD2ss_X&BVZ_fR`9tw*$Td`Yk}S zcWtJ#cL55vLdCIw`H|?z$8a@rlKMA3A#EjSjq9ktw@)p_U z)7a`=r{VGk$lwd`dJ{%q5lBZ-J9ZU$sUZd1&w9^*L}QeB7Ciog0iOf@2)TjC+e8h( zB>UAg_En;Qf2FYo%bY~sMB5t627_Ea>-`So*Mj6JkT`}a<6y%drDO=HWhirw4&^pn z|Ar>N0oSe2+a{=29dnD6OFO`N4Y0iz5-E+|m4o=Ep$y5Jjl5cvoormUcjsD=c{?Lv z-e&Pc=j^hvRUXTlj}IO(%pMf@8VdL&vBBu~Y>eS_j4R2LKE!KAppVBuyc`Jr3dZVE zMec~aY%oB|4aD_RwDC!}u7c|YM4>_RBI>>Fbm%#J6#|*1(HN=39K^B*MH!7TnurF! zLZy0C@FS4df$HHjT#rS$svvfkj6Wn$3KA)cYlja0Tt%52yXwo(QRWcqeFEg3Lb2@_ z(-goAG})S}1*tL+Wr}F^Nw}^EUdw^}B$Q*JQhn$IFG8M4+4y3V zgL`aEqSGhFvpzd|0^4<1ZUNk1$fgsNvI}&A*o6WxK!|z%mFK+|=}kW$>ExvyX1zzj zh=95kF!ZEe3hh_{>V@Yq8%lW-b{?3(;!6h~PiEuiaWVFV$!yuE*&x!_zB$>o^v)_K z1+gr339<|7H#&l@V@f>(QN*B29m(`Um%3BUB^=JSOQ*B7Yi6UU38t^26B2Z+4`n3g zQ`Vbrw@GJbIh{@?ou0zJd4E~iI0ftG!6~fVD*+`(pc_}vz!w7$Zd@A} z?q@N~73r{(#t)&+a-!{MIaDXKu7~Q}wY$E?b}!Eu^2jWr{8Zkxf@@C36LK_$TM z2H;M>+kjgG?*V?CbOX2t)1QHN?)*;TzAf`2^AaT=a!0zuh@;f8tzc~z+ z2ts=hXboc0+!`!nqVqd;KK&+JDq>J3uAir7X#>4JL8tH`+=uTCOw5NDAbZj*cZ~Hm zz_cUR?QtDm?gc1FFG?d1d2Q^yv)Q;#g}AIqllwMlffqnBOp6xeFTZ3Y=)KK(;+8ldUw5^VCgk6Yb5W*`zl4;cXjC9!<+%Y5$SQ*1~5* zK@KnNS-^Ul-1}E~!nJpm+j%9)}t_i=lD=cIi;6tX`Lbe{>T>0!m zHm-?@(uDZ`N9}hOvUMY7+XqmsN*1m5V1xFJg%HFUQlz4tV6&c@*J-(XzzJYzAb>QN z)DGY9viqYCk!P~)ziqaPJ;G+oM7CaSPtIhk#P+1+oI3V$o2~7ci6lojrI*pnZ2LSi z@OhTMY;>r#U1t%{OuG$`CZXq~q3|COUVEC}_W{YcWeXN>MSb9a%48 zE0*3sYi_fDS_F0$xh3jfY8CA*rdgrJ$Z&hsxrf9L7dyNdJ#!VTd71Xn-omiTL>EcVF443*z>XS22QzJc35&P)t+hW} z!d7A3s`e;cH|~gdMyTx&i4>Za23$g7BS?UUu1nas`YIX^uSqD7-X5Yg3xN~u(o4~3 zZjL*YF^F1_VwHds?M}$@+(sz~qIoW;CDUwDg!~9E18Ld_ib*-f9T-xa49ry|<=7XO zvK6cDp{33MJME+6_i&wJ$1a1|a%`TU1iR~UXeBWOl_f+&NLwbwm7WOEN3jK@bh6FA zkI7uPjP-QNq4Y_O&`(8;ZL~H?3rVnmrkw+JIt*S?Xd0>Gs#oN;_sD?6c?cE4S6p)r z;gk?@LM#f@yKS0o4u$-+I$*p%r)h=8PixXa-&>@48OY83ePNWto{|UR_0=7!z zvh{XZ%)0WoX&KK3*6WnBt#>d&MM#F2`7%#Ndy|kwNRnTOweB=675IKt(pP)+J76to zgUedcJJ9s-`h*72^n6;s5ZG#sjkZ@Z4&T({iV}_)S=Svj(2BZ3Pd?%?3?ehag7VZsD&tAqG{JD-T(@&7Dg6swA*IE zU{h_h)3aDl^Nxs#khs{MB0}Dq zdWojRAbfORU?9>A_a^~f+gbr)h40(XuYie8w)?N7>ssZ3$R_-x0%y|eX7=b+*r6Xr zorpZQtg}2GrTLk5>`Kh|JiGZywtCfYhR6a-es{ocA>p^8wyXmb1W_k9!|gcXxjRi8 z5B$G*-nbI&C)p>^2+&U}F$&>?2tlI6MU>EW;E)m*+M8Ffagj%J9Sc)A5#c6MoC6LO zx#JYUM`BK_qH9t4p|sd|V5g|Pc@_HEofL_yoJ(`}gb~5llGb2#Ugi*iFVHfjW3=}U zEl64wzn>oun^w z)5)TVq`#0v`dD{0TQ@RhrCn09l%vL$6vuq4y9Y@H|D)QFl}ZM$nn z95QyD95${FgGd;m6#9`~SE6YNz$5HlIpB@iLERjhH4r$_UXCnJYg|Ge&Eq>qd$VXZ zp%&t88%-+!cB(nnBw`&jIm@oIj;&rlycVfRgc!fm<*N~}Yf$@>8XkMfI_Q21%^d+8 znm}pxO=Mx+CnaLDX^C7?!oEi8W{@1$%`1PEX5RsJrxyPniku89!sWRfBmujwzywmH zhFxbp=#Qtl(|{B0y(DL#o3n@J6gW8%>yeY={+BPXWv{O;(8{{UIgrz7yAS$f}Vp$DyUs?}PPEQQ&`@49qf^ z?#OJHT$DqCP>XAvfH-G3Q-qR4)7k@vCS-~|B^R2RV6Vu|0++6CW8LrgJ&+3@Ocr$?<|t3bHZkri36hic4L)>AFKTxj~4VEJgiePJtGrE7RT zVTJrgApazqa_>smyGql%AO2tLwb=$9P9AW1NZ$q?!fAzgaNDro*~V6B6P_Pxa~XKZ zL_4AT&}_+}X@|miAcir;zKeEYh-z+!zZhOKMBykXLbtYKpqd?Y3AYCh$=N0H>UI!` zw^x7&(BADt!)akchj2lrM=nh}1ROHW(D3c9hND)^duT1ZCaFz+TsMb{9Yn(qxm+Xx zhaAfkd%_N);fJV(@4%$TIo3|LVpIxhX4+j*vt|yhxd%A3@Pu3g%+ej0=b48bSIy&8 zLjAbL-j5!XCh12aO;drLRn?K?=$+_?*Pgc%Lh#xfQJJ6pugYXy$f9Zaz+}mM&_w^b z6Ox=wh#(x5hlL=VL`Vzr!QO1UQyx~!X7~F4*Wqcoo2^|wym*-&_akS?huz)sK$IqwN@|hz?EKxVM@go6p_T|v28rx{rIYEE zN7M2T+kfn4Yei-scD>X)G~IKAxKY*~c+l~C91psAHb^BQIYd4*OS{vwp}T=Z=I2~|_?o~W?%Y9H9)!x1r#xna;r;BCtXlb{k{r6tj^m7iO3dJ;wIT|8l>-*qb zoI^TU!czBPDa;NP3ULBF6U=l+rLZK&iVdY{srI^kSPDrILZ=9H=zct^8Ftll8}HqZ z(89SeG9hzZOw-C7`*(Dx<$m<++)-!7b;<@8;nhRjoI!dDs)p_fSz=n!Xj&%le@Pz( zX?)J~r~Mc~n7jRK#X4nr;`zTYLWCe8c8{iEJC=`;yXur)i$~ESgNJu`m{+?+F?#`j z0s3{1VzL0|0p6#hm?S_d0RPs@6as4Xh++l;G64C2Vu1Bb6tf)gD_~B~D5grUC}t#J zJD?cQymu6n0>}X51Bw9&eWIA;K2bp?9T&NPB7nCq8U(x!$OjYyJLHB0F{SEF>?X=fMP(xFfatj1+*L<#T*4NFMuB4 z1Aun~8U&;QvH*nuW+d{1`13O0G9Y186!RXS7?AK{6f+2r0mugw1D2+u=cB;@AP?}^ zOHs@+Kp}t`17d&_z;?i2fWc`PRzSJ2QOrs}F`)T4)CX(?6aj+Xm%$leF5nx0J|5SA zF98iFL@{ZAZGhVV=@nD}oCW9;qnK%cLx5_NqL>!}9|Fp~8pR9;Yy=bml*v)dn}AOt z=|1UE%z8i(z&i!)PQm!6;vx%B2w+}AF90ck3_u}(nTj+3UZ=oh0P+FFfP`rfIbaUp zJit301OcglEI=WEnSr{16hHH<;#%K<+Dp0aTbI1i|~ z2#o{g04@XCEC#cH;9mUs3t%k)K|mIu5Wp-&4*(f}d_eTFD5fVMAHXa}V}KOEc0lEK zFx3F*fLs9nEr#jzZWMD8&^#-Oc@=OO&}KyxlL^2>%gjXpo*R^7c*A? z)mB9@0|59`J%jJiGx$b4gU_-v3jlbSn8CNa8GJRH!4tv^zHrUpW7G`3*UaG2Uk0B! zX7Kf5245m(@C{!E5B4(n;w*!Yxia`*DueH9GWg6SgYQBz-{jQCxU7Rk1K?|J48Cf{ z;G247v-iAQxyM9_x7y1lbF~0ht1m$ zv(nD%_!EVIgq?7l^?2XK(SF^i`Bh1|qI1sjvhV^c#b$IbNmp(DI9q$+k2w4cFFw>s zwhPNdM^!>;5MVmdT4YiRHB2%Ps#@>93jce9_9^)k}6CjNdoE}E10M{ffgOJQW z!&dU7hR8ia$hhR}7AIKUTNu{W#BbacHtRTB<^kDsrx~fo*_e6pW$-@{Cr*Iuz!Y)@f3#|)Jht3rG&Ege||jGKyE4(x$7%otP!r;1BTlDKgV*IW=|pL zn7sn1#$x)64E~kspYYL`i3-FwAe<*8JQGDe%kfVmU?K(%n6OEx=h1@P7ucraweI(a z{~pcAEf*bIn-Z8w31oy3Xm-(U$r~G8J`VLklgXiU$XKM({QR?Q`8d=g`B!OulD~oG z7vEqjMc|u`C)wIvxt?x01DG)07MPUn3QU;p3rsxUA;3h|F98!5id_;Igc+<-smT~l98TTHR(d<%*T0FpR--l()eptqyhhMrz*@A)X7*2p3|RD-UVhbTeS)aHMjE^>{L9$&@Q>%)tC-U6m=IxDc4A z%un?GE-=wVPd^ve1SYCeADDzin^P=PY|;ES6n6r4%vwS|O(~$b5I8hRW4?EpcP43g zuR78UqD=7#l&40(q$c5W(!*-z(Tx0W+1PT=l?d=^7{v!PB>t+)LsC5KL5kbUI}|hh zOL%Qh%W?PE^5tkcnQXJ&bjX>r(|=>TKR{f%<`O5yCJx-7JTsSaMY=JN=6fTf``X;O zf2~x-ZmzRZg-fTs-SQkF8Dt99Odae}9Z&Haz#;LDC*^9}#Xqw#3(sRORYdNq+lA1E z;KxJUdY=K4Zk(p~ghRsF1>6$_xDu95@(3S95pE!zU}k8PmmK)T0F!&XS=;+4?$^`& zt-!Ik-vS&>zDTIUy`#k()uJ5bvc_;(+S(pm~7K&Ob87ECWIye6GHQV$#Sp^ znDDU{m`uVg&)e@5u~j@7VMGUd2e?FQ0~4Z6fC*6GcJ5>7F6*mk{42h`?b?(E>XM|+|iO!!(FDz0+R-+ z028L_(EG-~geeIa=>Cr|L6|;MLOZ5@Iwd}n;tYxx0h1oDBKLOJZ`eK$jBZc+;SjYCciJM|hHgFxuK@7UUM24!$5Fptijlo#AaUj-&Im<3D*DwE=kG@n!@`Qa8|86iPe?eO%Y4@tjQlKy~wYW7Rmqzfn1 z*UfOP+Ba-7FWw7&Uj@!RtX7#@4>@f=$wiYQg0 zeenug+e#kg%C09c5&HmOBD+z*MC=oQi9SsOCi*fLnCR0IV8$+goApKE8>M7IgW8CM zRF_&KU_yV_Bqa6v8462YW$54zHdf%TaL|vGd-1~CCqFI5aE?zqzcCVQGYyy*mx;2POoM022mIQOzI(`-W9`K+$sC zjQ=cUn3vbshIr%z$XS`9>QTO5pnQ)5Ce2I%CgPb5yzm=VvavdPA`0D#Nx!gB9ml#I zY!6KM8$|C%1CxrAC|&@JTjxgvQk>@2i$r>;<1u#sAJ~TVGsd_@7g3x=aSm`uhOM2V zvBflrw47mI{DG|(n+w9E6iLc=lInA`EtTRVio4LFM25wLU_HC&YqpW&5r@%x~r-8|MUj!z@b{&|AB{Jwv zWb(D9xC=0O_@_6;gMi80Pjzu~W+E<#Ld>E#6SxBIS5mwYm^?(i8+cxwc-uU|HnaD@ zr@F7;gx&G?=&Z$d&vS;}WL#rQ4@D+XGcsiV3nTlX`6Ms&`(JfKYCzv6cduOo!Jp(L|uL;*q60W6;7%KcA@**9Fdmj@>FY5)_tC(`?76iXDF6t||hBgNe* z?o07NibqhK=HehTi6%^=cs9kEz!lN(yYzl7aAn+Y0w&tClcw*d_!EkcQ~V`xb(H&- z;vXpfh2lRP9E3)_8Rbnt!AF4W09ODe6{`W)1Fj342;79G3&0I zPXUuh^m_w01%4iwNOCxEbKtQQzY6?V7bHx_1qVEbW-I_E6_x{wz&RA>0?WA116F|Z zX?g*$iu*5s=XWh7*)@J45t)BVW|t>xCQ;f-kvTK%e!s9)s^#LI%$_`8GJEoY$?Q2j z(|+q0wn4QExF@sd3UE2#8^C08+?{EE_6ys>Q@}(!@fR|6lai2$Jf=Ox$-qS0deZw8 zib)xwz9~?(kU_jd2^D|N#@3$ZPK^R!Vgd?*NjV~mMiFj2Z^`Y{rBf2Ng5I9)Fm5$2htBcB)vwdlJfa;N_b79>0}3zl%Zr}Wk?NT{|5?UHY=sL-A=WyjzN@60dO8VN! zp7%TZ^8T)iFGdFPnSW>j(&Kzupy&(ix~WK7ngEA{-7LoC z&}krbyxTw!I5c*tv_R4yXy6q$oe<~BcXw!c;!vd1@+906pOoQN=mLCyLU`SV3BlU5J3j*xQT_oOYB-0M zBii%;=htb*f6P*i@-F57WORI3#-xX3YyV4|-o<&kJg8m-_Auy;`jrF@z}oQH-;Cxi-s386w@Lg)-FPY4x<5qe;H znRcD%=z6hCScgWCq}q1Mh4CEf4qraPOe|Ad@9c(e0;@rP5B9+okXW~4$z z8ZLFEsREN;CQp$XDoNyUj$6p$^s?^ zD+f5#-*i&cHS3ibkRaL>LrIaccu!*}|AFC)!Rv^rU&0DEtr0M}=YUCHRp5|Z zQb=?7Lc~e7%))ZfPAmq^x6cK8gjOCfX+EFg0*VW1{uzo%S<*y0B~9wY;BCnFMVEkr zq)n2chGira(ZRS%aWNefq8&qNL87Dy9C}EaP$^CVCKMetDk)gTPVz>_M`oB9qbKmDS3a@OSraGZ*+~;uW$8u*8sqa z^Q%k$?f!Nx{5KJPM4Ha=H_oHUJ>f50XFYha@_iA6XGm^_V@evYED_D@@Cwg{W$X#h z2&Z&CJmagd8Z{Ea+U}lR(niPdjG18>lfp9MJFjvzpa(D!GwJFETEHAhpTpR>CKOD@8Z4^B;|l zDiTiu_!!aURXv!ct&zq z#vPhLJfJdRO*FDM$HS~Sr+y@mIEmcX9`+TAkdeFyO!W3TFwuqE^qydnPcVtv-vcJ2 z?s?CRw3GoRk(Nrpq+IAn$_znT$ikg*oBxlOj+Zl3#VX_|_pPwU(1+S`+lCUK|)n`;!^J{Ui&u^pv+s(g{ki%dbd%`kBJi&S+nYu| z26VY;biIhgou!*aHzcWi^XTe8otl$Wdvx*s(r zw}@`%qDpq`W6>h6TRs*Y0GjexbZwv&k2%yprlP&LcXWL_&?34V(qp;kra&4{{lvvC zqb&k0pMIjlpb6vpkLWfiEp5mNMYc7$>ywk=U0|k=# z=mZoP%|~|uI^gD9=Fvm6DLCD>1gCg^!C`QU;4re$O*|nuC6|lnbpL^ph}dY3WXhm9O`Uvj99BB;Jgak~4J zi|)Fps?XumauIq!)MB2`t>B`IKBxOtRVT5f>NGo6bxN*w6OXA*k=Uf@c)O;D zM#{NX?q3t3IZ5xhNxRJGsYtS{=vF{etmrp^V*SotSHDAay5AAfYQNLc2{$n+;507> z99i{p?`8#@eui`|%03W?CjX`5BoqgtYhYqQAh*Pr_NlCQHh?_pdM6?#4X@22KyKN{ zon^;IUx_GPios*Hu+kAb|C#_sqGYB8Bkq(ZVkVXL;hHC~^VLbwuSW&Rr*P*PtBiHV zR-?f9%=p^4XjC+-n)OW0OfsJ^N1Id4S>}8*$9&)1Z5}XhnRm@nR#hv(YHW40dRYUk z@z!MPO>3TY&^l~=VO_I|t-Dqozv$Qet^7Ux{roTZNBdX#*ZH^l5Bm%KU-=^f6$4cR z^#W?ZALtMabPY@m%nHm8tPA7@b_Fg5ZUycJ$m@z?uymH<;<;K}Q;z2baKpGU+$=7G zTg)BczTm#%zT@t2e{+xW<@r|p6MQ#*7@x{d;8*eM_^o^a{~7-^f03^!R2Aw8nvf(s zA&e0w2vdbc!aKrxVYBd^a80-+loo?tv8vco>@0Q{2Z+POG2%?|Epe&1Li|GfO8ic| zD>71PNt86HmDE$}C%qtzmR3pYq^;6nsZjb#ijXVHRpolJD*NRQa#wk(JWHN0uak4- zUGhcwmV8$(rNk?>l%@)=3{ZwCW0YA+hO$^Ws2oR3D{J)TiiM^p!V~^({$c)9{{*TH1^&knO+z)j^Aaqn>Jxy{gp zYuqiaH1FlB@-3kYz4!tAcz!bfCO?lq$RFmv;IHw;{9V4D&{z< ztAt%bzHk`Ia91cL#*4MYrXo*uVV0O7E*1}phoKEu#T(+EVg%KNUQ&uQOqwq(hBo9$ z`=n2$6H+O;G_;|y%*mSEUmhb*fHo|W-;vkLo8|B1YtV+$idU(sv{If>x+z1IQOZPR zN>JIV?1DOcr4%XGl=8lMzQ)jo_P)-(KED3G`M$-_hF!jV-(lZPUxZp-t)q(2g;r`$ zwV(O|^kJ2{PTi^=Rtwdy)CjF2bfKQ6YJRN)^kJ$tOPjB)({i<4+C}XabfJ_Uuh-I> zLLUa`!}KxwEIpW^FV+v}UqBhY)9>hi>yH}cp$ShI-Hc&IsxiS>VQe-I8i$Q9jH|{C z<4@>=2+PpQ>}95y!_0Z+Ds!E=)hsYSGrxvDRD@-yXK7ZF^@KIfnr`j2Zdwe+{aODg z|9Jl_|9pS8|9$^{Sc0?uOa5Q|{{;QsK(#>AfE;KWNDlN5ybzcam=Ul8D*{^rdjiJ- zUk0uQehDzCh>k)HN^!9qlY!U^t`)95_dQpEf07@~kHf70kRK<^6uOAx#cc7i_=6ZD z)sZZv2Lydrsq1^fH^cWP=GBM3!RpKEJL+n6z50oIUJc$@;-5MZ(xCKrs_P|#i6J+2gQ@=IZsstZem2(gpcP3$KQ3yLp_6UEu$ zCNW<;A$}{Cm1;|h^o%q`ngcU)Qo0~jlb?ekeI_R=os@;jmr5<)bH0VX<-YfPfA}h> zoa$5k>a*%hHCz2iEvr@5>TA5FXy0SByXcqD1y<;81RJ?6P`OEnm_@DC+_RsXs z^KbEA@CUE@|M4dTo(%K|ycHnqwg$)L`80XDd|qy%Xi9HoyK+(aN%>oe^VNq+F7&O0 zaXRWd>x)zuL4fVGIod@1T}bPq-oxzVXY%pPDrh{)&F6}_n>-8qH_f-kw-bgeL2anc zP#3DtXe;$~`p5b)Ju+xiFsd4=F~S&Qyl-qb%9tjU>r?Y5Q?UA2KU(Gd{rwG~9jSqr z16hHsfrEiR1E5}rBV?d)+;namx0}1f-R3;JpTENY%6AlUgq^|>;hrFfAB$&1AEX(C z!QL%>C&j{8XUa$99=?}+GkstBZux>i7|Y#8Ie%OK>wZuy!V_UYqq%RmN_;hbCcj8H zFSHluh>Fx+dPmBY>d1m@%A@5u@;>=v`5*Z)rI#{D83%IPVY1KrZusKW!RlBj*r)2( z>P!$sz)zn++r}fKvb7QU1)SP4HnU7ditVBx)Vybk;6dB=v&)+%lOyD`vyJDA# zRM@yF+!X!|-sV$;p+c&#R9pj1$(43V2c$jn-*T){N0F3v7^LA!x^hmrsj$B4KF-(1 zm#nVV-q&_$3-ovNHTo3e4Z}8`Hv5@_&6d`a)-zURe=TUjpZ=f@quVPmEHD9!@Z!Mx zf&9Q1fh%MQhX2qPyp-l@a5DEApTV!?_wlFrANV4{FSV1pNGb9#$YHedit@VB1_rB# zk5_fIof@T;)vCbMl-Cn=O&_aI)!&C*X>Pn??1V|bPCAI~aVn6Hvw~b(t}EAzOXFVU zW^h}$eC}iJGww0|1Ybo+6xIrxguTKs;Y+O7<;D6~sN0Gi#XjOo;``znd8fQa&(ps# z{x)LFvLJ6ZP$IQ!Sa}36CE8nW%ui>xj_xU^chhuK_QrLSO+bWdxH42F`Ld`2e5H_l9+RL}(`r5k?9Vh1tS# z;e8=bI4%?m)x>(Rl0i-CB|RslO5>#0rA06~A3(LvNOz@rax?i4IYzOR&dSru2xX44 zQ^{8z_0_-+D)y3Zt89H5A+H~3qv7kB5~4ciyX%PDJ;#y#VO)S@u+x8JR|GMVC604U1c4Zy9o9w`Ih){e5ZU@d_Va- zs;qWXUxmqeQ(da=QM+nAHHao7g2@ExAq|vRIT$Cmm!FpV!oZ%y8a+;#4njwj6UukW z513AWDvVF?`FsO>zxkq66E0Y?`i#0lZJtm8QcRn@ z<|pO_^G|aLR<_?PkN*+B*I&mkz<28oKYpx#t^b&R4U9088^O#5vpOd0kKAuu1Yepj z$5-a-@e<#L@4*j&^EC^azk<)>IiaU8Ko}*A6DA3B;Cyd_w{=1|Bm68}k$;uFK{!N~ z(hmwYLzw~3HdEgO9lxQc81s#Hjg7`}ql($UeB0b?9yVF4p=DY-`~`j~&@GUG9m4@4 zx%>#nA2`ch<;uZiH{vz;1bz7Du^V^~JAq&LKl#^%uZ3@+M~%fJQdOAmHgMIShl@5% z4!$X`ln499`#6m3Ky{otS)Hc7fi-Hang_S)tooyRPmR?YXf5DSjfO*&sV&o1YFo8K z+9~ad_PgeVOSKz&rmMzZhR1Adwl*y*-LkFk;rCXD72zB^a+WY!7{Sa0O5_agEp9c} zQ(Pn-4vM8=6bhujrSWo}d_x|pY*a4$62U;WdPMzFy`WxJud6jR1s?n}dOv*-M(uUI zthz*OOuziYO&Ua(%lR&0f}+d68Uw{Ah{n)-(a*2AQKjh)r^fu90@ z6Gn<6m~BAixCAc9bB}XRa4FnmZZ5Ziy8^S@NN6df2!n*-7_l9~KH+zv2Fz|3v4{8? z_C@Pp=b|NE(xsNtNNKi|DIJr3k!r~GVJ|w$Psz{7Lml6DGK4!zo(oI2THYalBA=0e z$7(4lPbrg>nb-sU?o+T%ejZdSYR_wezC{00{~dO%l2PAi1_yMY@fKFB71)x#V;(Y3 zn_#y%!f`B~Q1&YyDZeQ(zS_PgF~=WKYwGRw&hTeP>n~$(b5GZd>&7T-RtwB4<{h&I zbf%T{yfwml$y#9LTF0?1xrHri4Zq@V=MVmj{ip!f^A)(AXaqZr_W0Y1zX{{>v|}>o z3-4jt{VMz|=u!rj-hBA_-(upGk`v|5=d^f@+onKv`ktz^b z9i0;SZ(2aqLqY5=l#CJu!1h&mT>Y{_&MoD-o|6D!R`2 z#L&$N<|eb2^$Vf`K7UuNsW17@`Nu-}(RW zH^y$VYvB37L_`-p2pkHWL`)%)A!>96D`S13qi_X7s*1rT@auX&U`bd7B&9W$;vGtT zUxR=z&;`!e;6P4b6Ol-YE0Kkmx8wL}@Z(qTIs6}dgdhlmvE|4UOG(921Nj5!c@t$k zJfb{h6ujO%-yNR_$DHgimTTE?$PQ^lE_;j_=6jg1J%U!Ab;WAO~cr(;d;WYc$YuTGeQ|*wm2V-$0;#NdRMwA<`$nqM)p_c1SdK)PsCv4f_t4XHbR<2JArFK$mb;+C=jGtfauuba(q37j7`~Ri zw%~a?oDM}DpyE?A;P+$gk`_fOW<)ZVfLLt8eOzm<1NRi%wvV|l;doc#tMlFAYP^Ug z>UTa-kOV^r3e&OAsRAdX9bzke#2w-xv8~h%zQtwC9RsUw7wnE#2jva&9XU!VqbLym z#|Vn_@eP7^KEapnd)>DM0{jhgoU9D27N@n=x@&!4f|qEUG!+`q5iyNL`f7axoa;*n zWYlu3$MX>ILaZAN&FjBv!asz5<`fH|1yWnfw8SmrfzPbcOE$w_FhC$;2P< z8H2G&nHyM$;Kh4^%?MzCUT!4W1~Q}I;9lW=#{yNGZ@}+_|JXqA30;J~K`f5Lg{bL9|f8wW*O%B{rKTIG}Yc6?|4X)LCD;DY?h-$Ou65n2h)2>oEwPQxkx z9ad3Mw!y+MLd{SQs;AV8h-yS*#R;u}F6v$N^@z`Xpywkf!x|NhCWe6ET)=qF*kK$p zzBR5H0-Uu~Fdv(-jofF}!=`11HQ(B7#b9^e1bh22*vh`;{{;JH5r(}p)cZQ3s^~#c zB(n#o0ViV5wVvC`eZU3tVGe!#M1Cr^ne+HX{5$++@Lx~R;RW;)s$>2(f#cmuoFq;a z-w^jeF@J-ti<4?e^`)1j@z^u$mty2{7}E}N4|%D)N`4Q~&scP6FruArDDx2Qd{_BI zX@Ia+JM0n%`*!#~@_py~+4nmpc8#Djx7Q$=`Jwu`<5suVx@ga71GOCOTdOp}#j$~p z17`^L#jXjij0qV5u{VH!m&x}-RCf(_G-rht;?v>=1nL?~U8NvJd$%H*Q=evr%@pAnW{duFG88n0Mo5$}jAXWVJ{Ve=|MQE;+69-6!$vwc8!3qiwRN(>1|9+V%bW`HQ^VuKty;r%xkPtUumn1gmb%E zDT^R&4{fLuj@z$&t6kT8`kPZ&`5&l&$g~^1m3sr$d~bN-T`f zU~UxmC)W^)=Hqu`8dk>;<-#p_29s|-CSMh}WSgWTQU`gk{Jk8BXuwjX1~x8v*hk)i zpsT5p`kXq-G3uMNZ?q2jQT@DrO%FyI<&39{Er|TbnLW(c%;n}8Y@2Iay`fYqtaDJR zXQ5E*1D^zr2mT_%kWh+A0@7gdC-Hg07w~Bsird9ok|ocOKay|CZI!+VQZ@69z(#Br z%uzjci+U1n$M@<#WaZ&XG2MX_gke_;j|Rop5marBt?^+H*sZ+e%l6$+ao(d3!QTE+ zBL!~tX?Xr#X!(=yZl__b|HZmzE%dMPR|zzLv0X!$N-E{}5UJb|ZV3N6KbvoYJ#Ufl zkI+dRjIH@5>4r2P{=`fy%fCS%;?)hXEz7i{TJRCQlAek^Tz$kbpR{^dgRHC8P=C<> zm%l|o37CQQ2+F(zAK+7112mNE4oN2WGnb5@a$})|P+QcnF&&IRUWRyDED~RaF07Q^ zgS{jB=z!c#9tCR`tBh4HD^L3>tA^Sa`;57&t;T3|gIW{ldrxfwHqwVMDkNBP1Z&xK ztY*~=!4Tun3@0%C9u6t+UYGJp6GcFvG+mjEMdYG-N3E~5 z#X-UxjY%!VbVR3r_q~Dr&`$LWb)uGp&~X#E=c}MIr{I1in$65)^A-5MGtD(vWUKfa z!J^(kEVMd&sIGxAaKSze{2E}=-64uVEc9!vE-a31I`B(_{6~oOoJKrio){;ul~u$; zt}4wD0Xgq$hqI0k)W%wY7K@PVUcHeq(l}$(L_-DU-{#A(<3Cuv;5(@ZUuDC?`^t?C zX1EHrh&#iTMF8&@uL`dUcLWQ|(>1ZDbX97O-k*`nVjEJR1pijX`}X=8sUy`hYP{Cj zX>5z}i_sCA&Ow3Mh=tuDAxGyOR@*i+&4<>MgcB3yYzA7{)!9G%H8g;f8)!{|BpCImAe78;ucKF^rZtpqT`%ScoCWHTD`ujFXVcIitw9giYvm zXE)d%Ax0ZhIUhm!KcFu)ofYsGOYkTAU-8fI&-D*Me4Xr`gG^y5e8dF*+Qbdws`DxQ z$HGZOr^||!MGL{kZQ@z+dz^ecB3+SgNsq|oFT#3wLBFMsGR~rZrJdub7Utt-e*{}5z=E$c51J>< zQ8;dR4f$lv05aWlN0 zc_I0sQ5wtgXQ=>l~uq)o_+_)wqR_C2N*3E0_sE#4R5; zyTMN#YtF!!t-zXo&Ma*auce{Y-11vpu+JN9y=Kj}R#}t%x&Fz4?Kl3u>K~ZTkq;?^^I^w4(Olbbm%rtL#h}J5i4zLjKay# zYX~Z5KsH;@r<2BIs9q^VkXUP!b;REb$9QuCO9CsMO$|B7xe)j{z$ADaU1PZNTwORJ zGdMd4TlF57i$(TxgjR2JQ3xb8fYUjZZz{+L5;ehk{)_BITssac_#7NO^iT(>>FQhR zE_H@xV32m|c zdRZg;2ibC!SiU}%f44}NVd$k(YFsJzIB=Y# z&cWf?CUu8;OznseU0EC{%&-<&bh@Q`oIpeaoEY@OvCIMPQ=9?)#zkXdujljOL5+a# zlrP>zm|MXi=VkThAbdWbmZJ55_dW+b?H))8yoCM9Cx}^{3oscT<`8;1n0uM~7U%u_ z_#1pz;cel4IHD#tlON-REKwe>Pu8dDZ@~9os4vr3>N!|Lw>cj4$MAAKN5uRBR@5K# zVw{HE(<6--qb%Y~)rEWh!O!;KfQIa)CTqdDT9)>R(a2b7TreWhkGIX6W?cl!W+SB1!r#mP zHasB_L$Vl;XXFLGMeNtZbjN`EtHl@JEc8R5j^Bu(qGswG(@zpliXW=E{KE1x3Qx=D1U)9`3lU?pK@JAR~}co z;(+`T&cx$=_y8$-H43wTv+q+UiZvbcf1!E;2W*$rpVUb0QB2BKT1Tv&0}#`ityR>U z;V?Vis0-s=V8olXOtJ*Mk4F~r&GY7u=;H6@UwDkAv=#JPad>*6zSYbUEgfgO#I@>Y z4ROMSli&j{wANTVto>FZMpgCu{jL2^ViA1?@$f-7v>SuvbPCS3=fUU6#xpLPu#Y^5 z#pi2mzNCPTAXM8xN9-qiL9K@bMg_*=czbH#O+4bT6priqz~&$h0WJq_2bg@16UDB< z)#F}A*zH}Y$ti>j;&~n(e-hsX>*Evz9~L8|z8A~R4gNO5PmI7K4pc#i7i!_Otck!0 zZJ=1)gy)4-!g4s}#bR^m32eS2<+5@Dwr6AH$<8Axa}kg|iw9J0$icfZgOKwT91_&^ zeE>^epx1<>F~MA5R>1Q;W33qoxBuubizC=%gwrMjm_m=^YF9+?cp-NX=cK>mF`Vj% zj4Z_7m&8PFU`@OO*6IltgiLX(ct)y^*!rvRcXwi_>S`mkp!SLO147!p^gTf=vnLI| zdE1P~;d)Ce$EpSK&T)=nJx-*m4Eh!jI$?e+7q;VpoaP88FtQiUb7P!vkI=uwLkSIG zYB~RGKaQ}m=6jsb>o3Yyco5~(rZ|*LLnQ1+Rn=O;*Y1mW^AfmZFJp;6rU$>q(s2VP zfP=7lHNYag7!JjcW;ras!=1y!KdsvS$M6Kx0{?1%F&_3Pxz-WY2)!cNdU3)5n{S{Mf_c?fY?ZHX@WElGa^n-3?hU) zS{~>-qskh-<;f(1SQqUhZLP7-H~|Aw(`<>Oq`$4s{&Xig$RyxZk0?_L4bH;zFR?i1 z*e`q}9K{Z}nRH4TC%=ZU`$l=2d<@}s7IC$T*oun?@GVD7`7Idt4ZcEOO&Ic}>KZjm z3x10S1)>pjSf!uR|Io|AEPiPWFprpzA!t4Xo2}1rW+%c948p?#EFRUc0)1c&roudb z8@Nd%z(p}0*nsi{oF^e{wEM0JnuZ7^E2$kpV+uZBa&7TkLlEg zy=cnwL1?$-Ji*n)2{iSG5gEykfwl+v>CW>zWL+aqb#3CeW9NGSVm*fEdA`DV*k%4l zgz10h|KdvtrG;`rW$cRU2n~hiSobvOOdFwt&=tX|XR&P`hE;GZw(e7e*KrI*p8R!*VBlNY?E$caq5mh_BI6e1w@6jm6M7GXQ#XI zEX4b&Pn)8B5rnhZ5|P<#{iNa)m!wK^YdKBMhR^F! zIwh{>f?csQsrmy%`a4#+il@Q@d!xK~G(ew$NBB$U;@*tXRsZ3E0z|T(f zb;l!3w|t$^_>Za)guhdu#oz>IKBi%3EVXBh7T8RlMqFz$9wNJKJ?Vef|C9e4Y#{L> zTlDxvsMc*R5#fhv{5BlJR}xwaX?UXVl28ke@ulIQ{iNuTB%JQ9cwhi3!P`%xLm>GE zA{unaciR_CRHxuUx`x`DkU#`NYBx*G*=hVp?Dyx}|?H4QPj zdp=#Ah@IPCsvk$iA8L>53-DCWcX};jxPhMMy2k0W|64riqy*X^E;1xA(s?Xr12&U+ zL^}CVsfz1u`miEeH+h!Y=bND5p?<+;WBmvcM;Wz!UnZArlcq?6j!5%pNPlA zFA*&-gM+DfslPNt8U^)xTUrb4-!FZH!1Fh7J%0Xwt)2gC+joA)bw!SRo7xkpNIa&) zUQvh&%H2oOM<0D8ee@;6+4(?Cw4Q0zVTkT+o+)l<)U=|8tS+Y(VcuK4S~o$Hq^H(!XWn_ZD67J|px> z^fn{bgXqI(m+>{?xxK~_;~PeTfbMsUIpaf+;t(Px#FX#?>7Eku?IN=LQ`XS;SmYm! zAC0TTEl$K=BK`Gh{460%lPT$~__r_1WbUEF5!{+@C0?MaC0vh-c%Wiod=I|o*OjTM zRXL~}Wh;_kEAo=8=~?1QqN;CE(;q88nfh(RmN1V5LJ}ZfhVCW;7jY&(l?H;9${giY zCe#zG+fK6@I134y>Us4oyjl^cJ;Vw*gjx0iE7ekP0#!JTLb;1Zv1$h?kE$iK6WCOz ziCdl3{u;yO{C@J|C*&qIit}>lH8b>mrkEK>POOf;qTBRmbhqv&l{AR``6|Af$ztq> z`j7O>B($#T*Vys@vs{%7QlBf~d6dbG@F#?3?U93Q_P>h_d4?x>kx970Yq-vIcbgp7 zZ=^BP#ULSUnE+2H8t($6*Np3++HGP+zac{X(CCUi zgUEOu*?B4U4n+F^-{LTJI>wSTi?lq45Bvcx{!PZl`*B;sndqfRS|Y*IJB6S;op=>N zY0B)hTwSg6o67@K>M6xZg)HQ&N7-$5~+AO!JR!V=s?PSU=wmeg`}JLj=JgHWVQugfD0>O9%KO z0fbMryR6-~G$d4_uZM%`=$r`v zPRc6IQN`VKA* z{|8L_w_vr;{kFi<2+bsR(~B$!-^Q!H8fck;UsBthz{5b7dWc}~5j@7QgwT^f=

!r%yB+V-z^du1aI=i`B+P|R3 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

cCr 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

Zlsix(A9O+{#VTuV)~cQ7hyDdO~>7Vtn0 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

+JOX6>)|P*E7fx2qumE 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�^f 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 VEq^EH6jFsu;Zf2nP_o1R{{hBLWRCy< delta 14027 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 diff --git a/client/3rd/bin/dns.dll b/client/3rd/bin/dns.dll index 3e6d079e87ccee38377b0e57cb7289536f18462b..90d0e8db8d7c522d90da6bc52611483ecf3a7352 100755 GIT binary patch delta 41916 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 diff --git a/client/3rd/bin/ftp.dll b/client/3rd/bin/ftp.dll index 5ab9558cbe1d67f38822eb84213bc4bc7dfdbc40..69d37c8cb96dfe077e9345b5d475f3aabf04e4eb 100755 GIT binary patch delta 31514 zcmagH30#!b_dovJVc2wl5s@7PMMXs&_I+^yS9A~saksQaTr*Hh5ezADoKmm$R9b3k znOeCfrYVYR?psolx%*6zqLND~^Lw9X1{nK%|F6HVICnYAJ@?#m_d8ET3muCVI&Sr3 z%EH{xH@PqKW$`?g4PxcIly!Do>?Q~yrHt2`vbtxGJw?m0G&w6t^|Ob_W`;Q+e8xe z=C1%=9}7aEvEnO4pHlkw{s8X85c1i1MvK&OEKfu!|{Y=Fxf0Y=vW_@@H2 zqr4y5K*2Rj5vxoFm`uv75CP`e1F^0-fX8Yi>&d?VkRCr4UIbjQ8DPp8fNrEm52|qx znSURtKKv1YisXMwW!l^Wh9eF5Nu zK>$Zi156-nNVQNX7|Q~oR~<=sCmo=i%<6UsKuH#LhzA%u4qyYBr}r*^pNS*$EMk{P zw_nIw$Fcw%wgB9y0cf)iU=p!;61W%%@a3NX&ldwMS^)4mDO1>aH{j=201lG5MA9Rd z@}`iHLdoa{DXDWnnJdZbj!`nTCxGiFfDRb|{+|O>kpV^=0~kl@|4OlzM*#MaeZTa9 zfTdLM7V^#=t&zO>Q6Zv}ZUeNw1@P_*fbf3+T2bpPChL8D6d<0gH<7&m^DhB5k-+<- z0J5pmG`9m7^%0V-Z4tZs1hF}B0JmL` z`CkG}eFu0e%o@OEq4_k<6vmSaJa1`a^)8$pH6_0KYu| zm`S2uO9yD~435i$*t!I=o}hi_QP!pjnjG}`VFbniVB`U9Rl?>^%lTrnli3a*A6PY z2k1hUFMLUWn)ksb#8Sw5cggDpS0FZREx<5xl7F`X{6uXxJ{w?<0wj}3k6apuACrr2 zxd?D!4Zu}BKo)h2OEf|>BX{XbtudoJVo~?V{|-@4t(^<-fY35%K~il=k2PeJ+CqRC z$pHQ-06~O!NQl`)H-u_@pg+JKvfGur0A62H9(4xSQvk<50{DY$`74pE@&#M7lZX|@ z9tNx)4)Eo6fIPyy!2ouUGN(z`7DSlc3*fa90EzlWJ$e7c4FDCSLef>lzM#hWlfbrg zfOr~_CsWS}CZX%e08A)AJ_5M47vQIGfDmekE;NdcrP_?d z*jZ?7L-rB70lZ6may|c`aVL`qJJO`k^9z6+!YZkG|M&@@3(cl=RIofu#1mG#ABft= z0IySTUDXvJoW#eI*Xy@LG|-%02(Y;yz~ln}tI1R5kTdlq-CDi?sQeuuiSjnh zEd<<4=Fg$l-ay7oq=reP;bkIKws$>%{tm!&qB}SrAd+U&!K6Yy5$~bAFIyq`?H0tQ z9tU{b9Uzskhe_%EZpSZZGZPz}Ho@~g^10DmLEzf{jfy8*Oy03Bxo6deWl{40PBv4Q*r9lsXZDWg<4uxYclEHA;gsi1W;oM z6^RVp*M!>Fgwn0C5rncU{gHeB0q{c>F}1-k81D zY08n5juYndO5!Y+bF0imPSSTgy|tIma+y<;*O~Di(k2LF$ zm>?N5Ud9Z2;Uo2s#myyD2%*x8P>QeAnX>ag(M8C4tB~g>c~IV{ow@`$uMBzql8sDv zPS;D$yM(;f(u3RFDbTO;_i(i0^cN;W33-$*#!XP?2Il%|rG?c<9wT3DZ-oC!T_5nJ ziDUUW^}<54AKxH?Ut|Kw;@}N_ya2wSQ%(eLb1RhW{hNs^h)}g4lDkC%*FfSLOsLCN zD48ptxMmRQ$9ty2SJ^y?Z4Kd8Td}RD{UxO^uAb;$}P zbLA0N!erJ)Es;vEu#wm6a*6E=Lh_@ z`3}-2XOS4FH07&{C%h1f52~ei`0V&#HlDAIPiB4ijrcBI4xB>wIIJ2)!?*k|H=yhe zNvb&y=1~rY^h@C;{nO0S{M*v_9q|c%j1};l#BL6~z^Jc~^7)d)@h!c2gTwnAx^KQp zU*Hh_L|V`7lhRlQADDEH4d+qGfsXkE%ifTAl0AImL`?XQaw5-GN{43B{0ft) z(Fm{v_!bl23FwqNR(f&-e5I+i;ZI8QUzC*RHP6b@AD7mXg=_V8G{9t;v`YO^J1Ld~ z@xaeoc_a#IL73sFm0XB;`4L#Lb$)Eq(GqSgY5@eEj7Lro5mfo{yj+2m|Np#uL5erFv zPks6eLuzfdR=QpeqVyMN?reR*vuw$iztO8wapGql`ZR?Xr8+nsmg|`%UEoVoeFO8U zr8Qa7w+E=O(T%R1>sEGeJ9+BjCCV)~){qDhQdj|wK5mT*UAj^<~ATblpUz+NmEghpSo#iI^ z{=zkVyxiW|M?9s``eSmdsst(dAn#u0&ozBp^UwM?tMXxAiO9AZ>G(X ze%(vF)%KZMsRLCm_1TzG8+`?Nhnpbra>(fbIbBrc)Bt8puJDO{gFBIGW*HrtWIUsi ztYoMK>Ba%bXpgGe^1FRq*#Q2$@9XReAJxy_{%^AK?Vot-Ypt9^BooAxrlD)(pet|a z*GYZ#BDy@eHmsNalgY$GhqvN&{e0LQuI}$^*RKz_!+BW$3649;Q0y`3jWRy&ZcqYx z}I@PXiE>B_)wU^kRt7^ps$rW6DLfx|w9 z0)c9u4d$9Fyj^;PQ}Ax|nPYY#AdqbN8|m?EA^$QxlSS|+>G}3Ushqk!e8#|#=2}of zp)tEq;~Q0Od~CHNKRU1n8^|381t~h7<=qAiRXo|t-yhVPUFKg6%48GyKZCs87Lknp zWC_w0oghoP$b+@_{xxGAW@N}f2dDW(m-YCqn0#3fIUq) z8tG=aAzCSlcggVa@owTWK7(4|IcB$h4~o0OU(X0{p9n6)z_QV%cB)W?+A=@LfpI0s zhw5u`O}cG-U&e42#XYdFX~X9a9>*5(TZ4lFQz6_iFhoj}LpLc>4pp#a(GN_WA*J%* z%&vYFM~CR2;X^Wmp}X=J zTMT}!)TS}hEWxiIA2!6_%^k-;3(Dbc&Zbs%8ig8em%n4tkZh*xy&Y|l^2m)pAL_@v zxkpwM*4hKJHU{clP3OIGD*yv^?KcSef(ccnN8dqAdN@IH%hp)*W}znmTGx(&#Zt9dSyTvWvel^NNXa|4EXv5q`$SZ|lX-bJA^vUuH?`c=@mZ565re1ZSiP4cKP60a?26t)JF-3ayho0FN=`FH^=7_wm`6)c1vXKQ&5{mMzB`ers9B*HJoe*8;`pZG zgR-Q_az1w%?$lzyVL_m>a=@X=lA=#QIP32<($bXiVorRlJeb^cg6 zZAiVXH5mF3`xkIoodkipUO!@|l6o6!kX&2IX*2vi{WfY!;U`isKQJO#IUIK7+s1`s zTM;0pFlIZz!O+)Nx`I|4bx0{tXDXf?q*NL|_*(V=#2t)t8slo?w8pr~__`d2Z|Kt@ zMJX-iAB}8a9>0^Te&Z7vdtz5`mYfGNw+3D?QZDr`)M{5|^ zM>@urj?HrNT-Q_;6|WoHmrdbG<6_uyK5N|DPWMouhKgS0PsjBuytH0k7MARUMh677 zLY-@?KPydy*47mdp$7hVBQ$r|&(x-w8bjI(od(UEJ4$OPNdPu?gjV_iWm~(*S8`e_ zb^nj8LglnR=d{ zAo=iW-4Lh6uvLRPMSQ@-_C7DHO0AXSxwFeo55VlymK!Dp`|d;@b}nTsMJO`1PzXY4 z{u;fFA$?7T&Viqw=oX@aGKSOzI1FHWukU48VXexPw!#7Q&-TASy2O;_(#tOfz94Q0@)RuHsO(FST|q|x!`LR;x`)boG?+6`-3tiYwg5S5daSyFCDUy{pQ zdL@!5ELYo*nDm{}CH_usNZM*}?RNtg^iX6;PjC{4_2a3M@(h<=k;DP+%*-sUr2W!l ziXA28d*~z8$j*{Z5~()JkX|Vz@#@@p!@475e+)!btM?`#$dtNK&JaZP&#Y?WMT|M7 z{Ehnb^(Ez*mU6PQu;$t-CBgD2UtcRtl4A=b8-8$-haJ`KkS87OVXR71>4v~d%l=A- zxx4ZCle;(^FUPE%DV6gdCMU2U{&;d*Ec-pC%w`|(B~!juwA;#Kr^eVS75ak|yz!Q@y=@0ossW zE{*vFp}_%-LX9i^xt!Ne^-`EV=3dh>uv3~etqrs1A5Qa5E&^fkykIz_+YB51K(}1% zxz?^G*~Sg<7=8MJ&Ih#_z)D&F2jwh&Z(6X67ZsM~wr4pGT(r_k?ms;l+n&+W-7)g! zPfrS44PEs^&lMkbE4cvW45^hasRs>)VbD%1wStrG-AZkxchJvPmZld;$G+uL-ty+A z=?Tn(C%om`$^e_~Eq{e3nP_^oWS>HGY7xd7!(Oy3o5;upUKrT;#4KIa@UhU;x|gVUm4z$_Q-C%ren&W zpr4r9rI#%^d}#>@lkz~3lWE#TiIVa?K|JkkfA%e(@OFprvP}?sScTQ9rb+Grl9eqf z{!h&?+rI7N(|jcyEd(W@gU(h;2O&m3ba6>}&Ylqd_uGj%AHskB$2<3a3?>bjaz|x0 zdZz<<=gp;Lu%;!#1v#yirl9IHGBkSUX0Ffk_HsisS~7D!SkE%9RkkM zl99k>N^vCn8BA>++Zu+pw%_p5d>_qy=njo_Odi{8t@_toa7%6A8#)@>%$BR%$mg()-3^ED_ukdbVU?}d64gdr69B^KJ1CHCl9tko?03XqaWBw z0@06$$^BUMHD5C;pl^spzXhn9A$_AXR}PnetGP6t;%Onpv)$A)6nY`oMr-KbM~VW6 zzJCOc)lwIf_KYY^UtmbD!ikOJ>^_lYC?W$#K4hPg^87B;OM9Yh^wRu*roNy%M}3Sg ze$mIy@%Lx@dzZ_#nPlN~DRH(l_wkyK`Tp6SZI6@g(izZS)0;r3p|*UrQ^D1*N-&pfVWCkEM-- zXaRG^{&)RwxK{OUC&itG++j{TEQ7nwac5pUbxu-q8Wgi#QY$6@b^OCQfh>`4ofF#S zJapBUkRqNf%0uS{_$-G{Ta7*a zzJ#S4#-7P@QwrVS3;#3rbVq5rb1=X4%-D)-sgp}>8heJxX|41awST4Sgi^U9UbUsW zx$CR~4;ixEB9p1G(U5M^*7qCiYHD>`qfm!m&D7OFf+>HYbaABJmtm@-t@Pr+@ck&DZtk>}nzRHR`vQm-Z7Y#NOmEh{Z7Z802mJ4~uI z4o6qfiVc<0!SvEIbP=oJ=sW(hz}N8|OLaQ)HuFNUI36-D0`D?Q=Y8XP8x_KQVO)o1 z&om4Q!qTZ%VU;c0&I3z)n2slw__0oWM9BhX!>^a*IEBF=4U5h8Jnj9~><|9N``vuM z$39V>cW_uR)WOihq54dwE*J+QS<-U8?R{T1i=TPln~mhg_x*Y#H4x`*%GAx4i8?oC ziJ7{^a+YUf)&iWSV;k?EtJWPpL?U1EJ|9eJ*A516(8a4Ut~NR~##KhffBV2&q5YUQ zFKye5nCVEd?Z>Ao(3M@}GZqE~e205|^Q?I_3&%v*IkmBrMdV9XfIL>zs{2J@bq7;JgKEDv##P4C{EJ2Y>F3@vnMOBkVw*Oy z59T#7-D-@hjaM4uD&t8x-n5Y|d586+_2ka*vp`TXhS7h!l)8UA;b(iYl7ySy+ z&=YnFSY8)TIE)2L{`zC7$6ctm52bl5|C8bgw}HKF%3oDHp-woK`byx zR$AisK~$?70w{0KN}fTwZY*U=KZ7R+tmgT6ih@UsKSMP;NR)vq`_8+!Mo=vsGuJWf@ zC}bLrVo2UrB;+cS5~-)OWJ0MK*s*>k{C%iMOm}B<-G>oO%Rm1xSpC-=h#zXMTgG7N zLw@Fh>xV_oW?X(Z1BbekL7xc*;i}B-@5+J-h{Is+uU$)DmWw|VxkHU){KR%03aa@Ad zFk#o&jsL~HRcnyar+89^BX7BU6EpDr%LCYC{>SnVdm`21&c<~`dwU|(O26~u6?a(+ z-u~mkUV0SXVC2HaxXSo8U;6PK*Ar;pQhWU~eX2uFiZ&}-s@Snme2*y(Oyx`e^i?># z#lQcvtD@Wj2B(Dx6Ad+%D^bM`?HY14|Cx#bN{BkQHPVBVxh6obnEq4 zcNB2t$_N}R#jYHRbMB8;205R0m1%Svp{;b3A6yy5a`>~A{4V*T4@{q>~rsqA0xN;aFG7kh-x>S z&8m*3Itco+gHb@1BsHnwI0H8s5pZHV?(s#5^SbG{wKC<`;dW3ft>v4(n8Ci<;kSCT zjos{lsGZ2qd>QOJYBIDaxQ){d+`Q3+!)>Yc1o+ZXsctMz<-N$HJZzmeOXcb7zGC^j zZe1el$HUeq$NfrD?!S(sr16r^Yw#SaTSZ5ld&Rv0Ij`I)N@K^!cauD6LPy2cL;S{# z)`jRk^K0;GNLcHOHBDB>bo|!z6 zM;o*(>7#}`my*k<#-cPEY($+Cy5%+7n=RNE84EBfn(`~9lW1?OeqBnw2bI2{DqAWV zhviI8u8n!Mco=4&ozL*>Kq@Zer3Tc;&31i(-d0*r1vqFQMe*&Rdsx0Y~& zCH!0tQ4SYK6Gl;bfq6ZZ31_R!Hex>} z=<}7HFG<<=|L-RtZ&K!|y>^68`Oc;+TI=EQZIhO;%iVpCVvoIlzWqxg0N583>#@|PKczz69)`Jv5SF-kq$ zoP*J|{}yk>%~AZ#Et6voz6HCxk1o|n+Yqa6S6rYL@{F;ms<$1b4TNh`eG^AzG!RLC zNW*i(pJd_AtogTT-Fh}Mha;vxYGJ=;W^ZR^zuv(9`HrG*-(*hf;T^du-SHnY{0|bljzj+Y$=LWz#`Up1m{* zk!nwAJ6J$B*{q07Sb2qX9Eq*0@uCl}ECeYBCG%x+1tcJDFV#Vj z>c5&er5jo3oY#9dufTdz2c0CxNoJ#kM-c5xOO@&k{YwWTh z63IrTpi&>SSB~+(Fxftk4WkM9_D5~&z{{l3RQ3e3n#wS|Gm&PR6V1T-FP2RIY>#YX zYc8)n2E#VyGK(k4hRAo(DSe?r9?#g(L*bPLpAK@&b~L{Y3a`bF-+s{LapfJ-FmB=(e`xF2 z67s5TrRSO4^h0-_VAA<7aH8VBk=xKfd>+G^RK!Q@?$A9CD2(dqQv3jztQ%6&1uSKC zK_wWJ0~Ua}-uZaXguK>SIEs3*yQ?n; zZB9jaxjwyie5n%(6msZ|L`AN>G=-;>^|9+inr+}8mIb!%48<0vUN0?pQJh$V22|uv zlDtTj=uCju_?a><#j`=&SQgpx(?KLwkIDS&{+MwgZ7vVp6K+47q@5VRC+&HSsrZ>a z9*Vj_{NA2{E}bd_3={ZIMGe)L_xf?CqHf5Je|}Ub6uJ{!@zZ=?XSo&K=yd|oW$7m1 z1)`3c0LMJ5e=6ziHWu2;-bbERqcWt|Np+~Q?h}+MufU#-X&MZgXzrwerg4>aX~(4f z^A+y)V8o{T6sC7W3B85Q6|_=2t~glAR`SIMhuXTLVmTsHvN%3{tE*FSO|M+6boUXN z#FGzo#XZy1L&Mqk{KO%xTQnZ9mumF0lv21HlinRcBaFw6UKJXq*wJ6CwPQW(p;E4c zw2&V-e4dFrmLBQN6odK_s;~T%CivLto>Q_cbu1GC6zU2o9J=fKD2p9}O8Y3KTMa1% zQVspE%#$cHv-YR_$<%vOs`<3zT^y0@Q-fq5KK1wk9PM;H(I5AI@1Dr)dT0=u=(Qx; z9@bK?pobua^jgW(!(>{gf+%!;U%i7)ji}C(|9hgHVrMMIV6PxND|tf94--u$dJ|TQ zrBtjfvE(K1zkPz%D!zQo&uNNoL{G18Z28YWs})y!@~WS^@;)a6JvyeMr_NO3XfOpw zgA!h7m8RB6EqT$&f)-Dp0Gb}U=woQCF5%9n#yIWoPChL^0J_|R=l1Q;@fM0Vzq@G{ zgC;V+-8qBI|Gc~TgU>%rPj{Sn{i%Q!cjD!~aTvF6ECZ*dZoJ#+c3s|xg)C(OoIucK zNmHX6<)s7hA9=x$H$3=4iagTOxk0wRK#lb;uHbd}@qo+zR8M-`;FhJ$mR{HLQQ1D+ z|BP#kj&YELYdz%{tQbl^j6qL$~K!m%9e+n4QJE% z8)uVSzeiLp(N_8bys1#($@SmvYE{E7=|@B*ze%cW;( zB@~mixDIP^F4=oJsgQb!c3$VOd210#)x?uTpA?iCiFJZ4UwtT12${frC z&-<}po_xNQ?`E=Gs%P_5Uz}&Lybk*venxjI@XV6>rSs|MJ-T>B(GovE$ZNM>4OEsC zkPas{!%Kl&{&pp^K3qI}}VE(@plLemq}_59p# z?hdy*0e=+3?)~4q!+s);3B>U$U4y6N)I**x!ZW4I)C8%u`jeJoaUgSv_WE&G+j%eR z3|zVc*5C(^c2_cKT`;a^@$7C!M=Tfu(EpYE^Q#`MlRL_jrmcRaL$!ZVp_7n@J>UyN zn)%gXAisE3qo@t$wpAmY=RhI`Mr!>R(w}@PV)}G55>`D!S7mjo1gi; zE1Sn({_bP_Q7Q zzBkk0tcEYX=3{@NJ@wEE9+1^V;n$fD%JSk*uH|(&1>xAg=ue{lRa)sUvR-OceCqW) zPkp``$C!9)Sp|)k{t+5kFC!}(4s2FK8N~5Gvf4$9;qM6QSiPrdQ!+vt3E@2DWsE#* zM_gaT_VEMP(+3Q|Z(;Ol0nA?CTWMo&J~W6y9&2ry8G=01%wQXP%$zb=2*}_eM2W!; z2mj8GLjp$!~r* zaBFLMq8h2X6l6BtS#q1Hx5Cw}JCLl#)39>B?Usk~15m*RT^(~1$`+BHd%4Z+Y`3bm z^h1glv7^-aGcmqmrzmOo)Z5+I*Zhmy?Yh52HLQl$F9OWNtGwY+Uo3@*|KgMHbn-t* zYF$A#^{bljtEHoAfybl?1*K}f^UkQQH(`-a2WxZj7$}pjhFclZ9i$*u?X>N%E_1kc3$cA2}}>%x+F z;=R||FuwNQZM;i*UyAqdin{9uIxI?4E$ps3nx- zJT{tRjovJO#~h;@W25+zKmAw_{@tJ56t4dAiQ7XToVX?8_mw=proE~&fTpiAlDf>#4dQ?zuPs~!yO@C3h7!?S_$ zgSFCB4+yN)|3d%!H&=H#C!RJ4SZ?i^jCkIFoe*P?eu(s5$G)pNluyua6 zDAlEOo`Yzz!IMT>T&Zdu>_u2cD-Gd3we6g5d&}Blh`>~9%LmrB>9*F3{Jusj8SxW0 zI{T2m1d*BIC~&yF#lG=?d@wN@r-7?$`{Qi2x;E9JpryQlS6{v^;|h$&#A2v^;S1R#duzz?c8<$cwGz=N|d1 z4?&iN5{Ha=u0#n}k)P|ia^J_}FkQ`id`t1LBi+0>Hr(YL<{#Dd!sD(>b-ApBC;#2w z=|U$AP?h?B$p6c^_;*-PJ1C)lJYq?%P@4Ko|63UuQj0U&M{4=J@&%e(6gCY(vL0pp{Jq#9Z?VLeHwn-@C(Yv7*V4?ORE(J-r||N;w=>>zxK_b z#zj)&XBRv%_fXvdrDbwT<8z;N?TpF(tIwd*oKb4SGiXdp1615_%^Sb(t9_Q) zsq;{X{1p_sktgY%$U)i(cc9H_Uhi-do?g>vRPZ80SHq_~Pf&O^!y?9C)cP=6e&%_O z;))ZV{`)nBtJX@tLd;LA?TZVxHu%QNZ|=&4kFH^qHBexN=CR~9w( zUL7JKKKw+fOX(nW=^!_n86LPm?UTwU6^gv(c;--i>!tLEJr6N;jPPzw3a=uC*JJwH zYfB0jPmpl=RzsI>M^h`Y6DyY%+k@_yVZuUbvl?m+k=49mY8CvJKUTSh>1=*IhP~u@ z%JA}PcY`uYdfx#IhjVRcrqD{eT~_!rAH@-SnAul;O6yC%O;JmesQmx_Xy~IAvsoZJ zv*I(>(J2P1W2J^mhYD%oigV1Ly|dy0>!$i$wxI)McSW|B*po3I_Ea3hn2rq)k2BU^ zRgK!5sOWrFf3UimuRYRP?5AKIoF<}3jBSQK`29wqI8VWRT&McbVGIt%-LROnIi{6H ziJKKHp?Mo6jpg)HhgRYv@G7cpL?0U#sJP%DCfTr5FK5(J{z*)tA=OC>JzaiCQD~*7 z_TnlVHioqnU)ZqsS-e=RWHE(lUY3J&ml7{J!N>Z7o*zqZLI};pzr)6K&f8vr)~c}4 zM8!ryG}*!$pEI$I9c#+M)eMi=}oO;!AsWjWrjm9GI8l;Y;zU1M9-3iR~O&5bG!Q zb7XOBkyzr$me~blK^3j&*NnwX_WrjX(}s$yISf@Mk6rts9*(o7cs9<5Q+2bUH|$-B zzVHt`HGe(zVq}zSrPHV#Js8rTp}nNkg(?gFap0GKdWsjELlLiT1}=DllX$Qh^Y>ra z5=PeQ$l}QKAmT!lgbnx^>4G4>Y{onaKQ?Ox$;a?y61_?KT0mL!dsYa&0<1puli1nn zye_1gZUN~ijk9L5A*LBtOkV;UJ4c<@F%u7=bPHvUZq^+1V;3m}9ES9k8>Ku#&66K6 zMPXC(p%Q(UekJQbx4xpQin;X|{gOn2%H0-qG}C4t9nx$>w?FUMJ0B;%O6f+wlnh( ze|2WQEt(%gyhW{=V@ur}R{1%-4G%WMgWOb(@cP_*LkXiC>_#6PLI$uU6UcaMEG0l@8Oy{jSVg(_b!5F2_=; zG>;rWE*dk7{QT9}j;J8u{tpS}pHmOTK`mL=H)|fsl_mp0BZs`;CL`rQ zj@d{pn~aocrmyapOyaTnz%S~NJSsi^x1Ntn9*s^juDfml3NQ1?h9|s12F+K6Uxlye)74qjgr&Rk zFt%t*4bu@w*B;cH0!O{jZ8UoXhMsf(h{3H`VBr?hRvrb)r8N{c;a2A>bXAiXX8VIkzAvZN?{go@NkkD!YFnqIDi_*X0DZ(AX?{D*2kKprme zRf%q_hxmm%3sr1I6iBG*)h}U_u zp|lW8^SctonU@*7#aWNn@jL2`q>>Y5W0!RnYZUxkt`;^f&A%k=2ebZc@iS9?M{O>) zFlgItkDwdo6!QR(CA|fuvwn&bHL|WN zw5*wU$r~$&H+rJ~m1hD4zo>Q*Xn=%Xof*d*@FTP=KbI|8R^Mg6Y z>}xc1y6+y_f!%hs!#>6M&UtZZJahM3d%E6KHU#fej6dI!Z>=n|4t}d{REtG%%)@^Q zkt}=&l8^s~r0R?~KaRP#jwPBpqIvBVn%wcG{8}kN{4DNt2D2GxU`)*78Mq+d5ioT)e8Y%f`&9}!_&JqnW{&U_E4K_|jWo3d8n4-PQdlc>9Za;A z@~4yVpRbEsdowq2O>d@D6;O61$^6PXJBPA0B;`GGw)z=lL{jcT${j7|dKR{zoFZb6 zLun1pBY$zmc>Dy-vD0yLX8cKxE~e;qIZ7X#F@7ya4^woN9Hr097?;XX`mT)eeL3p+ z645zwl)ffooGwST6fK+}$0t*KxE!S~$ruO8(e)JVB}eJoF~(RqN*|0dc9o;gDB4zz zx}jqlJ>{r|qE2#j07VsYR7cULXfuOh0Yz)%Xd(S5$9O}I@1y81a%{R+F(@ zj$%`8GVYS2bWm>GBuD#DbhR8EPtoNRO)oMomcv!X1#(zsoQtsWlPl&guxKUbD!!G> zd|J&0Qs3_dnrJFwWkbksMR9F1dq?#rysvB{^{1BCsNFq>AElgO)MgKUZ)&sjHO3wA zKfJs#c7X5VOx0KjLb*wsdfOseGNG9F$fxB3XOpz8 zfj1arJ1LKn+;Zbpxk{DBi*i_Qwp98?V}+bvU@Wg_WI2Dt%(9VC=B0}XE{9WWRPTWbNw`*{0@;!CXz2f@^K3DR%K9D0%g5> zRc>rm7s^>hIa!t*N6I<;6ggpXj%6UYa~Rpa&yekGCiFf?Idw$%=WmTF;N->_DK3d; z9)3#*KY%#)G~rFCNMy;C#zfJt7j|>!&{k##Jc?LZuYW-N;MYbq{aK|I>2) zDq;K&h&}H)*thLPF zSZj*AI-{Fe$8*qe1(A&>vi+}+ktpZ=a&gY%h-Nv_ECP+JV_F>LttTB{Z{ox5-FO7b z|F@Zrqaa5xn7zaV=PJ8ItihrhvtO45{|C!Xup9@WnPoq*C`p5RVg^{)2Dt{VRD%x) z7eTnKznHaaCC{hL#}Z<|3m{6x?|U<^<_VM$L>Uw03?EO*m`fSm!76KQ?la0GW<%dQ z0D>(n`e>7e+ z**vX8G;($#&JYtgGsSKFSdelxxWor>tW}$vSbUU?BvkW@jhf2>%`NxFetDh#+9uGM z)mTFui;3gJh5vA1Q*LYr(WIE)|Do7;vtpwgWep)&he=k!1x$CJ(ATuM3q5?$(QnLS z#C;=}r{=)d4UKG33;{?M6N$|h^A5@UwYVinNlV0WBbk5lvTy25dy4SZ%=r5bi;Ygn zKiJ5SPH!{|gphRuA>^yg) zPZo~CaI|wZw@W5*WtzE$Hgc`8=JKS==h?4t*%Ftn%oS?i$TirS%Y6vAI=#ZR8!2h` zdUHeU`KqB}N^7<_Vyl9wnpB)fY!fYPlN#B6kPT0MhnoFEY#+YD=0j{g7B;^|Hk~!w z$Skm>yuwBvD4kv>E7|<)h6W|Qch`<##jeW7T?O^mfq9In*K`!rd-3-R{+8lzH*#A$ zEY&!QDRbE=(YJuH)$UUTY-1;{8{YH*G(p&RiK$O| znB!Y3nfiig*oe2~JA4FnR0{!LGZ556LAuY^Ofuj%roPqE93PMPo5+9cDyXM|ravyY zcOvW#9uMRn5J!E(!VBvm$`)C7fo|h2s3U=TfV^dRYxzFH49d46KSCgx$g2x4Z7pKfA4vGvgI4N&?*NOy4e zu^3?iG`NDa3#842hChRbG+c#zSFn4Ee{EuWqm+9Ebu;{lUZ@mA_#*BHk--SN;x7V! znaEdw-5v2Z_*3r{uWe?NZQg!osyJW^ixwAb!41zq2>k}t?ScX);x7ptD*XNFBd8aO zC$_NTZUd*y3qYH9 z%j~}1=0vl;0nTraYStt7lNK*}Z86QM;e+m77VEaLl(7kA^WS~c?YI6Lz6#Ghk@B$X zrqmImrWmvOZ0%T8d_N>`?>7TCRu!JgP2YW|@KVob@dw}VpTFm}W>xxuF|BIab&N^r zvcCS0(4BJzd@%WP>iP{Io>;adVClB-^8?pAJGpmT!wtKaZ)aPWyII}HP%>cv{>)Vo zvv#r|S^2p;S-0I=cCulL-446iDkbilHtc0jop!;l^uVGYZ2GbI%|6zF%@xn@V;-^A zm`pT~FYHIs$KGb@6|fn_XCrP+Hy8FDvODl6=E6ehe=|Zfbip$Kf5#;z9RCdm#rW5N zqos!%{TZ3yCXUTqk!)=3iuMEfbSg&_;#UyuiXjw7Mp-C zstNdVnt-pK3HTzJfG>&(+wgZ8f6wvf*N+L^@rO_F3Yh!^%x(fcv?Ac^9|C^!Bw(Tv z@T(;OQ;&doM8HHKOu-*Ub^-5h3kAHN6)<26c>XEiai@UCmI9tT3V6^c;7y`{r-TBY z3Mh*IscWqehM+ufP2pTHEa^i?Cg)QQ}pC$@E$$rfy?PpW?>zS#jHS z)>~Y2ohhAC@gcT`{Ed`9hy{u425a5@TYQ!d#6lTD;;KMMZFvSE-M{^ckZ#p(BgFR? zga-)i5dMP@0mjd_uCs8ztyoo1sth5CDMv^Jl88^lZ8unFCWsGjG9PjJZDw1DZ?h1! z8X-~pAf!UuThd(-QlU`@sn8@#ei}l1qz59z5x$UPNsmL=4C%=Tn&#)Pr;5EUX53;e9S0zrnypfta*O#mPDhfo z8YwQl#X9??^cUnLWszJ8%Pbr!@%&wIR9QH%&%DK2yOFGSESeB?5YDA6#i~T@ZKhPt zw&W~1%#_p=%EAf#%xy6pA@R&XNTt1xkXmmkLTZau2&pZ;Mo12@9U-;FPY9_kjw5tL zco8AB#WjRvdm}<>i#mk#a|aVbYKvz5<+dmkS|LK-5P*6g4PeNQQlbCNWd@5eO8h?~a z|JGSnI$Lm5Mrra^xn7pKQZKO9XdmeQ&&t(U5KuKjy$fso27C6xQCK5~(F&1gjj%3b zy)~jcHUJHxE?FU*_GL67lwyk-)>)aFHMZM>AAKxtY|rn1edsiaEi8l|A3Oo|FH-5UZ>a3D}i1 z7~qsOqQDCA!WyyP3K4>1o<{3$#kQzH)JSW@Z7alLYeXL_#6D}pTq{J4HNv`rzBsF~ z*d^kXE|O#Y&iqApn@1`loGP~v>0p@N5mNnDTGAAfJPK)U zS%;8hZ$?OS%MOGzx9mlTpz$BkIA=E*Gze!Q4F**Ywn7ZCMy#|#EU-d&Rslh>Z(9gR z#hn&{reREdk12O+^4K{gemsJw2>ACxsgP%7VxT_>>010f!{21gIU?pQrL98nwB3F5 z32SC!tJ5>}fZewLu*aQk9f)=J%XW%rg=37+RS3nOW_Mz+;+Re0DhOK^yEb-n?7rBe zu~o5mW9wrB;=<$73GtwNw<>f zlIoLOlD(2UB}XKuCJ!o19-Ew-JSVv%`Qzj@$=j0mCZ9_FCHY?R!(>5&|A8RYR-@AR zX*y_PG(9w#no*jmn%SCC4cDyKe5W~}IidMYb6X>%m}%dR?h$h(#xb@>?Ax)kW7ovG z#qEu|9oI5m8$UFDTKv3(9};pB1uZ6KvS8?hFnw6zwy>J8hheJl{P2}ge$kzx2SiVd zo*q3j`lINtqVGjdjCnuiqnM9lK95-+vpHsa%$}GBF`=u*F-+1<6a3KTm#?T#x^EiZB+Bh!FJGjMdE4 z6l=cJRBAScKMq$!1V*Gs7$R>*Mnz4H`YP)8sO0F^qNhYJj9wFc5Q_JW9T$5&E)4Y^ z8$TzW$M1~)Eq-#sfW(Z%?8Iq_?USY^ElpaLv^%NrY*KBKI~6n?i&+GHLq7;T5_&Ui zMa1feuOn+CTSNs$b&l#0H6^MvYH!rfQ8%NWM-@kZ7`*}oZHcakUKw*HrcYdH+?KeL zadmOQ@zDuA6aI!56eO-pT$gk<>3ULil4EkWnwj|+EdtZ;=71b5&n?_BPYQUE2G_G0%JPFM8&)jGc!gN z>lPayYm7~d>l>F9*D*0VIg@I-#_XUio?=-kjnp`V5B4Luv`5f&8|AC?lBfpP27BwbX zAAK?UZglexVh+bt$NUSu7l^Gj3Xei5?mimwpEx1jE?yPy8t)nJA0HIoDP9vF72hNN z-S{>MX$j90%ai^}>IiRLlDsA2C z0;Qs?w1!L57qq(I59kf&)x&w7>-u~@-+S!rKr<7xgqG4y`U^czhq7B)Gy96Y#8X5z zB(h5E5_`l6aZ;QWe~Y-xlDEk5@&Q>am%&Qc$^)`hw#ifSH+fzTR}t)CGJM@;4{Ret zQ?0>i3-l|x2}o_%C-w7YjoDz@%=e}TY?fpPTMg_cCfezCwte2N28eUqC70o|{U(rC zM#uz5Z4ZrMUuX$k;S4zHV)!TYud2UtE<=ORHRyVjIq=jG(%`ECbU&Jj<^kDHq6+i^ z+JJVT55ZbDV}d32cpNUkh4?|(?i^f(7vUv%MFPKs*8%o*cqe`j@57(sSdjazB|yO2|C2fILMi$V!mdda{Y^An!sj_CqwzlM&I#=*4J5v?XeY+M}T~gJLRZ z9-Ty=p(}vijkK8_q(|u8Y$f}WwX@UgMy??y1-y_art&rXEnd&}@D||YaZxSa75nvf zy2!k4_L{@?DwpdD-P7(hklKDX#n18`{_=2BP$3We^;m#^KiUoF3fO-PjYOjnLTq3b zb5IsM$^|@uf5LANx9My%*37pr*mEx3-x*@Pu~-pYGBg20+kxtFE_9IA`T7kr*7n$5 zd(jSe+0MAf++w%Ht#IpHjoa=T;1<4cozD0%exu*&Tm84b5pZk`z5O6U@8!YI38)m+ zAO)$LjhB)wsFYqy< zM3fCE{V!1_t7N_W8u*T>VIcU0Dxt2d9)yx||2MT3a+`1NGeu@Pw830cW}YuK*`P{Ucqo%{0gjoD;dd=Ua55kdRhuAcGgUzy|Y>p*XT5reM z0(icuc7~mmu%&i^U2K=wAAM#R6LyB9{qslh{uYm6Gz&GLR+NMn0NF>eBa6uUOr38Zx~x~`v?y!gOh_CAA-$rW>_e3bSi!uci~|~lKEsaX(N|M zInlhRJ~|a$L2sk?(FFZ~o~A=sV9&DenCA=mZ`_JX=!|P+tRx<*f_t1Gr^*WXvfL>f zWwSgiPsr2qii8@h($%essUkH^%~nsTm1>)MM>VOB)ijFJVPt%X; zXLOC;tlxnX!x#D&eMVoZLs&+ zGW&#GYT<5{$76@!Wp6J_8lQ4|kuUKLKv+r`9Z-;v$oxilWNn;ar(6Yy(?kJgFLuY`X z4}d;8K+%0Pi{-FFHiIo^t5_AQVYRHD9bku9C;OH4u@s)hB_GF2`C?wf>v%Ws<1sNp zWQn{1uvd$<(8_fn_T8dIw2EHQC-P;HESHsl`fk}Fdt{1AOTd|HoGJz4D^#7@rH;Y5 zD_N)N44tPZ>V>*OZ-o=c5#0&3l?qj50rWC}yB2_M1&I4h7GPU$D{Z~qZ9BjyDK5=P zm**yePnNsguGt-ON8EWA^P_#fFZ9JQ%2HqMD`B9me$+AF>3jTHIKKAzdBP5 zx9l6seVH$d;qk0LTg=N?d&fC$k`z|Sq_`zPKD>&>F(q%NXv0)IUU7`A*v@QhSy9wr zNivPe0J!AHB-7&_h+X>%pvhqX+hG80w*ib!0obbr7?cGtY9zq_MgX+-0^7h~fZEZN z+z+s65P-*BfS5{v@2&vM>JG4HHb6=Vz}0~Oam|asH-0^$)BXeqCea#7Uh4y3I|N{2 zZvuq9>Iz~r$-lP_U_v*5k4*qW4*|?2EmhwFuyTOEz6WsX3$Q#1Abu{uC1T4VQGf%2NS6Ntr?;fR{ZGX-xp0e1_zPwE%+jSXcBTpk^b$(9-~Zq(@7t@dYY0_1On?_F0p_m(=yeRB*+GC~6k|sK#*kWFd>~*l6}*tV zGb;eegNup~&8-G-{vE*MIl$Rx05;S*?~(PE9|dSj*6T&y-|K$>*(C6E9>62&H0x{u zk{2PlSBY53W5kA%-DbKVIi&=#+Bkq5Y8*!b+ex>Ufeill-6KR-3xNNTge%lTB1r#% zq6JnKQ{0w3@j{|&6Doh~>|IP$> zi`w8ZxotSrZpb-+n}+~)d4TP11!9+|4ts_IJR~VeRGRbqO`^JF0IYEa z$00%tTMclA`qfkeKvAGSFc-ke?T3}65?&NpP45k!(Z z93Y$W<`M8Dhd4lm)R2ufk`;QYNnfgLF9Lu62vA5~(U!{n@q7`|N67=O>;s4-*S@&} zpc$b9+yIXBMe>_r0B?{4@4Wy`sVQryZ`@k~aPT3(p6LLeQ{&$wqtsHne4YYe_!Hp! zVt_$p%aPPfBkdr0U{@OdR$f5*2kLvhsqxod2e?6_)V(_Z=_>%%P_wnY3DAw&!2e?a z9XZa~9{`R~tPk0!h@6mp4q#pcU?6>i$xyyjuvHZ)rtA0URtIx^6C941`^Z@qM zBT7F7*h5loljU@kDtaE$DmL|*)qj91j=FyP4{00X`O za3hQjsW5^x8cXhDCc@Zm09{G}j#J;b!U5dB1Q|}DH(V_+3c-T07J+L1vN?Ybi_tS z0URU=Cuyv+C4J-OAU2S^vmX`LoJRbM)G7HMfKMX*T|SVs2_YujTJz8Oh^M*Mn>877eL81 zfKg=D1Od>c3&0Pg(Z(!*-PD_&lG1uos~>rVFA4pDMuU4-0B%zb!$g*EPIdS(8KCHcp@7BIyn8zUg!~Gyj5=vvKg9NZ2k;K*f3G)Uc{Cu! z5%$&$BwwSxcZCW$Oasj~^8pqU-3W5CIpicGX|U`_RoeLvz{%eLf+=qi2^jx5`Cke( z^a8Tu18S4IH01Q7%9{QKm~|5%h+62Y*#O@008c!jLc1M^eMWgb+>so<39(Vf0jfF! z{7s_Plli|OKaC+}ej?rerd6c8#L^_v_@^9z%y~3lI?=eMqSe`JC^gCUjR3`@OeHN;c9bJFms-1=)F00Q{s;${K|mt$$$Ef& zMbyE2km1IWk4hwP5}E5E6>=#8ApZtHhn)bOmjM__g@3;SxVoD1-UaZYSewrP-X-5H zyak}4LYD0Vm=+6A^C`e7nvQj3{=i&-*(=EZI#6)~-T_FY%w43HGv%Ew0PrU2%jB|A zG)x?zYWrva+K@{fECM(p0B%whyX^va@({pv8o;!p09mAJe=7J78VzPn1<+DOvZ&8z zsiFa^Xy_Y3{L;n$0>vh+B0Cphgm^8!~h)bU>YK zKUl}U}}S5;B&KCgbTAd@^RVD@kr=~$@!BIEh~I3S^&k>{+`i) z-$usHHAFF9rdWsQ(e&pEag8vaRuE>Aj5%z<*odP%&)>^ulZ<~#_+lCV+=90iOZgIi zFE)*D1l4d^e&2sV^^r`aMHKQKL^pob-z&PEjGsgJbuxaw1@9!(GG-NFw#t|_7EBZI zn0E;9^0|DA^s6F#g^a&!!8?nCd{lrJTgRt^>I0c7>;xQf>NUr1KToaKa<^knnB7QDN7z{3N*imGmsezk=6 zmGO@(cn`5p#;DA|1j-mSqR`1xtRc+KP{M@Bm@o^*ODvFix)CN!#`Lscyu~CLGmCWl~ z%6S)%7a(kI@}M9;wvVRP9G;YYuT;C)A1C=AxI`+7O$|o4{>u z#I}Yy)e2(kL@3gzt}t0*B%u-sHLVd!?utL7@pW$!iZptO>)$_sDk>vfmqs|5Z56TY zA{1%#65BCi`-M=dMktvppSW!Efx3^_OI%Bcs}-S0qdL?`pCZ&OirBIUx2F+KuGvsx zn?fkksDTY!FVN_^)r2Z-gp#>h5!V4ikw!0Z9Vf1Pgz7J&iZGtljcE7a8#!8T zu`MOGWI}m0Ldk{gCayd}kw!0Z4I?f+p?+_KlDSHVYvVZ9QY}cOm)Kep+pom-HKB~F zTd_{NR)sQUa}38_l^yeyo#Jl-ayI~&g@rrc%;JUcbW zaq$meI3|uBMqeAjM|M%RfpTIcX7gNqhDu8behegq4v{CcWlhWasmuDg=}(L4+$qg3 zWSE6c9cc!oDo2b&VIb9?)|RD|%~F@mauW%>Pg-D++Yz(5w8G`13Tu^Moxe!CAXGnp zwCHyfCe$A<%cza4C`*4{dZNHq=%ATceaLLCHv%jHzD_;BXM#@oBSj11D@(7%yj1wS zw4$I%cDDYw_>QbxtG6r3cy7)%YnA$=b|RMq@y;K+dn8M0NqXB+D>^}^+`L0zbI^+K zxo_tHdoo|9F!C;)+p-CKd}kk)3FygJb#CDvdje9^Rk^vSs)M)!dAYfHeDz&7ezkK` zwu|5G+_v2X=xoS%s-L7R8L5x| zwFooEh<5zlE^Yd?x-lk zkp4)2Un?RGQd7hFX3WXsd1lu>Y&HM1YkOA6Pjn6T&qU>NbLUhPbTwqC%h0gj!2mgW zPeWI=Rzz{9ZqYqnpahv@mX&1vVN}|)c)GJxm_>9s;*yo5u&X}fxgotaM=K;KiUb-y zM?dpvj)>)RyH&BPd_;OL$7;EX*_g$)rTYdgrsmdUi&OiloZawYB;-{auwx^fdioH}qS*-q;+>Ry=j;TK$Xh6ql@Hd`}>5(x9y4iatM>hx{}sX$ylY7Ev8a8DYL`i zKm#6mri19e8&pR{d$6M`@Xozld1T)fY#8s|H^BXCk`qI6o|Vn4&1Z)GZsJoutM4>L zzg=*FP#&0}4B8L-p$J1i^|9_sNs@)rFH?VnOXZr|~x{lc0|0wpvm+KK9p`ppeyQ*!ePTYjrw7iQ1f_773q zIL-U_AEaopmw(kifc?df_RnH1xwqEatwS%!8Aqldh0zDH#Y5gxo2WRjomcen;j6SW zBIfR(rkBUDOtBP+L)rTK81-qyGW1jn?YCg>t{jfEQ+}9MWbfdgUvUo%Gf!5Ega%$5 zvZF@&`^W6o>_(wacu8ht>pbKc`jrniw^D^G)Yj=j4orJcpF#RN`B=vD%b7!1Hjf?f zChNji4;aP10%Q%ZAB-)6 zr}g6B-}m90vz!&K<^21sXvIoPj?2IX9-1u<@oR$v zTeSTeu5enE)?uCU1G9wzs1{t^N69t0N*7mP5t1zy%K5z05a(vL zhb4)M$_0liTjXry*9W`H`h7N}X|q#@Ucv^vj9vaR_V$K)-k*nbX76&(p_&%uTg~P< z6)tm(FbswOg9h`OxXFhP4IE{=k-C!pxY=ETyKBW?8z`+6i(!<;`NeYDkY24d7 z?(JBwVe>BOx_yVuOL{dHDfzad1LPSps!?kSKN3Cp)uExv_cp=j&W(!1<|B|sgNzIZ zLoZ+P1nro2P$^OODj6T5RGQYVm3;zn2h%6@akXhteOzTKk>l_dJxNiDZG6ixclL=4 zNAOF-TCx=WVpxj8WeZQq^J2MtaNa<+fq$Ln#|HD0dC#1Spqr&Y2h$XOZg?V_!<|QT zY;goyzG9{aJaa_gYt2z+V{<6vv{rn&{^fjwoNi>Mqo|_p=f-9_LuN_M>(wm}E_XT)UOv`!cq5_tbBc!q^%6&|2en(^I{#>U)Gw0`N4W&uI<`311pHX&Wn;ezXS}_WWH_p$L)3QxE z8M=|^1u(Sk2!rp8-)r$5*(fg{fQ&K^N*Xej39r@M<@H7EcmDb7GZe$t^HI70mdKMw zw`RBb=+UFq`x;gL8^k#qLDusXjW~lE4Xoam!IZKm@P0bXNR93i3Z)3<%TtCJ>dIomE<4$XJ}uT)HKbD6C?;keG}e z;t^kwAJ+XlaP4yg7xYkMi!Iy1WXPy2t;lrg7EK)B&dSQxib?-7o8$9Dp@%+NjqGeO zhe);AhKwpPoHrRaYw+JV@Y@#$Q8ns4NeHrppqzn->Yp~M&3WYJ=9&xF=`+@pR%BVr z$;rlIY^xZ)lC-PT*9yHHnH4`?a-5(NA$x;)kmcp2p=t9oB?C^=Bvkda5!9n zSv*Tz<3Ep2V%@mwgkbCiVkb;vYx&j*YZX_v@Z5>P{b6huc*+S`we27~L@F zn4gzpDBWr~ZBkG_I%s^kzkDO7wIbtVi{&d|c{<3#%CKglx7TB!4H*@p=p%#%2Q&#a zt#De-{onFZ1Q>bzTbXPx*T2;gE2_U`Ph=}g(v0an!bd; z=riWDKcLM7R=o3nP%h>6lR{nMsj%*DyO-fmMk~JMDU(v!Mm}p&3oK)oPf7{j4_)al_+H$-ofFXc;FW^L5|O3>zr%{Z3VSCw9}x^&t1 z(@_3?A>)?v2X6;wdMr1aO~0!osbp4?%@l2e1l=7_iT)(uX*tD9&Bv4>f!{N=OE+8c z_OenEhS?G>nq}TeiPDPQfqd)~e|CzOPH7W4c>}~AR$&RNX^^|0WaWrGz`d$j2){bT z$EWot@Uu{qgx)z#Dc&Q}K?_SOa(9Pv_k!fy&2XProb%F$UeRxM8uhOk;1z|8!g*$0IUb~RKj-g%NG1=k;Q_Gq0CDbJOR(u;l8GB zR;&QKGZqW_lOi56NQZ+i6sfao6Oq9$zSAzmV%K+Zm-ebtOq1=Jx0VMLwq!SWpQ&y7 zbw^`khrbTuo9Y$DpUhrUk~PTkVy zly!|N%a~)xxGa9=ZKw5&-hm=A#T8EWDXl2%K;1MKWuu!G1~zmCT_tt0n_p6kmsj$y zrulpCm20E7a=Mf@wX<|`g^^#G<{5mLbQkl8qjA3`*V%tu#*O1%?*=LUS;LdwHL}IWZw<#S7kXMv%gO0neNf=(7br-DvQk3-kKHXW@*r zqA2*nD}&D{l%}hM`5VuS?qtjPa;XiroF=EW!d13uqrs;yl{@rhTeh%toxR{8L#8h< zn~UnZj+;0;x6ZC+_iBwo9eF8B_XrZqh4V%AeA&9DRHRGB6wAZUpkj}{Ghgd&reRJhJi_%}9*|QA&LqyH?(M6YS zF`aZS^MDb`D ziF2wGcWl}A!DSiD%XVgiKF=^oSaegF{^a`>_-E9-Z#ECF+rTz#Vx5ZW2pvo>X4S>j zrU&(LmFbooZ`j1HdY^9{=B8L62ds(@)W21fTx{trli-H5Z5J=#75NZeGG>Q_rFF@e z!&t8rt~r)|+=cpjA1~l7WlrylVx2AuP(+wT-J3e7yCv_(3q)*>OW5!mD z8Bh48g)#k_$eCLya}zSRVX0HMosh`OC&Grhd#IsxFStV<|Frow;_AE9b9V^cd(>04 zMErzn4BOQ6C?mbvx)@c?=JyS))jva}MupGdZ9Zt3T0phKj`FvuDC8|1$&kFWNXS*D zJxzM0mP{yGfgP(?!Z(%6trm9g^7$V`u}S><4?@)rBz};kZkYqbX8zX)VTzIO@>Q?v zuvM5xC+SMwVsUTvZM09F2VX*5-jw#3N}E!Df0Uee&{IC|Aa_CY!yEM(4sa~WIS^S9c}o0RC>y3Z&u1BYCih~I+{h<5E<|&fv1Lr>&da=2E0NNt zc~V9Ik6gBab>~->1+rG$ye!O~NVOu6M=Wn`PlQ;b@Da;zu`u5K!vS7jq3}8@eOw<` znLgm#KD^ny8Wt zPePimXfD&})<9XjvAF(83~SCkSNhwo!C*du-@oj?^ix|td}S-u&2e;Zm3I)=9SixQ zl`(;%XUk*NQDvf}KRUDq9n|4yx(YK9ZUB|z;X+Gpy79%sl^C||xXq{j4&S^<&Z-{H z&u(zz$)ApIR$PpUCS7fl?f_?2X+=K&?o;o!{gGR8I7EMJXpI|=X;nwl9VGpk0T7=p zY#`UFM8Mm17aT1t7eXe4~w>Pd`);*K_|1 z^_>PGB{QpWxPkjPx{Rn6sbk;|DYh^Ppi!OK_MV$hSmLm#%GfeiG$SKlEhe52(G!O9AXIvWIwNOF)iU&;kS}a~47uxCzFVwK^`8K*Fk}u{1W!ctwB9HcI*`lB>&!zM1z z4fdl=lR6bR?az_yi%nB7I+_csgfpBHYhahsBJ6UcEOBNO()l))1*0nrMoX)?K+$9o zXvTP%hSt!fplAdt%Ds-I7 zV)$@)-EpBO=gT--#xO2o18%2x(3&$H$Q4c?(Ja%;JivkOENg7bsex$JJ2h0eqn5n* z`asMFIlTY6S!^ahy)MYE7OsL(^{;i^SUaAuK3ws%fKON-*Jd5`#^n<&qRsAVtUz&b zG~BclximFY9)zD92s6FUE7!MT+xdg_ec7ixbwje^gW=Zhiq*@S4IXS1-@9Q5d&E69 zc4Q-X_lTYqd{24kZAs#9={196H4*uos&UsqqwcLuI=0mV#{}Dh`RANNi>G zmwtGFA&IY1$efB?m*o|dFLb$-ER@N!Q7Gc}q9bWW5qlVJX@o*W`+lp#fyUC{m&QQQJr0 zW#Vgy61y#GDI@UYMEqb$IDxf)ChxaBy5&Giajh}rwX_sDX`Ec|LKmIV7aEM>UvBTB z&}G-nHFl2q4m#-x+VKc)v15nAc@VGM5#{)N0EQd15a*6NgPm*Mgkv_b$orAU?`+$2 z4|0IF$Xv-M?Q9Y73#{;@D%YptNmWnl3y4H#nj8w*A(Ns%|8i%D=N*VOZRjW0PoHrI zOO%V0^U?O}J3BFUlsDVu&Wyaxu3*PE$kMhVV<6Ak)!8SI6ztp|o+^p9s3Hx&bIxJh z5@-09U2Qrahe!<88Dddi*r)_4(K-_YSx6~{+rT+sj(r1Wpks`-q8Mvf5C`gfOMsP% zfpz5`<*k}t2D84lBtHpj4!}N7>A3dMY5^L%rswV`6(=l6(ivswf;M zCXl}REP!n&uA~*^W5WyTcp93?(4vQyC-07S`x7?EJ*3AB|4$!G!%*X-woZ*^xV6+x zA~pOn`2O9mc@Kp&eJvhSm6%y!8@NPp7DfUG(N)V6zw77n^FaxN3jR}3=BNCl?{+9s z25s-RN1?EzKCXM05BPqz??BlV+~~Cf(Prz$xJhaqHLO_6?|om|P5W2{Qq6Y-?@Hr9g%HkeJmSM((LBaR@2vsT3ViCpo1+s;+C7dlF?<_P(S)8171H z`2OP^9FgpH2gz=H-|_wU$>*#SeH7~c^0R|mCt^E}>5q2&CI#*=rj{Il+`*7hEBbde zo4-&&9!5A{y@O7TsLqY|`Jt6UnShrhULkl(wt|>DgPES4)naKDZ%Zr%sr#x=&`QUa zZ~37+E8>%X@RoPqo+q0tT6g1NCp+>9W4slc4)U3g19;BK5RdS5j05i|anP8CgGPZz zU}fodgb!bOa%M9dr~;pWR{A&^@(nz&a)jz+XL36E#nBC}uMBNhn~XVMekv4;HH`JC z&?RL4=Yh|iq&i2&1D{^bTzx9A*^@*Ph8d6K;Q+QZ?|iCN$7%79sGJEGk+j*OIJREu z2q69=HM(A^6W*+7+M2GW$#V&vM&#&cs|Qz6ChqvxW$A44L&K*We>U53#r?5GHdfSxIi`I_=Iq}=;_==nhQ zn9n#L>G&1u0*c$opzw2qf8HdD-Tcb=HaP#Z`!Ph_rw^3D1{|8@lve0Q^MoHGftvWE zpJJm1T;bSr+44g_x+C+~AKTbPWJ16aZg(NuNt*;`$g9mlCm4G{+wL@Jf7p!{8+Zyq z?-Q3sqV$Z~`FZsIl9r7YeRKG=3u$)aNzi28`X{ZTq9Y3OmiJ1=pV~0I|N6We`sVFN&XhA>17N5Qeb)bOPB+b}Ye3R9DwnKk;(N<%+Svqn5_hwP&wcIhQ=yOAVe zDi6Hm?s0?6nqI3vNh4E91zlNOz>yX2d#RQ8n)W2g0Sos7M>{K-pvU?L@rG|sTT2&T zRA$RJU-HB&)MJ9*HCH^d-$yalM}NP!LW!0aEtY8q#}w}>r2-WmqT=;g z%Qn=z-y}9kNu_AG6PS`?ttyX-76ooxq`y52h*QK z#V>2c-(;oq%ZcgN3Ox0NY8-Upx#nf@oPTjOJf;cRBfYBbY-bykL!5RlE?SIgzW`mc zyYU`oB7~pdBj@{Kj`P82Xv@1_Tfk29bJsHZK1sq#yL%wB*Y{A`*jo-7en%b)FuxOq zJo7uDHuhR^RwfGrS)r#)NiW2-VmGo&4r^GfA>+A-=K0q*+T9@w9^^hZ;@jJyn(|DO zUWIB^(%F_jRM8h!CKjGW#b)9LwV*#P>@m6(-3V8AB4qkms@Me#TG%<V{!?W{2vW*T6ZP?t6 zpy#eDz*lFPW{&wuln0}t|JU&ld_zs3xJ!E&`#nqkg3}Wrz+8`9@*k)OKch8 zq-8MkM|{@Jc6Jj<2@~IZ(}O+bM{nkJyayYs7@*C^TcIqvJa#u^IEb+UWXe1G)42SC z3)D10g7W+E%v*tqBYrrm2|Mv9bbJh(Wbh`u7^8UA9$LY@Y+tqk>_K`^RPeVoZ{Tvo_SIzINI@(>u^qsMZex7|a zO~ufT_l38@A&@(pM*Dv52g;_62w6SdyzK^)8&kaHOQ&@>YpeL96AR(BfA}eEd~tG@ z%$PIJxYJsdjKc6v+g$imY~n?C{Fy8N>`q6&YE<2torPAS_aM*pXY{p1*O{B{#Ir0O z{AUdNj1T!!%jWZqe@Ov<&Kcz53yBeEp^I82-zIA{Hx`nbuc7B+^ zC}qYPhjx|d!#Fnx+#59590 z83Q{4zkErT*2M+y5tQawagqDq>(^$rhF0MDqX%e3u?Ga!>M!DG3k#kzSP|*Zmd&K2 zIUJnwdx`98e&(J#Dtz-^XZz1#2dx;(JJhyn`q*361fvC}*XDd=ZOcxZy~zFVXvH%8 zf{qS TyD1HPESH9SA?w5}=hT{$8w%R^y7XP<4-C>a{tY8b{_P#%vE$4gh=ei3R z0OK28a8@_3i*4ZT9<)^Sbj347pJrkVL|PwFhGh$1SL^#oZ^a+YLEy`eKk!m)r>Nz* zBc5ZbFF>f31?QA=n-dG%Mth!ytzNx^5?NC2ht!3I}@W4mGy4zQqbA%VjzJ-obi6wBXQC>;AKD z=&!_@qbZ)Di6{Me6Ga=#~G$`oh0yZcd@eBzT3#a&N6GCi&CO+DT< z-g*+=bSUhr$JBWyD_eLr=dGTG$1GH%-7+54{Wc=LsXR8^(VwBU$2b?zH%x?eKa;qi zs$c3lLA5TVS_d_ru6w9@g5Nrat>;&tcElZ2(`TN|*CV^}th7air_|nz^Q>oC?LH>{ zBow6^2K!LeJm4g>+b!sUW7L_oSfXQA&(sNi_F0l*x)TpN6U00HJyem<)VjfOa>8+r z?qA4>Q}OM8>+DaHOlMc#@}IVBI`8{WCpQf&M011wp}FvQkM>V+pg)H%`o~|9?ZmhI z6BpEr>Y83zHy7MK2~v;n!SAL$JyNY!ox0f5EOim?|6~K^7;K2ofMh&yrnseea!ot zz1naT6M3S{rL4cYtiK!01Q}?jl9S5EhZF@(@HV34_kTqf2foPMHfmZEQfVbAz6O(+ zza1%FGDhIe?hf7A9Zj#o)~iC?vj^QV!}c^dNyo#2m^t6>tG{Q?7A>MYvy zw=gJUgvkNKhx0L972;<&YW4Ej%tsOGU^O>>4DqpY`95af;xrZh-(Mm9x%?6fVm~bZ zm$hxWL^i7fE(s2aTMpzmG(RY9v2VdkkO7Q!a*nZ(5XC|(1;iWIGUm-58V@q2V?B-S z6|9eH*{rK4(UE3^#+8Go=t(;hJ1v11yW z{*u`kV9z2HQ<&8;KBvW=(aC|iusud^2iDQk1@@QCJBWTDm)=b4@@-d`_o;ED1G~Z| z8dDvamtx=x;}A#Ift@nWcVr=Ko$+f&mcafr3P-loZV~mA&BkIU7FRU$pBI>0RJ5?$ z1M`tvEB}1~_g_^q4ad&ux@k}vOTQ{yI)fBfvee~~QGxe^)JS-Wq(4o2NwJuW0{+9# zArc!xdKp@dc#RXd;4YJZFDZghmy#kkwf-2aW8bzou2X@(jv7tOaYdVHYP=JF3~J zrZ@g-#1l$+{>D9OrdIg8FrHGgI7RPgM*C*0N7FaWWK{)4s&x*wwXkai* zLtg{RRxGEayw9k>Gi5Vc7mkTl*l=qm`tn;3sn$49tPpRI`ssJj%Us@X4qAOiRa%*` zq&aI|bQkw>hSKqnt2LC;D><$B0Iw+Ya+c{hy=ka~PH1kF^R7iCJ%iI9haPrtO9%5L zHFj$i;y$W_xj|O%55yxc!SS>3%eFaklah8iuWsOl z4~*rmtmE)O4`f3^YX>w18FLWW)Qlb$O$plKzUJ zl)ihQ%`v+d;M$NLGmnCOkQ|SsUan)wEVYCSB{Ai1GEjfZnDJ8!)`_h#+Ip~Xh06nD zoCj;m{x-hm!9v+Nquzs!VZwOdgSofZeUDUBC3dHuFiG$^Q2{5TyE|87Cr{Sb?kbsi zoN=}%>loA)C>p5rN8!nXrX;Iq=2VUcruM^8X9xHa_R!5e~63Aw;0(w zJvO%YV!M>LU=xf

&F6boFMv*-GPZZx*JGlr_QcWGyR!vBru=77(MCI@m&yROJXtNX5sHmtfiKYL86%&0Z}Y@C(EJp5mrdSNc_ zi)SyUir?kCGV4YLzmGTR&KOtsVJ-ZBAe!R)pjr3|O_YTu;6tLhLo|b5qRAg^F02(R zjI$G&cVHe7NsmAj@DfpF{z#%4AyfGW6V=&=pt^aZu}YPA#bH`#Y?jDeTV9SlF78%> zu9~E6eTfbyu%><|j73STMU(G{#+Rx$!|0O4daK4zhNwkGn;W#kb+aS#f#)scZ3!Fl z0N5JiswC#tf7}@~az<^*0bf)2Icqe;G~m278frQWWo3deliP7?RAYKj#};LpT$dYX z8hczWMfK%Ll=Ad0N_peDygO@BSt-jFYHnr5vTt)tH{0Alhpb zy(>rQBQ>Vq<*4Vsh*rtbD2kqvqx5|mQ_(>=KAz&c;rO5HU6pfUl zRTK@CqZks+COOmeu=bX^Y1O}`@4 z#koo9{GfbaLn(bYNGsS|#?z_Hr^Qb|>U%#&6P-k?yf1mG;Y!^OzmIWPZ|0)vL8w*K ze;lun2Y40*Q;wEe@8)j}t(UP1UsEF`=9r4$#W-p;T|QN5pf2Q+txX$#092QlW z4pPKI``ZzssW5GkaaE?ZGKy+x`sz?U)h;VlnM_q|66C`uGzW#sb!}v!m1uidXg`#& zSZF6=5&8}KNIm;-g zuQg{ZxhYi6u?`MhDBJBRvXvG>AAicZLxk5Z*6V<0z#N{Yu~w5!AhK0N*6AfOQfsSm zVmk9sR2`OGqYY^iNaPMwksDS2sfcV02h*=)XAl2ds8YF-Ui?CV?4ZwS%s{RcF@4Kyg6$bKVBc=)v@k~>5qerc?wA>)o| zye!FBo4}O*4-SBC7}4!`iH<~#+h>^<_YuuPqAC8xqNI^>R+5sr4P4m$oBZT<=y)7< z8VedrI}9W0N}~2}pss8BD$`|S=N@Rg9pGtI&*MWp&xz-^pBw8ho4D4bI3h2BRMqg# z@-R~EtDoh$R-RRxd{5cko+G=+sOibPnyjD*{;H@TpO;(utkxETui;3*~PqJxzO#6|uh6Hc?sa|nv^5E}fYZjFgK^n2V*FYdw ztICv!TFZuM7{z**!!C2cW3lCX#C?IpC%wci3#c&t4SjGPQgV&C%u!*pR5IqH7t}5{ zkZ*a5V%*(}xwL3kFEEen8$00^#a3*VIVO)JpUgC?5|DR zpe0prJ;MJgH`=1yJuGT0?S2!n@`WU8?Rj}!L0{x@Ry*cP`$0aaAKF zs=u_D^w!!s727ms+e7#DjxVu&NNgWk**>ag`*m9*9e2|m^&Z%*p=Ldat*4c(cRicF zG23s%HsK|=vn0jGb#PD|ze>3s73%LOfOEiwg zv>B|@WmLiVfp3p`eN5N>85kcWW0RTeP2-%IEKpsC88Bw->u(iKEHJJ@?yd_n*{XJ4 zm%ZuRYLc|~0#l##u*A1kG4&~oFVQ2N2g1 zVH@D`kyi^5!Jsb%-PaJ^8h?qv-$h6oH~yD&ov9aqt~XTe4EfVh6E}pM z*}#GvW0Cj*$j!$14J(>p^*Q4H{-jaGW{!+lI!rwL2p~QG%6FctKx$up^@R+~|O+-|nCO#o5HX$O;_~qB^ zRAZU`yS8p-p*DeePF?apYWBR_CiC<=cyIAjYR|O`T7R6?d5z5pr(S_grx>4ZV`(Ed zqz}!TV9M^fwe97SyJ10llFDbl_n_0oK3{$nnSUbfe#f!?vv*f(R%YxU;eMx8+qks# z{nlMBs?5*Wb+hO~*QbdGmM#ulvMuslzco#rTXb5*4IS3JxEj7=df$2De@b8T#M-qlHX87JW>nuNhw!hngI z6gVKOTh_8G3IBXCie;=Xjq@v;<_<$hQn!R*F~df|@l6-;sZNheEZWwny~dQzxVcxi z#3%BIsHbt%HP**j;OlU8S*s|k$A{OMgVGnf;w3?D#y}+EwV(lqG!!ARjzvfz^tv_QgwP)8`v`GRFFm)WmH1eU6VfgSn;`T+NG{jX znr?@%Dbf)LamSx7B_KlTc0t$-VTLt5$QtG$B!AT*bVoSFnx2l(1L+ckOM*OQ%X{v} z*94I#T}DWCrJ=Ix|In(_zUH@>*V{FivD`~&;E%C^#k{h>(6~@jryrKwl$70~JZ-h>%eaA*2R6jS#=}lzv5sn`EgP zAvF+|{Bi^Rjj#pMwtXxOq(Qdm!{f*dHO@c1Sr0 z&1Sp_8G#57vI%^(bA4poc9R7=`&nC?%yZn5^*cTWTW8;=loenszQ)3w1Mzjmx_qs% z*)7(?xb+rO`RyI>Y7?%*kuSA;j`8~M%*U}3Nh+b-`0p(itkyRw)D1`K^`3P0CR3_= zG%CMa9rij?8H;Z-2lx5Nfh39AZzbY;@pswy>1{Sn-FWPHUdKodDvNE54Z~5^%Z27+ z;ayj`VXt5t^DeBzl1j$~^JD{!*9G&jeX$4Y93wL!>R%zL!;L{E7QpMXd-OH*s##T3AHEzT@7>oS6 zdL`i`>}A%4jj-ci!8R7W@)c}#Bi_naup=@X%6adSq!H#N#4Z$JN%UWeMl05Jg?7T+UIj>-A z8ku~@E7*WWyw$H@8(YH-CplKFEFRVvIlck;fAqSQuV4>g!&PUD%Ku_L6@x78=!CG& zC7xTUXhw22G-8i4&c4SY{bt+Y=hXP4_9y?3ZbUNQc%#;zp9k-?MT)K}asF$hOQ!P6#PY zAxWi>=A-5aNds?$G#|A@Nb^xUgb3>Y5zS2G)tT~6gBI3iIM4{|i!+&*{mLn)fw%8} zv7UW^rJ}N|RMeej)KOs&+*Ny@T~IF3ILMPsM_YdN%$$@UV>v{o5bYAoW#kA`ou32 z_b2|E_%P8qsZCPnq@hWLNsE%!Cml-qC8;LKoYX2gKDlRdN=na^+?3Z-3Q}gJEJ|6C zvLR(h%8`^aDc4f|NcktlHnl}+U}|`3Vo_?})a=wZQYWXrpSm#h)6})8<*5f#e@y)? z^=|6ZR7oRAp-|9KbR_xr^W3j#B#>TxB_fFi*xH)n9xTSF`;?Bf1i}#EV zi0>Hx7VNbHQ+uaorslyKGgHr}UP*YbK2G;vDevc&Ha`zD1YhbPA-_fNJ<>6bD&Wk!lIrD#ja*_6jAC}9$I zbO_ppzY+dr_`!(6sG_KO(PyLYN3)nFF)d>OZMi)k(#Yw2TVY^wo^hEYlp<{HD39d8Y9SPYWL%{%-jD;Y-3l4nH1# zIs9gLa76zIUBr@zBN5dRe?>@D8t6FoF~ zT=eSb+tGG0tzeg@LD{30wB|bm?gZMAvH^uLX zKOFxc-Y&r!B_fx=uPTSs<|G(~zvjg9&sYE#sUsE*NnV2SCm zk7HS!eO!yU?s3_1cj6w!`NW@y_e*G-5R>4T?2#IoTAeDbvN*E6rc%=+JT81!#F+>Y zA!1$>#cYn<6PuCHDe-v9>C{W9(pKylP_RPNO_QgYtT~`z;p*^?;Ys1W!`})ofgNs# z-wD4T{yaP)A|YaE#6(!*!-!8JzKXaUp@{r9(k99=$|cG@$|ou)s!dcz)U2paqBcZr zkJ=rzKdN)|@aUm2Q(~IL#>N)KE{%++>%$r78+^Kze;`~2>64n`xnK*cg6vxN zd-;C8-{(9i+z(uak9>i@-PEU8Qf~I9KlBgy3ct>8_1ln1J8)(9`ThPq|Gxjgclk5E*Ps8U@^&m6-6oj~C!@$1awC~U zB*{aq{+KKx9pp6W!ENp*7fFl`rNik+I);v?H&aSOI+fwSC%d!IyZ&99PmJ z1U7y(nLzXCEIOUlupWMUaD&Jd(?z*BF7o9v*&;(zV9HIE*=`P*({NMtq{R`YgVI>D#LlVW(K6Z;PtLp}W&{T=-;y_zj!&1^*Q6w>OPm?M88 z*UJ;~f=p3!6IaNZq9^OAx>T=3&v`*#)T!t?4Y=DwOe*qeq`BO*31+h4=+xf)0Bf3M z?lSk9A0dkunMZK@SD<^ZGf$%@J!gK4blzq5nm5cl=1=A?=;$ZRC+4jA49)R^xnxq{ zTW~Fmg0V0j5))wx`Ub#MxDBSm9dI|?2MgdqwEjooG2D$O;g_%xwqnh{haK=T?87*4 z5dI8D;Y0Ws&cHw6bNCYe2T9S;=-Vi>mF`V<+U5I)kQvwwg4bnuBqQ(3$@91=A$^E` zOs{9Rv!$$-ZBDSa+2?G4ZQ?KUSWeOv4wuP#*)CIY2uoD6`cQQvajkw!r=iW2g=@o| zVMjO+mf%a>5amX{igwv4Zmz3!Ew0PO(0Qi$r6}SKA1g|V72=ntkX*FVx6x+uXf@qK zPtY`$!zx)5ayfAgFW@Wrc7BAP<2MF#g2#fFf`12jVuv^>isg&)3n|nJg-wLX$^gEGZgQ!BhUEQ=x zCiC%Kq?`1SOqxZD&~(db4XvfEw4HX+ek4&G`7?XdOqHCQsOL@mFz@7pd{{6$C<*oi zZ9zMBr$5LPSz?-)EtZICu~yWII?*8Zi2b5NoD%&AoHR*fBuiwuti@q=%6>T@N2pAt zRk12nkE*3msO5oEuT`oG?k8bq T=bYoh<)+}Kx<_l(yx0V+LAICbpzP5AE0<9fKyih zr4l4O1YprGNZvXLaDOSl>wW-RVgPnhA>AB6a_%-_!X<$BuK>Jv4PfFefXYY!C(`IJ z33$*1#4lb5LZ0co9isiI+C8ZBg;f9@DR!I){~>_`b^vTk2XH6{NbL^rzk2|Ush+n; zkHJLTbvi(HGssgW0yN%*0@138vD4h`JNmYvQ5sL9I7KOxq77=S}CK)fUJrv8Ok5h;^5A zFNXsBu?1i`VS}iOPpE}l;sE+~2iTGf@HhF@4@7d_9a0Vb5xYUjXVCzGrvdg8o%k(4 z|6>3W>9L2v&N~2OD)Inx?gHE;D<7pc_$dmqdQo0wEMf|Bu1-4ut}BpS#sJJ@tBFD?xJ=hz9+ZeIaCiu~mr zD)>ws@&cO!=o$eu{Q`OJq{0Ad%BWEQnbbJJTLBi6<_pQJQ^@EWiNinw{-oA8{0d+f z>9Ljio=;E2emV|tzAcg+^PVDl|95~Tr1eQ^h^Bu76ea=;BA0qarTV8c|JFP~*&c1hDoVfIyaipQ`;O71xQn@%L1@3FKfuP~&gW0*s6x|MUD6(Zq8A z+etzbYNxeZ0Q!?{XAr_U6d>;b!1fY=gZTiRT!B4D8m-R+csmBkFskBhvfJGw$Xi4T zen##h{tWPQQy^l=m3?WfFp#Lc@2LZ7A0ny=LTq?CVgjMPNy6eVfLwB}QXRlpvT_P} zz}*EvIBNjDIRmhsDt42kh~%Odsa-yyhCV>p5v0ck31AzU=iS}_f#fMSI??zyi1asX z2N+IucO)=@hJ@;lz#gT7yHM}_f-0t=ni$B*W2pmvLD;P{I{rQo$sppLNj+`_wd7i= zd+ZK?mNY6IE<@~eIKWowiYErp`1hnSFo9H^XzI8EHOyktzo-juk z;X|d5jRy!2fc@+sVo4w}{Ov1c=%R(2BfAX#!|QeRLiri^)*k@`$E{ zB-|m@=a9MjkiF%8wuQEqa4+FFw4A7gr zr{)4;ZMFfJ$-YsokoN;wp(GZd_ag!RrzTTJ5noFp%p_lqIRNl3dB9leo*z@`gF}!U zNz5`>(-L{jNrhcxj~7z`?E3=TA`2e=1|W#AFA1yZ2~b5Gr>J|rB-3`H+T^{W&f)zX zz{sxvnv;`1BwfEJi}od&i_rj;WWB?BfU{(eEtddXDY=obw*vrNNw?og-zP-;IgR0y zsoT9v{oNO%jcLbA#N2HWOC!*~TOQJ-NdUPC03%73it3&~Zr13307Kg&Z)Y-M!w&&u z?*@<;4HKv-7mnas>ln{O|u@cJ>-~`G`tSbAa)8?WD+!DuduXZjS2Pw~rGA@7L#em`;P6p^Xp($sF2I0D0FTW8pUoxz z3!!Rv=nk-qSP~`!lv6wHrFOC*%bX?syH*3_c|-KcG{k1z18_M65JS!Mc?rOUuK>nU z(;cE=VsbWO=MMr*pAYctGk|3&0DsUB{4TW2Gv$()5hUSgC|K6g96I<9fFNqNFhZ12 z9}OmlZcN_)JL#K4^)%BQdVmW4hbpq1rk@1T_h+i&9O{Kt)Zb5#MxhS@B50X3=Nw{o zR8ZeMlHgBTJG};orPl7a3$aT<09{B7Crj;`1d!Sp*snGrwuwCU5c%IPRL>C|5jz_K zP(cGm{tt*n!qC|e>oeyBQ1)v={PA)Bp&Qd>%r`iRRcYaWgSeQLx5oDB7(qqR}fJbWNU4IX; z;6fO9 zFH?ifr#|&^4M0&ffE$VGO^rC28oy%~p*V5tQoG^`Ri8$AS#1|FmGtVN*_?U2yu5tB zzfPf&)>fL$SwjhNyA}bIo>1|~$XZIMlMPTZ*LdRkl2AJupkyvb;<`?#QBy;0a&;))|ws|F~U>o{=@CzQi|&wsIv zC$?pT`?Gkr{{lB&p;B^9qmB-{$MNl)aU@m;TOSpN*aB}%9tolZOQE4QArOl=4BdElzMZnO6p$@s$7TAGy0;Y zMSWF8ebt5wQqL>MJUP5xS<-l*;bD3P%9D0j_*J21NKj@-e$WFV3>Wl8aYgf0Mf25? z0|bnaC5WkN*1~Jg1+%%Z%z1U0RU~AA)tu`fb>!<~+#kRG3fSq-O) zQYu5sijt}e&*a!idypr2pEjH8EJ#Xa+m?PuybHjaJyI&=<``Gk3{t<+U|*0@ZB94q zZ4D=-A5QTNWv)Cn-doX>vbo2yCdC(|LFGZ3*NmV0?Yz)UqqFRtvo*{{? z`TD+gT%XWhdG36jpr3hUV!QUFs6~)-y&xOXzJVZ>ApLe)79>^#poS#LvtCk=EGZrh zW05rcc%4e^k@+u4!S#~tcyXc&E9a*YlUP1?>Y`O`dnE{Rqrr_UVIRI*@5-~g#Ixi4 z%PuWJdcKRh`(ko>XNWZnt4`3T7NsbSwjO$EBY)lHEu|kB!D6al9@4dqBH<+;+||=1 z@TDN22iF@r^rXc!6{w$3E0;yyBl@yme9+1wU+c2e;PghR0GE9KWEAVC<_p)!i1o z1A)WP00jc&(3Y57()h8YFsJtq!y8Z8W3eMh?{k~(I_AI=y64)rc^jo2<_EfWbZA0a zoRpgI%I+iCTAtb?SkdwsU(}-&d(F4^NM~Pha}R%J;(X4;y zZ$n7pU6MumqvNNez>Uc<3ZDafK{qe{DtUqP{X@{k@c5Md!|NdanJ?`b%EI{Jo_=g0 z|E1?B$2Pzl`*uUUlY42|FutHyI~Ksd?DauF$Ag3kl3L55TJn)YC8|E_DpRFOkvy|^ zC!b#qn9azVgskCp;{gVhY;)Guw?&KEHQ(~MzJBdu9tna?jUm??gM)j96ojN9MQun@bvT-!H`+GACsHrDKH`Oa zJE`veX(4t8u{uM##*g>y*nB%Ooew9ulN5EjK115X75!R`Jh%@wzcAd~x)RFB?a`rU zwQ1J>%;xg)0+YLG*ilQ&-;`#J*_x)7TJmg7o4>7%eFBpbhplOvoM)+X^DJK2FUrLa zEmL?i$9bZ&vf!v~YKHXZ5q`O!JDbn%_v@`XSYkFmPjX;6jkCL@OM&0;QT<(bS*oqO z@!i$1MmglkXs0Z!JcV@WDNjsw<7FxKe7WA%ZSXf#0qJZlRpV^`boi!BqIYP17L97< zrdc3e`T!_b{+Hf|4UvgjrTVb8h{ZA!XZ_Wjr@FI)hk}^ZGYYjlVAl#FdHaDAOeeAk_S@-jR^aI=zX!^fl_*R`ncPkp?WQ z`KA6tSOyPD)8s9KsTY+wFA||UdbLplACdOKU|E$nn94je%-EwU>lUKf!}P|&1Yom= z=%sJJrlHPo+U#nZs(>qQmD74@0&LYVKT}Q{lkVt^#$=Mb0@ljHU?*hFg-m0T#~n<- z*>(~uMh8l{BfTewtEInobM4@^w%y=7eD4QoeB>Vc3}a7!=_oX-?c4>E0&Q(gJ7jO5 zxP$5Qy12^3>*8wD;<~uf^qw4t_ZU(fj6H3oclgBtt}IiAT?w{+w7b3x3mv9%mx8FE z+@=MiyahOzbo*-_J}}m&1hTLqa4r$_X4i69qDRd9z`1vfef_0B|HnTZSm>qPBQKyr z%S_!A=u!QG3eV(v>W%$^q+7gmdN0<7&q<%49lqCWb}mWE&u*+YCN0uShsfnBjY;KM zs+;KP#-z1+X)tXfsnS`#F2lR&4pi^?aoZd$-quR%`00!Y&22QFp^&JEnz%qcU>79|#@!N% zaw|?Il?%_0Gh$jKX?dqXiHgeI{M|vNO`k#>`lW1tX*Z9|jAqUFw9HN{nQzEcv#I>s zO#kRU#&8noTf0?XSdE4%rnrx3ZZeq2~|Or8J%9xLzIF~9~RKT8}@>G+_CtHRQ#3f zBP2f`QL6FoFDNXRw(%pwdMVPsM4L_Hm1A7k75>riHf#nj9X{CU2=uD0eKGeN;mf`( zjvEoJU~zo*sPCE{*jA6;y^Z^i@L@mm?9sVSbGFtartpWOgH`hzNScN?zqref_Zj2j zbZA38>0Ul*jL6>Nwqtv>bliyM%T?3lxfiuZZ!-4PNpFK1Q-VSQwzHeXpN${K?5oz8&Bxq%;?`6AVwSzV>jcP9@S9oh4_=H?X>eR&9URMQ(Cc=i zu&k*+(TEsYmWGACvG5Y|X;>^-`=&c@lhb-B`*X@SCSAucc%5Wy;s+-9cr^Kp+UB}c zh>%wOMq@ivTYB;de>|ZFdxuA52Vwy@JUh#?J5;2d#qz>4v%7?r>E&veb2m$gyds;o zeYyz?7mVI1?WDU%hL#~}KR&AKjNGw@uRz;$EV(|N7_11m%+F8Mu)lcC#Lnyp z?=&fvUF4G{ty4T(#g&uKvs3)1$qTU(88+pZqGDxnz&jDlrzaGI6~hg=`2{tOGkh9q zu#4wRoyXoUelqnf=4Q8&98ig|3ofT#Mb+CbDS7a;AeW6FQIl>CEi;_c)1UNU4WBwK zpK18xX%TETZ#UhK-Qda7-^0S{#Psnjg?Gq#t}rj>t#X4{n__+LBpdb_KQzmWjpa9H z`PhjcV3g+ZTLZb@>~Y$6mYK~5-o~;B<71jM3Mm>ijY<3PDc74L%`a(lS zXK(Rkb3#-Ba^`BvT#3w2`Gq+xnq7rlLrQgM*@)qx=Z8oWjp%%H_|*4?qF}$xOzb=#Zx1XTF_VVx`-Do2ymYXJ04K|%v5Ox z2g5AeBBMZ#9&~^oTad*D^9~DJwzxtq=>Kn$B7Ss%FJHJY%f1&Oz-~|OSZUO&=Tgk5!=+GmYEmE^Cyv-sVn@4d)Wj>$1 zC=pvqLSO;4DB0~);eQkx%{vt)yG{5n6g;Ic+{1*sv7$m-xgIgcXZFpG?r;i=Wz!=5 zQ{h+^SsefVR0V6!_bh3J#le*&qM~gvpIp?5z2Iw$Jfm)XEpO)v%W@lI{ZizdYG4lz zr)4d|h9zA(QipUf40JGdQ9f9embLvFp*HisihS7n+-a$gI;)l}XIWZSnanwm$1QaW zh^s|7FB%U0aK3{zwQsg6Yte0z;rBJqU78!babCUGuBwZxOiSzHYSa9>xY9I@dl@_x z!}jvvWi5EcGPOdpm)|yYRgz*D?hD!qQU%v6b0-`t<`ss1Yz)$YP2#W`$6$gZkDL7V zG8g6#Tr^ibbKvU@jrhT3O%&&L*9l#>8$xwF#JG%&Ef%aMu1ZeSuQS#B z=!dR~ntA-v0JTDr1J;uN`Qc*socAzXpP_l?46`i42fRk__>?bO-jZ>?dwC}edA}?V z3U-7@ob5<&gMq@AGc93;HEoj9^{et5Jm#ZBw=uKHO}k-qppK(Qh>mlOulT6T3N~vwrVmA!S`cJ2=Wem>pi72cdIV0Rkp>CrgW~JF zEn{6)e5_Mc&Eat$Cv+bL?F=9Hu~wI=o!Vcz@{ZZOv@lZ6q&84eEe~SZZIzQS6;+pK z7Gn^})$kJ^hs98JX)dwkjd-`N*a3(hzAm#9dAf8N@~!-`UPpQ8s<3F^T7EgN5@lFL z-KF9x>-eQH#ICwkr%oE*uqrHak8B|nFS9SKXP=2^x>eN6DQ}i+n!=T0sAu;#c-`xH zop`1grMN$XuN2c*72msB%_j2KqMogg<92+^>J-*lj&I~ASEne--{l)Vbz$-Rtxr-E z6D$b~a!A-)60`YVpQNx&eEp|t=EnPfn!*y~crpLx(-g(e@5tYk!q39U4a2e?p%$H`+l3V_79shNMN1MqL z-~d%viKI&_*9k&lSy3T*+yNaVId=;uM@_@dZTh+a3jYcGpG}Fp@#o3xI#2sNi0$C{ zpNDybW>JSt22-{o&5-PFNVK(Kdg=UHZr(gw(SI$Uv&Elht?#A?&6ex5bu6#k(vsg@ zAFMbtK{lz52W=Rq7_x@64qGr<*1C7P*|psOg{nVRL(N-2eT{p;pKbZM9iBK!ytiX^)7u%f6l-x-#t9P#GP zAdH5Fu;J)%gK(~qk(DK%m>9c1#Gy$y;AnTC&7_Lf56|u7G#0``YV!s8Fy*G4rVXvp z*oWk*Vf5@-))SLESU+dG*hue#n>KjDU<%htIef~lR<;+A!hwknTRb~{ZC3}URUoUK zx0dpzU-kBth;gR6epmX>AY@o}r7uSEnO_B}x($Vek}9BV$}P+Yhxm@Kyj#tY`DmkU z-OU>7`HDsoLlqyk+fQ{3>Kl@75pxBY`*DxmzCMj*=5F=OKK0BVe8BE@eq-KbyERZY z3ay?)&r2rPcN(X}Xue?Z3X$d=@HG z)W}d}NOH(b(5GiepA}bs?atUD?z%6?IXo3@R^_5l8IzvsrO8~sFAA&krTYddp!w~6 zt=g+v2y~R3H2_Of$Do}W}e7Dug0mtPN-^W@9`~FPB1uV&%()|rK z{;86?o;sX8 zu$^}aq!rA&Bjh-lb0xzCGj8~@d!uDfO5QziV(!6T9u!$){?VaW++kci)QN57HF$N= zm-`$ZjT6lL!(TAQ+aGDel8aN1xU7XIWy(r~GQPQ3?!!Tvx8Rtc* zHZ3G0&p2|Yf+mmtc!iK@&OJf<)P04|Yp0O+Q9t9rvi?~o zeq$=(9VgOCI&YI-I2Q zB4q+p(Psb)eFX*7OXmENLy#u>ZrErm?5pG&C5+&+T&je z;T?^TCVhpW3R7opD9*r2r2#3Z`oI&$+|%jiskVm3W=*z`hWaXTY+}>joEiv){dvG~ z_uyft4K`^wooLeS+42|HKQz=NdUnmh2_I+<|IGe|T` zHTQR*Yv~7erQ`r~qJYzcB4}|&OjI);9Acj1%fFkiC{O09ldaiK9&xf8_KWYG48}re z*U6}Mze9aoY+=ujb83|ygI(XC;imJ*l`mwDp}mg=nGSX1O-}_XuEz4PQ@wFAn13o( zaU_8Tl2*L(p&kF@lq=3@UY{C_UGSjOo!A1t__UTK^0L$Kv87yhrYDAj_s?YFO043H zC;0z4GdXJUH1rU+;YAv0CSng-7tB)$Ii{#2<#b1BBH>y-_zi;{Hi8b)kMGKU7y3M1 z`Yw@gIGfbOv5xyCe|*-(^8qNpQBlj0VdW?r&W}EFEe<``k2y_x=|i2U@xRF0@McaE+$SK1Ow3%8ft>*8>> zp3k|M!am}sFY59JM9C|@Mv@+p2kz1quz(J4$Vd^Jkh0^_6D0Pqx=TpZOOR5b#-g%J z=a0)MUvh&X(Vu1VXO?&)>1QbN;Lmza>53M;=M-`+c~DYPT-EZzOKtK-Q-PKW)S0hb z62Sm1lv%gvjnPn|IW8@bHFjP!0?9h1pi)~jSf;5YTDA{l!)QWoqmy>m!ONsnDtnMc zHQNxp(vYa}p)=0Nr4k&Db+{bfvI@0Ad2I@x=eD$zxoe_qh+O9^iBwp}7hdk7Xr?7c z4|L3S$ht)Bo5=sZybniR+rJNQyq;EfXuW?l{EzQjHf@&;Pi|t7rOM_lerVUFYJwnu z!Xoen5)JEZZMgTK$cyWlUS%(?CtDws#5lQQtjlG`P2>22A6mP=kAh6z8o9QHl!sXO z0_MKoeTco7#LNFKmZ(*t|@6DK+bKWMcaj^83o`Gl|eag5?s@QUkhir<2{`}MxggKrBMJ@8L{n3KqJukTa*5K-LWhC-pp zddWj>F7Re@`>BiUEp+Kw1!_T+MW)B;?ZumgJwir8ZQ1Y0#~vz;DNm)xsB6|p6e=$a z-9S<6#Pu})Yu9k`_@sEvtpy4$(y7P0;O;I9Mi8-pNo zh}bNE;mk{=;Ug-X74}2<)QXOZXRY|>6`43|eOaMb4;(@xkO3#xsd7x(JcNdo7R5QY zHOyv3N3$3ZjpcBK%BvAn%65?Q`Cq?XW;2S9{@#Pxbm~xtZ;2x8_@KMzJq>taD_2yC zf$D~2+X9EcqGa4>w&U^lyzTciR;Ui_;iK*a+m|X4E#<54-Bk3SXnC8k{EtYFZ4==P zbNy+>P)QzNFs@oKrc_Gpc*P&lY!6>Ac{<{?#Z4k>!s8@Q99?Bf-B|}8JB=;ss-nbuPIc*Qyny@mO z=bkQ|Nr7)!`R8%ptMEc>5>m*a$6nlG&k@Dsw{p0J|F8!@{W27+0v0Qn_Rpz1XuZx1gF`GiwEW z>AJMVJr&7TS!JU=zaq)reB$4FMT!cfo}%8DHR8Yg-CEJh4XYOy>Ic6O(Rd#4G=$yc z1D>`~eBcaHZ~mE~v6Hs`{QK`7b?4Y8d(b(ygY|L3F7E#<6)!cWJI=DnnfvTsRVT;E_xs^2CZQ|#vJQe1q+*H+G@vJdV z&Gn%=O(DWQJm#fG%h;x5I%UzkY6CNCa88B$akEAmtdtvfRb#W6ZrRo0c>B4LxSkUI z4Z7}4!3swnvqRIQWz+ykm4vp0>;#W~<%2!wpjR4}%ZpwOYpMn-szHrhEiK_sU-e{VJno;#tUurR z&p<`B1GlN}XTJ<8ojERk)DCu;SnZZv<6t&NeeFio6T!fhdWK65t#@l z07dq)%HwT?Y>ngy)rz{~*=DBHrIA_u%asKM-P#EojAWIR(hPFC z+YU!g<7|x{lVQMXFBZjPUx#8GefRYTDm?_!xy(5jxpR#hF3Z}~1c$F83nyK# zJ!5fhB#!{l_<^$?W8)xH{lWf*yM?=sXp6m`Olx^$d8TG53*rOJDShl>v4ZXH&l(we z*xEF*94b84;g;MFk1CL7p3%;xkzV=*S%&UGAj@@^De2{xUOI*Bf)g4RX-uh>IRDeU z!@koyFjC6L>sVBWSx`%!An4*--h4@$p@$*2JSO*2j=N!=s?eO%kG53vMFnHQs{au- z=@M1z3I?`Nu`6S(UB|-?p*IW7&MS{USSwdba&U$>CeXAd9%C$AImq5(s*8FlSF};E z&~_!Te1jt_jg4iD98$lD8WDPaxTF$?D_EHQJEU})xLUz7)FbWCj>D>>hN*IAVDvRW z=6cb_hIM8g#84a7`mK*qEkjb>@Y_^j5iM_S6uBQ7BI%;va8YV3F0f&4iib+*noOgE zz4(U>b8>pe7P~QcW)bYVRb;lTz5O04KV8HZC|a-_v8OE?)~N`!{-nP?8*f+A=nl-) znBpLvz!un$`_OP9Lvnx?51JrB`8&lcw#?r~ZLZsjtJ*?#d;J%9Gud%#eujt2+H;f|5xaP=H}z^@E=I zvz0=w>&Zl*&!&S)kcz|)8?kZT{zTEV0XM5-b|_IfFg5e9d<~KwwuTENk|GJVhzaDL z*mPYri%FiWliwB+^nX$Rp~9S7 zB{dVBn=oItQ0&x%b!wGXk0?dcW#Z(h+Hlc;F|tbf=ARmRGR}h^xbR<1_TuU$%#)Ri z#Z6cQYcAez!t{z4f~ZrnNz7aPLdiP2OmP)dxs8o|ZKVm&_km5i`I5N2J@b%!$CZ7$}4>3abQz zSlN`d?A#ItF(y6KOWW`@Kw$JzM^ITv`T&O~Y}lY3kqHu( z7{pF$FaG4rMzSBp7!}KGGVN6j9bn_#XLs>)6>G`%iTY+ZygZ!ZfC&Xi>kG=DbZH4; zT8MVdm=8;{Qt2Bzi}gf!_1lIJ+3a%3fo7}~V>aTi%~@}!6&*0XT{pZ!$CvWONEa5; z`XID5{5@oOHjehH3_q0$XFrY6r>9DD{;r{;)M{9->L2j~7nT|lG!@-(7G4 zr)n1LWcQ4WTWPqMmM#^GA+9VW(g!7DYl4G@f{~c|%PP@#%@_?X(lUlU0e$^UDZj0E z5Tx|KYQ)>v*mf$%)IE~)JWPcDHG%yOdDaQcTl~|Nbz*}>Z#U-NG5#?)8cbEef7R5^ zYVw|_V79H0qr{gC-nErn#Zhi7&83t|IuE`q@B4Jk?;w?kr+`pAdMNIRU>*7Io7Uf?>dM1_EP9N_+BsI;smkh@{oJ6lUAi8?6VE1h@Rox`xFH=cv zUs&|2P{~uItyt{Arul6}k^lFQ5+HW-WS#vUL&E<}6kW2ylf^RUd{9|W=Y!!K;^hFQ z7N2-A|3H`AftE%wIL(_1X@W*rlVH1sCsm#z<* z7nIc)Q_A#s_La0ZhhjD;w=xaL)GmaYarOJi{vZ{k5bQ1ASO~ z)#rbboz{|_He;G~7l->W_a?7R$US8ow?wiL7x=I#iY9*IV;|<$(f$DtC$ce8$wu@(4F|X#>=U@Zw zjqwFLQ=3zIX|MRa73;>5#h5_W-97IQa(>JJvBo4PJ@jz?HbH^=BJqOQ-HAtRz2CBrQgMQZJ2M%mbJ2%SV>M*fV3-vi)76ug(ixJ z+ORm*N~~^!NyAa}Ys&)JO|e^B_|*Tzac$wCH^jwlnTEYBmbPVKiUk$qyKS*}GSFPC zW*5Y7+ObaVKEGQnIgq~amefq|{B2iQ(q8oqw)4_DG6ML|-$XXO zD8=j2qliCf3@+TL%omSzV7>!AXd92Wf37UB%!a<~Hn>r7jjCT)hd>@4wa)HHC<%_f$D=rD4p< znk0+;vLOe3Q%Kqi4th6QK^WYL;zBe68}i$~*N)KrL}f?j?spMJ!nir?m_yx;pL!xj zDICk}cNUxK@PkNh;>eC{1KT4iI^iM7t7H`~80n)}a-Ua>^ozxm7&i?Kk#_@<-aODc zLT133Mw#=+$El9>X9G)*OP8cXWw$et$xjVa5e=0Cy)@=JW6>?9i` z^XIt>In&7v(DHceq@Hpp3~%fM!pK_@g1N;qy2Mz`FC)6l~nE#ZK>?o<+=3GrwpS-t*< z)3j8UhOgs2{6$s)Lr)fRihSV<^1??gh5Rzi;-0MK~;yG zcJ&6#1f#`(F7*at`o^`dWb(Es&C#;FLT^_OeR0mG`Z)>@nh!^7HJ;?z(U&~+YFLhk-$(z_JL z*Gm@R8}!)1<5}BIFxwo>+9`KG(E&!-G8b70W>FyDVvi7Sg)(=g@)B7O-#bv`#;gis zUR@S~995w5;Xot_Zh{gFzZhiQjD`7>mtl6z!8Id#PvI!k8p%mW;)wFx&Dy$#iC>4Y zP}Wks7si5Ff#{Cs#%zMvHJr6$3F4%1Hm>tfxJmt&A@tU>td6KQnk}Zgs`k4OVW7h_ zN=qsi(ItZQbQnk$ymYySuRGX6d@q8z`hAAp*FYBLYNfR1yex?h`^4Q5te4Aabh9P4 zGnd->20A-`i{Z88M^PEcN)!Vx$#aAFxfgQ~pGLA?%vFrnvY=)gEe1k`>7+?|bVZ!2 zWi3Y-sr)D86xgX<#2Nx$@w)?i7v)}&J^_p2BF!0Z;aZ+NPg(;?8q+P~0lw@7J>*_| zU5dCsqjv%*)1@2|cv1@e(PBd!V~gHVY#94o^oz!tMia^GMBgaZO#CW}O;x-)PdayW zxkkElr8a^Z*!QJNJJgofk)SWGza% z>R6P*_U}_Q=90y6tVtt}=4CbJRAZk&hYqI;Za1UE~c(M(hI5qaCd zAdntj8+zReJuS^3rqg&^WV$GpWU^jP0hEzUn$P*oEGBklE(0;g6dZLojoXX%p{Tzp zy4V_RXUg7ZjRu)cqe5BEDnXU4$hO64X+fDrFLn7E^N`G@HJ$vzN~<$<5swaLEtDVc zLTOW-QQD*1@@Xl?5tLwSa+UFZy$J75_)WJP+OZsDrkY}L{wU_AbR{Ak)nUqQas4Q4 zuQfxMZIegn`lZ*2w}%)%gn2YMOBuEkbH%)V}#gqj&sHk))1W0b!lX9`6_VpuojLjsN^O|uZT!57X+*Gqo+&h$cxDEn?p;tAO=u1jyNQrIYuR~eKycCjY9Es7;v>!FHOzx(y zWDR`3*{`sHLGdO&*UcVN?*#kLpd`oG@h?u<;2aohULwI!y;9J(? zslnkS+qYZ%_+z5!Ml_FZkso_`PNAF}$~kqbfm8?681cdg)*>&K@S6$0sva*(y>40x z-}#r-dzHh8j^MGF+`J9kN)K=kdV|}l)|Rc**tbj*{zDM?aM?B=@ax>c@9{5wa?Ct& z!ARDk{ZbTSDK4LiTTkRSZq`*s)(}>}@FE*3q9;*JC8~{YP?4e5!;xqSQ^D{C9!rIS zaSv;7o@6?{UG@=Y(yAI-mtH6SfnqQ$uQ;<^yf}in`5Ys}6|$Ar|0g&|F1yJGL}E+4 ze~6!tV&0x_Q-+Q#RQ6My$~5#mp~|_4%SSO=p9msa<_V$?>xob=qC4GyPC;}BiEhXn zbhv0T4HaWY;~3$>7LWuHN!vF_NK_~BU63e0C6b{;^7jpklT4?aNu*@?jXEW%mpaIW z=beUCx`4*g3RABB&sOX7vOROSbHV z`oB>v%%7#O%Odbt3_FLobBOzgAL}%iSscG37q|-JQJ(?6T=r^Ab}g?@Vbd?NckVh;dWCI!hdVJ5}F?0SgYxN#7dWt zX`25?BW(+D**NB`Tuj+_D7)gCr7^}(j@kz~2d~vti7Ym}zA^Gbh^QM88S06wRy%?Qq8irxkF5Dc2>(@$rCFFwP?NF^wKe&615Fx}sBq_N zR25&`@|Bq){)2atWx|)5K= zitVT012Z{eUm%;N6G_RyIQ&TlvSe3Zpbfx~wmSeyB`WHZs}Vg4IzZHVo!#TF&)>e#wBWOJfZsgO6=t|KLFu&_Cm6xG(Pid$}tsMkDl zE@{1tr6_F6+Y72~!T4oX$HQ+4svG$1E@`%$4WUi^-2? zb}Juw3aW!*>l3Vl(;ps!iY`BAx(TZD;;<9g{0|U6I>BP{e2_C1#D6yzRFCkP2dW>z z*cADRh(E(82mzaBAgBS(~v&`a>^mI z+FejZK*^hk+qwx6swqHjY9Xj>PqAN13;Q`x^0&QPxU`PC)1nx^swM70-VMlZ_DXe#b)JGK0$tTJ1-H zx4=aOCNqVqA8J_wYD$kp`U^4fB-JT0185`2b@uECqv zu*O}oS2wHfw$uFHL*DO?tKyz=mM~IRx?s+e&Oi0uvNbgOOv2+%UnUJ1HrbS(yyvZ3 z1&@LP4t&vf`>nk4?39wbc~`nt#T*^)yI}tv&DxYBBU~T0eoLFsadXYD!Ta9pvv|_g zq|IACIJ088|3`a6FZbQt)XA;$dTuPypJ#iRTd*cNBqBOkL$>tCr|&y6{DXr3q!!q5D55QkbtR8z(ghBi#!6R z9s%=+fSEw(j}L}+0Z&5(y!#X|UgrsT?I_@Bqkxx(0v`Vfc-|-AEuMf^a{?a42^gIP zyf_o^m`uRaFab}i1Pr|bUJnU)j3eMdjPN5q7*_?{t_!%i7BE-}xK|c%H7wwYRKOhy ze#Mmu7}f+F;|n-+7jSec44m%31f0ML*QSemZ?KVK!ZLPE)V#oUqRq)$K7}6-NM3z5 z)PAH#a4{LQTlCO~p`)l@=wC2R$-EaV-cI#pGE=p*;~qp%hO>u{0@PwfH4Afc!|#aI zBHYD**ZAKSR*LVwW`4o*@e6677K#uO+e(Dge4itvn~*ON()~smLOX=##G|iSjMIFq zGin72VsH)fTE!F&c1=JrfRcU_z6J$S!XboMq?x}%NP->k`w$eKN16m*M@WJz5ZWV@ ztYM`!tg?mz_<*kaqtY8AbxSU;=V&W>GD51yENd|Z2&o<)Af)0}A*ABgA*ABAB5Z{4 zD}*>D7WRt)X6E7^fa)S8#37`TNMkLI8OWj|%}k|gfn`js0dlMenA$;HYi3HH&$(?JC0i?g#1t-$ z%aBc_{wXWvxCcp6YOQ#gDLS|+ad?81Kz8>>JOQ7PVl#ze;u{{CkL)@%8|uI3|3XwW zL~L)+0xBHN{HLe{D`KRL!apGNhGjUzy5CItU9pC>>FeSK8-P$Y%e98WlqOp>tl=Wi z{inYBtO&UwKE=|rw&|2Orl{k%&;X%ph-g^Gq=tw#SdP|;TH6q@0dIY45#iUjqwQj?(5 zZwOKiZop-Wqk=jMG^}XY|AiRa5D|d2Zf!+ZHbjhWfH=_*v8e&#X+y-vSZ&ve3dF%g zomOWWAO@iOb36zhY5dtJI|Wd{=+0 zy2;Az5E7oOyjI57HP?;?tk($@>SG&-;Se9#g|O0vc8eLpln0W2{hOS6*l4VC)ELtE#giU>l_a%?Hb^ z8JB99!=!Pbq!K10qycIcLNY+UHBBMmDWq9p2|`(0gfuIxMo6>5dV~n-{)pypM4tu-_oG0N>@!vZQgN=80JDv>P-t zLf1o=svE7Fq?@N(tXr+ys4LbT!Xs=UK@bq+33Ef6g>?;^8@4O#>#(1~`i4IX_l-!2 zSQ_zR#1|3QBAaW!(Qc1w9o;+n-RPasd!x&vYvRGI$KnA&6HP}=FHNc@Lo-#gSaVu) zSMyj?r7>&lgPnra!Ct{FgF6O?1m_1|2)-J8EBHZhP{@>!oRIfIu7;RGszYo-BSQ0% zLT7{qh9!lK37Zg>7xq=y?_rz6zYaea{zv%h@Fo#{5p5zmMubJgM0APh8KIBJh~Ni@iz6>b-i>@6*+Ltv?V%m6%@gvm zpag?He0BI2;Sa)lL=1|W616MpAiUyUR3o(hy66MZjdksHeRWfGAL@4M&g<^$n#8t? zy%_s*2~Q; zoDRMo91+qZWJ}05A%3A5+H7sUc7=AQwmM23-8OoB^t9;0=w;EnqO)Vfm>sc)W3RRA}@5(z-=?M@2{VkD3~_Dk?fUSvOYK zJ8n$e+&H035c+^{yv8p$DA+daUf8$V!l)HdtI=a#M#aSp)#d7nbd|bkvHN1nV}FW$ z5Zf^>G44#<{W$x0&-n52>*9~10_WndQK6Rv;UEH~Myt6CM|>RoBKUQ%O^9P&h;vAI z$oPpY?XK;k?XMk# zwi^o@Ox4bSyDii%(SD#^sr^*DUb_`G`C415J*+*UJ*&M0bHCC~i~2IEfAoy#x1g?1 zY-a4Iv1Mq!d$A8=^Pa?3#n!~y#x;&hh#MF;G;TDEH9xLNydRoiOng!Nr>KEYfoUE? zNN3Fy&0ft@P3z!@;1h7p*TKFatwMAmi6MPMmWQkkQHHvO28PCmW`s(iuR`~SX~X-6 z9|=DZUIF)YjA$C+4W9@`FB%vzBcdQ;NyJwX2l67yA|6ImN3cleNDp+Y-jQP>Cq^!a zToM3udiI| zG3brc;^xFHjQb!?j9ZJIxijwDxRY_$;_k)$6*nM$bbMC)l=z(ZIq~`Ni{n3t|2Tea z{HFLXN_SbD|6w#4Dp+VxnUP#=IRfKgL~`*IKtmcUpHxSB>82AFGKy z7#k6n886<4DJmMdH+r3BWLWpy zd(J)QIp^Ga8GCE!m@s4fP+Mi>X!(PR={q%F*1$1F8(>x9usMQa)?pi+(59&wU^(dlwcM;C#pm*7u^X~C)`9>sQ6ySlcqKCIypIal=v{h&i*>`M3 zqoPn85Y=e4UyGYSWWT&AS1XEGYF6jfV*E)dLT6OZ>Jqov?RNX!OYU!X4a*D|Ir!O1 z;{uRmdDp2N;uFgK9xR?FI17jFMk$dE2)+?jD!aKdwV2|vwy z_!n`W_dmUUgDv|>Op4#dZB(uS_dzl&hcrlsb+7?Ua6m&gg`z zR6#A&qlq;^E40H$&;`BFhguneuW(RT5%E(n1GBIIK^c-uP(Q0>JR;Z2Oq7w3o{Y-P z$o)dOL++Gia<8nA2W2HDfI4|hHX;YwgjtKZ!N(x8+j-47gbY0C^g8FALFbBd%?a@b_=Eg$6lh^4uH4J~0I%k4 zxDcQ4i+q&-fv60K6=Ds#{nH{(yeRgeyT2n&ojsiw9K9be8s01lUVk*q=q$s{wy6ek*rgDd0hW}i7>;u9{IjtmkaDI|?VNCwd)ierh9 zD${C*o`XBgiCXf(*=31qifK>`Tl!j0`yL^kAY& z;bESIX{wwb<}JK~kMMDBh-6_3A?~Jzm}nC1Vn~dM2@!%+5DrUN+`Ds9p=m~v8 rr?_D^%guEwPAtn0u3SFjF1Qgd)5}LLR(dtwaqsM0NidYuV21t$?I!>N delta 29845 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 IjEIi>4=vN&*#H0l diff --git a/client/3rd/bin/proxy.dll b/client/3rd/bin/proxy.dll index e25c4a25a7b49f6384e44adbc4a6c8b0523f0766..3b11d28e36181a060e4e79056b26f90be67a25be 100755 GIT binary patch delta 18656 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 delta 18949 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 KXWkMvtN$M-VI|=J diff --git a/client/3rd/bin/ssl.dll b/client/3rd/bin/ssl.dll index b7df22e28de190d1e22492a196852156bb1165f4..a88f5701ac5793f140cfad2fb6ba1195ed4a90a7 100755 GIT binary patch delta 10869 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 awL!I6^|R`*s#IlEJyq2fJd;XVIQ=jBhDFo> delta 10833 zcmZ`<30PBC)4mfxKoA0gf`GCqqErY;OxOfe#A>N=1F7OtH%eVVp>;<^RE%lWqh780 zxqnh^6&o$M7R0)u;*J$}t2g3Wm!cy1XKun`zy3VWnK^f6-kCXbwwr|6KiSOAw<&Og z7VZUy$8hGq+nmJ54jjC=9;_4GZOZikj+3IU2Wuti2)$SjNdTN;6OdkEE0O-i4kLZV z9w4pJJ6HrmlO3-)&ajAevy6d5Y@X#2Sj^(Bir~z$CP!RbRio}^PbBR|B3Uw#dhBYG zk?=i>u)Up}zQyjar$|azhD`uuveh`56L3(P#llsFpYQ^)u>G+66ZHaWR&HHNF<)uk?f(mKG=w4U@;Qk z14wc@A&DQ1WG9d0uWd*QXCm28Lvo=&l9NadbfxNflg+K^NRrke@m-E&&?+S5RMvL4 zk;KZ7#1mK~t`zPU8g|n^*}A5m!z1>%sjpoTEe<=f8p_=5B49cjXcr+JWI%y|ihR8r z5`VVAF39!0fZdV5BWV$cDFGI44`P$!xgUq5? z1URthW&w7?sT`mFg5)5}Xf{du;5By7>_BoZ70G_~vYAYpN;6#@f}{ymJ&!3IMnW80 z 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 diff --git a/client/3rd/bin/x64/asyncore.dll b/client/3rd/bin/x64/asyncore.dll index 10942ee51bd8357731c461168bdaacc9c8d73fc1..98a751428cd9354fd836b90953762118a5052d4d 100755 GIT binary patch delta 175804 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 z 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 HZU6rOA0CkE delta 175271 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

PA~ITmg}~7V{+2>{SF# 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�I?)*pQhZY)D381IHq4hy!dW05+uHI+x3_Ar`Qq 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 Q&>K|2-AU8i|D5#y01Np$ZvX%Q diff --git a/client/3rd/bin/x64/asynfile.dll b/client/3rd/bin/x64/asynfile.dll index 9e0cd6746ea6fd9bc429303ed9ab52134091b409..e688a11af68b752893ebf4a29b53350ce005e1f3 100755 GIT binary patch delta 18485 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 S%Hdi|tu+XBj=H9=^ZtLE-xyB- delta 18352 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 diff --git a/client/3rd/bin/x64/asynsock.dll b/client/3rd/bin/x64/asynsock.dll index ff50655e1b8df47d33e23f080a75b8cc8ed3a4a2..91bbaf223f76262d7786aaa95d910bc248f82b09 100755 GIT binary patch delta 97852 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 delta 98167 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

!5;Dh9aw)hiFLc@+^y>wY6 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

$j&yIkfMUJ^L5G<#@*BldplW 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ξ45!+f+tvT+ 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 WEGChrvmiSaOodY6Oxd*g)BF!lO=5!p diff --git a/client/3rd/bin/x64/crashexplorer.dll b/client/3rd/bin/x64/crashexplorer.dll index e4531a0f1154e1e38b9062437cda7d44b98aa205..3284a9c113b2c29d8c7e43212d5dbd4c91cdef26 100755 GIT binary patch delta 14871 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 delta 14773 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

53a0h@e~+tbO%Z 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 delta 49074 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%0D9NDD@e0C}Y4 zy;gF|3-Ze*%IA~Lkl5vxrM6B~8yC>IE_Hl?>>BQCl#-8}sH0mew~xm;=_OB&#$ZSm*mieF;11f$TW{a`!dV6ERtROq>-`V^Z(_D_rlci zmt^NoPO?Q(WW(p8D(E7+s*0CPd6;)?<7;GEid+K{)$GM|Z|q`YHfAx^iquhE!(((i z?2q5FwaQo`gZY{4^XGL^JV;l^F%R`MGSA6Tt(I^(m##gvQ^`wkZoIbB+4b<6_+l;d z^FIwuNvFpeKKYmSURQ;Apo&>4!^o4cR8NmpdU}{1hFyY&yTNE{@CRY<5 z$sVnDW+3zg3D0kop&XgFi4;>XUQsWfl`~C|)0NBQ@#ka`w239A;p0K}=N=S*v7TLF zSu(O=cE)EhJL|MruAZHp%+gTFFH2{~z`P5NVv)^CU^V!RWwa{QZpf-#mNQA4*ZoRe zaFwd|WzjOdE>si=O)AKpWku@QY`L#)uU@;r>ku?SylTh9wl9 zNuGvJ4zj&SUCXFd+Gw7bW0JV$LS564t@`d;E(Zm~tT9z( z{|IYVsgta1W*kCm8s)2Bqwdd^JpwS&JbSPd*HN9V zeYCuhIlJR4bf`&YMZH1})45jPG*7iF9HYWtp}!c8uqL_ztTe5My^3C5$Q09hS7q8# zh2HRSz5c)2GUHWwgQHw$Yo{u4(@eYJL}Fod`=vRy%6S8-?zymL)p+8>;lh+RWz`eg z@QE+_UuDs6Hw5574?|spGtMQnbJt4SIp+>qPu99vOP3ev!t5!C-tb`xuC%7$O1eI+ zQA#GVJ*nAFA{nIURdl^jV^%R)Bi~>s)s~g^D45CGK8DDKj|bVfV9ZO6;lh|E>i8i*7=JsYEt>a*+S7 z>_FwpV`-9Kmz|tv`{Lw4`_4db5>t#D6}{S?%iZ~^nn=`f_9qkhf4L7|fGz zjeNUFn|ZCIxTln2-O~wY0vS49{ZJ$ah3llZbdvCt==eKS^llkZa`Rd_(a}>U_T#Uq zg@}!ZhJ$}<)fpH@C~rcRj*LU<<2U5s5N*6jr!x6BsZOP`uNtvVM#W9w{jNIVyXYe* zANTJlvF}RJD(IVVAso%FtLMKsuACc(^9PBT-7KypUzYUs3sK9~$*t|Q-&2_Dtab2j zKn6`wj}*)3wmR{$GM(t|3H1d!t*}_$Vp{!zPIE6J%+g7;y3L#NijF$lPMsv&`=MjN z89GZ><83wZO*z=|yV>#!^#L+;ttxy|Zi>~JzcXpEXQ8n7q=*J0C}~BDo({&h@f)ur7O}Hut>uo*J@V zMqaC9zR)qkeG2+cn+IRX38Ke2Ra_@U`=(Mf?I&ZjU6c2*OARHA0J=98u9p){l^)Yc zB6bdx1q!tKzp9i&B30_Ix^0lXO;;V(=ED6I^o>podQwf@ARqSXLMNA#=9x+;hhZeb zTQwD}1~eC~`h`{pr?v2Co9DERa4·*%RzhS9N$5Z*oHxqp%$@KcrwAGlDuUi> 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%0A@)5> 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 BU#0*6 delta 43225 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

88D6E_8Y#A3KwOj3*4 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 jw0GFA@^p`$WxmHV delta 38563 zcmaHU2UwKH^Z)J9(epq&s=$GuSV0jih=70|3W&Wcc1VtsTg6t~F+w;>{fajO_ptTLb*| zr$$qJdKR!|LxDN91NguWA_BsMsG--KrFvy=S0<Zx4Wlod7D-L`HQVfF>lgBAI6_DL6Xk51{p{0?i{SxSApc^p8J8DMERz;x0h{~Evy zFOajy-yST>0c=NxYghzOjVf;58sM*|0Ck!GEG2AvUlh694cH{=+5H-j`$*r@VZau) z0eC@H-Z&lD&K0&8f1B+dia zC`UAS^<7)4{*$r1d@?9R0C+3fV7Eof!(GK45IP=9eK)`%OIbR z0d`~nu!mIaqZEMK#QYZS)b|V{gTm^82oUl3r_=^Vf{|o@@ z$vl;)4NpG-If-1yj@jRwte8Vq{Ex|6&A zO?|Z|6Cf}V;J42-@V{v^YK~L0`%~?`sp6;gKpvnz_#zpgz#nN%s9%iKFgsH96H;ao zF+Z^YJSHnVAgm_2-mpx7#D)Oh(#(3AGLH8Fxs+5GLHeGcvQ=`ZVbyMeo=(o&iMVG( z0<5=!49)|XOk=}HUFmTP*y!#6LF56=egt-yG!M21=}uCQ{{~<;6XfsYb-k$KDm1$c zE=9(=kAVG?4X}rVhFi%0E~fzXj|Zqo%SAQfaSa4GP34@a18dL>H-#qX`P~4He+%-l z0AjExCROI3_xxuDLtpMBh1ng zU;z1YIE|?lG*zFV62s~M=#K)lZwxS$%yWQD;X#gBK+|R~>aeLaFHD4|

kAF&i3- z#62V{ks4Nsd?+s(8CxkWl9t|dcL0}GAf3sB|DY-D{Bw|_Na>{J0I#P3?4y3!KzuW3 zT7LW~uxnKIV0Bct@~fK?+E(#cZGsU;n$aP3fJtfQ{nMq)C_{P$BqMw7{c+JnsK0;~gB zs~+(sP%#a8KwMK`orvZ8EiJCy;$<$+MyYl=VfaPa^H8eZ6=?oUn z1^|zU9Izi~wR=r&@QN}lq*ho0z~FeWw4`=5A&2{kyyq~v=;+?S zbVq5PFjB)jGytDJ23eEJ-IxwCmv|15{MDxcG$#OFF9CQ!b5T2*Y3)g)m92ptr8cyq z{!YjmD}77gBVvqG1=cKM?Eb#M zfyDQ!SXSJvjIY7_e9MXNv08Cj8J}x8Uru?84aB%n6*#$!@#lxCRo+rCjrdlo0!Nkc z?R%f^#Cq^`SLLlP<6H1=z8s70A7X5)3S3mi_`$y!ExIVGc;7SG;uB?jE#Bu#BY8h7 zl5cYvpYQv8dBm4<{a+eBgXyWY^v~uC|EvS!0#)FpGJ)T|&lg1kXQ}ea75w~tzRe`B zg(@%SuQGuX-e>%k7#pbqi_7@hzt7i;_@3RDE%w=ObJkk#^DQF2`)b8Hl`ki(So=Ps zju<~z1;&;MyoD}O?NV-;Wa1O5!1`r;+u!FqxE6fvRe62O_zH**{wM$0O#K%zwo(Ol zDr4;TzQEzcr&R^!mGL!wpKmSky-@kam+@78i!aAku|F|x|4o{3LmA@(nEqca?nHd+ zRe{UP_>R8McWw>%`l<5HmGLckpU=yI1a?sc9w}oSUCi4x@3Fh^7Sp+5nsRmETO$pu zJ3kp2&3@qjM0RHNdB=t!+KNZ{goa`4XZ}UQ#-7uTXf^YcU070Q6ppEAGN*M{9SHUyn*)!?;g$5Np9>q61ki-Xl8B^XOqJ`2q{{TP2tCtok%sGN;MygyiA#^Wo9O2Ch*>koqR$rS*>}6 z`o)Dbc^)h8W+jMEXJ3W#Nnva~TO*T1z|_ho1_8k6~qvWRbLlE>Eb z22EQqH$J9mbym!mHEqN;@b8+|^Xk5z+B)~pJ8g~H&$mSf^O%_5Ydt+jlAn}RB8{As z)KgY#$>Yf9spb=={E==c=If^XKHettd8H=r&@7tm<^|0{oE;C5e$~%Hzn0L?jaQ7F z|jpOYD!l~4GK_^6<^2ndI#fC~aPfMuNpa@Ep)Uz5Q_uA@u+Tq<|cR{CEs>Gof_1EPN{HuiOT9+d7dH$r5 zBhN~!z~fr@vS8l5#R4{$KWY)py7G|3AQsJACI&MfJ~VNVuFXl*41^APnA?d* zn(DF;-q+;oAsc4y8PYg^ikm6l5j7v?pO}^h)ck{K^j!)~`4vo-4$#o#tasNc?XhPD zOA=2>sTc6$v;SgoR9U>i5?IBQ+t-Z>I76B#KY=>nSAHs`n(xs6EV}^vciuL|i&t&k zksaSLs`Uqq4dg$x@zWmM!rj{WiLLFJOMusN2s7V=t0)tW(x^LwSbsm)8tS8404>^d`ha1YX!9|49r)jR$(K#zFn|bRfoB{nNy79 z%T;nGhG{VIZ0FBXn`8c}pXR3>vKe{=V_3L#J^O^@le%x|Q{voP+H-kqJ}+36kK?(M>q>Wp!aWNGnAxv-n} z9pS-C(%k|R9#Lh9@tAlcOz6W1vO}NZsr%7l!?LfSX-D+9FE-W=>~~@%W!FEH8ak`1 zz*(dum*<(^%Ns9Km~F|(?-}B3${!Zu)){LxwdNV=ExY27#tn16#i8q;s(6!m{#058 za$mV|r;OUH5|6~`>?qI4h|^7nf~MU5jfsCWKa*i(9{gcORj0;M@pb5kuG)hS#3(yf zrP9ihvKqjAnVZ`+tu=9 z-DDlH!UVZToQqo`yrQmx7Kguz-=x4srA2cEQVt|_UIj71Y`#FcNXR(^g&1M*U5pU-IKqDl1*y6-I?Rrur%Uagz&Q1>&Y z+~SDhfA&fOczp5Ga@@K2;qJ0@=i)2~hsNM>E_Qtj_v5!a)J!@BlcbuR_Ms0n%KYtE z?4M_Qn9N?LBR|`la*sOGrr<*)V=^l7H*bL2JUgPQ5Te4eyC$}|BRioX;woYFvLGEA`YDV(CqUHJh)R# zl{$N@R<-0$wvxAY@xvXBawG@8zW-L|uK11mA;J0iQI_qx&l~K@++BQXXK&u8vup6~ zw^_Tt!-}YlMrot6>N|S|6}`>s`VOm+SYPv;&ORj6^UAMf^{bUi^T9_u*Q_!L9i%Eg z4`s-HGk2CN?iu%A1zXC3?stbAi3)S~G%nKXC50z@ona!}&UaDme zuiv!>-`d3`Wa+<|FCZwds#L~2pq#nYznLe#$BYTAYb-m-M|N$^&hUL*Gn}+Nu;F#x z%-y>gaw5^*?LADE)Q}9Nne>!XCQFwmR>MEbXbn5Hy_XVNmTYK(p`?8O6?J}>A;`2E zuB%)oiy?~g4pW|`Q#{G*s{FnY-f7W&fq_{i-@C;O$;Aq9MQpG3B0$Ll_|SorhxZ;bsw#p645=-eftb3zxB zWmCvFT5+d6oXyCk9q#gueN)iN6@5GBc(>PT%-58FHCF44Lj8>I;Q*G-|5Lp#1&vfa zFjHv{)66IdR!M@DZ0>@IVjByGnVMP8lS7h++>49_Y9C zC)EWJf+QErFkgfJ&1i>V;Lktl*U0y=pvI1&YG7$)92!T6)i9Ia=@+bDzZUegv9E*f-j{F8e4R%R3}Xj*pMeW>Uqg#BU;l!a z4h&{hc+j9kKj-h6#_E<=m~C&$pFAtY?39XacVietf0ySB%JZ6Bk7?rJT)Rv3spd4E zR8T~|b%*;64qzL3)4`3L5@Ex$%4t4saIp4jUA}B^V^*7A9bD6^C$yupr^Qg^M@(Us zwB5>6Xd&DuF$27%_K;|HhxZ#|a&lcj66W!3Lq@XMJA#HfGPah7eGpBmfAE2B-O4wr zFX7idh}CAV;yJ?%{Cp!f-t@yJLGGWy4CWgqv?91D9`|oFLpb!mOiP0uuzbGo!_B&L zZ;3g=(}#t#6MV|BU^bSo9%hPiS^TDwe}sygQ^uv5-BYan#;MCbEu-5}SD78x@qpoN zb+yrVWhsGt!tl-P0S_C|h+XHIBaZ04S@9aU0%w29 zCV;bCvl^aFEpvTeTdKw2c>(TyaW0rFi?&MpVC4Vv2?WsO%8>$3cL!6dC6DqgU0^uf zII0;l&XO_B{eGB1ozxE!=b=WEGGHMIOEXywqxm0W8dSJ*h2bEQf<+vY+{b=eD4+JR znO)^KKc2>(@g8HF*Dc-)Mm~J~aPO8fvP7HDT<&>JS+ec=!Lq>|b*_PN_O?=si2TiKO*G;P7 z9%svWh5KO0Sx7n2yvk%R_ScR&lV31Q>mfPcu+uwk<`inlXwyU3C;agA7p!E*?%YYt z-)E}T3U{|ysHc=3pwJ~2GK`WwmG_-ct&;he$!syAeYEg}?UWhjsyatcpni|4!Jig* zF)!|7_G5c_sJRh(w3j)qlJ`h*lNHbjc0a~9nvGGN#)B|lOU<7=7Y;KQzbjMo2d-CQ zk&fM_CHaEM+}0km-dxPCU#oN79d0!@V0seilsLjR!ORI^-|^*h#;`o@VQGK}Q%g&n zQ}}So-O1-z;`C=HS*^6KPSaDnFYLHwxx?JP`uNQVTnStp>43TK$GQCwLyMo+jSM_* z77i1^^Q*ZW+etlnUWw=F^Q+fzvr+E$)KO1N`N>}MAZ5M*(Y1tX^OS38jY=>(-^C@_?Zjlfolo1uO)0XlE#O* zGp}Cd=N*{M4O@rM;a{KE6=jr4yan&w@GkC)q!uks+8Z?`9^?pFQXT?X=ar_}R%=R= zDc+;)(#+Ah-&!f{4*!nVuQCY*6HX?DKzBN_km7f_&%z!|$Hy!TV*R;Tcm$r&ZBc#p z8#gcVbNhH3)pTA7!tjE3@8`P~eZVq!(5K$+e{5B=KC#lurV9(;S)x5(_NiB`gZ^0J zlZ|7Wv!e7B)*0(UzXr>trzk4=?QZ%SS37xO!8S9xJKv&4X^3ZjvYhcwTA8LqCtm36~k? z6>r>%BlLu*PzSe?6RBXa7;4+{{)gLfH~(T*!zr0>=8e(ixOefOa@<(ly&MlKP6y8CuL-RD&1cd=346#yWS>-CYfY%@ zx%H~_fT#TFnil-=T0`YY|K|LL_g(ABRj|0)&8BDb$E|9Ucy3-^LY8`zZA}V z%xkX+alN}%mC)cZG>+$a>&~;kcXV8TiTQlk`;Be-l;hsT9eDE%HF7TYm$`D&r0$HI zi~s8RrbKZ$?p^$2Ic_YzRE~!gpD4p|zM87alR=p5x9}lv;h6)Zd^%F_UpDx$s0ABq z)%w{*i%mlEo)q)nY37&8Pd%*G5YbVK-MFPA0?d}QCyG-)-f?5B=aUC;>Dg=i zY43p9uHZOrbvy9&8{=}8+Oi_v&MJkDaPG@XU?xkNMhWXq3mpz1i-=9R*w;oHR)Irt zEzc$S%J%Zy(UkkJo62myZZ#CQE<2SpqO42Z5F;+z+@0qmziP&CNAgwsfL-Y{rkla< zXjg|8K?`T4XIG35i*7uxy2;n^niF<#BYCq;vBnt5eWVX@TV~T{;YhD?+-f+>KigD| z_236Ld9$ziwN2q{Fn8Qsi`C)vH#c#czL;F$jM59c49ryh&`h~}^ z(azZE|EkX6BNT+l7!-1yA{4|8X}Vedjdbw{9fe+ORpO)!pP`P<^OhK@XNXH#vn z?mTEmhQ7Cniv2>}0(LIhm$sMeWBG>dO|`Gu6FUpy#vSb{CAK2&(=a`_ck!GZ#tKv0 zNn*6SI>`GBMBP+jnNLE8K3^hwL&RxhsQBUw!Spw%mBMF6+pD+1HA7=5_XavzgkF$Lx>Ch1stC-F??IC#7p; zNPG1tATbs>*0%Cm2mIU`Q3||tI-Z`Po~pdlfk3vLk2z4c=J^*`rS-`tY0;*@DlOoO zH~63#wi;!st$)FTj`;9j4pfh}q){#Y_j6R4yKdkRV2;XwoV>zR^G~Vz)yI z9BRsL@U4gZwOg+73x~$AMm+iOP_}@7efR^XrA?{v@VCNIZs9Yj+6zkbRoT*ue05=< zd%Hw=VLM|nghif4G@oB8^l0|Vgm%!;@P_i!canPo0`TQs3sYdbMY4_}_g!n?By%L* zs}Z`}WQpyYr&gJ%3VFrH9tljD*g~yxDz(w#Uo=CtMzG3r0Jjs4yt1(w>47z< z^9`%v!y09g0A7}C2**Q7B_&#N(PGn9xn*_2VU@Y zyo#8yGJ?lmhzo99oBHDrNw&-hkq764P2Ui>OW`XnR6`K&=!N~dZjIiwD~%Ui^rPU$ z#e_Ob@ZRBMlK;iB8<8uD2An2KdKeCd7fmszvMbWuW9f8Jxx_s#HFX+XlWKj$J6@_? zSNmS!AyWNx(|d)RMDpgB8#rAHqte(0U#e3l>)5}mzJ{iv>LKryUe9AMM^;Ueg}+4) z$wTH7>eCRaF!y){cRx8tZm4Qpp^#g~6(c*qM_p;m?(vOR3fL(g_1y)WlN_#|s(-8T z8&jMw$GwY>+Hh-VQ~DrJQXlRRAjhc|j<8KUSoNu|& zf*t2iZ$t+j?2iuaW7McuU2^;O5PhMWJOb%yNEcJP;oRTnW@NR;`)OPhowSeClwi|| zgBvC{ob*X;%qM5+;;>!XjfKN5mH4xpF&M}7Zu!}JMcC3sRuuDexoI*#FqywqqWIEV zHM|ca*di~;s-&9FNkP|XMmO?Xw?=q3L8i%kOy=Vx{jHj>Ea92oC*v*5y6;1^8~5^a z-%oUU8IC=^VGwWo!;;X&duR?ghNCMT(`HDj2=5*uQ)?eZQdFvvKi-Qc`aLuXg7mo3`W6J00wp zFE`z*UfE+iH9w|oG+f6BpL%akP{Xe1Fnw~uTNkh{x0y!Xuwq}OyUn}(62^Yw(|-xU z(R2MTEwPIH{);~w#Vh{09L?JJ>#y#8`{J5_G&JG;ONza+l&|`&mUi2g9cO=Q#=IvX z4y<2Ps7k~e%G_6MjHA_H;6}yBl6ZpRp{)?WOBz>~FE6Gl0qj%0Qt`}ro??D#GQUbS z-^CS%e#T~8&!pu&($81}#FTegKVvB&W=3J<47gq(+{@}l+e1+PT|`nX4&w$$L!6=QNha9)(b9!Nn5a$a+J%L72t}4mjF({Pj3Y3D7pR{W6YO#Z z@QuZda=!UWqe18dj&48%2fGfE3HPITh+6<1E1suV`Y@7P(j(!pT=Ff3$uM~`nf$ym z7y=-z29a23kU^>K)Kqs28kr41}eF~ky==o-O5z^Bwzg?o^9qoKd6n3VWkr9 z9BB>|&!Yw<&5lTIB2&hAK+D7)G)>5+Dz|;C)--cbD!M8HSrM7kfHR6e$+kp=fnk3GwJI0TccskJ@GAVx& z|FNVCJH(?NhUQ%MwptS?`mNhngxTmQbfUu?UTkaj(UObBcb@VvP|k6U`;hW!tCU?R zBv(X(0ZGdGa#Bm=;&SqSZ;<&!mWRl{RCamE#m^3`MM*v(#*V1P79v*_X+Vmc;ZGjM z<_I0FE&j6lv@pf!PomPotcH3xhQ8^yMPzB1bt{R=-$_5Pzf1*LNMunSt)}Fe%4R5_ z)UHbN3m)2~s>S3ZF0_ey!>DA#|4e2a2_MDieym73^hZj9`8NOaQR|SIGNq#A!AP$S*^K)y8>++mOHp74H|l_B;PDKBmZ14^izH- zW06xP+FR7hTT=&)ReSUk$X8ZWM~=1OBR9A;3f0qzVGOeA-{_f@hZE#-)%9uRdNWi?^uHd$IbJ z@=Y(Q@`z`S+M6r6_wym_Gd}IPG5XIH6uC=uPO!vV@$yA(R!g+#7J3kMOzE}~-Jl63 z=Q9CS)wQbvHR__-ZhFgj9AvO)BWnN5YKZ35UNoxi_zz77*&&S!aPd&~rs$YbqcY~Q z+vY2K=V&yA%3plyi&|JVzIqV|c;zig_l)>M&LUXXb^TxQGnSLxDHfR zU_oUl;LS5%hBcax#QmPoFW+0q0d784QjO-f-%?^OeN<5yP1&S=$(=Ow5tI3%^20K^ zB;u@#hnPA9R~oloE@GE>*56S%e$d+*s*}+AKf<3%cu&Hs5*A6gSHiC(TrS~U38zW; zk%R*!>>^=`gfSAZihNsScmBB9Xo3DCk zE7s)EucKKSAO5?un;wTPva0eU#5DP#I-7PNPV+Z%|m`qzvM>!9ROJ zsgGBJGfm!OD7~^W6q!lW872CC+V&7Icz$u zhR^xR(jeU49w{}3Y=kgWf>lwMbONqOie?IUF!nGsk2oj;gb2FIJi5|*@yOFk7l@Ty z=b>fUz)|0C>32Dl9LI8YdOs~G`lMsC9li&x7A(GxgWm z|5-{q{v(Sr*#?j4&_41q3{_#q_hXz)vkZ>ML{-MBdOki1#S3m`+t0W>rlJxE;}o1x z9*A_t0t1dB59`ZK^v=D77*%>Ya9DJkkgS|sD9nt7)L2YB`Was#-( zEty>@71tOGW!=U982eD$$r0N6iTEx|FFvfsT*NXhtIC#(y;@dVdv$^MP0Ny+4jQBn zq|E{3#^~H}wFJu@IpQ|x#SyD@3_E5za@wtU2Yb_nYIU@%h%7s1@In|28qu@Qw_b>y zbfy<#+TxaCmmLdpJ_F|~aZvV%-|Se|oQl#F^)uvoHXD9baAP(CMDe>>ZtUs9Fq1y- z1k@>V*b9O@L>Z(ZH^^?QBssuCHbEO@BzhiJulyJEw&-5tMnox|FFU@bvJiP-HzNNs zE+mjY@iFp`A-~9BKpRNK?no2gfVyBQc;jbS$HXZ;&~^02A-Az6JA}@AceGNBH^#(1 zDu82$$!wQu)};q(H3`;BR);ad*@1&~8vIS$Ob$BjeiHcyC^%`)c3jzEHT zOd}-#ovuux7L2gRiXGY+=^CgoPx?%J!3AXvTK4>g-}kxqn6d(ln0G(l>qHh<2%dTK z_+30!cDv^&YB{oC79r9cnU|-Mh7N$kyW*Vz#S}CpSii1_363m^C5Ww#%&&SVT0%SU zMMsp+OR1F(Bh^CLIOAc!qhgJ;RMaaJ|`Bg4X_g>POO!`B08e4n)0BN=;XqTO^?EF z$zyTgs7pCmMl6OMz*1@#rqo7M;^2fj0_%J_aL5Wl*z!P>wLBE14@ zYH;3*`)Qo8lky$@L4TJxC7B)m6w52H2KA1BE^;s$3ojk35kBI+JRjMc&z!5dm&7XDN@4HII3GMo z*mKby2`y*ST#$yxlP>qga2@kzRxwk@;@L@2q+|8j*Wzy-3t|m~UnOR&+LvCa!f^3c zLpo3lu!@+{oh>Fi?b4eL)qZ+8e<;AQ4K9dRb}}Io_-$?nf)rw%utjiBmd=KJKh) zPW^kbDb92hGoO-e*@7yRM^J$@41*G z{x@yd8#OJuOGv}_IuWM)D!8cBIZkMS%4U69nVC8c__jWIBUpq?qjsP5JiU zmS7UmB_^QGjOTBx7DVx(5Mvh%^>{42cn1CxRl5Hr^$HG22=CAf7pvi>*yO>YbsJ@N zPsD6;kH_K$Dop3sLniN_QjrL*6sqwaS_s;ShE-U!HuxtotO`r2-B2THP?3NGk`;l$I$~~vZxVJthOIQmL)c0 z7$&>QSn+9+N1*P8IO54_Ea+O%$G_Te$q|Bp?b{r4h+`kSBqn*Wer$xe?vfwy4cc`62YvmVX!KxKD_GC#zi zG~zjdlQA!%7(zHZmy&-XgmZy{df2h(x`0~-0&%GT8S}(H-fR}zA@Y1!AbTj*`mjY+ zUEyT<891(iGk^{*YbFwk%PWT%(b<=URU4%y$jAp$?Us;2I%8ARhFj!|sAr8>?aMC5 z95B zI5hPKK}#>a&_;XWot0vR^sAtLI7w&sVxLD;tp_~>wy#`VYUS)jm9%c&=2sBVQA&F% z*KF+H9nMyLPvFG21S(q}mRfCJXN1ZAIIk>!Sjzo6(cI`FUIwx>HbAsAVqXLQVXE$qJ;t`2h*0*>_Odn&Si;F~u zU{;g06_bPE2uH>8VAjs~+jW>#8HP4cL@`aFtCo|$()c*u)%J=yz5M9VkPR2Bs<9Ln zE%2uqBG@zG7s3{MUkX9=HL@`BvNa|%hJ zyvrti65JBsG_czuz6OiYC)|cf5M)VvNhXOC1vS`~u%1EKqFCEU6kDj3xdY>AhH$D2 z2^f@1hGS4BlVjHxnPJS!J1rO)($&u(K5jDiiZ_{KtcDR{ZWyb}Zis_nYzbQ=y4GY( zwOXTCSd;b9esfpMug83az80&_>WX>wn5Rgs#UgT)TI!5|pM=B3{~#zHb0JlqgqG+Y zAq@?BPCxo2Y@v0pWs1LjZJBa20hbKOxsjZAIR!uD3?UzuDZ3vR>v962cLaZ$=wW(V zW6T>}Xdp=KFF<<%ku3v9-NImOVD1GG=Mme`kM%U=_jXGnJ9YX&X(2Levnp(@7*m^l zuJyekeCn{H+P`ngu_B(-VfD0*{=!(7`D?>(h`73}ug60@Dly-D^Mvb{!So`^WnciM zpI3H?pX#y%)=&i3W5cy!Kag?8u`h&cI2**Ch*9CJs$Huy^k*un;(pgf>c%O#g+^LA(ZLrG0ZEF)j9>Yxm=?*r9hO}J7mjST z)M0cz5@x7yML0EN{+NwJ8?r|18_}yF+ok>IlK8zd3l@!{(8j)EYZNnUL$8V0Xja{; z!Fd`lZJcEURnA1pgR3<0Al7DyW}fVzSQE`6U1AZH!F9mmLb1&muWzwO5EWyXOU2G6 z^Fu6bnV6YPLf43;S8LfD54U^9UM#7QM8U-C%I1ruc+Zr4kq)?)PK8Rf>taeHHm~|g zgcvaMo>$D!q2!>_;yW4{B@TNizKQ`NuV)vDhK<<{ufH+b6=~%hkl(^SxruR1Wq9U# zQQDYYjyTf;L7T(~=4h^zfDh8`((Q3gmSXN=uWUmOYi_QjrX`w8<__`7vQL{bA2xlr zZ&QZ9!xJGwV_3J4YTa>U$7d23ODftvk;p$wy+C)^P?|0tOU36gY!Lz+jhnHEYE8c_ z#rJmc`h`U$bCnX@2jU~UcU5mL%+1)REK&r=vbKQ{UCAuXjOAt#5I}uvG?~vS7BMfD zCHq?s(5#sUd%R@`dhmj&;<`X^dpP?`WHx7Uhz6``&LYFkcb3N1lh)GMQKzAGG7jT; zI0Mi)L$v3-vQ)fo&cby|X_m5ddO=AGM58#?%&#wwz4H=sOSNOBrkbPCTzwfsq4*>Y zhnNq<`ZyNgxfIrTOQ*DOQt5Z`eH`0Txu~erN@Eot64Q!sN?~GYJpQiXZ^9{oeeAjK z6@mtDFXV1;mQukJSZ&Yo|CM)8e3!tcxMmzD*G%&+X)fGaurM*B1^b(=7E==009GjO zC9<{tl_bkce5h zWhW@BH1+`oXyP^(WVPsHsE7U*;`oEQ3Evf7c*wqwn`+SsGG44=)oj4jYNU`M2El(^WA)d;Ffnb@4*h>y)}tIy$k>Ob1e zLh(n!yFIHL7Y~h)EA5}U7iGJN1r{D2D5;yYK0XyvSa@t8p_jFC4PQVKiLn^#ACP+7e~ znIPK-l~zL#%L{eM1Wz2i8$*zgoQNz(S1atLQ4G zBpp{lP^&Shk|%lAF|H~dwn{Yb$ZBdGR*9h<*_LPrzgXCrb=7)or@1=Y zJ9Hb#$_~k#I>kpb#t+Ydj5JTo6cf6zCjK#27zSrl94v>CbK;L;(5{{03Cb98u?zE$ zNZCXJuvLF+X7BS&sg+*KWgzB8UXPL&5SWG>C13b=Wg*%>Hantt1X6h*jFf* zHlqa0(#DiKAjF7GnN-=ZSrm3-6SThFMYHZ~gf?J{*wmeMa}38mzeK~Q4f7BIJ(yAJ z*-gavU;(gMpB^l(o?TO{uSv0|5YEOok95GqN;3#;#(Fx1C7AEjzJvF_*nGo%s%{o% zd*H9F&J;=ymf{}1wUjQQYhOt&I7wTUwW38&mh6#+Lm&Re$=B2@b-x(JN7m{c1+L9&c^TWg~T@5?%SRBcH2_1XSz^y(FgTv4Wr#eLBScOu21zAVk@^kPz| zt*G3OB{@%#g#AX*yB}*F)mT!8Hju6;nwDjXJg0cABXW5m`MG87RQ%9JyHD?4$CTM$ zK@IE`c8D4MS%B|$3aUrq52_?wX3U!}ejL4#PNR+BC|4`RWN3!lL2%wozQY{x%eQCTET z@AQ{X&LbUnWb$PUY5PFj8N%9!Hd{+psi8^OW28>b9gM}ud=bA0e9(374aHPP!+W-f zfW=(JyrDS6H5I#tvStCl%69dn=nbR}qgTAyYRIO~F{MPfeZZ1n+)f{`mOjniVa*P~ zjoa~faJ3??5OL!JRvDXuk`G{(>7x3FEEyLR!|;^Z?SIlLFU$UNPZyCsj8&~%zb4J$ z9YcoTrB)+6FHwwQ(lBds=b`h(FV~^fk{5+iH zdE8r6O1Ccg2?gm|n!CCwm&Ak-*a;01`$n)&d@ClCPh+7>evI?qSS(7Z=HVl8W+@T< zMq;iVDrSvj{)R8{GJQ5ojY?C@c<_cfNa-W?j$}!W9gwAPVVA{fu|zgoq>W&F{A4^q?)Wnie0d5vX`zK64WMRr)_Jp z=2PL5jWW3+J{#*rA2A@C#cNB9VqG>Y@lagPW^F30ObW#oL1&aUeV*$6^f3|Syai_aF|RAg@DmWCD4V9L!=|7cR2oG8vH6Oo&e zo8zX*9!5{HEQVMrMk;+Gbd#8mw$%cmpUfHskC{T%zn)9%lR{K}`nvJlEgQeD&W4KvKR zir6*wod_2Ewi5%U;Ln<`7I&v$vF4L#nhO)Pa}YW^D7xmb0Y0|S7}lApGKxsM7mH!R zbq!zD*IVePvKl#%Q+Eu>qx~ls>HQ+;cNP)w)F&SGZx3`#=%oJrfngyp@y7?S!-sJl zUPhM91y54UH?a$`t#Jrsni3AsMlj(Z{pFhENNZY?ac=qq|yzlK~+^QuT>IY4@0w+GOBt zJY54O9!_Ib17A>kO22%m z*u~T)nfS!jWOhq6$GfTKK1h9ns+G6wcF|Td9!?*vfw!_RO|`}FiA>k+$yhS|$B>5U zfNt-|X!{@mD@#afeq3sPjvM~-wk@z&X3(k&%GAml&Aj55@@^X|8P!z(UE|1}jhG_E z+e7^SVVcIaQa01bQaMqw)c)CYG?U&yg;ht)A2Ykm3BSK$o0drBP%y*s-tPJxaN!w+ zragF%1hmXmeH)s7{ z?bS~|@DHwkX$a8QWYQh<)4xC(xl)vVW&u#Ep%mkJ9)eJA>d?13g59Kc?S~3fo`sG``0J?nW)f+@Jhw>0kM?>$;sQdqP zYSTbjX00sqU;eJ2KKp;~H*zG>sF79mGdlyd8otd&Bb5i!p`r4Ngtw>5v(}C$mAWt) zQ2SvP^9^58$2NE6T}1z-(cG2bmTH;cmWE}vym#px0}bt+qQ-0%ow{eLYK%@7$Qb0c z@a!zbF^^_!d4Xaw+pKiTYPf@|C)|r1mVdkpgO>hWSGhxHiOKy~pi}G7WT}hd{A^}) zDertW@AW9kn?Z$UVXFDqXuQ3#qiyXycsYkPXS+lr3v2Ec4Yt|#wG#>|O}(pE!lsHm3+syO{@WJz30o+Jf5LidV@``R zpRfQwztifr$&`Bz(_k0OV>pG;9<<{WVLz9RWQ#@iT-LYhZd`rX!akXJoi9Ty6xp%p z45!4?xvYl%VG-s7yfY&yO8v>A#yl43wQZ7ZP#}~1Af9#_4wJ>Gd8~<3zYnO}6tQg{ z3pB=n({|v>B$FD)5xp#A9+^1zcoy&bMXG2vpSfyVRuiWAEWoXlB2l?7t=T~cPgxE3 z#mDnm?FxOyqTICO<1kpo(|PzVnIgj%=d+4ztN3v~3w7^TRt(`Q6l>F8cr3uKeT(R@ zfc4J#9v2_7oq2_*IKF^dDyL?}2n8`Kd%yX6l4y(7u&*C(T{odNysFaAzyX!EZ0;wZ zG(Bp=YYCQtj_wXRHMIIM32!rdH8pVSF@+i3)#TD^nh#^YD%fW=FygNcdM%SzpN`J)f*Y-PA2xY*@(rU0V*q zY+^OU4WfWc2RLW~{yJerk+ldR?NMUlB34c7*+;BegiTdlbbvKfezpj07y4u!0tE)pin6pJi7D`y~OrnQ}tH-4bq)aH)hA33DVIC85fnCh<54^9N!_ZVmlV zR{57qdfO6yvYLNnJMK$ZEa4T&e^tV^5{~apa&mhS%#(1Ig!vM32^UEyB>YUmrM>W{ zQGJ0;vL;a&;%OL$Pi!xA2m@R)@3 zG(X)MdPfqM-pcr~C$(d+Y*{-AJ4o0|La#oQ>m#9`gmnSW7GD@vYTfO#m^JaRYdT&! z-tMfg*e<>3y`MR2XQzw8{g_*8#fXRdaoZ#lBh*Bkg-Z6bXbgqm1FV{Fj|>{3$Bn(@ z>j;W1TMCTu@Zx#m@P0fVZO~NAIlx-t9{9=u7MwG;32G-Ub3r_fgWMw##l>kd5dBtK zeDS4r|4z#&9-I2_w64V)+o);rop8`F%CFbb;vqE?4-qz+5FC^rjLJX0sVqz>&3RYX zcQwf>c4__Z8pah*Yg?WcLG9YE@}QYpiM*#OP)7DaovIPGVm>RLUQSYLi+AOeb7vAg zRBbs5(;2$BcS>1dg$n=Js*IGf&X<$2Y~Av*k_>p4)W1t=Y-En5fJDs3YEI?Pf-pI)UYI1Nv~ z@HQhk!es91tlXnCe4P+}js7$fVwfUp2=f;G3t6PM-sVwfaRjybPeGayA&M=9*pjd| z;@d(Nmg9&|x$%M^%iL)Qgl8%PVHA=SQSS5PNB9S;#Zz0xB$aiXiO759q|EK!vMkp~ zx!;t##0?@Rlrv`$S*cZNoXw%)iOwm{CQ|mu=5=5~CSOn#S)E+=JWHOk4YB+9#->^qNWmvTCT$XB*jS_&=_SyE1B5&1(o zDVfielk+I|P&p}czivU}ATTywnS+e?8yZh#MwOSzB(h&QDRVotkQ;59?u+#z;ydP~ zZTFLC@*RTgKO$hQd?xyS$2_C*AH%&YI$!)KgBqYNv#up2A(T_eYIq$=Tb$5Hq-b(O z8>&C`9}DAER?TrJi3ycr8XBmKMYoQUp4FFPE(5oTnWc(3j1-6|RDbZ-8m_XCjK3bC z$hIhTsM-GHy&6q28&;DDi>?8Flqssz-jt*&=b=h%ql%*_JcOr6sqLnb)Y$))T9-sv zbccw=Rh9YxxJ~NH5ZUDGNP)N;>d)0jYLj(T=Cr7P4VK$WWh}bZl=NwYZ1TsHq$*ci z71JLn5Hmpi=_|$fSGDMRA))vH^po?6yt~!qKZK-YRd^Ihvgl4yQe{>6GvGGi>#Io} z?;r)j>3;=-pC2De9oreG%%#ZxH0TkMVbQfGmKEVr=P8t=>Kv(x{SYaTH%$E*Y7@H} z*Tzb({}!7@GAz2=#8OKY>-t9Q;b5ul3*P^6~0V zZ1L_@w^&wXo@FC$3Pbv3v;U2AR6tvYxEz_^E`m42x%<)j^(_(0}Hn7Q3UzOC`YVPl;(hF@>YHayk zZDMxYe(~-%S{oNM+g3}GjlGXe%r0AP_e4-5t(W_cHWll;tJ05<$V>pToA&$+qMW z8+}VmYou+J)6^!k*jDEYo6u9XO19hb@7n00HeHw4+A!Ca-`gg>tu1|%%>)~4^h+CG z3!9eJ+@zLTO;3^1Sli0yJ6pZ&ZRM)j>PrzD8f$Cxb+l<+(Z;scmi>V(z05`2a@C&y z%a-5LrmoRe&Sd*7f;Xqnba- z)=0gLHrRgs{$E{Z0~S@4@bPnxBLX6U4Tw3$prn(cp^_kyfuE>=qhaE%ZlhAN8!7H$ zqVhWASEy8=*hNLdq|%~9MWJE~(-M`EidI}nry>`7c@14kYSG@`xs0{XKF{(z|NHx& zuY1qeJ@?)jW=3BYE&G^nxr=+bqi+({ug{R7dQG(S)b7+{k zb^jyu{IQZZ{l>~<{~z7mw#ePhcj*_#%3!a7?&byP{Bubk(-MMe#}=>f4PE_EtH;I2 zME7nV*3ZSrx%dA%)7^zrU+kJNclyL{V^>*GIrAZTQ^s1_KMC!Zuxsj((hdH_Z*Pe{ zweE=j?eCtLvZ3aWDwvpYOJgNjmo@`-GQ^m&8mu`e@tf1>5bH&i7fe=z$Cgk&{_`{Cp-C_3wm4aCUHWr=d2jvvi~}De&G%2tTsf@t_T>>3 zs}r70|6)?)I@>n~1_Hq{r$C&usCE*t5&Jc#i*M+ zk%!AtAtCOh`QXjSPMW>)>I~V>W~u$h@xNC6Yi7cxQ>$Wfc06-UEvplw=Z&7Xfc^-{ zk`a|DSu(Y|Uh_XPJz&RPO$_6!orP^Q+ZZH$=j(B6WTaUotx`$C;Z*Vb&!^C>d9rWi zD{JIMEkdQQB1O;Jd*;>$>>Z>hSjz zseRY$=hw-v`l*_|LjN<>75eAv_DcVOb-7Le6j{d?(zr?oL zNWXSQ|8BD!V3h6klG=A5TMJ^}l_6W?bj|-2I!sN;*&dq6LA~`ud0aX2^Q7OeY2Opy zzX$K0sIcZ!@OijUBWoU@AhwLCdF;7-~=A5FZ8ekAQped=@ae27Y-4#LK(F*-8W zb)5=7QCyDOXL>gu9s=WTZ9HkkZa$l+Hl;Lb6kkR2=_>jY2w@6R@%`LJ=fAwY0cc$Jl zBl9Y@IquB#et-Std^tHqO}ncq-EmE&jimmu~OuiVq}@h z=WP<+5uU<(mWMHYN2yKPe^*N({B|pf~vrvSB(M>fYC@Tg3(*$_edks=#9!q(<<3(N8}%=?$_I=!uIFn~tfD5WGG=@TGWnYI;BE3gV~v|k1ZgwC zd?Ri0$C?;&L4RzUTwv_s6tUxt9SB=J{ydW2Mf$~U^0?6`^(&ad_A1*lq`KlzpI}^WJU%6clHIm*SxY?alfqz$jd%Ij`^zAr) z6pGzW0ZDqoi_&Gp4u8XljRfQL7+uC#RJW|^id_eEc%(FY&AWt2M$E+CUna9^4elTz8VQzmFeZ$H5I#4dE# zAPPTOf2dfVGuqXQpJQXCVrxO}F&u0pO*N8cu}!&?#Q8cY&?Ew9_0I5j_=T%oYVMP^ z?_h7yR|^rn+IqUY>U-35&oDWhInj}K8-Sj z(e@ebyVd9MZgLRe+1-3>eslGydt`8u+QpQ^zg^Ak_&G=#omk@GCB<;L+~mGId2@O4 z66RT5m#0Uk-fR)6>8^9sDUnIWmdL8&mlsDDFdbQ*W)^o5r_zlX$x4>Uey1MV4BSb%xhquB=WT#hR;3FuT_!PJl zwbFo0xCJ$nCttP}D|&2zUUw@U<{*E*Yti1NQnoV@Zo^V7K`U2`x*7 zU!!)lA0CNp$U^>9xEH12tKqQ6gh(b&0?a^F%!vjkW~PHvf!1fi_fa7U^)Pq=U5$@` zX{eA2Wx==5L@H4YZ=eQRMc+ibuum}~aUrK^LE9g?k4t3yj;Io%F82LRf3$X$ThOZpX_=@2pPdnWHHI1Y~&a`iYxQ;>z zn45`2O%#ZM-=aJwpx?JbgrH{PZEy@~#mB;V4 zi#iw@dz%oip(-Y3HSBSnUcy`8qJPp8T!c*RLi9%|_|SGH$9w`O38cfqpBZm_awn$- z@+;wtfN^}3shX=+I^2Zp_+oepmEjxUk0^-z;x?5>S;R*`^@}ET_-yzps=$}SCRFMq z(1O|d3$4S~LO-F227D+?L$Ua5Sc0PPWpIF|i4Ock_%uqxm%#Usl}gmY3n+zn7xa{x zD8`%NF;uAHq0`Y#6U_v2U;)a&7r_c-V@K8SW8@&d0S@M#Ego-&dr>&v++7oYLQ&)o zt`x zo1o}L1@S)cL6nA%g{zPSUj|PgGrksni|X;MaEh-cYVi)pxA}-hydR%ZAC5Zk2~Nxk z)JY%@Hlga5X&Ln3A=!jafc40ZZ-@8sfP4~P3@@M#e7so`8jZcN|qf~q&^s&%OcnjnkHbfpi zw7(`I(RzFgY($xOaW7Bv!J5d%C&S~Y5Z@HcKT0K9HBm|+9r6{}q7L5iaJ zfHMMbh4WC8$`ALWR(uoeK9B}*Z|Da{qIi4^T!iZJ>2MvgbDx+CUqbP(IJv9Ae1saw zR1f)i5z&s%g57z8*g^ptJcMeAZ-5^Uq6K)L!IVSg%G>x@*ZuSmH=J#dpHCDn9*MKz zHk3?!5j=vG4AVq9`K#eK z!|6qQ*aLhqP&lU?J{I;H$^I!@2s1}178T;#;EH*4uX;j)$51xD2F{&N zd3+A6K<)H|3-;h&D?8s{{kLKMfMUs%4nIWc_$C|w ze-hrifPDCP_!ZjEiyEE_HSrX3;d5a-T95Zzq=~>(C*4ROB~=qkQ8GRg=A$Bf5v)KZ z_-Z)jaZV$ZA6`NY>V=mlSbC8s@%y0*S@3OeO&TjDd75F^lQfd}8rX;uh<7GxaC-C6}XPasbrUvDZ&;%zf=d9of*8!W+dc5b;EGnoBzaKujf-?B^aCsKJ zMcE1%vyzJp-T_}<#e#$Hgx=3^r6qsk>DEPf>)3y{??vs^}I z9wL8$;kC4qM|AamQ#xwou2;RA*7G#o&Ykr8XSe}DR_=_i!JcPX>A0co4acDzZoj6& z<){MhRPPB~My&+YdjP(5v}P~s0UWA4Hy7%aef4U78D4Qds=%vP>Gz;Eyn1nXDN1E+ zpZGyayXT<-})xwwGf6W~HrM=R4{8S22- zz`vnTTGIrrU$M;M`H@614W;4juuuuVAHIh=@h73@*Q_PntcJny$jlJLf9<4Z1Y!x4 zz+=dPuZH3q((q3V z57wjBX#|=vKchxgF7YjEKQhsEDR2quD$c zHPy~!(`|a_q#Ad!RnZyA+oqG>6o~}0<9ra+L6Dm%AUk|S!Tcgx5X@oHM4KS`PFigf z;1xU^s^0~W3LEIxtOUBsTaJ*<+qChzHU#qSP{^iy^jvR-sO3XGkw_gx8>9~Ebjp-g zsRJS&m!UdtH(FhN7vvWi;{FT}mvtcad>~6Y6uw^o#a#kmWZ30!g2U zx{VD$+ueY^k)GOyJO4cxaNBy2dA#%YQYSkdMM-gX0W?OMY!_}jfKPEl+HRLhKS>RC zx(Q{R)snQeS&r4s8PTPlh_?CP=?=5D)U8jQj|s zD-Xq6kx-~V1#;(3#6Jb8SckeB8-PN1lhJ&XethCN^ElPS_1i1EaXplvZ)sXb)O9K1NY(q z_vb!0JB<^!DYZa9m{J|q*)FDwsl6pw1It?DdTx6re z5hRgo2R7T5B%6_yR>>4%N3O2qWs32nBRz8RCe#V~g0HhY^ae4(7+0q^YJG76>J3*c z&IPquYCUgI7xy~}f}l659S}c#QQQxJeXZ~(w6F*hHM7*V==X~zCr)!F&VshuJ6IRJ zG0`HQtZA^6>J5o?dIRb6-V5{>5{!u^%;u+O*@J1Qx8rw$P*AHW2*xZJ?iQxEiwir4 z7Pr`w!4yKbm^Ouydd`0gy&>+T#-w+jSTxW9ZLjdLt|S=M^S6)?_BHI5w|(AV$*;|} z`;4N5-1-~wYPNk5q%N2dWxhy-_Vo7%9X5C^hQmCijoy;A7J_+beLUwMXs#nP|}B1A84=~b4FAWjD6M~Yp^63o%W$Bp=e2JigLI_LLQdV{M0Yoa$e-DG|vDS&-Hf&z5@|96u` zyvb^xt8WrNL5-P z&F|rClY3cp8WY2bBv`Z$x!O3a(`*dCN*=WvQ`N-=`nOl|#p!EwL2}QAF>1ZhNyUvk zaFAWjpk5sprHjHv`E4Z`jfwVh8IlTv*juyEuUX+xF9cP8`7u^8Q8Hj@^X5C zb4Op46_|{j8OXj(qbSWRB%k4SW2KXtg^Z!D^cBk(LvzHxcCv5AP%pcOX?(U)=AKSn z=p~Cur|vn&wJ_(GUDlY{H&`rqhVjkMgVqIOHU;e&7Nsd@p(C1tcC)e8s5Rn2B~RP= zM$mp4-W0S@v(6v{^eEgVxs?v>))u;Xym5R;+RI;AWoQuSBiw z>e1YfzKB(+S@VxY*@h8%gDSxo8yJB_+R1XpQlkBrA2(R))v_16K9)jry1HY82{3{u z$G=2Dc*D`naHGl5bo6R+blb2dNA-=hMy($#lkabT!_f)WR+xAM4ng@;v#z^E+rLTI zUmK6(U*2I=HmA-2t~WLY;j3+pLBR7K-aGX{k2ixb!woKYvP&7%+wKYSkR}(GHP#xnOYtO>-CzvjVBG*! z)>d%QxC*-8w>IhEVosB8fOaYFIr3ervf0I4u5WVj)s{vVbF41TMUOXK+~xuolJ;76 zhu28%;|17N$~T4Fjqf{Ucjz$Y8@t1s{XLE%X%6c-o+7=cz}5PmM^u<$Vr=i)Y)yiJ z=LH@X@vL+_d3t1HhaxdHD25tKd4}Q8?{2CcPm4sG`5)qB3cc+nKHSBsACQ(!o=9zJ zG%KD+FGysICs7}|$Bs^-XWpM|dVMVIX~sJ9#!U@U^6d7lbMX46H{3bSpB%Axs`%~)r?*^K?o=bLe``2@Q>m0HsR z_We|vGwFdnvcSE{n#gw%yyirXl9P~^{2)&VOqQLjsivIdDFd1k`FG?P-@&-t;A$q9 ztm9d;HZTesf_ED!n<|wjcmz8>jl6Bs_+<9%!8Ga{aAgqBxLiK0u_W*|W|p5I9hwA- z_6+Mgo&4g?#Pgg^O2);3A37m&PYj6)Jo{^)nwWQzKN)PZ9eCD7Z{X>61QiHTNni%I z1NkN@uI94ez)HsO8xxUcvwoGyxs!UbxiKJSzmeFO(A-}O=Q z-cxuE8!lS3H{(R1C{Ewl#3uTPjkSqhUd0B_#f|MfmOYo=rUcvhhq|Wr5JzGfo zXf0c}h#vWzS@k;3$C|OuydPNV|0;lXup^5p;H^=AkdSEjIZk7GBo`GoSmMH-^Rrq& zw4#l}l)Fll{6)nQ>f%;?1ZT#o>1{IVTgDaR==esiV$n;eLrzwsBC1(2wuC32cFzRt zL1kZT#k9%}K>RP2HDc{T=;f7GRkX%*-JTkHE zvS@#1&z4X)EobePQcTanK77ygSi@}?mSNptFAJ3&rh1DXf@wVJ`wG~*jTJ~Zo#f9$q)EbA^?yg1P^v2bb`93lt=X#&b za^xZ6*|xl}L7Lp~PW<3VZj^{oC&m`-#4}4sEU;uv#eGQwck1G1qlUlRz}_~O@U{&_ zI25>Qp>ndEfJyZRt%*HeM)7ps)G>#)k=K`o*QS)7tL^lFci}DjDuAn|%A4l*&q$?ScsFTkWDdE*w zwEI}<3Z%Kj%2tqpf|zd}1^bj85a-ZJ1ole-9n~$yOZxwKFR?E;hvVi3`?8QqXq##9N(vXnf+1{^NWN@W z5!Hwescfc-0$FY`?Fb&9`+AK=G-I84U^DhN_XTEaZjn37G~kx(#?~09o%quV{jqFxs;Hb_}x-AvxGX^CSw8QV5N>K z*^CkjqepBDZ*hJZZ}Ao@y+UeMyE#}cGSIwnabSjlq%aviSOyRLj+$?AE zVU@?pwC`b6Y(;;9vaU}D~2xpJu$ShUN6M4`APU+DgFadv~Hc%aAyy}T5H{2SY`ngZKD z!_57Q?80izTHNtZ@{=LK*x3ma#~SMT8*cCze9wMdjTn5(oIfC4&c!E~yC1soBl9NO zH{J>mgJnGJjM@P>6OY&#|!dAHe(HfF_V3; z2Emx|7)G3irT;q^7R3hb1%96KgcvioDHyv^B@b#A%emOMSzN@$5H7wEj4|&k!Ki?a z2Lm4g`C(Jq9E_*mqSK+pN-#Pu4(7q=)EEPK?ZT#DENb^Zg7Nks=2J>-+2>{C`t0W50+Ryo4G5UKhJ1J3w_;sG#^ zU}^8HP*;VzgR&>(AyCjDqk+$SKpf{kWKF%1>Lg!=Ni>nWM-X?bTB4Ae)Ny z)Lyp@PF_4Z0)EMr3T(xp@qIqB2XDnjt|xC%oW>4TQfp>;P8zm;JvjvAdWu4rrFZ(s z9H)Z23t9kVzoj=UbJiON1zWUJp=GttNyi?nCl4`qDj%;c(^Zjc%d(kDT-`0&tL&XB z8cdtm$|~{`m+4r>M)I-aF=!!=V;8Du3OTTMHsB;KV#7C(ug7_O?yM66ut@SzK&#z- zXE%kR1&az3o!Qw9)C!O1TN@B&U#8het(~9Fz}5VL;hUrQMWt5mH<|Zn$KAs%=TkOz zBkqy=S4$D~8MnpQ7orEoIRrnD_pZ8_(X*m_BacVuFb?VDA`9M16zKMdniKzap zHEb)=$uBB!j-IY>r$>4`?ce*_Tu1pkRDH%xuYZ_mIHfmSmFKXTo9GjVpJTCVdG(ZC zFS(5Am}6=GOKYCN-z)T%LeDAmGlhPv&<_>5Mxl8M%~t3ng{CTWphEj7w5vkfD)cig zAKyC80j1`kQd7fei}s%=f=SEjKBP{pUo~&^GT$UZD;Ir3Rz7*zSc4rGs#!aT*RvJQ=S;bZgz^*#Fl>$2!Vpz;& zCx4IRulJOnP2%0;nPrMSHr;CL?c_-is)>EDSk&?i=pA-W{$#vzzLwW2Yu#v$GVe@9 zlg)d&$}=YNX4!Uf9;T^(R!vgZXsw;R33kdEZ2mS14f^aoCAnMYy`pTF1j8Br@%ob9 zP-oGmMDZ;?G;k!YM9ElbceQx|ep|q|d|kzMQU|6hJ+rWZoZKJbJmRiqqJf;4sSK%> zC#+%1mx^vuRJ6?~7#$BIlvd@|I4NdF4T0JInorfAJtU#v+-LmytBF0mO1&4dJZvf~ ztJ>Qqi}ESsa`&)!IHf|Ki=su03Nz? zSpE*$;~GA$!4md0ENq#7H``9XQhSs2-AQe{Pu_rFi;h<1yjFYLwJJ5<*i`KNAzBD?xn z`FD-=`8uooQ=|M_BY(w~KNLOO?>CC(Mt%#NMO(x`cJ-mSS~Yj!OqTIT?8`Pk5(}H8 zP?q|w=xUn&t@zkRsY`w;_BEA06*rM0hR9;PX@M;Is+)TFvm?(%KX&`M*yVLq@Q}oCYmBr zXRWa5FO|JDtn8ie=s^d@-)Z~k^3&@q_obK-H8nYA>xP+;ai0u-aW1nw`9b1S`|@1B ze_}QTeY4TO=b$SqUVOA>;IZI@>VDsxuMQma!7Y!O`rvIvloXUNBUQqeUHDyC5V+3d zZxMHQZIjk;-Dc;+wlV8IS?Yf4bm1p_iDP@Eg{NimrFhas)x+e|RTb{-n;RZGM-)cg zb;0ATo0q2`Z0;88DhT{~?^-OHW)DzR+Nk6Ak&w-tl2l<%J|B}1gAzVh6k=Fnk}An* z?m-g%LD`3@e@uIlRCZxG>0?RoAE^>-GH`g{MpHdRB{<@LBW9vxq^g8Syg^TVj|88g zD&ab~6K;zkz)|21xWQfpjs(v}i9+AqybdJ-SilwhFzaD5g$ z9jeL^E&@c&BOwiq?t!0NKteJaOCSf7UP_(H9|6&QYC?>X9O2U;D z7<9Nwh|MSAL?H?JXuo+S3H=Rl6m7cW=gn%A2;g7A=i@h<=@?&EPQvku9C#05BqN~~ z#Rncg16Nm)P&o>b0FOiIJ{m@V8&Tc^-T;0B#Rm8ZxbJ2X?xB76tt5;^sZLV~OTgQ1 zgJZx6;8Rdup#2i?T__2tKb!+_6XghmN8t9`;SI1mxE^IXa2j|a%241^@Xt|VfzN_3 z+5rcEcZ0t`$pW_7iM}Y0Fj*RSF3N4-5^!-B97CHx@Zl&q_7HLbHlft=fxwTV{DBU& z;4(@i>VE~V*o{a4*MdjwL8yTpj&c?F z*N-Si7_b-Cp^-aMHwWbf@NV!QP~ID(68->BMIHwNXMtCvWC33Ve}WR6t`aKulW+~? z2pUWDSGo`aAAyg+$`M)uW66cl?jiUl8u;tZSt zz6a$j+I$Wkk6m;dcsjVvAreY}JAo&o)B>l07oc1PE(Jf2k`MehxLXYgOMrFY?{E@< s2_nH6N(gW@cvn+&p~}=lZ7;wR(?7>mF=C4dp^FfT5@PCKt1@Z+8!FXJJ^%m! delta 9592 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 K^{Q|%ss0aPu=c9} diff --git a/client/3rd/bin/x64/ssl.dll b/client/3rd/bin/x64/ssl.dll index febb79c5c2f4770c09ff97478f7764aa79630520..864414657998079ef8e8d63e01a2f7230aeb5dd8 100755 GIT binary patch delta 9710 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 diff --git a/client/3rd/bin/x64/zip.dll b/client/3rd/bin/x64/zip.dll index 738a1b0b22bb12f405c1d6ee0fa4f64ea5f9f531..d9d70c12d660323db1fccb2a42e2bde7596de1d0 100755 GIT binary patch delta 9296 zcmaJm30M@z(o;RlrJN#y3bF_r5YT|&LA*df2U)~h;t47N4Ms#T#tQ|B!nz4&H0^=W zcmzo>(X4SikboEQ_kd`;^2}4C(M63%GzszAzq$udzvp}VeRXzKb#--h@9fT^5~oEa zPCEiXb2%e4%@hn8fCr{fGMa?xy@^oo|Dhn%-?)z`#~+0Hm8%fZ4mfak6LN7=5G~t} zXkZu`_==J}mLFPRK>dakgI2MozO$gnhDNyB2!M!|a~xLcGwz@&Fy~_C%y(q9zu(^D__) zt3+2jFFB{hY*;VfY2oGl!~+ffa6pvmi70pxT1EFpG~hclT_6Xv+yFb}A6nKB2X}de z{X=Li7dV7MJ6S=z$5ii7)H3SN0qE&|*J3$=AIa!oHxOl;7qSfq1+;AF)y1f_Slf0`X4y5#lwnXM3iP zL3}{YK)h34iTJ8qf%vR^y}duNl4J+ZH{c&R+|wUA$>R`v$x9F?$mNKmu1O@mG!bAkY?K1CkQb9FMUff(Sm+QHK(y7oN$e%vfiu@k=q~ zLXh&SZR`In>toBHqx@IwSU6!CHo#s3$K{EGhQs@^39+xqCVmD$fBAiV7SzhO^tIx! z^FTu`fv$lpFudWEdAYo3@Kmv5qgr-Kv?Y(uqIqxA z$V5*OTAH$k9Ts7LsmG{;1Q+o*DT^e{mQzwY$jjgMatWHvq8vAWeH_#P8S4VC1KFx!xG8vSZy@t$@xck(_~4LP>R^p&%{UzN&SHZe55C}o z*Ji4NV`}&mE8pN#giOeT4udm^VBUsDM<4OsY7nrp#zjbqMlRAD9YW>0iI?DAd3$mO zG|25zyvWJ-V6303d90p<$I>EEW96GZ zn+yP1^2RB9Y>#};_RwvWoSfcliX(dCg z`Aa!{(OAeZ9bV)PuvfmcI1PT1WAd_~Ojh#Pk-D5$047sv{(As@O+PJZVFeMU%Y`37 z%fwi$U!jN{l_SqFOmMsr!(@;Q7g1$rx^8H}_Vu2z1Kg7xKk5jNOran7fw+5>+9)kP z|B%)HlzG`I))jK~$7>xRiU|6`)Ebs(gDJiEq%8!>-Pde_rKXE(R=0w3IjcNZ6Fdi7 zJL;(`J&_AuCf)X2JFM2$-H)v7kEUap4Q3W~ziDfQl?EJ5UscT#;i2q(Sm$~%8H9p= zEp*gRJ|r2=vDNQ4jXvDJC3u_G)_U7OlDzNS5;!CGJKq;p$_vl;Vw&^&$a=k;d*01t zxDexlXQ8hCT{vgzeJf4_t4$x?b+Ur_@~01bLbP1_a0T8bDUV#=SRcY_9-S>2Mx`f+ zRgxh--CU^ZJW%J13TN{i)7nSw#38v0ZhL_xn-qG7Rne;X5J;~a1y7Ua?=TJSY|kgV zLsT3|F*tZ%0@Q-_jAj;0tS&Ill0j1~w_~0WcC^t1`V4ya}*aSsw@$ zBC-Bk8QTTs5r|UGhrlNeuuYlP7pk4%h7z0zr!?TMJQ)sWTeXU+6ojZf_uJzsQM)yS z{`wBAgmudMX%GnRnH2&nYi~n*PsuPmGA`%`Njzm9qwGnC2wTw7KQh7B{i#V1g6?Iz zV~rzY3`gRE?&D^gajKcHv?WYXcFl)&o^VU4T@A|t#?x_Yp%mIt%{ur2hSHPkAPl@H zlt2m*3+a>+=mUr8l@g3zw*fTtXbH5151GOQLzI>4;cEiEG_r-x{H#AP6{j!$#-}Ve9glstu}c>!gCJ?7MNje#~-CFjPy1I`iQ?Ts3}^95QEf zGwzu~r*4Aya4*#CXMTkqX2u&1-S%YxZeV~}_U7m4x}VwKzT6nBYo0*+rGuAZwHZ1S z54%MeyAW$O*48X?-ov~Zsl0HTC;j(ru%;PXVV;96sxYc6JAQNMqpgq(rF7&MkPb1l z@(cLZ(XfykXu4M2wlOcE3rnFF%%S^A;R{$rQ?^04^TGwV-qqutTMDXjtju`}s80%U zrBySqauwTPI6S7#Wf1RDKA#23amKH4$D1ISOO%W6U*V=`cFYk3S}kIbv*pkpdeaBx5JcL} zp&!o$NqJ{GT(N@Nbf5{m;fRuEV&bn<+KUZ*m}cw+e<)E_?u7+}*iWUd6|f3&XjujP zjP1ST01)u_?j2S|Jiild&EKfJIWY~ZSnb$O*;5Jg0op3vs$ejI#dOI*$bcEjgM%;^ z;1SI@3|*mG*>D&-0G^Y|Bk&YpG~HhVW8kUM<_DM!P6cBHA;EAY%J5ShUQPLQ-7)Cz z6#j~`t8(WU9MQmV<=azG4X{PYu44yFNAI7;y$GklXJ8r}Q|KA^g+%Ung2%}+ETrBj zu-;0I#IKh=VR7shs5PG&jO`SQXT!njYrGb#B&XO~sW9P@WDxbngh;*7Y9`%v4q_mf z{&Nn_!YHNoJl-PUL8Xh}1MTUwi+C0FRxVwHN`PB*-M`=y_&4ox2|B|LI_?r4hyhH} z*@Z^18Bdu#n6^)8=r35zJGAR%cno2*^A!k&J#@?!NQ2LmgI6F9oUEe-yvC2jsfB2u z?S6&+uHW^4Sy_rw6uo~80u=fyxI(M6DApPy{L%**?Rz8`YRsc(#Wg7KxqO@HADi2- z@%&s5yn1W1M9JV(G{SEPew%-<;1iVGa_}=m)K}B9fh*miURd7lo-GBW#drVoRNHFlHIbMyoB>yhyd?5q~_h6zkb@M;#XJ8}p*y znQXMmX9lR#8TEcc%rhRMRx*sNsT6RAxL#+oLL|#U$&m1kgx6xPbJXQWXdAM92R^=< z6EPyr_&v^8(>NnqjlB7iSM5t)xl_28wd!>ly>2#o)yDKp&2?IWUw(q#82d55XIL_C zTC4m0lYbvIlQ0ZQrIJ%L#w#4* z7a|o>Q#<08dyXv|U6-;fyYRI!d%n1=wo?8A%G3i*epHH{5?_kqr1qmEa_WoiO*oe5A#P*`7yD zj2a&`ZsLTo;}7A!gj=zF!5cT>o;ekLFzGsdM7jq%EY5mEB;M7mM&)cFWa;;L%RE$sxMxW3^z zKH)YNEA-W3@lNPEjz@of?|&7iv4a|m!~JqyxSxspseN0?iYgW6lr}bQt_VULK6UU_ z2BBfG+9g<)SG(jOHb1)+?)>jA!C%NPy2SN0Z9>c25zjVLZ@<(Z-I|sx7aM&e0=KhD zp19kz*20{nG0R>wfm7bzXIL$MTKHNQKW1mhDQ`X9=tVqwFTqiZ+nI6@aKGZ6UvB6T ztf3D|y{et^w0wE5G_yY9U3%M#_;klZdkeF}=2%GBsUGnElslhsOc_^^k*~p5(ZU#3xqa$gr3A*vjf=@IBpSA{#m5pT4 zX{eVk35LORkT3Cp12n^z_}cB=ib>;O8C~s5=0g|i=0~(*SSe7uw%|`E`k}{my4;VX z=KhTnS#L|H%X0KgakmgcBU%{1J|8I6lVlagI-NTuUAOiI;0A z-z`^;-8gnvCi#>5t>~z?NU)}8F9^zFe`4!QKN^I%@ZdA{=b~gR(qfO-|3aS+B0(g2 z9u0~o9qpRb1ze543SaPZBfx!B*#*H9F~e1j@p36=S3

@co$%Mhjd-Gi zPSjpce8Gx_=!u7SF5c2=5Pu_rU=tp{@*A2bEzWx#dq(WQC5E~*H zl5EY{O>h`o<0tpGfSII+T^vID?{vEAkxK)&(HD5qAv(%11^kRU^ z^?x3q3lm6y%ePZ37QG=h(=aj}=Swzsr%D3R=K3m4xk_x&Tbsp5Cce>}x|WG+)Y-9& z7nm5(Y@Er&qs_*VOzhn}%0&L(vTot)T1Pu4 z;^w|jhbEGCxqt6hjSWSS%=hefO=1!g`!=V+L!D|)l8f5r(R60)(k$Z7SfT#buBJ5j zv=1928;f?Z(d(-CPE+lgCN>rgVZ%q8t?QVmG>bgewq}tVuW1&GnQ>9G$Vca)$j+3# z^QXtbnmFvF<;lcHG&tlmF^d`FJEU_L{GGnNOl`e@L+tS2@nL`48{97982)IV#!RBO zvgc8UPnoLVShl0Z?GXNJC*|w%Q6uE*mZ)Sg^-dvvL-uw?mx$L#O=TgB4u3I|+ATb4 z#}`o()u>KtIA@hO@Tk_Y%;g9TokZGndw@Jf$z!UqYLu^;O3m$GX*{=esKMMyRI;Ws z)us?%>mP&BXQ&!x0rSCsGmw~XZsy6n#Z+pTG&PLB>K~vI9S`G`hOaVEQ6Gn^Y_6Hn zA%O)yS^C;~{)1yUSrIdttWLI@snp4?y@PDNZZm2y=PfGvJecP^^kNYDy#4yH1uTZq zp$!uAy-j=#{h3M)J3|forW!9qC7so<)~PJ)Z`5T9R@8<07#%h-)jT!KDdZc&JV`}1 zU$-AMm|cZR_6DgHeGrH~Gu1HbnUB$-3lg)98fFYrso5-5!wgjYC6&agVTLYXVV+^5 z@eA|SUhKqT7#;R86Zvz#$Q#HvhILiLoF!$aGIHXwUKB09QnquL2B6BsKKyz zR8rrGW$VdaML9StS96FrD9-N_?LaD35-km>Bpyn7CFvlFvp#r_E~_RX4tVZEyL9am z+7%grR#ub85JdMLB-6P`z#;Ocl5~h96Q$}1Y0zugn^9(ozi|-yfv=-xD+<=r64g(aSj%DS+$7>CBn&g z^ba_P_!0tf6hrCHp<;K4P+Yo-qX8o5)G%=tl3&8aH<37mi@r!g!?|*6I9Hwx7o*#= zXdM$-HUU9MdLU>V$B!mLmrrR}H!*@wH(NExMN)u3952$mZsNBXv0Hc1r;Ug)x-cXV zLNw_^(86U=Ynstr^h1*s-9=X$HcH+g)VsUrhPvwibbF+_RnP`>)3LO4L)jv`APz@h zi{vo`7Yzs+{6{N-M)eR~39fxq4{;1e-Pwb$@@x;$pQmj#3@@o+mG|HQi|N5nICV#`m zS;!vE8QI}GyL$*Fv@lM*&8x9s3aiG4h?gTY)z+Jq4HDh4BGrSME8bU1pCIaZ z9^a;69zwu=B*zdmj&qgD1n~>tgVU$tVESyt^AY%#%}o?PWJd^ws`GXkA-dDfL&aQ( zrrU?|nXt3^K|GBeCJsl#HN(UjBq_sHd))F49h#dI%e-|uE5z4`cOf(t!kr!)E++CM zeBNUQfrvv8coH}%zDU9YHd4HYL^q1pXXYp|*zm zP;VPTgb4_{P@g$~2w4b8xaGx2KSfAJzG4&+{zkCJqud&=mqdg`c;wktV?c<+d*vch z3&JwwZSmyk5F$s2xdJ#VS7Z6CBig>!|#eh2EL76mXS+@)|hoM3gt|J zS?@wxhtL!C7m(gXsKA@}5z|d4LId)8q>~T?yjaqamLmisUxoA>!Vp}{C8XN-h%g`d zaHN9}mQ56eAxKvu>_UD|E;6SOGO&z4A@!I+gw@CgBkhl{2YCtUa)j&1Z$!GA=~J=n zNCkX9e;xVONCOcXreU8U%|`IURW3vN8A1{^=N6=9geAy7McQg65&T!8;DO9Igev4S zk$#BajLo_nX&plE_e3RS4tb#2{fVdz08hndpLkxhvK8=hQ=T0VgNR*Ep^FfT5Tb-u ci7vJdd&;ZIe<-gjzff*2zpo_zAnvsKf0Z;p#{d8T delta 9353 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 delta 12636 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 Jt;JQV{{yO&yuknf diff --git a/client/3rd/include/frame/AsynCore.h b/client/3rd/include/frame/AsynCore.h index f760835..9fa76fe 100755 --- a/client/3rd/include/frame/AsynCore.h +++ b/client/3rd/include/frame/AsynCore.h @@ -103,9 +103,9 @@ END_ASYN_IOERROR() #define IN_Plugins "plugins" //插件路径 #define IN_SysArgv "sysargv" //系统参数 -#define IN_LogProp "logprop" //log4cplus配置的全路径 +#define IN_LogProp "logprop" //clog4cplus配置的全路径 -#define IN_LuaHost "luahost" +#define IN_XvmHost "xvmhost" //lua/python存放IScriptHost对象指针 ///////////////////////////////////////////////////////////////////////////////// //AF_IOMSG_NOTIFY(lparam2) diff --git a/client/3rd/include/frame/app/Setting.h b/client/3rd/include/frame/app/Setting.h index 0326f13..fe3a72d 100755 --- a/client/3rd/include/frame/app/Setting.h +++ b/client/3rd/include/frame/app/Setting.h @@ -59,8 +59,10 @@ class CSetting std::string getString(const std::string &key, const std::string &default_value = ""); void setString(const std::string &key, const std::string &value); - int32_t getNumber(const std::string &key, int32_t default_value = 0); - void setNumber(const std::string &key, int32_t value ); + int64_t getNumber(const std::string &key, int64_t default_value= 0); + void setNumber(const std::string &key, int64_t value ); + + bool hasExist(const std::string &key); void save() { diff --git a/client/3rd/include/frame/asm/IAsynFileSystem.h b/client/3rd/include/frame/asm/IAsynFileSystem.h index 48bb60f..3d580f0 100755 --- a/client/3rd/include/frame/asm/IAsynFileSystem.h +++ b/client/3rd/include/frame/asm/IAsynFileSystem.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:17 2024 +/* at Mon Nov 11 09:02:49 2024 */ /* Compiler settings for IAsynFileSystem.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynFileSystem_i.c b/client/3rd/include/frame/asm/IAsynFileSystem_i.c index b497d35..9b59802 100755 --- a/client/3rd/include/frame/asm/IAsynFileSystem_i.c +++ b/client/3rd/include/frame/asm/IAsynFileSystem_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:17 2024 +/* at Mon Nov 11 09:02:49 2024 */ /* Compiler settings for IAsynFileSystem.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynFrame.h b/client/3rd/include/frame/asm/IAsynFrame.h index 0db1b29..7fd5a1d 100755 --- a/client/3rd/include/frame/asm/IAsynFrame.h +++ b/client/3rd/include/frame/asm/IAsynFrame.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Wed Aug 14 15:02:35 2024 +/* at Mon Nov 11 09:02:47 2024 */ /* Compiler settings for IAsynFrame.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynFrame_i.c b/client/3rd/include/frame/asm/IAsynFrame_i.c index bc09afe..5ad3013 100755 --- a/client/3rd/include/frame/asm/IAsynFrame_i.c +++ b/client/3rd/include/frame/asm/IAsynFrame_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Wed Aug 14 15:02:35 2024 +/* at Mon Nov 11 09:02:47 2024 */ /* Compiler settings for IAsynFrame.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynIpcChannel.h b/client/3rd/include/frame/asm/IAsynIpcChannel.h index 1ce804f..69702bc 100755 --- a/client/3rd/include/frame/asm/IAsynIpcChannel.h +++ b/client/3rd/include/frame/asm/IAsynIpcChannel.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:18 2024 +/* at Mon Nov 11 09:02:50 2024 */ /* Compiler settings for IAsynIpcChannel.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynIpcChannel_i.c b/client/3rd/include/frame/asm/IAsynIpcChannel_i.c index 860c7d3..f898d64 100755 --- a/client/3rd/include/frame/asm/IAsynIpcChannel_i.c +++ b/client/3rd/include/frame/asm/IAsynIpcChannel_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:18 2024 +/* at Mon Nov 11 09:02:50 2024 */ /* Compiler settings for IAsynIpcChannel.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynNetAgent.h b/client/3rd/include/frame/asm/IAsynNetAgent.h index ff836c8..adc64a6 100755 --- a/client/3rd/include/frame/asm/IAsynNetAgent.h +++ b/client/3rd/include/frame/asm/IAsynNetAgent.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:21 2024 +/* at Mon Nov 11 09:02:52 2024 */ /* Compiler settings for IAsynNetAgent.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynNetAgent_i.c b/client/3rd/include/frame/asm/IAsynNetAgent_i.c index 3f225d7..3c096d3 100755 --- a/client/3rd/include/frame/asm/IAsynNetAgent_i.c +++ b/client/3rd/include/frame/asm/IAsynNetAgent_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:21 2024 +/* at Mon Nov 11 09:02:52 2024 */ /* Compiler settings for IAsynNetAgent.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynNetwork.h b/client/3rd/include/frame/asm/IAsynNetwork.h index 5f62c37..4510153 100755 --- a/client/3rd/include/frame/asm/IAsynNetwork.h +++ b/client/3rd/include/frame/asm/IAsynNetwork.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:19 2024 +/* at Mon Nov 11 09:02:51 2024 */ /* Compiler settings for IAsynNetwork.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IAsynNetwork_i.c b/client/3rd/include/frame/asm/IAsynNetwork_i.c index 2b4f231..9278f4a 100755 --- a/client/3rd/include/frame/asm/IAsynNetwork_i.c +++ b/client/3rd/include/frame/asm/IAsynNetwork_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:19 2024 +/* at Mon Nov 11 09:02:51 2024 */ /* Compiler settings for IAsynNetwork.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IConsole.h b/client/3rd/include/frame/asm/IConsole.h index 9b4d7c1..19d8974 100755 --- a/client/3rd/include/frame/asm/IConsole.h +++ b/client/3rd/include/frame/asm/IConsole.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:24 2024 +/* at Mon Nov 11 09:02:54 2024 */ /* Compiler settings for IConsole.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IConsole_i.c b/client/3rd/include/frame/asm/IConsole_i.c index 3d1cbaf..ad176b2 100755 --- a/client/3rd/include/frame/asm/IConsole_i.c +++ b/client/3rd/include/frame/asm/IConsole_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:24 2024 +/* at Mon Nov 11 09:02:54 2024 */ /* Compiler settings for IConsole.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IDtp.h b/client/3rd/include/frame/asm/IDtp.h index 73a1ae4..e1ea5c9 100755 --- a/client/3rd/include/frame/asm/IDtp.h +++ b/client/3rd/include/frame/asm/IDtp.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:27 2024 +/* at Mon Nov 11 09:02:56 2024 */ /* Compiler settings for IDtp.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IDtp_i.c b/client/3rd/include/frame/asm/IDtp_i.c index d3b38cf..8eeead3 100755 --- a/client/3rd/include/frame/asm/IDtp_i.c +++ b/client/3rd/include/frame/asm/IDtp_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:27 2024 +/* at Mon Nov 11 09:02:56 2024 */ /* Compiler settings for IDtp.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IExceptionTrapper.h b/client/3rd/include/frame/asm/IExceptionTrapper.h index 7d41621..3a7a558 100755 --- a/client/3rd/include/frame/asm/IExceptionTrapper.h +++ b/client/3rd/include/frame/asm/IExceptionTrapper.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:23 2024 +/* at Mon Nov 11 09:02:53 2024 */ /* Compiler settings for IExceptionTrapper.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IExceptionTrapper_i.c b/client/3rd/include/frame/asm/IExceptionTrapper_i.c index 2f4c598..2188e41 100755 --- a/client/3rd/include/frame/asm/IExceptionTrapper_i.c +++ b/client/3rd/include/frame/asm/IExceptionTrapper_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:23 2024 +/* at Mon Nov 11 09:02:53 2024 */ /* Compiler settings for IExceptionTrapper.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/INet.h b/client/3rd/include/frame/asm/INet.h index d3460ce..a430f1b 100755 --- a/client/3rd/include/frame/asm/INet.h +++ b/client/3rd/include/frame/asm/INet.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:28 2024 +/* at Mon Nov 11 09:02:56 2024 */ /* Compiler settings for INet.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/INet_i.c b/client/3rd/include/frame/asm/INet_i.c index fc1d78a..6f0a612 100755 --- a/client/3rd/include/frame/asm/INet_i.c +++ b/client/3rd/include/frame/asm/INet_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:28 2024 +/* at Mon Nov 11 09:02:56 2024 */ /* Compiler settings for INet.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IProxy.h b/client/3rd/include/frame/asm/IProxy.h index 7aafeeb..df72f36 100755 --- a/client/3rd/include/frame/asm/IProxy.h +++ b/client/3rd/include/frame/asm/IProxy.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:34 2024 +/* at Mon Nov 11 09:03:00 2024 */ /* Compiler settings for IProxy.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IProxy_i.c b/client/3rd/include/frame/asm/IProxy_i.c index b888e4e..923a749 100755 --- a/client/3rd/include/frame/asm/IProxy_i.c +++ b/client/3rd/include/frame/asm/IProxy_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:34 2024 +/* at Mon Nov 11 09:03:00 2024 */ /* Compiler settings for IProxy.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IScriptHost.h b/client/3rd/include/frame/asm/IScriptHost.h index 1ef856c..ff9b442 100755 --- a/client/3rd/include/frame/asm/IScriptHost.h +++ b/client/3rd/include/frame/asm/IScriptHost.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:41 2024 +/* at Mon Nov 11 09:03:05 2024 */ /* Compiler settings for IScriptHost.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/IScriptHost_i.c b/client/3rd/include/frame/asm/IScriptHost_i.c index 9f0d0df..a336256 100755 --- a/client/3rd/include/frame/asm/IScriptHost_i.c +++ b/client/3rd/include/frame/asm/IScriptHost_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:41 2024 +/* at Mon Nov 11 09:03:05 2024 */ /* Compiler settings for IScriptHost.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/ISsl.h b/client/3rd/include/frame/asm/ISsl.h index 648674f..04cac2c 100755 --- a/client/3rd/include/frame/asm/ISsl.h +++ b/client/3rd/include/frame/asm/ISsl.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:29 2024 +/* at Mon Nov 11 09:02:57 2024 */ /* Compiler settings for ISsl.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/ISsl_i.c b/client/3rd/include/frame/asm/ISsl_i.c index 2102406..6f721e2 100755 --- a/client/3rd/include/frame/asm/ISsl_i.c +++ b/client/3rd/include/frame/asm/ISsl_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:29 2024 +/* at Mon Nov 11 09:02:57 2024 */ /* Compiler settings for ISsl.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/asm/ITypedef.h b/client/3rd/include/frame/asm/ITypedef.h index 667c9a8..9d94d07 100755 --- a/client/3rd/include/frame/asm/ITypedef.h +++ b/client/3rd/include/frame/asm/ITypedef.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:08 2024 +/* at Mon Nov 11 09:02:40 2024 */ /* Compiler settings for ITypedef.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 @@ -93,6 +93,7 @@ extern "C"{ /* [local] */ #pragma pack(push, 1) + typedef void *handle; typedef struct tagRANGE diff --git a/client/3rd/include/frame/asm/ITypedef_i.c b/client/3rd/include/frame/asm/ITypedef_i.c index d088f5e..ebf199d 100755 --- a/client/3rd/include/frame/asm/ITypedef_i.c +++ b/client/3rd/include/frame/asm/ITypedef_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 8.00.0603 */ -/* at Fri Aug 09 20:55:08 2024 +/* at Mon Nov 11 09:02:40 2024 */ /* Compiler settings for ITypedef.idl: Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 diff --git a/client/3rd/include/frame/com/ObjPtr.h b/client/3rd/include/frame/com/ObjPtr.h index 5c0e6d7..9a3d1ff 100755 --- a/client/3rd/include/frame/com/ObjPtr.h +++ b/client/3rd/include/frame/com/ObjPtr.h @@ -37,22 +37,14 @@ template class CObjPtr { public: - CObjPtr(T *v = NULL, bool iAddref = true) + CObjPtr(T *v = NULL, bool addref = true) { p = v; - if( p && iAddref ) + if( p && addref ) { p->AddRef(); } } - CObjPtr(bool unused, IUnknown *v) - { - if(!v || - v->QueryInterface(__uuidof(T), (void**)&p) != S_OK ) - { - p = NULL; - } - } CObjPtr(const CObjPtr &v) { p = v.p; @@ -70,13 +62,14 @@ class CObjPtr } public: - void Attach(T *v) throw() + T *Attach(T *v) throw() { if( p ) { p->Release(); } p = v; + return p; } // Detach the interface (does not Release) T *Detach() @@ -103,12 +96,6 @@ class CObjPtr } } - template - C Docast() - { - return static_cast(p); - } - void Swap(CObjPtr &v) { T* t = p; p = v.p; v.p = t; @@ -139,12 +126,12 @@ class CObjPtr { return p == v; } - T *operator->() const throw() + T *operator->() const throw() { return p; } - T *operator=(T *v) throw() + T *operator=(T *v) throw() { if( p ) { @@ -154,7 +141,7 @@ class CObjPtr p = v; if( p ) p->AddRef(); return p; } - T *operator=(const CObjPtr &v) throw() + T *operator=(const CObjPtr &v) throw() { if( p ) { diff --git a/client/3rd/include/frame/com/Unknown.h b/client/3rd/include/frame/com/Unknown.h index 3150155..97d070d 100755 --- a/client/3rd/include/frame/com/Unknown.h +++ b/client/3rd/include/frame/com/Unknown.h @@ -67,7 +67,7 @@ class CSingleThreadModelObject ULONG UnknownRelease(); template - T *DoCast(bool iAddRef = false ) { + T *Cast(bool iAddRef = false ) { if( iAddRef ) UnknownAddRef(); return dynamic_cast(this); } @@ -90,7 +90,7 @@ class CMultiThreadModelObject ULONG UnknownRelease(); template - T *DoCast(bool iAddRef = false ) { + T *Cast(bool iAddRef = false ) { if( iAddRef ) UnknownAddRef(); return dynamic_cast(this); } diff --git a/client/3rd/include/frame/jvm/JniProxy.h b/client/3rd/include/frame/jvm/JniProxy.h index e1911ed..ca819c4 100755 --- a/client/3rd/include/frame/jvm/JniProxy.h +++ b/client/3rd/include/frame/jvm/JniProxy.h @@ -48,8 +48,12 @@ extern "C" { NAMESPACE_BEGIN(jvm) ///////////////////////////////////////////////////////////////////// -IScriptHost *GetScriptHost( /*[in ]*/JNIEnv *env ); -jobject Bind( /*[in ]*/JNIEnv *env, /*[in ]*/IUnknown* object, jboolean need_java_release = JNI_FALSE ); +IScriptHost *GetScriptHost( /*[in ]*/JNIEnv *env ); //get from CInstanceManager.getNativeObject + +//objectӦjava +//1.addref_for_jvm=trueʾʱҪjavareleaseͷc +//2.auto_bindc_jvm=trueʾSObject.Setjava +jobject Create( /*[in ]*/JNIEnv *env, /*[in ]*/IUnknown *object, /*[in ]*/const char *name, /*[in ]*/bool addref_for_jvm = false, /*[in ]*/bool auto_bindc_jvm = false ); ///////////////////////////////////////////////////////////////////// NAMESPACE_END(jvm) diff --git a/client/3rd/include/frame/lua/JniProxy.h b/client/3rd/include/frame/lua/JniProxy.h index 5d633a7..17aba02 100755 --- a/client/3rd/include/frame/lua/JniProxy.h +++ b/client/3rd/include/frame/lua/JniProxy.h @@ -52,8 +52,11 @@ extern "C" { NAMESPACE_BEGIN(lua) ///////////////////////////////////////////////////////////////////// -IScriptHost *GetScriptHost( /*[in ]*/lua_State *pState ); -bool Push( /*[in ]*/lua_State *pState, /*[in ]*/IUnknown* object ); //remark: 仅在栈顶生成对应lua对象, 不用时需要release才能释放c对象 +IScriptHost *GetScriptHost( /*[in ]*/lua_State *pState ); //get from sys.xvmhost + +//仅在栈顶生成object对应的lua对象 +//1.addref_for_lua=true表示在lua端持有相应c对象的应用技术器 +bool Create( /*[in ]*/lua_State *pState, /*[in ]*/IUnknown *object, /*[in ]*/const char *name, /*[in ]*/bool addref_for_lua = false ); ///////////////////////////////////////////////////////////////////// NAMESPACE_END(lua) diff --git a/client/3rd/include/frame/lua/LuaTinker.h b/client/3rd/include/frame/lua/LuaTinker.h index d5404ed..efa8d02 100755 --- a/client/3rd/include/frame/lua/LuaTinker.h +++ b/client/3rd/include/frame/lua/LuaTinker.h @@ -87,29 +87,29 @@ namespace lua // 判断是否是对象 template struct is_obj { static const bool value = true; }; - template<> struct is_obj < char > { static const bool value = false; }; + template<> struct is_obj < char > { static const bool value = false; }; template<> struct is_obj < unsigned char > { static const bool value = false; }; - template<> struct is_obj < char* > { static const bool value = false; }; + template<> struct is_obj < char* > { static const bool value = false; }; template<> struct is_obj < const char* > { static const bool value = false; }; - template<> struct is_obj < bool > { static const bool value = false; }; - template<> struct is_obj < float > { static const bool value = false; }; - template<> struct is_obj < double > { static const bool value = false; }; - template<> struct is_obj < table > { static const bool value = false; }; - - template<> struct is_obj < int16_t > { static const bool value = false; }; - template<> struct is_obj < uint16_t > { static const bool value = false; }; - template<> struct is_obj < int32_t > { static const bool value = false; }; - template<> struct is_obj < uint32_t > { static const bool value = false; }; - template<> struct is_obj < int64_t > { static const bool value = false; }; - template<> struct is_obj < uint64_t > { static const bool value = false; }; + template<> struct is_obj < bool > { static const bool value = false; }; + template<> struct is_obj < float > { static const bool value = false; }; + template<> struct is_obj < double > { static const bool value = false; }; + template<> struct is_obj < table > { static const bool value = false; }; + + template<> struct is_obj < int16_t > { static const bool value = false; }; + template<> struct is_obj < uint16_t > { static const bool value = false; }; + template<> struct is_obj < int32_t > { static const bool value = false; }; + template<> struct is_obj < uint32_t > { static const bool value = false; }; + template<> struct is_obj < int64_t > { static const bool value = false; }; + template<> struct is_obj < uint64_t > { static const bool value = false; }; #ifdef _WIN32 - template<> struct is_obj < HANDLE > { static const bool value = false; }; - template<> struct is_obj < HWND > { static const bool value = false; }; - template<> struct is_obj < HMENU > { static const bool value = false; }; - template<> struct is_obj < HDC > { static const bool value = false; }; - template<> struct is_obj < HICON > { static const bool value = false; }; - template<> struct is_obj < HBITMAP > { static const bool value = false; }; + template<> struct is_obj < HANDLE > { static const bool value = false; }; + template<> struct is_obj < HWND > { static const bool value = false; }; + template<> struct is_obj < HMENU > { static const bool value = false; }; + template<> struct is_obj < HDC > { static const bool value = false; }; + template<> struct is_obj < HICON > { static const bool value = false; }; + template<> struct is_obj < HBITMAP > { static const bool value = false; }; template<> struct is_obj < HINSTANCE > { static const bool value = false; }; #endif ///////////////////////////////// @@ -184,17 +184,14 @@ namespace lua // 存储指针的类 struct user { - user ( void* p ) : m_p ( p ) + user ( void* t ) : p ( t ) { } virtual ~user ( ) { } - - template - T *docast() { return (T*)m_p;} - void* m_p; + void* p; }; // 将lua栈上索引的userdata转换为T T* T& @@ -222,7 +219,7 @@ namespace lua lua_pushstring ( L, "no class at first argument. (forgot ':' expression ?)" ); lua_error ( L ); } - return void2type::invoke ( user2type::invoke ( L, index )->m_p ); + return void2type::invoke ( user2type::invoke ( L, index )->p ); } }; @@ -258,7 +255,7 @@ namespace lua val2user ( T1 t1, T2 t2, T3 t3, T4 t4, T5 t5 ) : user ( new T ( t1, t2, t3, t4, t5 ) ) {} // 只有lua调用new在C++堆上分配内存才会被__gc - virtual ~val2user ( ) { delete ( ( T* ) m_p ); } + virtual ~val2user ( ) { delete ( ( T* ) p ); } }; // ref转化到user diff --git a/client/3rd/include/frame/net/Utility.h b/client/3rd/include/frame/net/Utility.h index 3de9f6b..356c918 100755 --- a/client/3rd/include/frame/net/Utility.h +++ b/client/3rd/include/frame/net/Utility.h @@ -72,7 +72,7 @@ class CPortAllocator_simple : public CAsynMessageEvents_base } protected: - PORT m_nMinPort, m_nMaxPort; //range + PORT m_nMinPort, m_nMaxPort; //port range PORT m_next; }; diff --git a/client/src/setting.h b/client/3rd/include/frame/python/JniProxy.h similarity index 54% rename from client/src/setting.h rename to client/3rd/include/frame/python/JniProxy.h index edd4c23..fefcaf1 100755 --- a/client/src/setting.h +++ b/client/3rd/include/frame/python/JniProxy.h @@ -1,11 +1,11 @@ -////////////////////////////////////////////////////////////////////// -#if !defined(AFX_SETTING_H__C98615AD_6DF5_4F69_92AE_BE46B4D3DDFF__INCLUDED_) -#define AFX_SETTING_H__C98615AD_6DF5_4F69_92AE_BE46B4D3DDFF__INCLUDED_ +/////////////////////////////////////////////////////////////////////////////// +#if !defined(AFX_PROXY_PYTHON_H__8A503072_4124_4233_9BEF_3671D8669695__INCLUDED_) +#define AFX_PROXY_PYTHON_H__8A503072_4124_4233_9BEF_3671D8669695__INCLUDED_ /***************************************************************************** Copyright (c) netsecsp 2012-2032, All rights reserved. -Author: Shengqian Yang, netsecsp@hotmail.com, China, last updated 01/15/2024 -http://aftpx.sf.net +Developer: Shengqian Yang, from China, E-mail: netsecsp@hotmail.com, last updated 01/15/2024 +http://asynframe.sf.net Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -36,32 +36,28 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #pragma once #endif // _MSC_VER > 1000 -#pragma warning(disable:4786) -#include -#include -#include - -class setting -{ -public: - setting(const std::string &filename); - - std::string get_string(const std::string §ion, const std::string &entry, const std::string &default_str = "" ); - void set_string(const std::string §ion, const std::string &entry, const std::string &value); - - long get_long(const std::string §ion, const std::string &entry, long default_long = 0); - void set_long(const std::string §ion, const std::string &entry, long value ); - - bool get_bool(const std::string §ion, const std::string &entry, bool default_bool = 0); - void set_bool(const std::string §ion, const std::string &entry, bool value ); - - bool is_exist(const std::string §ion, const std::string &entry); - -public: - std::set m_sections; - -private: - std::map m_key2vals; -}; - -#endif // !defined(AFX_SETTING_H__C98615AD_6DF5_4F69_92AE_BE46B4D3DDFF__INCLUDED_) \ No newline at end of file +#ifdef __cplusplus +extern "C" { +#endif +#define PY_SSIZE_T_CLEAN /* Make "s#" use Py_ssize_t rather than int. */ +#include "python.h" +#ifdef __cplusplus +} +#endif +#include "PyPtr.h" +#include "../AsynCore.h" +#include "../asm/IScriptHost.h" +NAMESPACE_BEGIN(python) + +///////////////////////////////////////////////////////////////////// +IScriptHost *GetScriptHost( void ); //get from sys.xvmhost + +//生成object对应的python对象 +//1.addref_for_python=true表示在python端持有c对象的引用计数器 +//2.auto_bindc_python=true表示调用SObject.Set绑定python对象 +PyObject *Create( /*[in ]*/IUnknown *object, /*[in ]*/const char *name, /*[in ]*/PyObject *module, /*[in ]*/bool addref_for_python = false, /*[in ]*/bool auto_bindc_python = false ); +///////////////////////////////////////////////////////////////////// + +NAMESPACE_END(python) + +#endif // !defined(AFX_PROXY_PYTHON_H__8A503072_4124_4233_9BEF_3671D8669695__INCLUDED_) diff --git a/client/3rd/include/frame/python/PyPtr.h b/client/3rd/include/frame/python/PyPtr.h new file mode 100755 index 0000000..b9256af --- /dev/null +++ b/client/3rd/include/frame/python/PyPtr.h @@ -0,0 +1,131 @@ +#if !defined(AFX_PYPTR_H__851C326A_2624_4852_9D04_1C02CA7859EB__INCLUDED_) +#define AFX_PYPTR_H__851C326A_2624_4852_9D04_1C02CA7859EB__INCLUDED_ +/***************************************************************************** +Copyright (c) netsecsp 2012-2032, All rights reserved. + +Developer: Shengqian Yang, from China, E-mail: netsecsp@hotmail.com, last updated 01/15/2024 +http://asynframe.sf.net + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the +above copyright notice, this list of conditions +and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*****************************************************************************/ +class CPyPtr +{ +public: + CPyPtr(PyObject *v = NULL, bool addref = true) + { + p = v; + if( p && addref ) + { + Py_INCREF(p); + } + } + CPyPtr(const CPyPtr &v) + { + p = v.p; + Py_XINCREF(p); + } + ~CPyPtr() throw() + { + Py_XDECREF(p); + } + +public: + PyObject *Attach(PyObject *v) throw() + { + Py_XDECREF(p); + p = v; + return p; + } + // Detach the interface (does not Release) + PyObject *Detach() + { + PyObject *t = p; + p = NULL; + return t; + } + + PyObject *AddRef() + { + if( p ) + { + Py_INCREF(p); + } + return p; + } + void Releae() + { + if( p ) + { + Py_DECREF(p); + p = NULL; + } + } + + void Swap(CPyPtr &v) + { + PyObject* t = p; p = v.p; v.p = t; + } + +public: + operator PyObject *() const throw() + { + return p; + } + bool operator==(PyObject *v) const throw() + { + return p == v; + } + PyObject *operator->() const throw() + { + return p; + } + + PyObject *operator=(PyObject *v) throw() + { + if( p ) + { + Py_DECREF(p); + } + + p = v; Py_XINCREF(p); + return p; + } + PyObject *operator=(const CPyPtr &v) throw() + { + if( p ) + { + Py_DECREF(p); + } + + p = v.p; Py_XINCREF(p); + return p; + } + +public: + PyObject *p; +}; + +#endif //AFX_PYPTR_H__851C326A_2624_4852_9D04_1C02CA7859EB__INCLUDED_ \ No newline at end of file diff --git a/client/3rd/include/frame/python/Python-ast.h b/client/3rd/include/frame/python/Python-ast.h new file mode 100755 index 0000000..5fe4f2b --- /dev/null +++ b/client/3rd/include/frame/python/Python-ast.h @@ -0,0 +1,715 @@ +/* File automatically generated by Parser/asdl_c.py. */ + +#ifndef Py_PYTHON_AST_H +#define Py_PYTHON_AST_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "asdl.h" + +#undef Yield /* undefine macro conflicting with */ + +typedef struct _mod *mod_ty; + +typedef struct _stmt *stmt_ty; + +typedef struct _expr *expr_ty; + +typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5, + Param=6 } expr_context_ty; + +typedef struct _slice *slice_ty; + +typedef enum _boolop { And=1, Or=2 } boolop_ty; + +typedef enum _operator { Add=1, Sub=2, Mult=3, MatMult=4, Div=5, Mod=6, Pow=7, + LShift=8, RShift=9, BitOr=10, BitXor=11, BitAnd=12, + FloorDiv=13 } operator_ty; + +typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty; + +typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8, + In=9, NotIn=10 } cmpop_ty; + +typedef struct _comprehension *comprehension_ty; + +typedef struct _excepthandler *excepthandler_ty; + +typedef struct _arguments *arguments_ty; + +typedef struct _arg *arg_ty; + +typedef struct _keyword *keyword_ty; + +typedef struct _alias *alias_ty; + +typedef struct _withitem *withitem_ty; + +typedef struct _type_ignore *type_ignore_ty; + + +enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3, + FunctionType_kind=4, Suite_kind=5}; +struct _mod { + enum _mod_kind kind; + union { + struct { + asdl_seq *body; + asdl_seq *type_ignores; + } Module; + + struct { + asdl_seq *body; + } Interactive; + + struct { + expr_ty body; + } Expression; + + struct { + asdl_seq *argtypes; + expr_ty returns; + } FunctionType; + + struct { + asdl_seq *body; + } Suite; + + } v; +}; + +enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3, + Return_kind=4, Delete_kind=5, Assign_kind=6, + AugAssign_kind=7, AnnAssign_kind=8, For_kind=9, + AsyncFor_kind=10, While_kind=11, If_kind=12, With_kind=13, + AsyncWith_kind=14, Raise_kind=15, Try_kind=16, + Assert_kind=17, Import_kind=18, ImportFrom_kind=19, + Global_kind=20, Nonlocal_kind=21, Expr_kind=22, Pass_kind=23, + Break_kind=24, Continue_kind=25}; +struct _stmt { + enum _stmt_kind kind; + union { + struct { + identifier name; + arguments_ty args; + asdl_seq *body; + asdl_seq *decorator_list; + expr_ty returns; + string type_comment; + } FunctionDef; + + struct { + identifier name; + arguments_ty args; + asdl_seq *body; + asdl_seq *decorator_list; + expr_ty returns; + string type_comment; + } AsyncFunctionDef; + + struct { + identifier name; + asdl_seq *bases; + asdl_seq *keywords; + asdl_seq *body; + asdl_seq *decorator_list; + } ClassDef; + + struct { + expr_ty value; + } Return; + + struct { + asdl_seq *targets; + } Delete; + + struct { + asdl_seq *targets; + expr_ty value; + string type_comment; + } Assign; + + struct { + expr_ty target; + operator_ty op; + expr_ty value; + } AugAssign; + + struct { + expr_ty target; + expr_ty annotation; + expr_ty value; + int simple; + } AnnAssign; + + struct { + expr_ty target; + expr_ty iter; + asdl_seq *body; + asdl_seq *orelse; + string type_comment; + } For; + + struct { + expr_ty target; + expr_ty iter; + asdl_seq *body; + asdl_seq *orelse; + string type_comment; + } AsyncFor; + + struct { + expr_ty test; + asdl_seq *body; + asdl_seq *orelse; + } While; + + struct { + expr_ty test; + asdl_seq *body; + asdl_seq *orelse; + } If; + + struct { + asdl_seq *items; + asdl_seq *body; + string type_comment; + } With; + + struct { + asdl_seq *items; + asdl_seq *body; + string type_comment; + } AsyncWith; + + struct { + expr_ty exc; + expr_ty cause; + } Raise; + + struct { + asdl_seq *body; + asdl_seq *handlers; + asdl_seq *orelse; + asdl_seq *finalbody; + } Try; + + struct { + expr_ty test; + expr_ty msg; + } Assert; + + struct { + asdl_seq *names; + } Import; + + struct { + identifier module; + asdl_seq *names; + int level; + } ImportFrom; + + struct { + asdl_seq *names; + } Global; + + struct { + asdl_seq *names; + } Nonlocal; + + struct { + expr_ty value; + } Expr; + + } v; + int lineno; + int col_offset; + int end_lineno; + int end_col_offset; +}; + +enum _expr_kind {BoolOp_kind=1, NamedExpr_kind=2, BinOp_kind=3, UnaryOp_kind=4, + Lambda_kind=5, IfExp_kind=6, Dict_kind=7, Set_kind=8, + ListComp_kind=9, SetComp_kind=10, DictComp_kind=11, + GeneratorExp_kind=12, Await_kind=13, Yield_kind=14, + YieldFrom_kind=15, Compare_kind=16, Call_kind=17, + FormattedValue_kind=18, JoinedStr_kind=19, Constant_kind=20, + Attribute_kind=21, Subscript_kind=22, Starred_kind=23, + Name_kind=24, List_kind=25, Tuple_kind=26}; +struct _expr { + enum _expr_kind kind; + union { + struct { + boolop_ty op; + asdl_seq *values; + } BoolOp; + + struct { + expr_ty target; + expr_ty value; + } NamedExpr; + + struct { + expr_ty left; + operator_ty op; + expr_ty right; + } BinOp; + + struct { + unaryop_ty op; + expr_ty operand; + } UnaryOp; + + struct { + arguments_ty args; + expr_ty body; + } Lambda; + + struct { + expr_ty test; + expr_ty body; + expr_ty orelse; + } IfExp; + + struct { + asdl_seq *keys; + asdl_seq *values; + } Dict; + + struct { + asdl_seq *elts; + } Set; + + struct { + expr_ty elt; + asdl_seq *generators; + } ListComp; + + struct { + expr_ty elt; + asdl_seq *generators; + } SetComp; + + struct { + expr_ty key; + expr_ty value; + asdl_seq *generators; + } DictComp; + + struct { + expr_ty elt; + asdl_seq *generators; + } GeneratorExp; + + struct { + expr_ty value; + } Await; + + struct { + expr_ty value; + } Yield; + + struct { + expr_ty value; + } YieldFrom; + + struct { + expr_ty left; + asdl_int_seq *ops; + asdl_seq *comparators; + } Compare; + + struct { + expr_ty func; + asdl_seq *args; + asdl_seq *keywords; + } Call; + + struct { + expr_ty value; + int conversion; + expr_ty format_spec; + } FormattedValue; + + struct { + asdl_seq *values; + } JoinedStr; + + struct { + constant value; + string kind; + } Constant; + + struct { + expr_ty value; + identifier attr; + expr_context_ty ctx; + } Attribute; + + struct { + expr_ty value; + slice_ty slice; + expr_context_ty ctx; + } Subscript; + + struct { + expr_ty value; + expr_context_ty ctx; + } Starred; + + struct { + identifier id; + expr_context_ty ctx; + } Name; + + struct { + asdl_seq *elts; + expr_context_ty ctx; + } List; + + struct { + asdl_seq *elts; + expr_context_ty ctx; + } Tuple; + + } v; + int lineno; + int col_offset; + int end_lineno; + int end_col_offset; +}; + +enum _slice_kind {Slice_kind=1, ExtSlice_kind=2, Index_kind=3}; +struct _slice { + enum _slice_kind kind; + union { + struct { + expr_ty lower; + expr_ty upper; + expr_ty step; + } Slice; + + struct { + asdl_seq *dims; + } ExtSlice; + + struct { + expr_ty value; + } Index; + + } v; +}; + +struct _comprehension { + expr_ty target; + expr_ty iter; + asdl_seq *ifs; + int is_async; +}; + +enum _excepthandler_kind {ExceptHandler_kind=1}; +struct _excepthandler { + enum _excepthandler_kind kind; + union { + struct { + expr_ty type; + identifier name; + asdl_seq *body; + } ExceptHandler; + + } v; + int lineno; + int col_offset; + int end_lineno; + int end_col_offset; +}; + +struct _arguments { + asdl_seq *posonlyargs; + asdl_seq *args; + arg_ty vararg; + asdl_seq *kwonlyargs; + asdl_seq *kw_defaults; + arg_ty kwarg; + asdl_seq *defaults; +}; + +struct _arg { + identifier arg; + expr_ty annotation; + string type_comment; + int lineno; + int col_offset; + int end_lineno; + int end_col_offset; +}; + +struct _keyword { + identifier arg; + expr_ty value; +}; + +struct _alias { + identifier name; + identifier asname; +}; + +struct _withitem { + expr_ty context_expr; + expr_ty optional_vars; +}; + +enum _type_ignore_kind {TypeIgnore_kind=1}; +struct _type_ignore { + enum _type_ignore_kind kind; + union { + struct { + int lineno; + string tag; + } TypeIgnore; + + } v; +}; + + +// Note: these macros affect function definitions, not only call sites. +#define Module(a0, a1, a2) _Py_Module(a0, a1, a2) +mod_ty _Py_Module(asdl_seq * body, asdl_seq * type_ignores, PyArena *arena); +#define Interactive(a0, a1) _Py_Interactive(a0, a1) +mod_ty _Py_Interactive(asdl_seq * body, PyArena *arena); +#define Expression(a0, a1) _Py_Expression(a0, a1) +mod_ty _Py_Expression(expr_ty body, PyArena *arena); +#define FunctionType(a0, a1, a2) _Py_FunctionType(a0, a1, a2) +mod_ty _Py_FunctionType(asdl_seq * argtypes, expr_ty returns, PyArena *arena); +#define Suite(a0, a1) _Py_Suite(a0, a1) +mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); +#define FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) +stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, + asdl_seq * decorator_list, expr_ty returns, string + type_comment, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) _Py_AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) +stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq * + body, asdl_seq * decorator_list, expr_ty returns, + string type_comment, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena + *arena); +#define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) +stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, + asdl_seq * body, asdl_seq * decorator_list, int lineno, + int col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define Return(a0, a1, a2, a3, a4, a5) _Py_Return(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena); +#define Delete(a0, a1, a2, a3, a4, a5) _Py_Delete(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Delete(asdl_seq * targets, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Assign(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Assign(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_Assign(asdl_seq * targets, expr_ty value, string type_comment, int + lineno, int col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define AugAssign(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AugAssign(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int + lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define AnnAssign(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_AnnAssign(a0, a1, a2, a3, a4, a5, a6, a7, a8) +stmt_ty _Py_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int + simple, int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_For(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) +stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * + orelse, string type_comment, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) +stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * + orelse, string type_comment, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena *arena); +#define While(a0, a1, a2, a3, a4, a5, a6, a7) _Py_While(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, + int col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define If(a0, a1, a2, a3, a4, a5, a6, a7) _Py_If(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, + int col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define With(a0, a1, a2, a3, a4, a5, a6, a7) _Py_With(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_With(asdl_seq * items, asdl_seq * body, string type_comment, int + lineno, int col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncWith(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_AsyncWith(asdl_seq * items, asdl_seq * body, string type_comment, + int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Raise(a0, a1, a2, a3, a4, a5, a6) _Py_Raise(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Try(a0, a1, a2, a3, a4, a5, a6, a7, a8) _Py_Try(a0, a1, a2, a3, a4, a5, a6, a7, a8) +stmt_ty _Py_Try(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, + asdl_seq * finalbody, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Assert(a0, a1, a2, a3, a4, a5, a6) _Py_Assert(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Import(a0, a1, a2, a3, a4, a5) _Py_Import(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Import(asdl_seq * names, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ImportFrom(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_ImportFrom(identifier module, asdl_seq * names, int level, int + lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Global(a0, a1, a2, a3, a4, a5) _Py_Global(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Global(asdl_seq * names, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Nonlocal(a0, a1, a2, a3, a4, a5) _Py_Nonlocal(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Nonlocal(asdl_seq * names, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Expr(a0, a1, a2, a3, a4, a5) _Py_Expr(a0, a1, a2, a3, a4, a5) +stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Pass(a0, a1, a2, a3, a4) _Py_Pass(a0, a1, a2, a3, a4) +stmt_ty _Py_Pass(int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Break(a0, a1, a2, a3, a4) _Py_Break(a0, a1, a2, a3, a4) +stmt_ty _Py_Break(int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Continue(a0, a1, a2, a3, a4) _Py_Continue(a0, a1, a2, a3, a4) +stmt_ty _Py_Continue(int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define BoolOp(a0, a1, a2, a3, a4, a5, a6) _Py_BoolOp(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena *arena); +#define NamedExpr(a0, a1, a2, a3, a4, a5, a6) _Py_NamedExpr(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_NamedExpr(expr_ty target, expr_ty value, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define BinOp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_BinOp(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define UnaryOp(a0, a1, a2, a3, a4, a5, a6) _Py_UnaryOp(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena *arena); +#define Lambda(a0, a1, a2, a3, a4, a5, a6) _Py_Lambda(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena *arena); +#define IfExp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_IfExp(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define Dict(a0, a1, a2, a3, a4, a5, a6) _Py_Dict(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define Set(a0, a1, a2, a3, a4, a5) _Py_Set(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena); +#define ListComp(a0, a1, a2, a3, a4, a5, a6) _Py_ListComp(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define SetComp(a0, a1, a2, a3, a4, a5, a6) _Py_SetComp(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define DictComp(a0, a1, a2, a3, a4, a5, a6, a7) _Py_DictComp(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int + lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define GeneratorExp(a0, a1, a2, a3, a4, a5, a6) _Py_GeneratorExp(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define Await(a0, a1, a2, a3, a4, a5) _Py_Await(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena); +#define Yield(a0, a1, a2, a3, a4, a5) _Py_Yield(a0, a1, a2, a3, a4, a5) +expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena); +#define YieldFrom(a0, a1, a2, a3, a4, a5) _Py_YieldFrom(a0, a1, a2, a3, a4, a5) +expr_ty _Py_YieldFrom(expr_ty value, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Compare(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Compare(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, + int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Call(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Call(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int + lineno, int col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define FormattedValue(a0, a1, a2, a3, a4, a5, a6, a7) _Py_FormattedValue(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_FormattedValue(expr_ty value, int conversion, expr_ty format_spec, + int lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define JoinedStr(a0, a1, a2, a3, a4, a5) _Py_JoinedStr(a0, a1, a2, a3, a4, a5) +expr_ty _Py_JoinedStr(asdl_seq * values, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena *arena); +#define Constant(a0, a1, a2, a3, a4, a5, a6) _Py_Constant(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Constant(constant value, string kind, int lineno, int col_offset, + int end_lineno, int end_col_offset, PyArena *arena); +#define Attribute(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Attribute(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int + lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Subscript(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Subscript(a0, a1, a2, a3, a4, a5, a6, a7) +expr_ty _Py_Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int + lineno, int col_offset, int end_lineno, int + end_col_offset, PyArena *arena); +#define Starred(a0, a1, a2, a3, a4, a5, a6) _Py_Starred(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Starred(expr_ty value, expr_context_ty ctx, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define Name(a0, a1, a2, a3, a4, a5, a6) _Py_Name(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Name(identifier id, expr_context_ty ctx, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define List(a0, a1, a2, a3, a4, a5, a6) _Py_List(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_List(asdl_seq * elts, expr_context_ty ctx, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define Tuple(a0, a1, a2, a3, a4, a5, a6) _Py_Tuple(a0, a1, a2, a3, a4, a5, a6) +expr_ty _Py_Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int + col_offset, int end_lineno, int end_col_offset, PyArena + *arena); +#define Slice(a0, a1, a2, a3) _Py_Slice(a0, a1, a2, a3) +slice_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena); +#define ExtSlice(a0, a1) _Py_ExtSlice(a0, a1) +slice_ty _Py_ExtSlice(asdl_seq * dims, PyArena *arena); +#define Index(a0, a1) _Py_Index(a0, a1) +slice_ty _Py_Index(expr_ty value, PyArena *arena); +#define comprehension(a0, a1, a2, a3, a4) _Py_comprehension(a0, a1, a2, a3, a4) +comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_seq * + ifs, int is_async, PyArena *arena); +#define ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5, a6, a7) +excepthandler_ty _Py_ExceptHandler(expr_ty type, identifier name, asdl_seq * + body, int lineno, int col_offset, int + end_lineno, int end_col_offset, PyArena + *arena); +#define arguments(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arguments(a0, a1, a2, a3, a4, a5, a6, a7) +arguments_ty _Py_arguments(asdl_seq * posonlyargs, asdl_seq * args, arg_ty + vararg, asdl_seq * kwonlyargs, asdl_seq * + kw_defaults, arg_ty kwarg, asdl_seq * defaults, + PyArena *arena); +#define arg(a0, a1, a2, a3, a4, a5, a6, a7) _Py_arg(a0, a1, a2, a3, a4, a5, a6, a7) +arg_ty _Py_arg(identifier arg, expr_ty annotation, string type_comment, int + lineno, int col_offset, int end_lineno, int end_col_offset, + PyArena *arena); +#define keyword(a0, a1, a2) _Py_keyword(a0, a1, a2) +keyword_ty _Py_keyword(identifier arg, expr_ty value, PyArena *arena); +#define alias(a0, a1, a2) _Py_alias(a0, a1, a2) +alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena); +#define withitem(a0, a1, a2) _Py_withitem(a0, a1, a2) +withitem_ty _Py_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena + *arena); +#define TypeIgnore(a0, a1, a2) _Py_TypeIgnore(a0, a1, a2) +type_ignore_ty _Py_TypeIgnore(int lineno, string tag, PyArena *arena); + +PyObject* PyAST_mod2obj(mod_ty t); +mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode); +int PyAST_Check(PyObject* obj); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PYTHON_AST_H */ diff --git a/client/3rd/include/frame/python/Python.h b/client/3rd/include/frame/python/Python.h new file mode 100755 index 0000000..d6e5b13 --- /dev/null +++ b/client/3rd/include/frame/python/Python.h @@ -0,0 +1,160 @@ +#ifndef Py_PYTHON_H +#define Py_PYTHON_H +/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */ + +/* Include nearly all Python header files */ + +#include "patchlevel.h" +#include "pyconfig.h" +#include "pymacconfig.h" + +#include + +#ifndef UCHAR_MAX +#error "Something's broken. UCHAR_MAX should be defined in limits.h." +#endif + +#if UCHAR_MAX != 255 +#error "Python's source code assumes C's unsigned char is an 8-bit type." +#endif + +#if defined(__sgi) && !defined(_SGI_MP_SOURCE) +#define _SGI_MP_SOURCE +#endif + +#include +#ifndef NULL +# error "Python.h requires that stdio.h define NULL." +#endif + +#include +#ifdef HAVE_ERRNO_H +#include +#endif +#include +#ifndef MS_WINDOWS +#include +#endif +#ifdef HAVE_CRYPT_H +#if defined(HAVE_CRYPT_R) && !defined(_GNU_SOURCE) +/* Required for glibc to expose the crypt_r() function prototype. */ +# define _GNU_SOURCE +# define _Py_GNU_SOURCE_FOR_CRYPT +#endif +#include +#ifdef _Py_GNU_SOURCE_FOR_CRYPT +/* Don't leak the _GNU_SOURCE define to other headers. */ +# undef _GNU_SOURCE +# undef _Py_GNU_SOURCE_FOR_CRYPT +#endif +#endif + +/* For size_t? */ +#ifdef HAVE_STDDEF_H +#include +#endif + +/* CAUTION: Build setups should ensure that NDEBUG is defined on the + * compiler command line when building Python in release mode; else + * assert() calls won't be removed. + */ +#include + +#include "pyport.h" +#include "pymacro.h" + +/* A convenient way for code to know if clang's memory sanitizer is enabled. */ +#if defined(__has_feature) +# if __has_feature(memory_sanitizer) +# if !defined(_Py_MEMORY_SANITIZER) +# define _Py_MEMORY_SANITIZER +# endif +# endif +#endif + +/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG. + * PYMALLOC_DEBUG is in error if pymalloc is not in use. + */ +#if defined(Py_DEBUG) && defined(WITH_PYMALLOC) && !defined(PYMALLOC_DEBUG) +#define PYMALLOC_DEBUG +#endif +#if defined(PYMALLOC_DEBUG) && !defined(WITH_PYMALLOC) +#error "PYMALLOC_DEBUG requires WITH_PYMALLOC" +#endif +#include "pymath.h" +#include "pytime.h" +#include "pymem.h" + +#include "object.h" +#include "objimpl.h" +#include "typeslots.h" +#include "pyhash.h" + +#include "pydebug.h" + +#include "bytearrayobject.h" +#include "bytesobject.h" +#include "unicodeobject.h" +#include "longobject.h" +#include "longintrepr.h" +#include "boolobject.h" +#include "floatobject.h" +#include "complexobject.h" +#include "rangeobject.h" +#include "memoryobject.h" +#include "tupleobject.h" +#include "listobject.h" +#include "dictobject.h" +#include "odictobject.h" +#include "enumobject.h" +#include "setobject.h" +#include "methodobject.h" +#include "moduleobject.h" +#include "funcobject.h" +#include "classobject.h" +#include "fileobject.h" +#include "pycapsule.h" +#include "traceback.h" +#include "sliceobject.h" +#include "cellobject.h" +#include "iterobject.h" +#include "genobject.h" +#include "descrobject.h" +#include "warnings.h" +#include "weakrefobject.h" +#include "structseq.h" +#include "namespaceobject.h" +#include "picklebufobject.h" + +#include "codecs.h" +#include "pyerrors.h" + +#include "cpython/initconfig.h" +#include "pystate.h" +#include "context.h" + +#include "pyarena.h" +#include "modsupport.h" +#include "compile.h" +#include "pythonrun.h" +#include "pylifecycle.h" +#include "ceval.h" +#include "sysmodule.h" +#include "osmodule.h" +#include "intrcheck.h" +#include "import.h" + +#include "abstract.h" +#include "bltinmodule.h" + +#include "eval.h" + +#include "pyctype.h" +#include "pystrtod.h" +#include "pystrcmp.h" +#include "dtoa.h" +#include "fileutils.h" +#include "pyfpe.h" +#include "tracemalloc.h" + +#endif /* !Py_PYTHON_H */ diff --git a/client/3rd/include/frame/python/abstract.h b/client/3rd/include/frame/python/abstract.h new file mode 100755 index 0000000..777fd70 --- /dev/null +++ b/client/3rd/include/frame/python/abstract.h @@ -0,0 +1,844 @@ +/* Abstract Object Interface (many thanks to Jim Fulton) */ + +#ifndef Py_ABSTRACTOBJECT_H +#define Py_ABSTRACTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* === Object Protocol ================================================== */ + +/* Implemented elsewhere: + + int PyObject_Print(PyObject *o, FILE *fp, int flags); + + Print an object 'o' on file 'fp'. Returns -1 on error. The flags argument + is used to enable certain printing options. The only option currently + supported is Py_Print_RAW. + + (What should be said about Py_Print_RAW?). */ + + +/* Implemented elsewhere: + + int PyObject_HasAttrString(PyObject *o, const char *attr_name); + + Returns 1 if object 'o' has the attribute attr_name, and 0 otherwise. + + This is equivalent to the Python expression: hasattr(o,attr_name). + + This function always succeeds. */ + + +/* Implemented elsewhere: + + PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name); + + Retrieve an attributed named attr_name form object o. + Returns the attribute value on success, or NULL on failure. + + This is the equivalent of the Python expression: o.attr_name. */ + + +/* Implemented elsewhere: + + int PyObject_HasAttr(PyObject *o, PyObject *attr_name); + + Returns 1 if o has the attribute attr_name, and 0 otherwise. + + This is equivalent to the Python expression: hasattr(o,attr_name). + + This function always succeeds. */ + +/* Implemented elsewhere: + + PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name); + + Retrieve an attributed named 'attr_name' form object 'o'. + Returns the attribute value on success, or NULL on failure. + + This is the equivalent of the Python expression: o.attr_name. */ + + +/* Implemented elsewhere: + + int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v); + + Set the value of the attribute named attr_name, for object 'o', + to the value 'v'. Raise an exception and return -1 on failure; return 0 on + success. + + This is the equivalent of the Python statement o.attr_name=v. */ + + +/* Implemented elsewhere: + + int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v); + + Set the value of the attribute named attr_name, for object 'o', to the value + 'v'. an exception and return -1 on failure; return 0 on success. + + This is the equivalent of the Python statement o.attr_name=v. */ + +/* Implemented as a macro: + + int PyObject_DelAttrString(PyObject *o, const char *attr_name); + + Delete attribute named attr_name, for object o. Returns + -1 on failure. + + This is the equivalent of the Python statement: del o.attr_name. */ +#define PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A), NULL) + + +/* Implemented as a macro: + + int PyObject_DelAttr(PyObject *o, PyObject *attr_name); + + Delete attribute named attr_name, for object o. Returns -1 + on failure. This is the equivalent of the Python + statement: del o.attr_name. */ +#define PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A), NULL) + + +/* Implemented elsewhere: + + PyObject *PyObject_Repr(PyObject *o); + + Compute the string representation of object 'o'. Returns the + string representation on success, NULL on failure. + + This is the equivalent of the Python expression: repr(o). + + Called by the repr() built-in function. */ + + +/* Implemented elsewhere: + + PyObject *PyObject_Str(PyObject *o); + + Compute the string representation of object, o. Returns the + string representation on success, NULL on failure. + + This is the equivalent of the Python expression: str(o). + + Called by the str() and print() built-in functions. */ + + +/* Declared elsewhere + + PyAPI_FUNC(int) PyCallable_Check(PyObject *o); + + Determine if the object, o, is callable. Return 1 if the object is callable + and 0 otherwise. + + This function always succeeds. */ + + +#ifdef PY_SSIZE_T_CLEAN +# define PyObject_CallFunction _PyObject_CallFunction_SizeT +# define PyObject_CallMethod _PyObject_CallMethod_SizeT +#endif + + +/* Call a callable Python object 'callable' with arguments given by the + tuple 'args' and keywords arguments given by the dictionary 'kwargs'. + + 'args' must not be NULL, use an empty tuple if no arguments are + needed. If no named arguments are needed, 'kwargs' can be NULL. + + This is the equivalent of the Python expression: + callable(*args, **kwargs). */ +PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable, + PyObject *args, PyObject *kwargs); + + +/* Call a callable Python object 'callable', with arguments given by the + tuple 'args'. If no arguments are needed, then 'args' can be NULL. + + Returns the result of the call on success, or NULL on failure. + + This is the equivalent of the Python expression: + callable(*args). */ +PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable, + PyObject *args); + +/* Call a callable Python object, callable, with a variable number of C + arguments. The C arguments are described using a mkvalue-style format + string. + + The format may be NULL, indicating that no arguments are provided. + + Returns the result of the call on success, or NULL on failure. + + This is the equivalent of the Python expression: + callable(arg1, arg2, ...). */ +PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable, + const char *format, ...); + +/* Call the method named 'name' of object 'obj' with a variable number of + C arguments. The C arguments are described by a mkvalue format string. + + The format can be NULL, indicating that no arguments are provided. + + Returns the result of the call on success, or NULL on failure. + + This is the equivalent of the Python expression: + obj.name(arg1, arg2, ...). */ +PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *obj, + const char *name, + const char *format, ...); + +PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable, + const char *format, + ...); + +PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *obj, + const char *name, + const char *format, + ...); + +/* Call a callable Python object 'callable' with a variable number of C + arguments. The C arguments are provided as PyObject* values, terminated + by a NULL. + + Returns the result of the call on success, or NULL on failure. + + This is the equivalent of the Python expression: + callable(arg1, arg2, ...). */ +PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable, + ...); + +/* Call the method named 'name' of object 'obj' with a variable number of + C arguments. The C arguments are provided as PyObject* values, terminated + by NULL. + + Returns the result of the call on success, or NULL on failure. + + This is the equivalent of the Python expression: obj.name(*args). */ + +PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs( + PyObject *obj, + PyObject *name, + ...); + + +/* Implemented elsewhere: + + Py_hash_t PyObject_Hash(PyObject *o); + + Compute and return the hash, hash_value, of an object, o. On + failure, return -1. + + This is the equivalent of the Python expression: hash(o). */ + + +/* Implemented elsewhere: + + int PyObject_IsTrue(PyObject *o); + + Returns 1 if the object, o, is considered to be true, 0 if o is + considered to be false and -1 on failure. + + This is equivalent to the Python expression: not not o. */ + + +/* Implemented elsewhere: + + int PyObject_Not(PyObject *o); + + Returns 0 if the object, o, is considered to be true, 1 if o is + considered to be false and -1 on failure. + + This is equivalent to the Python expression: not o. */ + + +/* Get the type of an object. + + On success, returns a type object corresponding to the object type of object + 'o'. On failure, returns NULL. + + This is equivalent to the Python expression: type(o) */ +PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o); + + +/* Return the size of object 'o'. If the object 'o' provides both sequence and + mapping protocols, the sequence size is returned. + + On error, -1 is returned. + + This is the equivalent to the Python expression: len(o) */ +PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o); + + +/* For DLL compatibility */ +#undef PyObject_Length +PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o); +#define PyObject_Length PyObject_Size + +/* Return element of 'o' corresponding to the object 'key'. Return NULL + on failure. + + This is the equivalent of the Python expression: o[key] */ +PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key); + + +/* Map the object 'key' to the value 'v' into 'o'. + + Raise an exception and return -1 on failure; return 0 on success. + + This is the equivalent of the Python statement: o[key]=v. */ +PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v); + +/* Remove the mapping for the string 'key' from the object 'o'. + Returns -1 on failure. + + This is equivalent to the Python statement: del o[key]. */ +PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, const char *key); + +/* Delete the mapping for the object 'key' from the object 'o'. + Returns -1 on failure. + + This is the equivalent of the Python statement: del o[key]. */ +PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key); + + +/* === Old Buffer API ============================================ */ + +/* FIXME: usage of these should all be replaced in Python itself + but for backwards compatibility we will implement them. + Their usage without a corresponding "unlock" mechanism + may create issues (but they would already be there). */ + +/* Takes an arbitrary object which must support the (character, single segment) + buffer interface and returns a pointer to a read-only memory location + useable as character based input for subsequent processing. + + Return 0 on success. buffer and buffer_len are only set in case no error + occurs. Otherwise, -1 is returned and an exception set. */ +Py_DEPRECATED(3.0) +PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj, + const char **buffer, + Py_ssize_t *buffer_len); + +/* Checks whether an arbitrary object supports the (character, single segment) + buffer interface. + + Returns 1 on success, 0 on failure. */ +Py_DEPRECATED(3.0) PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj); + +/* Same as PyObject_AsCharBuffer() except that this API expects (readable, + single segment) buffer interface and returns a pointer to a read-only memory + location which can contain arbitrary data. + + 0 is returned on success. buffer and buffer_len are only set in case no + error occurs. Otherwise, -1 is returned and an exception set. */ +Py_DEPRECATED(3.0) +PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, + const void **buffer, + Py_ssize_t *buffer_len); + +/* Takes an arbitrary object which must support the (writable, single segment) + buffer interface and returns a pointer to a writable memory location in + buffer of size 'buffer_len'. + + Return 0 on success. buffer and buffer_len are only set in case no error + occurs. Otherwise, -1 is returned and an exception set. */ +Py_DEPRECATED(3.0) +PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj, + void **buffer, + Py_ssize_t *buffer_len); + + +/* === New Buffer API ============================================ */ + +/* Takes an arbitrary object and returns the result of calling + obj.__format__(format_spec). */ +PyAPI_FUNC(PyObject *) PyObject_Format(PyObject *obj, + PyObject *format_spec); + + +/* ==== Iterators ================================================ */ + +/* Takes an object and returns an iterator for it. + This is typically a new iterator but if the argument is an iterator, this + returns itself. */ +PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *); + +/* Returns 1 if the object 'obj' provides iterator protocols, and 0 otherwise. + + This function always succeeds. */ +PyAPI_FUNC(int) PyIter_Check(PyObject *); + +/* Takes an iterator object and calls its tp_iternext slot, + returning the next value. + + If the iterator is exhausted, this returns NULL without setting an + exception. + + NULL with an exception means an error occurred. */ +PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *); + + +/* === Number Protocol ================================================== */ + +/* Returns 1 if the object 'o' provides numeric protocols, and 0 otherwise. + + This function always succeeds. */ +PyAPI_FUNC(int) PyNumber_Check(PyObject *o); + +/* Returns the result of adding o1 and o2, or NULL on failure. + + This is the equivalent of the Python expression: o1 + o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2); + +/* Returns the result of subtracting o2 from o1, or NULL on failure. + + This is the equivalent of the Python expression: o1 - o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2); + +/* Returns the result of multiplying o1 and o2, or NULL on failure. + + This is the equivalent of the Python expression: o1 * o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* This is the equivalent of the Python expression: o1 @ o2. */ +PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); +#endif + +/* Returns the result of dividing o1 by o2 giving an integral result, + or NULL on failure. + + This is the equivalent of the Python expression: o1 // o2. */ +PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2); + +/* Returns the result of dividing o1 by o2 giving a float result, or NULL on + failure. + + This is the equivalent of the Python expression: o1 / o2. */ +PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2); + +/* Returns the remainder of dividing o1 by o2, or NULL on failure. + + This is the equivalent of the Python expression: o1 % o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2); + +/* See the built-in function divmod. + + Returns NULL on failure. + + This is the equivalent of the Python expression: divmod(o1, o2). */ +PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2); + +/* See the built-in function pow. Returns NULL on failure. + + This is the equivalent of the Python expression: pow(o1, o2, o3), + where o3 is optional. */ +PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2, + PyObject *o3); + +/* Returns the negation of o on success, or NULL on failure. + + This is the equivalent of the Python expression: -o. */ +PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o); + +/* Returns the positive of o on success, or NULL on failure. + + This is the equivalent of the Python expression: +o. */ +PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o); + +/* Returns the absolute value of 'o', or NULL on failure. + + This is the equivalent of the Python expression: abs(o). */ +PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o); + +/* Returns the bitwise negation of 'o' on success, or NULL on failure. + + This is the equivalent of the Python expression: ~o. */ +PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o); + +/* Returns the result of left shifting o1 by o2 on success, or NULL on failure. + + This is the equivalent of the Python expression: o1 << o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2); + +/* Returns the result of right shifting o1 by o2 on success, or NULL on + failure. + + This is the equivalent of the Python expression: o1 >> o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2); + +/* Returns the result of bitwise and of o1 and o2 on success, or NULL on + failure. + + This is the equivalent of the Python expression: o1 & o2. */ +PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2); + +/* Returns the bitwise exclusive or of o1 by o2 on success, or NULL on failure. + + This is the equivalent of the Python expression: o1 ^ o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2); + +/* Returns the result of bitwise or on o1 and o2 on success, or NULL on + failure. + + This is the equivalent of the Python expression: o1 | o2. */ +PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2); + +/* Returns 1 if obj is an index integer (has the nb_index slot of the + tp_as_number structure filled in), and 0 otherwise. */ +PyAPI_FUNC(int) PyIndex_Check(PyObject *); + +/* Returns the object 'o' converted to a Python int, or NULL with an exception + raised on failure. */ +PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o); + +/* Returns the object 'o' converted to Py_ssize_t by going through + PyNumber_Index() first. + + If an overflow error occurs while converting the int to Py_ssize_t, then the + second argument 'exc' is the error-type to return. If it is NULL, then the + overflow error is cleared and the value is clipped. */ +PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc); + +/* Returns the object 'o' converted to an integer object on success, or NULL + on failure. + + This is the equivalent of the Python expression: int(o). */ +PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o); + +/* Returns the object 'o' converted to a float object on success, or NULL + on failure. + + This is the equivalent of the Python expression: float(o). */ +PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o); + + +/* --- In-place variants of (some of) the above number protocol functions -- */ + +/* Returns the result of adding o2 to o1, possibly in-place, or NULL + on failure. + + This is the equivalent of the Python expression: o1 += o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2); + +/* Returns the result of subtracting o2 from o1, possibly in-place or + NULL on failure. + + This is the equivalent of the Python expression: o1 -= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2); + +/* Returns the result of multiplying o1 by o2, possibly in-place, or NULL on + failure. + + This is the equivalent of the Python expression: o1 *= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* This is the equivalent of the Python expression: o1 @= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); +#endif + +/* Returns the result of dividing o1 by o2 giving an integral result, possibly + in-place, or NULL on failure. + + This is the equivalent of the Python expression: o1 /= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1, + PyObject *o2); + +/* Returns the result of dividing o1 by o2 giving a float result, possibly + in-place, or null on failure. + + This is the equivalent of the Python expression: o1 /= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1, + PyObject *o2); + +/* Returns the remainder of dividing o1 by o2, possibly in-place, or NULL on + failure. + + This is the equivalent of the Python expression: o1 %= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2); + +/* Returns the result of raising o1 to the power of o2, possibly in-place, + or NULL on failure. + + This is the equivalent of the Python expression: o1 **= o2, + or o1 = pow(o1, o2, o3) if o3 is present. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2, + PyObject *o3); + +/* Returns the result of left shifting o1 by o2, possibly in-place, or NULL + on failure. + + This is the equivalent of the Python expression: o1 <<= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2); + +/* Returns the result of right shifting o1 by o2, possibly in-place or NULL + on failure. + + This is the equivalent of the Python expression: o1 >>= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2); + +/* Returns the result of bitwise and of o1 and o2, possibly in-place, or NULL + on failure. + + This is the equivalent of the Python expression: o1 &= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2); + +/* Returns the bitwise exclusive or of o1 by o2, possibly in-place, or NULL + on failure. + + This is the equivalent of the Python expression: o1 ^= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2); + +/* Returns the result of bitwise or of o1 and o2, possibly in-place, + or NULL on failure. + + This is the equivalent of the Python expression: o1 |= o2. */ +PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2); + +/* Returns the integer n converted to a string with a base, with a base + marker of 0b, 0o or 0x prefixed if applicable. + + If n is not an int object, it is converted with PyNumber_Index first. */ +PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base); + + +/* === Sequence protocol ================================================ */ + +/* Return 1 if the object provides sequence protocol, and zero + otherwise. + + This function always succeeds. */ +PyAPI_FUNC(int) PySequence_Check(PyObject *o); + +/* Return the size of sequence object o, or -1 on failure. */ +PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o); + +/* For DLL compatibility */ +#undef PySequence_Length +PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o); +#define PySequence_Length PySequence_Size + + +/* Return the concatenation of o1 and o2 on success, and NULL on failure. + + This is the equivalent of the Python expression: o1 + o2. */ +PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2); + +/* Return the result of repeating sequence object 'o' 'count' times, + or NULL on failure. + + This is the equivalent of the Python expression: o * count. */ +PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count); + +/* Return the ith element of o, or NULL on failure. + + This is the equivalent of the Python expression: o[i]. */ +PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i); + +/* Return the slice of sequence object o between i1 and i2, or NULL on failure. + + This is the equivalent of the Python expression: o[i1:i2]. */ +PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); + +/* Assign object 'v' to the ith element of the sequence 'o'. Raise an exception + and return -1 on failure; return 0 on success. + + This is the equivalent of the Python statement o[i] = v. */ +PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v); + +/* Delete the 'i'-th element of the sequence 'v'. Returns -1 on failure. + + This is the equivalent of the Python statement: del o[i]. */ +PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i); + +/* Assign the sequence object 'v' to the slice in sequence object 'o', + from 'i1' to 'i2'. Returns -1 on failure. + + This is the equivalent of the Python statement: o[i1:i2] = v. */ +PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, + PyObject *v); + +/* Delete the slice in sequence object 'o' from 'i1' to 'i2'. + Returns -1 on failure. + + This is the equivalent of the Python statement: del o[i1:i2]. */ +PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2); + +/* Returns the sequence 'o' as a tuple on success, and NULL on failure. + + This is equivalent to the Python expression: tuple(o). */ +PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o); + +/* Returns the sequence 'o' as a list on success, and NULL on failure. + This is equivalent to the Python expression: list(o) */ +PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o); + +/* Return the sequence 'o' as a list, unless it's already a tuple or list. + + Use PySequence_Fast_GET_ITEM to access the members of this list, and + PySequence_Fast_GET_SIZE to get its length. + + Returns NULL on failure. If the object does not support iteration, raises a + TypeError exception with 'm' as the message text. */ +PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); + +/* Return the size of the sequence 'o', assuming that 'o' was returned by + PySequence_Fast and is not NULL. */ +#define PySequence_Fast_GET_SIZE(o) \ + (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o)) + +/* Return the 'i'-th element of the sequence 'o', assuming that o was returned + by PySequence_Fast, and that i is within bounds. */ +#define PySequence_Fast_GET_ITEM(o, i)\ + (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i)) + +/* Return a pointer to the underlying item array for + an object retured by PySequence_Fast */ +#define PySequence_Fast_ITEMS(sf) \ + (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \ + : ((PyTupleObject *)(sf))->ob_item) + +/* Return the number of occurrences on value on 'o', that is, return + the number of keys for which o[key] == value. + + On failure, return -1. This is equivalent to the Python expression: + o.count(value). */ +PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value); + +/* Return 1 if 'ob' is in the sequence 'seq'; 0 if 'ob' is not in the sequence + 'seq'; -1 on error. + + Use __contains__ if possible, else _PySequence_IterSearch(). */ +PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob); + +/* For DLL-level backwards compatibility */ +#undef PySequence_In +/* Determine if the sequence 'o' contains 'value'. If an item in 'o' is equal + to 'value', return 1, otherwise return 0. On error, return -1. + + This is equivalent to the Python expression: value in o. */ +PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value); + +/* For source-level backwards compatibility */ +#define PySequence_In PySequence_Contains + + +/* Return the first index for which o[i] == value. + On error, return -1. + + This is equivalent to the Python expression: o.index(value). */ +PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value); + + +/* --- In-place versions of some of the above Sequence functions --- */ + +/* Append sequence 'o2' to sequence 'o1', in-place when possible. Return the + resulting object, which could be 'o1', or NULL on failure. + + This is the equivalent of the Python expression: o1 += o2. */ +PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2); + +/* Repeat sequence 'o' by 'count', in-place when possible. Return the resulting + object, which could be 'o', or NULL on failure. + + This is the equivalent of the Python expression: o1 *= count. */ +PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count); + + +/* === Mapping protocol ================================================= */ + +/* Return 1 if the object provides mapping protocol, and 0 otherwise. + + This function always succeeds. */ +PyAPI_FUNC(int) PyMapping_Check(PyObject *o); + +/* Returns the number of keys in mapping object 'o' on success, and -1 on + failure. This is equivalent to the Python expression: len(o). */ +PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o); + +/* For DLL compatibility */ +#undef PyMapping_Length +PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o); +#define PyMapping_Length PyMapping_Size + + +/* Implemented as a macro: + + int PyMapping_DelItemString(PyObject *o, const char *key); + + Remove the mapping for the string 'key' from the mapping 'o'. Returns -1 on + failure. + + This is equivalent to the Python statement: del o[key]. */ +#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K)) + +/* Implemented as a macro: + + int PyMapping_DelItem(PyObject *o, PyObject *key); + + Remove the mapping for the object 'key' from the mapping object 'o'. + Returns -1 on failure. + + This is equivalent to the Python statement: del o[key]. */ +#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K)) + +/* On success, return 1 if the mapping object 'o' has the key 'key', + and 0 otherwise. + + This is equivalent to the Python expression: key in o. + + This function always succeeds. */ +PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, const char *key); + +/* Return 1 if the mapping object has the key 'key', and 0 otherwise. + + This is equivalent to the Python expression: key in o. + + This function always succeeds. */ +PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key); + +/* On success, return a list or tuple of the keys in mapping object 'o'. + On failure, return NULL. */ +PyAPI_FUNC(PyObject *) PyMapping_Keys(PyObject *o); + +/* On success, return a list or tuple of the values in mapping object 'o'. + On failure, return NULL. */ +PyAPI_FUNC(PyObject *) PyMapping_Values(PyObject *o); + +/* On success, return a list or tuple of the items in mapping object 'o', + where each item is a tuple containing a key-value pair. On failure, return + NULL. */ +PyAPI_FUNC(PyObject *) PyMapping_Items(PyObject *o); + +/* Return element of 'o' corresponding to the string 'key' or NULL on failure. + + This is the equivalent of the Python expression: o[key]. */ +PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, + const char *key); + +/* Map the string 'key' to the value 'v' in the mapping 'o'. + Returns -1 on failure. + + This is the equivalent of the Python statement: o[key]=v. */ +PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, const char *key, + PyObject *value); + +/* isinstance(object, typeorclass) */ +PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass); + +/* issubclass(object, typeorclass) */ +PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass); + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_ABSTRACTOBJECT_H +# include "cpython/abstract.h" +# undef Py_CPYTHON_ABSTRACTOBJECT_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* Py_ABSTRACTOBJECT_H */ diff --git a/client/3rd/include/frame/python/asdl.h b/client/3rd/include/frame/python/asdl.h new file mode 100755 index 0000000..fc6d223 --- /dev/null +++ b/client/3rd/include/frame/python/asdl.h @@ -0,0 +1,46 @@ +#ifndef Py_ASDL_H +#define Py_ASDL_H + +typedef PyObject * identifier; +typedef PyObject * string; +typedef PyObject * bytes; +typedef PyObject * object; +typedef PyObject * singleton; +typedef PyObject * constant; + +/* It would be nice if the code generated by asdl_c.py was completely + independent of Python, but it is a goal the requires too much work + at this stage. So, for example, I'll represent identifiers as + interned Python strings. +*/ + +/* XXX A sequence should be typed so that its use can be typechecked. */ + +typedef struct { + Py_ssize_t size; + void *elements[1]; +} asdl_seq; + +typedef struct { + Py_ssize_t size; + int elements[1]; +} asdl_int_seq; + +asdl_seq *_Py_asdl_seq_new(Py_ssize_t size, PyArena *arena); +asdl_int_seq *_Py_asdl_int_seq_new(Py_ssize_t size, PyArena *arena); + +#define asdl_seq_GET(S, I) (S)->elements[(I)] +#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) +#ifdef Py_DEBUG +#define asdl_seq_SET(S, I, V) \ + do { \ + Py_ssize_t _asdl_i = (I); \ + assert((S) != NULL); \ + assert(0 <= _asdl_i && _asdl_i < (S)->size); \ + (S)->elements[_asdl_i] = (V); \ + } while (0) +#else +#define asdl_seq_SET(S, I, V) (S)->elements[I] = (V) +#endif + +#endif /* !Py_ASDL_H */ diff --git a/client/3rd/include/frame/python/ast.h b/client/3rd/include/frame/python/ast.h new file mode 100755 index 0000000..f1d7348 --- /dev/null +++ b/client/3rd/include/frame/python/ast.h @@ -0,0 +1,37 @@ +#ifndef Py_AST_H +#define Py_AST_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "Python-ast.h" /* mod_ty */ +#include "node.h" /* node */ + +PyAPI_FUNC(int) PyAST_Validate(mod_ty); +PyAPI_FUNC(mod_ty) PyAST_FromNode( + const node *n, + PyCompilerFlags *flags, + const char *filename, /* decoded from the filesystem encoding */ + PyArena *arena); +PyAPI_FUNC(mod_ty) PyAST_FromNodeObject( + const node *n, + PyCompilerFlags *flags, + PyObject *filename, + PyArena *arena); + +#ifndef Py_LIMITED_API + +/* _PyAST_ExprAsUnicode is defined in ast_unparse.c */ +PyAPI_FUNC(PyObject *) _PyAST_ExprAsUnicode(expr_ty); + +/* Return the borrowed reference to the first literal string in the + sequence of statemnts or NULL if it doesn't start from a literal string. + Doesn't set exception. */ +PyAPI_FUNC(PyObject *) _PyAST_GetDocString(asdl_seq *); + +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_AST_H */ diff --git a/client/3rd/include/frame/python/bitset.h b/client/3rd/include/frame/python/bitset.h new file mode 100755 index 0000000..6a2ac97 --- /dev/null +++ b/client/3rd/include/frame/python/bitset.h @@ -0,0 +1,23 @@ + +#ifndef Py_BITSET_H +#define Py_BITSET_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Bitset interface */ + +#define BYTE char +typedef BYTE *bitset; + +#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0) + +#define BITSPERBYTE (8*sizeof(BYTE)) +#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE) +#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE) +#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit)) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BITSET_H */ diff --git a/client/3rd/include/frame/python/bltinmodule.h b/client/3rd/include/frame/python/bltinmodule.h new file mode 100755 index 0000000..868c9e6 --- /dev/null +++ b/client/3rd/include/frame/python/bltinmodule.h @@ -0,0 +1,14 @@ +#ifndef Py_BLTINMODULE_H +#define Py_BLTINMODULE_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyFilter_Type; +PyAPI_DATA(PyTypeObject) PyMap_Type; +PyAPI_DATA(PyTypeObject) PyZip_Type; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BLTINMODULE_H */ diff --git a/client/3rd/include/frame/python/boolobject.h b/client/3rd/include/frame/python/boolobject.h new file mode 100755 index 0000000..7cc2f1f --- /dev/null +++ b/client/3rd/include/frame/python/boolobject.h @@ -0,0 +1,34 @@ +/* Boolean object interface */ + +#ifndef Py_BOOLOBJECT_H +#define Py_BOOLOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +PyAPI_DATA(PyTypeObject) PyBool_Type; + +#define PyBool_Check(x) (Py_TYPE(x) == &PyBool_Type) + +/* Py_False and Py_True are the only two bools in existence. +Don't forget to apply Py_INCREF() when returning either!!! */ + +/* Don't use these directly */ +PyAPI_DATA(struct _longobject) _Py_FalseStruct, _Py_TrueStruct; + +/* Use these macros */ +#define Py_False ((PyObject *) &_Py_FalseStruct) +#define Py_True ((PyObject *) &_Py_TrueStruct) + +/* Macros for returning Py_True or Py_False, respectively */ +#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True +#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False + +/* Function to return a bool from a C long */ +PyAPI_FUNC(PyObject *) PyBool_FromLong(long); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BOOLOBJECT_H */ diff --git a/client/3rd/include/frame/python/bytearrayobject.h b/client/3rd/include/frame/python/bytearrayobject.h new file mode 100755 index 0000000..a757b88 --- /dev/null +++ b/client/3rd/include/frame/python/bytearrayobject.h @@ -0,0 +1,62 @@ +/* ByteArray object interface */ + +#ifndef Py_BYTEARRAYOBJECT_H +#define Py_BYTEARRAYOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Type PyByteArrayObject represents a mutable array of bytes. + * The Python API is that of a sequence; + * the bytes are mapped to ints in [0, 256). + * Bytes are not characters; they may be used to encode characters. + * The only way to go between bytes and str/unicode is via encoding + * and decoding. + * For the convenience of C programmers, the bytes type is considered + * to contain a char pointer, not an unsigned char pointer. + */ + +/* Object layout */ +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + Py_ssize_t ob_alloc; /* How many bytes allocated in ob_bytes */ + char *ob_bytes; /* Physical backing buffer */ + char *ob_start; /* Logical start inside ob_bytes */ + /* XXX(nnorwitz): should ob_exports be Py_ssize_t? */ + int ob_exports; /* How many buffer exports */ +} PyByteArrayObject; +#endif + +/* Type object */ +PyAPI_DATA(PyTypeObject) PyByteArray_Type; +PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type; + +/* Type check macros */ +#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type) +#define PyByteArray_CheckExact(self) (Py_TYPE(self) == &PyByteArray_Type) + +/* Direct API functions */ +PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *); +PyAPI_FUNC(PyObject *) PyByteArray_Concat(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyByteArray_FromStringAndSize(const char *, Py_ssize_t); +PyAPI_FUNC(Py_ssize_t) PyByteArray_Size(PyObject *); +PyAPI_FUNC(char *) PyByteArray_AsString(PyObject *); +PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); + +/* Macros, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_start : _PyByteArray_empty_string) +#define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)), Py_SIZE(self)) + +PyAPI_DATA(char) _PyByteArray_empty_string[]; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BYTEARRAYOBJECT_H */ diff --git a/client/3rd/include/frame/python/bytes_methods.h b/client/3rd/include/frame/python/bytes_methods.h new file mode 100755 index 0000000..8434a50 --- /dev/null +++ b/client/3rd/include/frame/python/bytes_methods.h @@ -0,0 +1,69 @@ +#ifndef Py_LIMITED_API +#ifndef Py_BYTES_CTYPE_H +#define Py_BYTES_CTYPE_H + +/* + * The internal implementation behind PyBytes (bytes) and PyByteArray (bytearray) + * methods of the given names, they operate on ASCII byte strings. + */ +extern PyObject* _Py_bytes_isspace(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isalpha(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isalnum(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isascii(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isdigit(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_islower(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_isupper(const char *cptr, Py_ssize_t len); +extern PyObject* _Py_bytes_istitle(const char *cptr, Py_ssize_t len); + +/* These store their len sized answer in the given preallocated *result arg. */ +extern void _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len); +extern void _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len); +extern void _Py_bytes_title(char *result, const char *s, Py_ssize_t len); +extern void _Py_bytes_capitalize(char *result, const char *s, Py_ssize_t len); +extern void _Py_bytes_swapcase(char *result, const char *s, Py_ssize_t len); + +extern PyObject *_Py_bytes_find(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_index(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_rfind(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_rindex(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_count(const char *str, Py_ssize_t len, PyObject *args); +extern int _Py_bytes_contains(const char *str, Py_ssize_t len, PyObject *arg); +extern PyObject *_Py_bytes_startswith(const char *str, Py_ssize_t len, PyObject *args); +extern PyObject *_Py_bytes_endswith(const char *str, Py_ssize_t len, PyObject *args); + +/* The maketrans() static method. */ +extern PyObject* _Py_bytes_maketrans(Py_buffer *frm, Py_buffer *to); + +/* Shared __doc__ strings. */ +extern const char _Py_isspace__doc__[]; +extern const char _Py_isalpha__doc__[]; +extern const char _Py_isalnum__doc__[]; +extern const char _Py_isascii__doc__[]; +extern const char _Py_isdigit__doc__[]; +extern const char _Py_islower__doc__[]; +extern const char _Py_isupper__doc__[]; +extern const char _Py_istitle__doc__[]; +extern const char _Py_lower__doc__[]; +extern const char _Py_upper__doc__[]; +extern const char _Py_title__doc__[]; +extern const char _Py_capitalize__doc__[]; +extern const char _Py_swapcase__doc__[]; +extern const char _Py_count__doc__[]; +extern const char _Py_find__doc__[]; +extern const char _Py_index__doc__[]; +extern const char _Py_rfind__doc__[]; +extern const char _Py_rindex__doc__[]; +extern const char _Py_startswith__doc__[]; +extern const char _Py_endswith__doc__[]; +extern const char _Py_maketrans__doc__[]; +extern const char _Py_expandtabs__doc__[]; +extern const char _Py_ljust__doc__[]; +extern const char _Py_rjust__doc__[]; +extern const char _Py_center__doc__[]; +extern const char _Py_zfill__doc__[]; + +/* this is needed because some docs are shared from the .o, not static */ +#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str) + +#endif /* !Py_BYTES_CTYPE_H */ +#endif /* !Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/bytesobject.h b/client/3rd/include/frame/python/bytesobject.h new file mode 100755 index 0000000..3fde4a2 --- /dev/null +++ b/client/3rd/include/frame/python/bytesobject.h @@ -0,0 +1,224 @@ + +/* Bytes (String) object interface */ + +#ifndef Py_BYTESOBJECT_H +#define Py_BYTESOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* +Type PyBytesObject represents a character string. An extra zero byte is +reserved at the end to ensure it is zero-terminated, but a size is +present so strings with null bytes in them can be represented. This +is an immutable object type. + +There are functions to create new string objects, to test +an object for string-ness, and to get the +string value. The latter function returns a null pointer +if the object is not of the proper type. +There is a variant that takes an explicit size as well as a +variant that assumes a zero-terminated string. Note that none of the +functions should be applied to nil objects. +*/ + +/* Caching the hash (ob_shash) saves recalculation of a string's hash value. + This significantly speeds up dict lookups. */ + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + Py_hash_t ob_shash; + char ob_sval[1]; + + /* Invariants: + * ob_sval contains space for 'ob_size+1' elements. + * ob_sval[ob_size] == 0. + * ob_shash is the hash of the string or -1 if not computed yet. + */ +} PyBytesObject; +#endif + +PyAPI_DATA(PyTypeObject) PyBytes_Type; +PyAPI_DATA(PyTypeObject) PyBytesIter_Type; + +#define PyBytes_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_BYTES_SUBCLASS) +#define PyBytes_CheckExact(op) (Py_TYPE(op) == &PyBytes_Type) + +PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); +PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *); +PyAPI_FUNC(PyObject *) PyBytes_FromObject(PyObject *); +PyAPI_FUNC(PyObject *) PyBytes_FromFormatV(const char*, va_list) + Py_GCC_ATTRIBUTE((format(printf, 1, 0))); +PyAPI_FUNC(PyObject *) PyBytes_FromFormat(const char*, ...) + Py_GCC_ATTRIBUTE((format(printf, 1, 2))); +PyAPI_FUNC(Py_ssize_t) PyBytes_Size(PyObject *); +PyAPI_FUNC(char *) PyBytes_AsString(PyObject *); +PyAPI_FUNC(PyObject *) PyBytes_Repr(PyObject *, int); +PyAPI_FUNC(void) PyBytes_Concat(PyObject **, PyObject *); +PyAPI_FUNC(void) PyBytes_ConcatAndDel(PyObject **, PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t); +PyAPI_FUNC(PyObject*) _PyBytes_FormatEx( + const char *format, + Py_ssize_t format_len, + PyObject *args, + int use_bytearray); +PyAPI_FUNC(PyObject*) _PyBytes_FromHex( + PyObject *string, + int use_bytearray); +#endif +PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t, + const char *, Py_ssize_t, + const char *); +#ifndef Py_LIMITED_API +/* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ +PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, + const char *, Py_ssize_t, + const char *, + const char **); +#endif + +/* Macro, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyBytes_AS_STRING(op) (assert(PyBytes_Check(op)), \ + (((PyBytesObject *)(op))->ob_sval)) +#define PyBytes_GET_SIZE(op) (assert(PyBytes_Check(op)),Py_SIZE(op)) +#endif + +/* _PyBytes_Join(sep, x) is like sep.join(x). sep must be PyBytesObject*, + x must be an iterable object. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyBytes_Join(PyObject *sep, PyObject *x); +#endif + +/* Provides access to the internal data buffer and size of a string + object or the default encoded version of a Unicode object. Passing + NULL as *len parameter will force the string buffer to be + 0-terminated (passing a string with embedded NULL characters will + cause an exception). */ +PyAPI_FUNC(int) PyBytes_AsStringAndSize( + PyObject *obj, /* string or Unicode object */ + char **s, /* pointer to buffer variable */ + Py_ssize_t *len /* pointer to length variable or NULL + (only possible for 0-terminated + strings) */ + ); + +/* Using the current locale, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGroupingLocale(char *buffer, + Py_ssize_t n_buffer, + char *digits, + Py_ssize_t n_digits, + Py_ssize_t min_width); + +/* Using explicit passed-in values, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +PyAPI_FUNC(Py_ssize_t) _PyBytes_InsertThousandsGrouping(char *buffer, + Py_ssize_t n_buffer, + char *digits, + Py_ssize_t n_digits, + Py_ssize_t min_width, + const char *grouping, + const char *thousands_sep); +#endif + +/* Flags used by string formatting */ +#define F_LJUST (1<<0) +#define F_SIGN (1<<1) +#define F_BLANK (1<<2) +#define F_ALT (1<<3) +#define F_ZERO (1<<4) + +#ifndef Py_LIMITED_API +/* The _PyBytesWriter structure is big: it contains an embedded "stack buffer". + A _PyBytesWriter variable must be declared at the end of variables in a + function to optimize the memory allocation on the stack. */ +typedef struct { + /* bytes, bytearray or NULL (when the small buffer is used) */ + PyObject *buffer; + + /* Number of allocated size. */ + Py_ssize_t allocated; + + /* Minimum number of allocated bytes, + incremented by _PyBytesWriter_Prepare() */ + Py_ssize_t min_size; + + /* If non-zero, use a bytearray instead of a bytes object for buffer. */ + int use_bytearray; + + /* If non-zero, overallocate the buffer (default: 0). + This flag must be zero if use_bytearray is non-zero. */ + int overallocate; + + /* Stack buffer */ + int use_small_buffer; + char small_buffer[512]; +} _PyBytesWriter; + +/* Initialize a bytes writer + + By default, the overallocation is disabled. Set the overallocate attribute + to control the allocation of the buffer. */ +PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer); + +/* Get the buffer content and reset the writer. + Return a bytes object, or a bytearray object if use_bytearray is non-zero. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer, + void *str); + +/* Deallocate memory of a writer (clear its internal buffer). */ +PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer); + +/* Allocate the buffer to write size bytes. + Return the pointer to the beginning of buffer data. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer, + Py_ssize_t size); + +/* Ensure that the buffer is large enough to write *size* bytes. + Add size to the writer minimum size (min_size attribute). + + str is the current pointer inside the buffer. + Return the updated current pointer inside the buffer. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer, + void *str, + Py_ssize_t size); + +/* Resize the buffer to make it larger. + The new buffer may be larger than size bytes because of overallocation. + Return the updated current pointer inside the buffer. + Raise an exception and return NULL on error. + + Note: size must be greater than the number of allocated bytes in the writer. + + This function doesn't use the writer minimum size (min_size attribute). + + See also _PyBytesWriter_Prepare(). + */ +PyAPI_FUNC(void*) _PyBytesWriter_Resize(_PyBytesWriter *writer, + void *str, + Py_ssize_t size); + +/* Write bytes. + Raise an exception and return NULL on error. */ +PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer, + void *str, + const void *bytes, + Py_ssize_t size); +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_BYTESOBJECT_H */ diff --git a/client/3rd/include/frame/python/cellobject.h b/client/3rd/include/frame/python/cellobject.h new file mode 100755 index 0000000..2f9b5b7 --- /dev/null +++ b/client/3rd/include/frame/python/cellobject.h @@ -0,0 +1,29 @@ +/* Cell object interface */ +#ifndef Py_LIMITED_API +#ifndef Py_CELLOBJECT_H +#define Py_CELLOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_HEAD + PyObject *ob_ref; /* Content of the cell or NULL when empty */ +} PyCellObject; + +PyAPI_DATA(PyTypeObject) PyCell_Type; + +#define PyCell_Check(op) (Py_TYPE(op) == &PyCell_Type) + +PyAPI_FUNC(PyObject *) PyCell_New(PyObject *); +PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *); +PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *); + +#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref) +#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_TUPLEOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/ceval.h b/client/3rd/include/frame/python/ceval.h new file mode 100755 index 0000000..36fd014 --- /dev/null +++ b/client/3rd/include/frame/python/ceval.h @@ -0,0 +1,231 @@ +#ifndef Py_CEVAL_H +#define Py_CEVAL_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Interface to random parts in ceval.c */ + +/* PyEval_CallObjectWithKeywords(), PyEval_CallObject(), PyEval_CallFunction + * and PyEval_CallMethod are kept for backward compatibility: PyObject_Call(), + * PyObject_CallFunction() and PyObject_CallMethod() are recommended to call + * a callable object. + */ + +PyAPI_FUNC(PyObject *) PyEval_CallObjectWithKeywords( + PyObject *callable, + PyObject *args, + PyObject *kwargs); + +/* Inline this */ +#define PyEval_CallObject(callable, arg) \ + PyEval_CallObjectWithKeywords(callable, arg, (PyObject *)NULL) + +PyAPI_FUNC(PyObject *) PyEval_CallFunction(PyObject *callable, + const char *format, ...); +PyAPI_FUNC(PyObject *) PyEval_CallMethod(PyObject *obj, + const char *name, + const char *format, ...); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *); +PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *); +PyAPI_FUNC(void) _PyEval_SetCoroutineOriginTrackingDepth(int new_depth); +PyAPI_FUNC(int) _PyEval_GetCoroutineOriginTrackingDepth(void); +PyAPI_FUNC(void) _PyEval_SetAsyncGenFirstiter(PyObject *); +PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFirstiter(void); +PyAPI_FUNC(void) _PyEval_SetAsyncGenFinalizer(PyObject *); +PyAPI_FUNC(PyObject *) _PyEval_GetAsyncGenFinalizer(void); +#endif + +struct _frame; /* Avoid including frameobject.h */ + +PyAPI_FUNC(PyObject *) PyEval_GetBuiltins(void); +PyAPI_FUNC(PyObject *) PyEval_GetGlobals(void); +PyAPI_FUNC(PyObject *) PyEval_GetLocals(void); +PyAPI_FUNC(struct _frame *) PyEval_GetFrame(void); + +#ifndef Py_LIMITED_API +/* Helper to look up a builtin object */ +PyAPI_FUNC(PyObject *) _PyEval_GetBuiltinId(_Py_Identifier *); +/* Look at the current frame's (if any) code's co_flags, and turn on + the corresponding compiler flags in cf->cf_flags. Return 1 if any + flag was set, else return 0. */ +PyAPI_FUNC(int) PyEval_MergeCompilerFlags(PyCompilerFlags *cf); +#endif + +PyAPI_FUNC(int) Py_AddPendingCall(int (*func)(void *), void *arg); +PyAPI_FUNC(int) Py_MakePendingCalls(void); + +/* Protection against deeply nested recursive calls + + In Python 3.0, this protection has two levels: + * normal anti-recursion protection is triggered when the recursion level + exceeds the current recursion limit. It raises a RecursionError, and sets + the "overflowed" flag in the thread state structure. This flag + temporarily *disables* the normal protection; this allows cleanup code + to potentially outgrow the recursion limit while processing the + RecursionError. + * "last chance" anti-recursion protection is triggered when the recursion + level exceeds "current recursion limit + 50". By construction, this + protection can only be triggered when the "overflowed" flag is set. It + means the cleanup code has itself gone into an infinite loop, or the + RecursionError has been mistakingly ignored. When this protection is + triggered, the interpreter aborts with a Fatal Error. + + In addition, the "overflowed" flag is automatically reset when the + recursion level drops below "current recursion limit - 50". This heuristic + is meant to ensure that the normal anti-recursion protection doesn't get + disabled too long. + + Please note: this scheme has its own limitations. See: + http://mail.python.org/pipermail/python-dev/2008-August/082106.html + for some observations. +*/ +PyAPI_FUNC(void) Py_SetRecursionLimit(int); +PyAPI_FUNC(int) Py_GetRecursionLimit(void); + +#define Py_EnterRecursiveCall(where) \ + (_Py_MakeRecCheck(PyThreadState_GET()->recursion_depth) && \ + _Py_CheckRecursiveCall(where)) +#define Py_LeaveRecursiveCall() \ + do{ if(_Py_MakeEndRecCheck(PyThreadState_GET()->recursion_depth)) \ + PyThreadState_GET()->overflowed = 0; \ + } while(0) +PyAPI_FUNC(int) _Py_CheckRecursiveCall(const char *where); + +/* Due to the macros in which it's used, _Py_CheckRecursionLimit is in + the stable ABI. It should be removed therefrom when possible. +*/ +PyAPI_DATA(int) _Py_CheckRecursionLimit; + +#ifdef USE_STACKCHECK +/* With USE_STACKCHECK, trigger stack checks in _Py_CheckRecursiveCall() + on every 64th call to Py_EnterRecursiveCall. +*/ +# define _Py_MakeRecCheck(x) \ + (++(x) > _Py_CheckRecursionLimit || \ + ++(PyThreadState_GET()->stackcheck_counter) > 64) +#else +# define _Py_MakeRecCheck(x) (++(x) > _Py_CheckRecursionLimit) +#endif + +/* Compute the "lower-water mark" for a recursion limit. When + * Py_LeaveRecursiveCall() is called with a recursion depth below this mark, + * the overflowed flag is reset to 0. */ +#define _Py_RecursionLimitLowerWaterMark(limit) \ + (((limit) > 200) \ + ? ((limit) - 50) \ + : (3 * ((limit) >> 2))) + +#define _Py_MakeEndRecCheck(x) \ + (--(x) < _Py_RecursionLimitLowerWaterMark(_Py_CheckRecursionLimit)) + +#define Py_ALLOW_RECURSION \ + do { unsigned char _old = PyThreadState_GET()->recursion_critical;\ + PyThreadState_GET()->recursion_critical = 1; + +#define Py_END_ALLOW_RECURSION \ + PyThreadState_GET()->recursion_critical = _old; \ + } while(0); + +PyAPI_FUNC(const char *) PyEval_GetFuncName(PyObject *); +PyAPI_FUNC(const char *) PyEval_GetFuncDesc(PyObject *); + +PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *); +PyAPI_FUNC(PyObject *) PyEval_EvalFrameEx(struct _frame *f, int exc); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyEval_EvalFrameDefault(struct _frame *f, int exc); +#endif + +/* Interface for threads. + + A module that plans to do a blocking system call (or something else + that lasts a long time and doesn't touch Python data) can allow other + threads to run as follows: + + ...preparations here... + Py_BEGIN_ALLOW_THREADS + ...blocking system call here... + Py_END_ALLOW_THREADS + ...interpret result here... + + The Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS pair expands to a + {}-surrounded block. + To leave the block in the middle (e.g., with return), you must insert + a line containing Py_BLOCK_THREADS before the return, e.g. + + if (...premature_exit...) { + Py_BLOCK_THREADS + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + + An alternative is: + + Py_BLOCK_THREADS + if (...premature_exit...) { + PyErr_SetFromErrno(PyExc_OSError); + return NULL; + } + Py_UNBLOCK_THREADS + + For convenience, that the value of 'errno' is restored across + Py_END_ALLOW_THREADS and Py_BLOCK_THREADS. + + WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND + Py_END_ALLOW_THREADS!!! + + The function PyEval_InitThreads() should be called only from + init_thread() in "_threadmodule.c". + + Note that not yet all candidates have been converted to use this + mechanism! +*/ + +PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void); +PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *); + +PyAPI_FUNC(int) PyEval_ThreadsInitialized(void); +PyAPI_FUNC(void) PyEval_InitThreads(void); +Py_DEPRECATED(3.2) PyAPI_FUNC(void) PyEval_AcquireLock(void); +/* Py_DEPRECATED(3.2) */ PyAPI_FUNC(void) PyEval_ReleaseLock(void); +PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate); +PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyEval_SetSwitchInterval(unsigned long microseconds); +PyAPI_FUNC(unsigned long) _PyEval_GetSwitchInterval(void); +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyEval_RequestCodeExtraIndex(freefunc); +#endif + +#define Py_BEGIN_ALLOW_THREADS { \ + PyThreadState *_save; \ + _save = PyEval_SaveThread(); +#define Py_BLOCK_THREADS PyEval_RestoreThread(_save); +#define Py_UNBLOCK_THREADS _save = PyEval_SaveThread(); +#define Py_END_ALLOW_THREADS PyEval_RestoreThread(_save); \ + } + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyEval_SliceIndex(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) _PyEval_SliceIndexNotNone(PyObject *, Py_ssize_t *); +#endif + +/* Masks and values used by FORMAT_VALUE opcode. */ +#define FVC_MASK 0x3 +#define FVC_NONE 0x0 +#define FVC_STR 0x1 +#define FVC_REPR 0x2 +#define FVC_ASCII 0x3 +#define FVS_MASK 0x4 +#define FVS_HAVE_SPEC 0x4 + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CEVAL_H */ diff --git a/client/3rd/include/frame/python/classobject.h b/client/3rd/include/frame/python/classobject.h new file mode 100755 index 0000000..c83303c --- /dev/null +++ b/client/3rd/include/frame/python/classobject.h @@ -0,0 +1,59 @@ +/* Former class object interface -- now only bound methods are here */ + +/* Revealing some structures (not for general use) */ + +#ifndef Py_LIMITED_API +#ifndef Py_CLASSOBJECT_H +#define Py_CLASSOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_HEAD + PyObject *im_func; /* The callable object implementing the method */ + PyObject *im_self; /* The instance it is bound to */ + PyObject *im_weakreflist; /* List of weak references */ + vectorcallfunc vectorcall; +} PyMethodObject; + +PyAPI_DATA(PyTypeObject) PyMethod_Type; + +#define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type) + +PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *); + +PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *); +PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyMethod_GET_FUNCTION(meth) \ + (((PyMethodObject *)meth) -> im_func) +#define PyMethod_GET_SELF(meth) \ + (((PyMethodObject *)meth) -> im_self) + +PyAPI_FUNC(int) PyMethod_ClearFreeList(void); + +typedef struct { + PyObject_HEAD + PyObject *func; +} PyInstanceMethodObject; + +PyAPI_DATA(PyTypeObject) PyInstanceMethod_Type; + +#define PyInstanceMethod_Check(op) ((op)->ob_type == &PyInstanceMethod_Type) + +PyAPI_FUNC(PyObject *) PyInstanceMethod_New(PyObject *); +PyAPI_FUNC(PyObject *) PyInstanceMethod_Function(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyInstanceMethod_GET_FUNCTION(meth) \ + (((PyInstanceMethodObject *)meth) -> func) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CLASSOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/code.h b/client/3rd/include/frame/python/code.h new file mode 100755 index 0000000..a1cd58f --- /dev/null +++ b/client/3rd/include/frame/python/code.h @@ -0,0 +1,180 @@ +/* Definitions for bytecode */ + +#ifndef Py_LIMITED_API +#ifndef Py_CODE_H +#define Py_CODE_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint16_t _Py_CODEUNIT; + +#ifdef WORDS_BIGENDIAN +# define _Py_OPCODE(word) ((word) >> 8) +# define _Py_OPARG(word) ((word) & 255) +#else +# define _Py_OPCODE(word) ((word) & 255) +# define _Py_OPARG(word) ((word) >> 8) +#endif + +typedef struct _PyOpcache _PyOpcache; + +/* Bytecode object */ +typedef struct { + PyObject_HEAD + int co_argcount; /* #arguments, except *args */ + int co_posonlyargcount; /* #positional only arguments */ + int co_kwonlyargcount; /* #keyword only arguments */ + int co_nlocals; /* #local variables */ + int co_stacksize; /* #entries needed for evaluation stack */ + int co_flags; /* CO_..., see below */ + int co_firstlineno; /* first source line number */ + PyObject *co_code; /* instruction opcodes */ + PyObject *co_consts; /* list (constants used) */ + PyObject *co_names; /* list of strings (names used) */ + PyObject *co_varnames; /* tuple of strings (local variable names) */ + PyObject *co_freevars; /* tuple of strings (free variable names) */ + PyObject *co_cellvars; /* tuple of strings (cell variable names) */ + /* The rest aren't used in either hash or comparisons, except for co_name, + used in both. This is done to preserve the name and line number + for tracebacks and debuggers; otherwise, constant de-duplication + would collapse identical functions/lambdas defined on different lines. + */ + Py_ssize_t *co_cell2arg; /* Maps cell vars which are arguments. */ + PyObject *co_filename; /* unicode (where it was loaded from) */ + PyObject *co_name; /* unicode (name, for reference) */ + PyObject *co_lnotab; /* string (encoding addr<->lineno mapping) See + Objects/lnotab_notes.txt for details. */ + void *co_zombieframe; /* for optimization only (see frameobject.c) */ + PyObject *co_weakreflist; /* to support weakrefs to code objects */ + /* Scratch space for extra data relating to the code object. + Type is a void* to keep the format private in codeobject.c to force + people to go through the proper APIs. */ + void *co_extra; + + /* Per opcodes just-in-time cache + * + * To reduce cache size, we use indirect mapping from opcode index to + * cache object: + * cache = co_opcache[co_opcache_map[next_instr - first_instr] - 1] + */ + + // co_opcache_map is indexed by (next_instr - first_instr). + // * 0 means there is no cache for this opcode. + // * n > 0 means there is cache in co_opcache[n-1]. + unsigned char *co_opcache_map; + _PyOpcache *co_opcache; + int co_opcache_flag; // used to determine when create a cache. + unsigned char co_opcache_size; // length of co_opcache. +} PyCodeObject; + +/* Masks for co_flags above */ +#define CO_OPTIMIZED 0x0001 +#define CO_NEWLOCALS 0x0002 +#define CO_VARARGS 0x0004 +#define CO_VARKEYWORDS 0x0008 +#define CO_NESTED 0x0010 +#define CO_GENERATOR 0x0020 +/* The CO_NOFREE flag is set if there are no free or cell variables. + This information is redundant, but it allows a single flag test + to determine whether there is any extra work to be done when the + call frame it setup. +*/ +#define CO_NOFREE 0x0040 + +/* The CO_COROUTINE flag is set for coroutine functions (defined with + ``async def`` keywords) */ +#define CO_COROUTINE 0x0080 +#define CO_ITERABLE_COROUTINE 0x0100 +#define CO_ASYNC_GENERATOR 0x0200 + +/* bpo-39562: These constant values are changed in Python 3.9 + to prevent collision with compiler flags. CO_FUTURE_ and PyCF_ + constants must be kept unique. PyCF_ constants can use bits from + 0x0100 to 0x10000. CO_FUTURE_ constants use bits starting at 0x20000. */ +#define CO_FUTURE_DIVISION 0x20000 +#define CO_FUTURE_ABSOLUTE_IMPORT 0x40000 /* do absolute imports by default */ +#define CO_FUTURE_WITH_STATEMENT 0x80000 +#define CO_FUTURE_PRINT_FUNCTION 0x100000 +#define CO_FUTURE_UNICODE_LITERALS 0x200000 + +#define CO_FUTURE_BARRY_AS_BDFL 0x400000 +#define CO_FUTURE_GENERATOR_STOP 0x800000 +#define CO_FUTURE_ANNOTATIONS 0x1000000 + +/* This value is found in the co_cell2arg array when the associated cell + variable does not correspond to an argument. */ +#define CO_CELL_NOT_AN_ARG (-1) + +/* This should be defined if a future statement modifies the syntax. + For example, when a keyword is added. +*/ +#define PY_PARSER_REQUIRES_FUTURE_KEYWORD + +#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */ + +PyAPI_DATA(PyTypeObject) PyCode_Type; + +#define PyCode_Check(op) (Py_TYPE(op) == &PyCode_Type) +#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars)) + +/* Public interface */ +PyAPI_FUNC(PyCodeObject *) PyCode_New( + int, int, int, int, int, PyObject *, PyObject *, + PyObject *, PyObject *, PyObject *, PyObject *, + PyObject *, PyObject *, int, PyObject *); + +PyAPI_FUNC(PyCodeObject *) PyCode_NewWithPosOnlyArgs( + int, int, int, int, int, int, PyObject *, PyObject *, + PyObject *, PyObject *, PyObject *, PyObject *, + PyObject *, PyObject *, int, PyObject *); + /* same as struct above */ + +/* Creates a new empty code object with the specified source location. */ +PyAPI_FUNC(PyCodeObject *) +PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno); + +/* Return the line number associated with the specified bytecode index + in this code object. If you just need the line number of a frame, + use PyFrame_GetLineNumber() instead. */ +PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); + +/* for internal use only */ +typedef struct _addr_pair { + int ap_lower; + int ap_upper; +} PyAddrPair; + +#ifndef Py_LIMITED_API +/* Update *bounds to describe the first and one-past-the-last instructions in the + same line as lasti. Return the number of that line. +*/ +PyAPI_FUNC(int) _PyCode_CheckLineNumber(PyCodeObject* co, + int lasti, PyAddrPair *bounds); + +/* Create a comparable key used to compare constants taking in account the + * object type. It is used to make sure types are not coerced (e.g., float and + * complex) _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms + * + * Return (type(obj), obj, ...): a tuple with variable size (at least 2 items) + * depending on the type and the value. The type is the first item to not + * compare bytes and str which can raise a BytesWarning exception. */ +PyAPI_FUNC(PyObject*) _PyCode_ConstantKey(PyObject *obj); +#endif + +PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts, + PyObject *names, PyObject *lnotab); + + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyCode_GetExtra(PyObject *code, Py_ssize_t index, + void **extra); +PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, + void *extra); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CODE_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/codecs.h b/client/3rd/include/frame/python/codecs.h new file mode 100755 index 0000000..3ad0f2b --- /dev/null +++ b/client/3rd/include/frame/python/codecs.h @@ -0,0 +1,240 @@ +#ifndef Py_CODECREGISTRY_H +#define Py_CODECREGISTRY_H +#ifdef __cplusplus +extern "C" { +#endif + +/* ------------------------------------------------------------------------ + + Python Codec Registry and support functions + + +Written by Marc-Andre Lemburg (mal@lemburg.com). + +Copyright (c) Corporation for National Research Initiatives. + + ------------------------------------------------------------------------ */ + +/* Register a new codec search function. + + As side effect, this tries to load the encodings package, if not + yet done, to make sure that it is always first in the list of + search functions. + + The search_function's refcount is incremented by this function. */ + +PyAPI_FUNC(int) PyCodec_Register( + PyObject *search_function + ); + +/* Codec registry lookup API. + + Looks up the given encoding and returns a CodecInfo object with + function attributes which implement the different aspects of + processing the encoding. + + The encoding string is looked up converted to all lower-case + characters. This makes encodings looked up through this mechanism + effectively case-insensitive. + + If no codec is found, a KeyError is set and NULL returned. + + As side effect, this tries to load the encodings package, if not + yet done. This is part of the lazy load strategy for the encodings + package. + + */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyCodec_Lookup( + const char *encoding + ); + +PyAPI_FUNC(int) _PyCodec_Forget( + const char *encoding + ); +#endif + +/* Codec registry encoding check API. + + Returns 1/0 depending on whether there is a registered codec for + the given encoding. + +*/ + +PyAPI_FUNC(int) PyCodec_KnownEncoding( + const char *encoding + ); + +/* Generic codec based encoding API. + + object is passed through the encoder function found for the given + encoding using the error handling method defined by errors. errors + may be NULL to use the default method defined for the codec. + + Raises a LookupError in case no encoder can be found. + + */ + +PyAPI_FUNC(PyObject *) PyCodec_Encode( + PyObject *object, + const char *encoding, + const char *errors + ); + +/* Generic codec based decoding API. + + object is passed through the decoder function found for the given + encoding using the error handling method defined by errors. errors + may be NULL to use the default method defined for the codec. + + Raises a LookupError in case no encoder can be found. + + */ + +PyAPI_FUNC(PyObject *) PyCodec_Decode( + PyObject *object, + const char *encoding, + const char *errors + ); + +#ifndef Py_LIMITED_API +/* Text codec specific encoding and decoding API. + + Checks the encoding against a list of codecs which do not + implement a str<->bytes encoding before attempting the + operation. + + Please note that these APIs are internal and should not + be used in Python C extensions. + + XXX (ncoghlan): should we make these, or something like them, public + in Python 3.5+? + + */ +PyAPI_FUNC(PyObject *) _PyCodec_LookupTextEncoding( + const char *encoding, + const char *alternate_command + ); + +PyAPI_FUNC(PyObject *) _PyCodec_EncodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodec_DecodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +/* These two aren't actually text encoding specific, but _io.TextIOWrapper + * is the only current API consumer. + */ +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalDecoder( + PyObject *codec_info, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalEncoder( + PyObject *codec_info, + const char *errors + ); +#endif + + + +/* --- Codec Lookup APIs -------------------------------------------------- + + All APIs return a codec object with incremented refcount and are + based on _PyCodec_Lookup(). The same comments w/r to the encoding + name also apply to these APIs. + +*/ + +/* Get an encoder function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_Encoder( + const char *encoding + ); + +/* Get a decoder function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_Decoder( + const char *encoding + ); + +/* Get an IncrementalEncoder object for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_IncrementalEncoder( + const char *encoding, + const char *errors + ); + +/* Get an IncrementalDecoder object function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_IncrementalDecoder( + const char *encoding, + const char *errors + ); + +/* Get a StreamReader factory function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_StreamReader( + const char *encoding, + PyObject *stream, + const char *errors + ); + +/* Get a StreamWriter factory function for the given encoding. */ + +PyAPI_FUNC(PyObject *) PyCodec_StreamWriter( + const char *encoding, + PyObject *stream, + const char *errors + ); + +/* Unicode encoding error handling callback registry API */ + +/* Register the error handling callback function error under the given + name. This function will be called by the codec when it encounters + unencodable characters/undecodable bytes and doesn't know the + callback name, when name is specified as the error parameter + in the call to the encode/decode function. + Return 0 on success, -1 on error */ +PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error); + +/* Lookup the error handling callback function registered under the given + name. As a special case NULL can be passed, in which case + the error handling callback for "strict" will be returned. */ +PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name); + +/* raise exc as an exception */ +PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc); + +/* ignore the unicode error, skipping the faulty input */ +PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc); + +/* replace the unicode encode error with ? or U+FFFD */ +PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc); + +/* replace the unicode encode error with XML character references */ +PyAPI_FUNC(PyObject *) PyCodec_XMLCharRefReplaceErrors(PyObject *exc); + +/* replace the unicode encode error with backslash escapes (\x, \u and \U) */ +PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* replace the unicode encode error with backslash escapes (\N, \x, \u and \U) */ +PyAPI_FUNC(PyObject *) PyCodec_NameReplaceErrors(PyObject *exc); +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(const char *) Py_hexdigits; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CODECREGISTRY_H */ diff --git a/client/3rd/include/frame/python/compile.h b/client/3rd/include/frame/python/compile.h new file mode 100755 index 0000000..015584d --- /dev/null +++ b/client/3rd/include/frame/python/compile.h @@ -0,0 +1,106 @@ +#ifndef Py_COMPILE_H +#define Py_COMPILE_H + +#ifndef Py_LIMITED_API +#include "code.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Public interface */ +struct _node; /* Declare the existence of this type */ +PyAPI_FUNC(PyCodeObject *) PyNode_Compile(struct _node *, const char *); +/* XXX (ncoghlan): Unprefixed type name in a public API! */ + +#define PyCF_MASK (CO_FUTURE_DIVISION | CO_FUTURE_ABSOLUTE_IMPORT | \ + CO_FUTURE_WITH_STATEMENT | CO_FUTURE_PRINT_FUNCTION | \ + CO_FUTURE_UNICODE_LITERALS | CO_FUTURE_BARRY_AS_BDFL | \ + CO_FUTURE_GENERATOR_STOP | CO_FUTURE_ANNOTATIONS) +#define PyCF_MASK_OBSOLETE (CO_NESTED) + +/* bpo-39562: CO_FUTURE_ and PyCF_ constants must be kept unique. + PyCF_ constants can use bits from 0x0100 to 0x10000. + CO_FUTURE_ constants use bits starting at 0x20000. */ +#define PyCF_SOURCE_IS_UTF8 0x0100 +#define PyCF_DONT_IMPLY_DEDENT 0x0200 +#define PyCF_ONLY_AST 0x0400 +#define PyCF_IGNORE_COOKIE 0x0800 +#define PyCF_TYPE_COMMENTS 0x1000 +#define PyCF_ALLOW_TOP_LEVEL_AWAIT 0x2000 +#define PyCF_COMPILE_MASK (PyCF_ONLY_AST | PyCF_ALLOW_TOP_LEVEL_AWAIT | \ + PyCF_TYPE_COMMENTS | PyCF_DONT_IMPLY_DEDENT) + +#ifndef Py_LIMITED_API +typedef struct { + int cf_flags; /* bitmask of CO_xxx flags relevant to future */ + int cf_feature_version; /* minor Python version (PyCF_ONLY_AST) */ +} PyCompilerFlags; + +#define _PyCompilerFlags_INIT \ + (PyCompilerFlags){.cf_flags = 0, .cf_feature_version = PY_MINOR_VERSION} +#endif + +/* Future feature support */ + +typedef struct { + int ff_features; /* flags set by future statements */ + int ff_lineno; /* line number of last future statement */ +} PyFutureFeatures; + +#define FUTURE_NESTED_SCOPES "nested_scopes" +#define FUTURE_GENERATORS "generators" +#define FUTURE_DIVISION "division" +#define FUTURE_ABSOLUTE_IMPORT "absolute_import" +#define FUTURE_WITH_STATEMENT "with_statement" +#define FUTURE_PRINT_FUNCTION "print_function" +#define FUTURE_UNICODE_LITERALS "unicode_literals" +#define FUTURE_BARRY_AS_BDFL "barry_as_FLUFL" +#define FUTURE_GENERATOR_STOP "generator_stop" +#define FUTURE_ANNOTATIONS "annotations" + +struct _mod; /* Declare the existence of this type */ +#define PyAST_Compile(mod, s, f, ar) PyAST_CompileEx(mod, s, f, -1, ar) +PyAPI_FUNC(PyCodeObject *) PyAST_CompileEx( + struct _mod *mod, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags, + int optimize, + PyArena *arena); +PyAPI_FUNC(PyCodeObject *) PyAST_CompileObject( + struct _mod *mod, + PyObject *filename, + PyCompilerFlags *flags, + int optimize, + PyArena *arena); +PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromAST( + struct _mod * mod, + const char *filename /* decoded from the filesystem encoding */ + ); +PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromASTObject( + struct _mod * mod, + PyObject *filename + ); + +/* _Py_Mangle is defined in compile.c */ +PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name); + +#define PY_INVALID_STACK_EFFECT INT_MAX +PyAPI_FUNC(int) PyCompile_OpcodeStackEffect(int opcode, int oparg); +PyAPI_FUNC(int) PyCompile_OpcodeStackEffectWithJump(int opcode, int oparg, int jump); + +PyAPI_FUNC(int) _PyAST_Optimize(struct _mod *, PyArena *arena, int optimize); + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_LIMITED_API */ + +/* These definitions must match corresponding definitions in graminit.h. */ +#define Py_single_input 256 +#define Py_file_input 257 +#define Py_eval_input 258 +#define Py_func_type_input 345 + +#endif /* !Py_COMPILE_H */ diff --git a/client/3rd/include/frame/python/complexobject.h b/client/3rd/include/frame/python/complexobject.h new file mode 100755 index 0000000..cb8c52c --- /dev/null +++ b/client/3rd/include/frame/python/complexobject.h @@ -0,0 +1,69 @@ +/* Complex number structure */ + +#ifndef Py_COMPLEXOBJECT_H +#define Py_COMPLEXOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + double real; + double imag; +} Py_complex; + +/* Operations on complex numbers from complexmodule.c */ + +PyAPI_FUNC(Py_complex) _Py_c_sum(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_diff(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_neg(Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_prod(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_quot(Py_complex, Py_complex); +PyAPI_FUNC(Py_complex) _Py_c_pow(Py_complex, Py_complex); +PyAPI_FUNC(double) _Py_c_abs(Py_complex); +#endif + +/* Complex object interface */ + +/* +PyComplexObject represents a complex number with double-precision +real and imaginary parts. +*/ +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + Py_complex cval; +} PyComplexObject; +#endif + +PyAPI_DATA(PyTypeObject) PyComplex_Type; + +#define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type) +#define PyComplex_CheckExact(op) (Py_TYPE(op) == &PyComplex_Type) + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex); +#endif +PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag); + +PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op); +PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op); +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op); +#endif + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyComplex_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_COMPLEXOBJECT_H */ diff --git a/client/3rd/include/frame/python/context.h b/client/3rd/include/frame/python/context.h new file mode 100755 index 0000000..9581285 --- /dev/null +++ b/client/3rd/include/frame/python/context.h @@ -0,0 +1,84 @@ +#ifndef Py_CONTEXT_H +#define Py_CONTEXT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API + + +PyAPI_DATA(PyTypeObject) PyContext_Type; +typedef struct _pycontextobject PyContext; + +PyAPI_DATA(PyTypeObject) PyContextVar_Type; +typedef struct _pycontextvarobject PyContextVar; + +PyAPI_DATA(PyTypeObject) PyContextToken_Type; +typedef struct _pycontexttokenobject PyContextToken; + + +#define PyContext_CheckExact(o) (Py_TYPE(o) == &PyContext_Type) +#define PyContextVar_CheckExact(o) (Py_TYPE(o) == &PyContextVar_Type) +#define PyContextToken_CheckExact(o) (Py_TYPE(o) == &PyContextToken_Type) + + +PyAPI_FUNC(PyObject *) PyContext_New(void); +PyAPI_FUNC(PyObject *) PyContext_Copy(PyObject *); +PyAPI_FUNC(PyObject *) PyContext_CopyCurrent(void); + +PyAPI_FUNC(int) PyContext_Enter(PyObject *); +PyAPI_FUNC(int) PyContext_Exit(PyObject *); + + +/* Create a new context variable. + + default_value can be NULL. +*/ +PyAPI_FUNC(PyObject *) PyContextVar_New( + const char *name, PyObject *default_value); + + +/* Get a value for the variable. + + Returns -1 if an error occurred during lookup. + + Returns 0 if value either was or was not found. + + If value was found, *value will point to it. + If not, it will point to: + + - default_value, if not NULL; + - the default value of "var", if not NULL; + - NULL. + + '*value' will be a new ref, if not NULL. +*/ +PyAPI_FUNC(int) PyContextVar_Get( + PyObject *var, PyObject *default_value, PyObject **value); + + +/* Set a new value for the variable. + Returns NULL if an error occurs. +*/ +PyAPI_FUNC(PyObject *) PyContextVar_Set(PyObject *var, PyObject *value); + + +/* Reset a variable to its previous value. + Returns 0 on success, -1 on error. +*/ +PyAPI_FUNC(int) PyContextVar_Reset(PyObject *var, PyObject *token); + + +/* This method is exposed only for CPython tests. Don not use it. */ +PyAPI_FUNC(PyObject *) _PyContext_NewHamtForTests(void); + + +PyAPI_FUNC(int) PyContext_ClearFreeList(void); + + +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_CONTEXT_H */ diff --git a/client/3rd/include/frame/python/cpython/abstract.h b/client/3rd/include/frame/python/cpython/abstract.h new file mode 100755 index 0000000..dbfce2d --- /dev/null +++ b/client/3rd/include/frame/python/cpython/abstract.h @@ -0,0 +1,319 @@ +#ifndef Py_CPYTHON_ABSTRACTOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* === Object Protocol ================================================== */ + +#ifdef PY_SSIZE_T_CLEAN +# define _PyObject_CallMethodId _PyObject_CallMethodId_SizeT +#endif + +/* Convert keyword arguments from the FASTCALL (stack: C array, kwnames: tuple) + format to a Python dictionary ("kwargs" dict). + + The type of kwnames keys is not checked. The final function getting + arguments is responsible to check if all keys are strings, for example using + PyArg_ParseTupleAndKeywords() or PyArg_ValidateKeywordArguments(). + + Duplicate keys are merged using the last value. If duplicate keys must raise + an exception, the caller is responsible to implement an explicit keys on + kwnames. */ +PyAPI_FUNC(PyObject *) _PyStack_AsDict( + PyObject *const *values, + PyObject *kwnames); + +/* Convert (args, nargs, kwargs: dict) into a (stack, nargs, kwnames: tuple). + + Return 0 on success, raise an exception and return -1 on error. + + Write the new stack into *p_stack. If *p_stack is differen than args, it + must be released by PyMem_Free(). + + The stack uses borrowed references. + + The type of keyword keys is not checked, these checks should be done + later (ex: _PyArg_ParseStackAndKeywords). */ +PyAPI_FUNC(int) _PyStack_UnpackDict( + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwargs, + PyObject *const **p_stack, + PyObject **p_kwnames); + +/* Suggested size (number of positional arguments) for arrays of PyObject* + allocated on a C stack to avoid allocating memory on the heap memory. Such + array is used to pass positional arguments to call functions of the + _PyObject_Vectorcall() family. + + The size is chosen to not abuse the C stack and so limit the risk of stack + overflow. The size is also chosen to allow using the small stack for most + function calls of the Python standard library. On 64-bit CPU, it allocates + 40 bytes on the stack. */ +#define _PY_FASTCALL_SMALL_STACK 5 + +PyAPI_FUNC(PyObject *) _Py_CheckFunctionResult(PyObject *callable, + PyObject *result, + const char *where); + +/* === Vectorcall protocol (PEP 590) ============================= */ + +/* Call callable using tp_call. Arguments are like _PyObject_Vectorcall() + or _PyObject_FastCallDict() (both forms are supported), + except that nargs is plainly the number of arguments without flags. */ +PyAPI_FUNC(PyObject *) _PyObject_MakeTpCall( + PyObject *callable, + PyObject *const *args, Py_ssize_t nargs, + PyObject *keywords); + +#define PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + +static inline Py_ssize_t +PyVectorcall_NARGS(size_t n) +{ + return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET; +} + +static inline vectorcallfunc +_PyVectorcall_Function(PyObject *callable) +{ + PyTypeObject *tp = Py_TYPE(callable); + Py_ssize_t offset = tp->tp_vectorcall_offset; + vectorcallfunc ptr; + if (!PyType_HasFeature(tp, _Py_TPFLAGS_HAVE_VECTORCALL)) { + return NULL; + } + assert(PyCallable_Check(callable)); + assert(offset > 0); + memcpy(&ptr, (char *) callable + offset, sizeof(ptr)); + return ptr; +} + +/* Call the callable object 'callable' with the "vectorcall" calling + convention. + + args is a C array for positional arguments. + + nargsf is the number of positional arguments plus optionally the flag + PY_VECTORCALL_ARGUMENTS_OFFSET which means that the caller is allowed to + modify args[-1]. + + kwnames is a tuple of keyword names. The values of the keyword arguments + are stored in "args" after the positional arguments (note that the number + of keyword arguments does not change nargsf). kwnames can also be NULL if + there are no keyword arguments. + + keywords must only contains str strings (no subclass), and all keys must + be unique. + + Return the result on success. Raise an exception and return NULL on + error. */ +static inline PyObject * +_PyObject_Vectorcall(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames) +{ + PyObject *res; + vectorcallfunc func; + assert(kwnames == NULL || PyTuple_Check(kwnames)); + assert(args != NULL || PyVectorcall_NARGS(nargsf) == 0); + func = _PyVectorcall_Function(callable); + if (func == NULL) { + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + return _PyObject_MakeTpCall(callable, args, nargs, kwnames); + } + res = func(callable, args, nargsf, kwnames); + return _Py_CheckFunctionResult(callable, res, NULL); +} + +/* Same as _PyObject_Vectorcall except that keyword arguments are passed as + dict, which may be NULL if there are no keyword arguments. */ +PyAPI_FUNC(PyObject *) _PyObject_FastCallDict( + PyObject *callable, + PyObject *const *args, + size_t nargsf, + PyObject *kwargs); + +/* Call "callable" (which must support vectorcall) with positional arguments + "tuple" and keyword arguments "dict". "dict" may also be NULL */ +PyAPI_FUNC(PyObject *) PyVectorcall_Call(PyObject *callable, PyObject *tuple, PyObject *dict); + +/* Same as _PyObject_Vectorcall except without keyword arguments */ +static inline PyObject * +_PyObject_FastCall(PyObject *func, PyObject *const *args, Py_ssize_t nargs) +{ + return _PyObject_Vectorcall(func, args, (size_t)nargs, NULL); +} + +/* Call a callable without any arguments */ +static inline PyObject * +_PyObject_CallNoArg(PyObject *func) { + return _PyObject_Vectorcall(func, NULL, 0, NULL); +} + +PyAPI_FUNC(PyObject *) _PyObject_Call_Prepend( + PyObject *callable, + PyObject *obj, + PyObject *args, + PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyObject_FastCall_Prepend( + PyObject *callable, + PyObject *obj, + PyObject *const *args, + Py_ssize_t nargs); + +/* Like PyObject_CallMethod(), but expect a _Py_Identifier* + as the method name. */ +PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *obj, + _Py_Identifier *name, + const char *format, ...); + +PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *obj, + _Py_Identifier *name, + const char *format, + ...); + +PyAPI_FUNC(PyObject *) _PyObject_CallMethodIdObjArgs( + PyObject *obj, + struct _Py_Identifier *name, + ...); + +PyAPI_FUNC(int) _PyObject_HasLen(PyObject *o); + +/* Guess the size of object 'o' using len(o) or o.__length_hint__(). + If neither of those return a non-negative value, then return the default + value. If one of the calls fails, this function returns -1. */ +PyAPI_FUNC(Py_ssize_t) PyObject_LengthHint(PyObject *o, Py_ssize_t); + +/* === New Buffer API ============================================ */ + +/* Return 1 if the getbuffer function is available, otherwise return 0. */ +#define PyObject_CheckBuffer(obj) \ + (((obj)->ob_type->tp_as_buffer != NULL) && \ + ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL)) + +/* This is a C-API version of the getbuffer function call. It checks + to make sure object has the required function pointer and issues the + call. + + Returns -1 and raises an error on failure and returns 0 on success. */ +PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view, + int flags); + +/* Get the memory area pointed to by the indices for the buffer given. + Note that view->ndim is the assumed size of indices. */ +PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices); + +/* Return the implied itemsize of the data-format area from a + struct-style description. */ +PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *); + +/* Implementation in memoryobject.c */ +PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view, + Py_ssize_t len, char order); + +PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf, + Py_ssize_t len, char order); + +/* Copy len bytes of data from the contiguous chunk of memory + pointed to by buf into the buffer exported by obj. Return + 0 on success and return -1 and raise a PyBuffer_Error on + error (i.e. the object does not have a buffer interface or + it is not working). + + If fort is 'F', then if the object is multi-dimensional, + then the data will be copied into the array in + Fortran-style (first dimension varies the fastest). If + fort is 'C', then the data will be copied into the array + in C-style (last dimension varies the fastest). If fort + is 'A', then it does not matter and the copy will be made + in whatever way is more efficient. */ +PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src); + +/* Copy the data from the src buffer to the buffer of destination. */ +PyAPI_FUNC(int) PyBuffer_IsContiguous(const Py_buffer *view, char fort); + +/*Fill the strides array with byte-strides of a contiguous + (Fortran-style if fort is 'F' or C-style otherwise) + array of the given shape with the given number of bytes + per element. */ +PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims, + Py_ssize_t *shape, + Py_ssize_t *strides, + int itemsize, + char fort); + +/* Fills in a buffer-info structure correctly for an exporter + that can only share a contiguous chunk of memory of + "unsigned bytes" of the given length. + + Returns 0 on success and -1 (with raising an error) on error. */ +PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf, + Py_ssize_t len, int readonly, + int flags); + +/* Releases a Py_buffer obtained from getbuffer ParseTuple's "s*". */ +PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view); + +/* ==== Iterators ================================================ */ + +#define PyIter_Check(obj) \ + ((obj)->ob_type->tp_iternext != NULL && \ + (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented) + +/* === Number Protocol ================================================== */ + +#define PyIndex_Check(obj) \ + ((obj)->ob_type->tp_as_number != NULL && \ + (obj)->ob_type->tp_as_number->nb_index != NULL) + +/* === Sequence protocol ================================================ */ + +/* Assume tp_as_sequence and sq_item exist and that 'i' does not + need to be corrected for a negative index. */ +#define PySequence_ITEM(o, i)\ + ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) ) + +#define PY_ITERSEARCH_COUNT 1 +#define PY_ITERSEARCH_INDEX 2 +#define PY_ITERSEARCH_CONTAINS 3 + +/* Iterate over seq. + + Result depends on the operation: + + PY_ITERSEARCH_COUNT: return # of times obj appears in seq; -1 if + error. + PY_ITERSEARCH_INDEX: return 0-based index of first occurrence of + obj in seq; set ValueError and return -1 if none found; + also return -1 on error. + PY_ITERSEARCH_CONTAINS: return 1 if obj in seq, else 0; -1 on + error. */ +PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq, + PyObject *obj, int operation); + +/* === Mapping protocol ================================================= */ + +PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls); + +PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls); + +PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self); + +PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]); + +/* For internal use by buffer API functions */ +PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index, + const Py_ssize_t *shape); +PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index, + const Py_ssize_t *shape); + +/* Convert Python int to Py_ssize_t. Do nothing if the argument is None. */ +PyAPI_FUNC(int) _Py_convert_optional_to_ssize_t(PyObject *, void *); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/dictobject.h b/client/3rd/include/frame/python/cpython/dictobject.h new file mode 100755 index 0000000..64c012a --- /dev/null +++ b/client/3rd/include/frame/python/cpython/dictobject.h @@ -0,0 +1,94 @@ +#ifndef Py_CPYTHON_DICTOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _dictkeysobject PyDictKeysObject; + +/* The ma_values pointer is NULL for a combined table + * or points to an array of PyObject* for a split table + */ +typedef struct { + PyObject_HEAD + + /* Number of items in the dictionary */ + Py_ssize_t ma_used; + + /* Dictionary version: globally unique, value change each time + the dictionary is modified */ + uint64_t ma_version_tag; + + PyDictKeysObject *ma_keys; + + /* If ma_values is NULL, the table is "combined": keys and values + are stored in ma_keys. + + If ma_values is not NULL, the table is splitted: + keys are stored in ma_keys and values are stored in ma_values */ + PyObject **ma_values; +} PyDictObject; + +PyAPI_FUNC(PyObject *) _PyDict_GetItem_KnownHash(PyObject *mp, PyObject *key, + Py_hash_t hash); +PyAPI_FUNC(PyObject *) _PyDict_GetItemIdWithError(PyObject *dp, + struct _Py_Identifier *key); +PyAPI_FUNC(PyObject *) _PyDict_GetItemStringWithError(PyObject *, const char *); +PyAPI_FUNC(PyObject *) PyDict_SetDefault( + PyObject *mp, PyObject *key, PyObject *defaultobj); +PyAPI_FUNC(int) _PyDict_SetItem_KnownHash(PyObject *mp, PyObject *key, + PyObject *item, Py_hash_t hash); +PyAPI_FUNC(int) _PyDict_DelItem_KnownHash(PyObject *mp, PyObject *key, + Py_hash_t hash); +PyAPI_FUNC(int) _PyDict_DelItemIf(PyObject *mp, PyObject *key, + int (*predicate)(PyObject *value)); +PyDictKeysObject *_PyDict_NewKeysForClass(void); +PyAPI_FUNC(PyObject *) PyObject_GenericGetDict(PyObject *, void *); +PyAPI_FUNC(int) _PyDict_Next( + PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value, Py_hash_t *hash); + +/* Get the number of items of a dictionary. */ +#define PyDict_GET_SIZE(mp) (assert(PyDict_Check(mp)),((PyDictObject *)mp)->ma_used) +PyAPI_FUNC(int) _PyDict_Contains(PyObject *mp, PyObject *key, Py_hash_t hash); +PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused); +PyAPI_FUNC(void) _PyDict_MaybeUntrack(PyObject *mp); +PyAPI_FUNC(int) _PyDict_HasOnlyStringKeys(PyObject *mp); +Py_ssize_t _PyDict_KeysSize(PyDictKeysObject *keys); +PyAPI_FUNC(Py_ssize_t) _PyDict_SizeOf(PyDictObject *); +PyAPI_FUNC(PyObject *) _PyDict_Pop(PyObject *, PyObject *, PyObject *); +PyObject *_PyDict_Pop_KnownHash(PyObject *, PyObject *, Py_hash_t, PyObject *); +PyObject *_PyDict_FromKeys(PyObject *, PyObject *, PyObject *); +#define _PyDict_HasSplitTable(d) ((d)->ma_values != NULL) + +PyAPI_FUNC(int) PyDict_ClearFreeList(void); + +/* Like PyDict_Merge, but override can be 0, 1 or 2. If override is 0, + the first occurrence of a key wins, if override is 1, the last occurrence + of a key wins, if override is 2, a KeyError with conflicting key as + argument is raised. +*/ +PyAPI_FUNC(int) _PyDict_MergeEx(PyObject *mp, PyObject *other, int override); +PyAPI_FUNC(PyObject *) _PyDict_GetItemId(PyObject *dp, struct _Py_Identifier *key); +PyAPI_FUNC(int) _PyDict_SetItemId(PyObject *dp, struct _Py_Identifier *key, PyObject *item); + +PyAPI_FUNC(int) _PyDict_DelItemId(PyObject *mp, struct _Py_Identifier *key); +PyAPI_FUNC(void) _PyDict_DebugMallocStats(FILE *out); + +int _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr, PyObject *name, PyObject *value); +PyObject *_PyDict_LoadGlobal(PyDictObject *, PyDictObject *, PyObject *); + +/* _PyDictView */ + +typedef struct { + PyObject_HEAD + PyDictObject *dv_dict; +} _PyDictViewObject; + +PyAPI_FUNC(PyObject *) _PyDictView_New(PyObject *, PyTypeObject *); +PyAPI_FUNC(PyObject *) _PyDictView_Intersect(PyObject* self, PyObject *other); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/fileobject.h b/client/3rd/include/frame/python/cpython/fileobject.h new file mode 100755 index 0000000..3005ce1 --- /dev/null +++ b/client/3rd/include/frame/python/cpython/fileobject.h @@ -0,0 +1,24 @@ +#ifndef Py_CPYTHON_FILEOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); + +/* The std printer acts as a preliminary sys.stderr until the new io + infrastructure is in place. */ +PyAPI_FUNC(PyObject *) PyFile_NewStdPrinter(int); +PyAPI_DATA(PyTypeObject) PyStdPrinter_Type; + +typedef PyObject * (*Py_OpenCodeHookFunction)(PyObject *, void *); + +PyAPI_FUNC(PyObject *) PyFile_OpenCode(const char *utf8path); +PyAPI_FUNC(PyObject *) PyFile_OpenCodeObject(PyObject *path); +PyAPI_FUNC(int) PyFile_SetOpenCodeHook(Py_OpenCodeHookFunction hook, void *userData); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/initconfig.h b/client/3rd/include/frame/python/cpython/initconfig.h new file mode 100755 index 0000000..4b5ceaf --- /dev/null +++ b/client/3rd/include/frame/python/cpython/initconfig.h @@ -0,0 +1,434 @@ +#ifndef Py_PYCORECONFIG_H +#define Py_PYCORECONFIG_H +#ifndef Py_LIMITED_API +#ifdef __cplusplus +extern "C" { +#endif + +/* --- PyStatus ----------------------------------------------- */ + +typedef struct { + enum { + _PyStatus_TYPE_OK=0, + _PyStatus_TYPE_ERROR=1, + _PyStatus_TYPE_EXIT=2 + } _type; + const char *func; + const char *err_msg; + int exitcode; +} PyStatus; + +PyAPI_FUNC(PyStatus) PyStatus_Ok(void); +PyAPI_FUNC(PyStatus) PyStatus_Error(const char *err_msg); +PyAPI_FUNC(PyStatus) PyStatus_NoMemory(void); +PyAPI_FUNC(PyStatus) PyStatus_Exit(int exitcode); +PyAPI_FUNC(int) PyStatus_IsError(PyStatus err); +PyAPI_FUNC(int) PyStatus_IsExit(PyStatus err); +PyAPI_FUNC(int) PyStatus_Exception(PyStatus err); + +/* --- PyWideStringList ------------------------------------------------ */ + +typedef struct { + /* If length is greater than zero, items must be non-NULL + and all items strings must be non-NULL */ + Py_ssize_t length; + wchar_t **items; +} PyWideStringList; + +PyAPI_FUNC(PyStatus) PyWideStringList_Append(PyWideStringList *list, + const wchar_t *item); +PyAPI_FUNC(PyStatus) PyWideStringList_Insert(PyWideStringList *list, + Py_ssize_t index, + const wchar_t *item); + + +/* --- PyPreConfig ----------------------------------------------- */ + +typedef struct { + int _config_init; /* _PyConfigInitEnum value */ + + /* Parse Py_PreInitializeFromBytesArgs() arguments? + See PyConfig.parse_argv */ + int parse_argv; + + /* If greater than 0, enable isolated mode: sys.path contains + neither the script's directory nor the user's site-packages directory. + + Set to 1 by the -I command line option. If set to -1 (default), inherit + Py_IsolatedFlag value. */ + int isolated; + + /* If greater than 0: use environment variables. + Set to 0 by -E command line option. If set to -1 (default), it is + set to !Py_IgnoreEnvironmentFlag. */ + int use_environment; + + /* Set the LC_CTYPE locale to the user preferred locale? If equals to 0, + set coerce_c_locale and coerce_c_locale_warn to 0. */ + int configure_locale; + + /* Coerce the LC_CTYPE locale if it's equal to "C"? (PEP 538) + + Set to 0 by PYTHONCOERCECLOCALE=0. Set to 1 by PYTHONCOERCECLOCALE=1. + Set to 2 if the user preferred LC_CTYPE locale is "C". + + If it is equal to 1, LC_CTYPE locale is read to decide if it should be + coerced or not (ex: PYTHONCOERCECLOCALE=1). Internally, it is set to 2 + if the LC_CTYPE locale must be coerced. + + Disable by default (set to 0). Set it to -1 to let Python decide if it + should be enabled or not. */ + int coerce_c_locale; + + /* Emit a warning if the LC_CTYPE locale is coerced? + + Set to 1 by PYTHONCOERCECLOCALE=warn. + + Disable by default (set to 0). Set it to -1 to let Python decide if it + should be enabled or not. */ + int coerce_c_locale_warn; + +#ifdef MS_WINDOWS + /* If greater than 1, use the "mbcs" encoding instead of the UTF-8 + encoding for the filesystem encoding. + + Set to 1 if the PYTHONLEGACYWINDOWSFSENCODING environment variable is + set to a non-empty string. If set to -1 (default), inherit + Py_LegacyWindowsFSEncodingFlag value. + + See PEP 529 for more details. */ + int legacy_windows_fs_encoding; +#endif + + /* Enable UTF-8 mode? (PEP 540) + + Disabled by default (equals to 0). + + Set to 1 by "-X utf8" and "-X utf8=1" command line options. + Set to 1 by PYTHONUTF8=1 environment variable. + + Set to 0 by "-X utf8=0" and PYTHONUTF8=0. + + If equals to -1, it is set to 1 if the LC_CTYPE locale is "C" or + "POSIX", otherwise it is set to 0. Inherit Py_UTF8Mode value value. */ + int utf8_mode; + + int dev_mode; /* Development mode. PYTHONDEVMODE, -X dev */ + + /* Memory allocator: PYTHONMALLOC env var. + See PyMemAllocatorName for valid values. */ + int allocator; +} PyPreConfig; + +PyAPI_FUNC(void) PyPreConfig_InitPythonConfig(PyPreConfig *config); +PyAPI_FUNC(void) PyPreConfig_InitIsolatedConfig(PyPreConfig *config); + + +/* --- PyConfig ---------------------------------------------- */ + +typedef struct { + int _config_init; /* _PyConfigInitEnum value */ + + int isolated; /* Isolated mode? see PyPreConfig.isolated */ + int use_environment; /* Use environment variables? see PyPreConfig.use_environment */ + int dev_mode; /* Development mode? See PyPreConfig.dev_mode */ + + /* Install signal handlers? Yes by default. */ + int install_signal_handlers; + + int use_hash_seed; /* PYTHONHASHSEED=x */ + unsigned long hash_seed; + + /* Enable faulthandler? + Set to 1 by -X faulthandler and PYTHONFAULTHANDLER. -1 means unset. */ + int faulthandler; + + /* Enable tracemalloc? + Set by -X tracemalloc=N and PYTHONTRACEMALLOC. -1 means unset */ + int tracemalloc; + + int import_time; /* PYTHONPROFILEIMPORTTIME, -X importtime */ + int show_ref_count; /* -X showrefcount */ + int show_alloc_count; /* -X showalloccount */ + int dump_refs; /* PYTHONDUMPREFS */ + int malloc_stats; /* PYTHONMALLOCSTATS */ + + /* Python filesystem encoding and error handler: + sys.getfilesystemencoding() and sys.getfilesystemencodeerrors(). + + Default encoding and error handler: + + * if Py_SetStandardStreamEncoding() has been called: they have the + highest priority; + * PYTHONIOENCODING environment variable; + * The UTF-8 Mode uses UTF-8/surrogateescape; + * If Python forces the usage of the ASCII encoding (ex: C locale + or POSIX locale on FreeBSD or HP-UX), use ASCII/surrogateescape; + * locale encoding: ANSI code page on Windows, UTF-8 on Android and + VxWorks, LC_CTYPE locale encoding on other platforms; + * On Windows, "surrogateescape" error handler; + * "surrogateescape" error handler if the LC_CTYPE locale is "C" or "POSIX"; + * "surrogateescape" error handler if the LC_CTYPE locale has been coerced + (PEP 538); + * "strict" error handler. + + Supported error handlers: "strict", "surrogateescape" and + "surrogatepass". The surrogatepass error handler is only supported + if Py_DecodeLocale() and Py_EncodeLocale() use directly the UTF-8 codec; + it's only used on Windows. + + initfsencoding() updates the encoding to the Python codec name. + For example, "ANSI_X3.4-1968" is replaced with "ascii". + + On Windows, sys._enablelegacywindowsfsencoding() sets the + encoding/errors to mbcs/replace at runtime. + + + See Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors. + */ + wchar_t *filesystem_encoding; + wchar_t *filesystem_errors; + + wchar_t *pycache_prefix; /* PYTHONPYCACHEPREFIX, -X pycache_prefix=PATH */ + int parse_argv; /* Parse argv command line arguments? */ + + /* Command line arguments (sys.argv). + + Set parse_argv to 1 to parse argv as Python command line arguments + and then strip Python arguments from argv. + + If argv is empty, an empty string is added to ensure that sys.argv + always exists and is never empty. */ + PyWideStringList argv; + + /* Program name: + + - If Py_SetProgramName() was called, use its value. + - On macOS, use PYTHONEXECUTABLE environment variable if set. + - If WITH_NEXT_FRAMEWORK macro is defined, use __PYVENV_LAUNCHER__ + environment variable is set. + - Use argv[0] if available and non-empty. + - Use "python" on Windows, or "python3 on other platforms. */ + wchar_t *program_name; + + PyWideStringList xoptions; /* Command line -X options */ + + /* Warnings options: lowest to highest priority. warnings.filters + is built in the reverse order (highest to lowest priority). */ + PyWideStringList warnoptions; + + /* If equal to zero, disable the import of the module site and the + site-dependent manipulations of sys.path that it entails. Also disable + these manipulations if site is explicitly imported later (call + site.main() if you want them to be triggered). + + Set to 0 by the -S command line option. If set to -1 (default), it is + set to !Py_NoSiteFlag. */ + int site_import; + + /* Bytes warnings: + + * If equal to 1, issue a warning when comparing bytes or bytearray with + str or bytes with int. + * If equal or greater to 2, issue an error. + + Incremented by the -b command line option. If set to -1 (default), inherit + Py_BytesWarningFlag value. */ + int bytes_warning; + + /* If greater than 0, enable inspect: when a script is passed as first + argument or the -c option is used, enter interactive mode after + executing the script or the command, even when sys.stdin does not appear + to be a terminal. + + Incremented by the -i command line option. Set to 1 if the PYTHONINSPECT + environment variable is non-empty. If set to -1 (default), inherit + Py_InspectFlag value. */ + int inspect; + + /* If greater than 0: enable the interactive mode (REPL). + + Incremented by the -i command line option. If set to -1 (default), + inherit Py_InteractiveFlag value. */ + int interactive; + + /* Optimization level. + + Incremented by the -O command line option. Set by the PYTHONOPTIMIZE + environment variable. If set to -1 (default), inherit Py_OptimizeFlag + value. */ + int optimization_level; + + /* If greater than 0, enable the debug mode: turn on parser debugging + output (for expert only, depending on compilation options). + + Incremented by the -d command line option. Set by the PYTHONDEBUG + environment variable. If set to -1 (default), inherit Py_DebugFlag + value. */ + int parser_debug; + + /* If equal to 0, Python won't try to write ``.pyc`` files on the + import of source modules. + + Set to 0 by the -B command line option and the PYTHONDONTWRITEBYTECODE + environment variable. If set to -1 (default), it is set to + !Py_DontWriteBytecodeFlag. */ + int write_bytecode; + + /* If greater than 0, enable the verbose mode: print a message each time a + module is initialized, showing the place (filename or built-in module) + from which it is loaded. + + If greater or equal to 2, print a message for each file that is checked + for when searching for a module. Also provides information on module + cleanup at exit. + + Incremented by the -v option. Set by the PYTHONVERBOSE environment + variable. If set to -1 (default), inherit Py_VerboseFlag value. */ + int verbose; + + /* If greater than 0, enable the quiet mode: Don't display the copyright + and version messages even in interactive mode. + + Incremented by the -q option. If set to -1 (default), inherit + Py_QuietFlag value. */ + int quiet; + + /* If greater than 0, don't add the user site-packages directory to + sys.path. + + Set to 0 by the -s and -I command line options , and the PYTHONNOUSERSITE + environment variable. If set to -1 (default), it is set to + !Py_NoUserSiteDirectory. */ + int user_site_directory; + + /* If non-zero, configure C standard steams (stdio, stdout, + stderr): + + - Set O_BINARY mode on Windows. + - If buffered_stdio is equal to zero, make streams unbuffered. + Otherwise, enable streams buffering if interactive is non-zero. */ + int configure_c_stdio; + + /* If equal to 0, enable unbuffered mode: force the stdout and stderr + streams to be unbuffered. + + Set to 0 by the -u option. Set by the PYTHONUNBUFFERED environment + variable. + If set to -1 (default), it is set to !Py_UnbufferedStdioFlag. */ + int buffered_stdio; + + /* Encoding of sys.stdin, sys.stdout and sys.stderr. + Value set from PYTHONIOENCODING environment variable and + Py_SetStandardStreamEncoding() function. + See also 'stdio_errors' attribute. */ + wchar_t *stdio_encoding; + + /* Error handler of sys.stdin and sys.stdout. + Value set from PYTHONIOENCODING environment variable and + Py_SetStandardStreamEncoding() function. + See also 'stdio_encoding' attribute. */ + wchar_t *stdio_errors; + +#ifdef MS_WINDOWS + /* If greater than zero, use io.FileIO instead of WindowsConsoleIO for sys + standard streams. + + Set to 1 if the PYTHONLEGACYWINDOWSSTDIO environment variable is set to + a non-empty string. If set to -1 (default), inherit + Py_LegacyWindowsStdioFlag value. + + See PEP 528 for more details. */ + int legacy_windows_stdio; +#endif + + /* Value of the --check-hash-based-pycs command line option: + + - "default" means the 'check_source' flag in hash-based pycs + determines invalidation + - "always" causes the interpreter to hash the source file for + invalidation regardless of value of 'check_source' bit + - "never" causes the interpreter to always assume hash-based pycs are + valid + + The default value is "default". + + See PEP 552 "Deterministic pycs" for more details. */ + wchar_t *check_hash_pycs_mode; + + /* --- Path configuration inputs ------------ */ + + /* If greater than 0, suppress _PyPathConfig_Calculate() warnings on Unix. + The parameter has no effect on Windows. + + If set to -1 (default), inherit !Py_FrozenFlag value. */ + int pathconfig_warnings; + + wchar_t *pythonpath_env; /* PYTHONPATH environment variable */ + wchar_t *home; /* PYTHONHOME environment variable, + see also Py_SetPythonHome(). */ + + /* --- Path configuration outputs ----------- */ + + int module_search_paths_set; /* If non-zero, use module_search_paths */ + PyWideStringList module_search_paths; /* sys.path paths. Computed if + module_search_paths_set is equal + to zero. */ + + wchar_t *executable; /* sys.executable */ + wchar_t *base_executable; /* sys._base_executable */ + wchar_t *prefix; /* sys.prefix */ + wchar_t *base_prefix; /* sys.base_prefix */ + wchar_t *exec_prefix; /* sys.exec_prefix */ + wchar_t *base_exec_prefix; /* sys.base_exec_prefix */ + + /* --- Parameter only used by Py_Main() ---------- */ + + /* Skip the first line of the source ('run_filename' parameter), allowing use of non-Unix forms of + "#!cmd". This is intended for a DOS specific hack only. + + Set by the -x command line option. */ + int skip_source_first_line; + + wchar_t *run_command; /* -c command line argument */ + wchar_t *run_module; /* -m command line argument */ + wchar_t *run_filename; /* Trailing command line argument without -c or -m */ + + /* --- Private fields ---------------------------- */ + + /* Install importlib? If set to 0, importlib is not initialized at all. + Needed by freeze_importlib. */ + int _install_importlib; + + /* If equal to 0, stop Python initialization before the "main" phase */ + int _init_main; +} PyConfig; + +PyAPI_FUNC(void) PyConfig_InitPythonConfig(PyConfig *config); +PyAPI_FUNC(void) PyConfig_InitIsolatedConfig(PyConfig *config); +PyAPI_FUNC(void) PyConfig_Clear(PyConfig *); +PyAPI_FUNC(PyStatus) PyConfig_SetString( + PyConfig *config, + wchar_t **config_str, + const wchar_t *str); +PyAPI_FUNC(PyStatus) PyConfig_SetBytesString( + PyConfig *config, + wchar_t **config_str, + const char *str); +PyAPI_FUNC(PyStatus) PyConfig_Read(PyConfig *config); +PyAPI_FUNC(PyStatus) PyConfig_SetBytesArgv( + PyConfig *config, + Py_ssize_t argc, + char * const *argv); +PyAPI_FUNC(PyStatus) PyConfig_SetArgv(PyConfig *config, + Py_ssize_t argc, + wchar_t * const *argv); +PyAPI_FUNC(PyStatus) PyConfig_SetWideStringList(PyConfig *config, + PyWideStringList *list, + Py_ssize_t length, wchar_t **items); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LIMITED_API */ +#endif /* !Py_PYCORECONFIG_H */ diff --git a/client/3rd/include/frame/python/cpython/interpreteridobject.h b/client/3rd/include/frame/python/cpython/interpreteridobject.h new file mode 100755 index 0000000..67ec587 --- /dev/null +++ b/client/3rd/include/frame/python/cpython/interpreteridobject.h @@ -0,0 +1,19 @@ +#ifndef Py_CPYTHON_INTERPRETERIDOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Interpreter ID Object */ + +PyAPI_DATA(PyTypeObject) _PyInterpreterID_Type; + +PyAPI_FUNC(PyObject *) _PyInterpreterID_New(int64_t); +PyAPI_FUNC(PyObject *) _PyInterpreterState_GetIDObject(PyInterpreterState *); +PyAPI_FUNC(PyInterpreterState *) _PyInterpreterID_LookUp(PyObject *); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/object.h b/client/3rd/include/frame/python/cpython/object.h new file mode 100755 index 0000000..5a0ac4a --- /dev/null +++ b/client/3rd/include/frame/python/cpython/object.h @@ -0,0 +1,470 @@ +#ifndef Py_CPYTHON_OBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* String Literals ****************************************/ +/* This structure helps managing static strings. The basic usage goes like this: + Instead of doing + + r = PyObject_CallMethod(o, "foo", "args", ...); + + do + + _Py_IDENTIFIER(foo); + ... + r = _PyObject_CallMethodId(o, &PyId_foo, "args", ...); + + PyId_foo is a static variable, either on block level or file level. On first + usage, the string "foo" is interned, and the structures are linked. On interpreter + shutdown, all strings are released (through _PyUnicode_ClearStaticStrings). + + Alternatively, _Py_static_string allows choosing the variable name. + _PyUnicode_FromId returns a borrowed reference to the interned string. + _PyObject_{Get,Set,Has}AttrId are __getattr__ versions using _Py_Identifier*. +*/ +typedef struct _Py_Identifier { + struct _Py_Identifier *next; + const char* string; + PyObject *object; +} _Py_Identifier; + +#define _Py_static_string_init(value) { .next = NULL, .string = value, .object = NULL } +#define _Py_static_string(varname, value) static _Py_Identifier varname = _Py_static_string_init(value) +#define _Py_IDENTIFIER(varname) _Py_static_string(PyId_##varname, #varname) + +/* buffer interface */ +typedef struct bufferinfo { + void *buf; + PyObject *obj; /* owned reference */ + Py_ssize_t len; + Py_ssize_t itemsize; /* This is Py_ssize_t so it can be + pointed to by strides in simple case.*/ + int readonly; + int ndim; + char *format; + Py_ssize_t *shape; + Py_ssize_t *strides; + Py_ssize_t *suboffsets; + void *internal; +} Py_buffer; + +typedef int (*getbufferproc)(PyObject *, Py_buffer *, int); +typedef void (*releasebufferproc)(PyObject *, Py_buffer *); + +typedef PyObject *(*vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + +/* Maximum number of dimensions */ +#define PyBUF_MAX_NDIM 64 + +/* Flags for getting buffers */ +#define PyBUF_SIMPLE 0 +#define PyBUF_WRITABLE 0x0001 +/* we used to include an E, backwards compatible alias */ +#define PyBUF_WRITEABLE PyBUF_WRITABLE +#define PyBUF_FORMAT 0x0004 +#define PyBUF_ND 0x0008 +#define PyBUF_STRIDES (0x0010 | PyBUF_ND) +#define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES) +#define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES) +#define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES) +#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES) + +#define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE) +#define PyBUF_CONTIG_RO (PyBUF_ND) + +#define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE) +#define PyBUF_STRIDED_RO (PyBUF_STRIDES) + +#define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT) +#define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT) + +#define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT) +#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT) + + +#define PyBUF_READ 0x100 +#define PyBUF_WRITE 0x200 +/* End buffer interface */ + + +typedef struct { + /* Number implementations must check *both* + arguments for proper type and implement the necessary conversions + in the slot functions themselves. */ + + binaryfunc nb_add; + binaryfunc nb_subtract; + binaryfunc nb_multiply; + binaryfunc nb_remainder; + binaryfunc nb_divmod; + ternaryfunc nb_power; + unaryfunc nb_negative; + unaryfunc nb_positive; + unaryfunc nb_absolute; + inquiry nb_bool; + unaryfunc nb_invert; + binaryfunc nb_lshift; + binaryfunc nb_rshift; + binaryfunc nb_and; + binaryfunc nb_xor; + binaryfunc nb_or; + unaryfunc nb_int; + void *nb_reserved; /* the slot formerly known as nb_long */ + unaryfunc nb_float; + + binaryfunc nb_inplace_add; + binaryfunc nb_inplace_subtract; + binaryfunc nb_inplace_multiply; + binaryfunc nb_inplace_remainder; + ternaryfunc nb_inplace_power; + binaryfunc nb_inplace_lshift; + binaryfunc nb_inplace_rshift; + binaryfunc nb_inplace_and; + binaryfunc nb_inplace_xor; + binaryfunc nb_inplace_or; + + binaryfunc nb_floor_divide; + binaryfunc nb_true_divide; + binaryfunc nb_inplace_floor_divide; + binaryfunc nb_inplace_true_divide; + + unaryfunc nb_index; + + binaryfunc nb_matrix_multiply; + binaryfunc nb_inplace_matrix_multiply; +} PyNumberMethods; + +typedef struct { + lenfunc sq_length; + binaryfunc sq_concat; + ssizeargfunc sq_repeat; + ssizeargfunc sq_item; + void *was_sq_slice; + ssizeobjargproc sq_ass_item; + void *was_sq_ass_slice; + objobjproc sq_contains; + + binaryfunc sq_inplace_concat; + ssizeargfunc sq_inplace_repeat; +} PySequenceMethods; + +typedef struct { + lenfunc mp_length; + binaryfunc mp_subscript; + objobjargproc mp_ass_subscript; +} PyMappingMethods; + +typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; +} PyAsyncMethods; + +typedef struct { + getbufferproc bf_getbuffer; + releasebufferproc bf_releasebuffer; +} PyBufferProcs; + +/* Allow printfunc in the tp_vectorcall_offset slot for + * backwards-compatibility */ +typedef Py_ssize_t printfunc; + +typedef struct _typeobject { + PyObject_VAR_HEAD + const char *tp_name; /* For printing, in format "." */ + Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */ + + /* Methods to implement standard operations */ + + destructor tp_dealloc; + Py_ssize_t tp_vectorcall_offset; + getattrfunc tp_getattr; + setattrfunc tp_setattr; + PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2) + or tp_reserved (Python 3) */ + reprfunc tp_repr; + + /* Method suites for standard classes */ + + PyNumberMethods *tp_as_number; + PySequenceMethods *tp_as_sequence; + PyMappingMethods *tp_as_mapping; + + /* More standard operations (here for binary compatibility) */ + + hashfunc tp_hash; + ternaryfunc tp_call; + reprfunc tp_str; + getattrofunc tp_getattro; + setattrofunc tp_setattro; + + /* Functions to access object as input/output buffer */ + PyBufferProcs *tp_as_buffer; + + /* Flags to define presence of optional/expanded features */ + unsigned long tp_flags; + + const char *tp_doc; /* Documentation string */ + + /* Assigned meaning in release 2.0 */ + /* call function for all accessible objects */ + traverseproc tp_traverse; + + /* delete references to contained objects */ + inquiry tp_clear; + + /* Assigned meaning in release 2.1 */ + /* rich comparisons */ + richcmpfunc tp_richcompare; + + /* weak reference enabler */ + Py_ssize_t tp_weaklistoffset; + + /* Iterators */ + getiterfunc tp_iter; + iternextfunc tp_iternext; + + /* Attribute descriptor and subclassing stuff */ + struct PyMethodDef *tp_methods; + struct PyMemberDef *tp_members; + struct PyGetSetDef *tp_getset; + struct _typeobject *tp_base; + PyObject *tp_dict; + descrgetfunc tp_descr_get; + descrsetfunc tp_descr_set; + Py_ssize_t tp_dictoffset; + initproc tp_init; + allocfunc tp_alloc; + newfunc tp_new; + freefunc tp_free; /* Low-level free-memory routine */ + inquiry tp_is_gc; /* For PyObject_IS_GC */ + PyObject *tp_bases; + PyObject *tp_mro; /* method resolution order */ + PyObject *tp_cache; + PyObject *tp_subclasses; + PyObject *tp_weaklist; + destructor tp_del; + + /* Type attribute cache version tag. Added in version 2.6 */ + unsigned int tp_version_tag; + + destructor tp_finalize; + vectorcallfunc tp_vectorcall; + + /* bpo-37250: kept for backwards compatibility in CPython 3.8 only */ + Py_DEPRECATED(3.8) int (*tp_print)(PyObject *, FILE *, int); + +#ifdef COUNT_ALLOCS + /* these must be last and never explicitly initialized */ + Py_ssize_t tp_allocs; + Py_ssize_t tp_frees; + Py_ssize_t tp_maxalloc; + struct _typeobject *tp_prev; + struct _typeobject *tp_next; +#endif +} PyTypeObject; + +/* The *real* layout of a type object when allocated on the heap */ +typedef struct _heaptypeobject { + /* Note: there's a dependency on the order of these members + in slotptr() in typeobject.c . */ + PyTypeObject ht_type; + PyAsyncMethods as_async; + PyNumberMethods as_number; + PyMappingMethods as_mapping; + PySequenceMethods as_sequence; /* as_sequence comes after as_mapping, + so that the mapping wins when both + the mapping and the sequence define + a given operator (e.g. __getitem__). + see add_operators() in typeobject.c . */ + PyBufferProcs as_buffer; + PyObject *ht_name, *ht_slots, *ht_qualname; + struct _dictkeysobject *ht_cached_keys; + /* here are optional user slots, followed by the members. */ +} PyHeapTypeObject; + +/* access macro to the members which are floating "behind" the object */ +#define PyHeapType_GET_MEMBERS(etype) \ + ((PyMemberDef *)(((char *)etype) + Py_TYPE(etype)->tp_basicsize)) + +PyAPI_FUNC(const char *) _PyType_Name(PyTypeObject *); +PyAPI_FUNC(PyObject *) _PyType_Lookup(PyTypeObject *, PyObject *); +PyAPI_FUNC(PyObject *) _PyType_LookupId(PyTypeObject *, _Py_Identifier *); +PyAPI_FUNC(PyObject *) _PyObject_LookupSpecial(PyObject *, _Py_Identifier *); +PyAPI_FUNC(PyTypeObject *) _PyType_CalculateMetaclass(PyTypeObject *, PyObject *); +PyAPI_FUNC(PyObject *) _PyType_GetDocFromInternalDoc(const char *, const char *); +PyAPI_FUNC(PyObject *) _PyType_GetTextSignatureFromInternalDoc(const char *, const char *); + +struct _Py_Identifier; +PyAPI_FUNC(int) PyObject_Print(PyObject *, FILE *, int); +PyAPI_FUNC(void) _Py_BreakPoint(void); +PyAPI_FUNC(void) _PyObject_Dump(PyObject *); +PyAPI_FUNC(int) _PyObject_IsFreed(PyObject *); + +PyAPI_FUNC(int) _PyObject_IsAbstract(PyObject *); +PyAPI_FUNC(PyObject *) _PyObject_GetAttrId(PyObject *, struct _Py_Identifier *); +PyAPI_FUNC(int) _PyObject_SetAttrId(PyObject *, struct _Py_Identifier *, PyObject *); +PyAPI_FUNC(int) _PyObject_HasAttrId(PyObject *, struct _Py_Identifier *); +/* Replacements of PyObject_GetAttr() and _PyObject_GetAttrId() which + don't raise AttributeError. + + Return 1 and set *result != NULL if an attribute is found. + Return 0 and set *result == NULL if an attribute is not found; + an AttributeError is silenced. + Return -1 and set *result == NULL if an error other than AttributeError + is raised. +*/ +PyAPI_FUNC(int) _PyObject_LookupAttr(PyObject *, PyObject *, PyObject **); +PyAPI_FUNC(int) _PyObject_LookupAttrId(PyObject *, struct _Py_Identifier *, PyObject **); +PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *); +PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *); +PyAPI_FUNC(void) PyObject_CallFinalizer(PyObject *); +PyAPI_FUNC(int) PyObject_CallFinalizerFromDealloc(PyObject *); + +/* Same as PyObject_Generic{Get,Set}Attr, but passing the attributes + dict as the last parameter. */ +PyAPI_FUNC(PyObject *) +_PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *, int); +PyAPI_FUNC(int) +_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *, + PyObject *, PyObject *); + +#define PyType_HasFeature(t,f) (((t)->tp_flags & (f)) != 0) + +static inline void _Py_Dealloc_inline(PyObject *op) +{ + destructor dealloc = Py_TYPE(op)->tp_dealloc; +#ifdef Py_TRACE_REFS + _Py_ForgetReference(op); +#else + _Py_INC_TPFREES(op); +#endif + (*dealloc)(op); +} +#define _Py_Dealloc(op) _Py_Dealloc_inline(op) + + +/* Safely decref `op` and set `op` to `op2`. + * + * As in case of Py_CLEAR "the obvious" code can be deadly: + * + * Py_DECREF(op); + * op = op2; + * + * The safe way is: + * + * Py_SETREF(op, op2); + * + * That arranges to set `op` to `op2` _before_ decref'ing, so that any code + * triggered as a side-effect of `op` getting torn down no longer believes + * `op` points to a valid object. + * + * Py_XSETREF is a variant of Py_SETREF that uses Py_XDECREF instead of + * Py_DECREF. + */ + +#define Py_SETREF(op, op2) \ + do { \ + PyObject *_py_tmp = _PyObject_CAST(op); \ + (op) = (op2); \ + Py_DECREF(_py_tmp); \ + } while (0) + +#define Py_XSETREF(op, op2) \ + do { \ + PyObject *_py_tmp = _PyObject_CAST(op); \ + (op) = (op2); \ + Py_XDECREF(_py_tmp); \ + } while (0) + + +PyAPI_DATA(PyTypeObject) _PyNone_Type; +PyAPI_DATA(PyTypeObject) _PyNotImplemented_Type; + +/* Maps Py_LT to Py_GT, ..., Py_GE to Py_LE. + * Defined in object.c. + */ +PyAPI_DATA(int) _Py_SwappedOp[]; + +/* This is the old private API, invoked by the macros before 3.2.4. + Kept for binary compatibility of extensions using the stable ABI. */ +PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*); +PyAPI_FUNC(void) _PyTrash_destroy_chain(void); + +PyAPI_FUNC(void) +_PyDebugAllocatorStats(FILE *out, const char *block_name, int num_blocks, + size_t sizeof_block); +PyAPI_FUNC(void) +_PyObject_DebugTypeStats(FILE *out); + +/* Define a pair of assertion macros: + _PyObject_ASSERT_FROM(), _PyObject_ASSERT_WITH_MSG() and _PyObject_ASSERT(). + + These work like the regular C assert(), in that they will abort the + process with a message on stderr if the given condition fails to hold, + but compile away to nothing if NDEBUG is defined. + + However, before aborting, Python will also try to call _PyObject_Dump() on + the given object. This may be of use when investigating bugs in which a + particular object is corrupt (e.g. buggy a tp_visit method in an extension + module breaking the garbage collector), to help locate the broken objects. + + The WITH_MSG variant allows you to supply an additional message that Python + will attempt to print to stderr, after the object dump. */ +#ifdef NDEBUG + /* No debugging: compile away the assertions: */ +# define _PyObject_ASSERT_FROM(obj, expr, msg, filename, lineno, func) \ + ((void)0) +#else + /* With debugging: generate checks: */ +# define _PyObject_ASSERT_FROM(obj, expr, msg, filename, lineno, func) \ + ((expr) \ + ? (void)(0) \ + : _PyObject_AssertFailed((obj), Py_STRINGIFY(expr), \ + (msg), (filename), (lineno), (func))) +#endif + +#define _PyObject_ASSERT_WITH_MSG(obj, expr, msg) \ + _PyObject_ASSERT_FROM(obj, expr, msg, __FILE__, __LINE__, __func__) +#define _PyObject_ASSERT(obj, expr) \ + _PyObject_ASSERT_WITH_MSG(obj, expr, NULL) + +#define _PyObject_ASSERT_FAILED_MSG(obj, msg) \ + _PyObject_AssertFailed((obj), NULL, (msg), __FILE__, __LINE__, __func__) + +/* Declare and define _PyObject_AssertFailed() even when NDEBUG is defined, + to avoid causing compiler/linker errors when building extensions without + NDEBUG against a Python built with NDEBUG defined. + + msg, expr and function can be NULL. */ +PyAPI_FUNC(void) _PyObject_AssertFailed( + PyObject *obj, + const char *expr, + const char *msg, + const char *file, + int line, + const char *function); + +/* Check if an object is consistent. For example, ensure that the reference + counter is greater than or equal to 1, and ensure that ob_type is not NULL. + + Call _PyObject_AssertFailed() if the object is inconsistent. + + If check_content is zero, only check header fields: reduce the overhead. + + The function always return 1. The return value is just here to be able to + write: + + assert(_PyObject_CheckConsistency(obj, 1)); */ +PyAPI_FUNC(int) _PyObject_CheckConsistency( + PyObject *op, + int check_content); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/objimpl.h b/client/3rd/include/frame/python/cpython/objimpl.h new file mode 100755 index 0000000..f121922 --- /dev/null +++ b/client/3rd/include/frame/python/cpython/objimpl.h @@ -0,0 +1,113 @@ +#ifndef Py_CPYTHON_OBJIMPL_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* This function returns the number of allocated memory blocks, regardless of size */ +PyAPI_FUNC(Py_ssize_t) _Py_GetAllocatedBlocks(void); + +/* Macros */ +#ifdef WITH_PYMALLOC +PyAPI_FUNC(int) _PyObject_DebugMallocStats(FILE *out); +#endif + + +typedef struct { + /* user context passed as the first argument to the 2 functions */ + void *ctx; + + /* allocate an arena of size bytes */ + void* (*alloc) (void *ctx, size_t size); + + /* free an arena */ + void (*free) (void *ctx, void *ptr, size_t size); +} PyObjectArenaAllocator; + +/* Get the arena allocator. */ +PyAPI_FUNC(void) PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator); + +/* Set the arena allocator. */ +PyAPI_FUNC(void) PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator); + + +PyAPI_FUNC(Py_ssize_t) _PyGC_CollectNoFail(void); +PyAPI_FUNC(Py_ssize_t) _PyGC_CollectIfEnabled(void); + + +/* Test if an object has a GC head */ +#define PyObject_IS_GC(o) \ + (PyType_IS_GC(Py_TYPE(o)) \ + && (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o))) + +/* GC information is stored BEFORE the object structure. */ +typedef struct { + // Pointer to next object in the list. + // 0 means the object is not tracked + uintptr_t _gc_next; + + // Pointer to previous object in the list. + // Lowest two bits are used for flags documented later. + uintptr_t _gc_prev; +} PyGC_Head; + +#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1) + +/* True if the object is currently tracked by the GC. */ +#define _PyObject_GC_IS_TRACKED(o) (_Py_AS_GC(o)->_gc_next != 0) + +/* True if the object may be tracked by the GC in the future, or already is. + This can be useful to implement some optimizations. */ +#define _PyObject_GC_MAY_BE_TRACKED(obj) \ + (PyObject_IS_GC(obj) && \ + (!PyTuple_CheckExact(obj) || _PyObject_GC_IS_TRACKED(obj))) + + +/* Bit flags for _gc_prev */ +/* Bit 0 is set when tp_finalize is called */ +#define _PyGC_PREV_MASK_FINALIZED (1) +/* Bit 1 is set when the object is in generation which is GCed currently. */ +#define _PyGC_PREV_MASK_COLLECTING (2) +/* The (N-2) most significant bits contain the real address. */ +#define _PyGC_PREV_SHIFT (2) +#define _PyGC_PREV_MASK (((uintptr_t) -1) << _PyGC_PREV_SHIFT) + +// Lowest bit of _gc_next is used for flags only in GC. +// But it is always 0 for normal code. +#define _PyGCHead_NEXT(g) ((PyGC_Head*)(g)->_gc_next) +#define _PyGCHead_SET_NEXT(g, p) ((g)->_gc_next = (uintptr_t)(p)) + +// Lowest two bits of _gc_prev is used for _PyGC_PREV_MASK_* flags. +#define _PyGCHead_PREV(g) ((PyGC_Head*)((g)->_gc_prev & _PyGC_PREV_MASK)) +#define _PyGCHead_SET_PREV(g, p) do { \ + assert(((uintptr_t)p & ~_PyGC_PREV_MASK) == 0); \ + (g)->_gc_prev = ((g)->_gc_prev & ~_PyGC_PREV_MASK) \ + | ((uintptr_t)(p)); \ + } while (0) + +#define _PyGCHead_FINALIZED(g) \ + (((g)->_gc_prev & _PyGC_PREV_MASK_FINALIZED) != 0) +#define _PyGCHead_SET_FINALIZED(g) \ + ((g)->_gc_prev |= _PyGC_PREV_MASK_FINALIZED) + +#define _PyGC_FINALIZED(o) \ + _PyGCHead_FINALIZED(_Py_AS_GC(o)) +#define _PyGC_SET_FINALIZED(o) \ + _PyGCHead_SET_FINALIZED(_Py_AS_GC(o)) + + +PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t size); +PyAPI_FUNC(PyObject *) _PyObject_GC_Calloc(size_t size); + + +/* Test if a type supports weak references */ +#define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0) + +#define PyObject_GET_WEAKREFS_LISTPTR(o) \ + ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset)) + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/pyerrors.h b/client/3rd/include/frame/python/cpython/pyerrors.h new file mode 100755 index 0000000..418f48a --- /dev/null +++ b/client/3rd/include/frame/python/cpython/pyerrors.h @@ -0,0 +1,188 @@ +#ifndef Py_CPYTHON_ERRORS_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Error objects */ + +/* PyException_HEAD defines the initial segment of every exception class. */ +#define PyException_HEAD PyObject_HEAD PyObject *dict;\ + PyObject *args; PyObject *traceback;\ + PyObject *context; PyObject *cause;\ + char suppress_context; + +typedef struct { + PyException_HEAD +} PyBaseExceptionObject; + +typedef struct { + PyException_HEAD + PyObject *msg; + PyObject *filename; + PyObject *lineno; + PyObject *offset; + PyObject *text; + PyObject *print_file_and_line; +} PySyntaxErrorObject; + +typedef struct { + PyException_HEAD + PyObject *msg; + PyObject *name; + PyObject *path; +} PyImportErrorObject; + +typedef struct { + PyException_HEAD + PyObject *encoding; + PyObject *object; + Py_ssize_t start; + Py_ssize_t end; + PyObject *reason; +} PyUnicodeErrorObject; + +typedef struct { + PyException_HEAD + PyObject *code; +} PySystemExitObject; + +typedef struct { + PyException_HEAD + PyObject *myerrno; + PyObject *strerror; + PyObject *filename; + PyObject *filename2; +#ifdef MS_WINDOWS + PyObject *winerror; +#endif + Py_ssize_t written; /* only for BlockingIOError, -1 otherwise */ +} PyOSErrorObject; + +typedef struct { + PyException_HEAD + PyObject *value; +} PyStopIterationObject; + +/* Compatibility typedefs */ +typedef PyOSErrorObject PyEnvironmentErrorObject; +#ifdef MS_WINDOWS +typedef PyOSErrorObject PyWindowsErrorObject; +#endif + +/* Error handling definitions */ + +PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *); +_PyErr_StackItem *_PyErr_GetTopmostException(PyThreadState *tstate); + +/* Context manipulation (PEP 3134) */ + +PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); + +/* */ + +#define PyExceptionClass_Name(x) (((PyTypeObject*)(x))->tp_name) + +/* Convenience functions */ + +#ifdef MS_WINDOWS +Py_DEPRECATED(3.3) +PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename( + PyObject *, const Py_UNICODE *); +#endif /* MS_WINDOWS */ + +/* Like PyErr_Format(), but saves current exception as __context__ and + __cause__. + */ +PyAPI_FUNC(PyObject *) _PyErr_FormatFromCause( + PyObject *exception, + const char *format, /* ASCII-encoded string */ + ... + ); + +#ifdef MS_WINDOWS +/* XXX redeclare to use WSTRING */ +Py_DEPRECATED(3.3) +PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename( + int, const Py_UNICODE *); +Py_DEPRECATED(3.3) +PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename( + PyObject *,int, const Py_UNICODE *); +#endif + +/* In exceptions.c */ + +/* Helper that attempts to replace the current exception with one of the + * same type but with a prefix added to the exception text. The resulting + * exception description looks like: + * + * prefix (exc_type: original_exc_str) + * + * Only some exceptions can be safely replaced. If the function determines + * it isn't safe to perform the replacement, it will leave the original + * unmodified exception in place. + * + * Returns a borrowed reference to the new exception (if any), NULL if the + * existing exception was left in place. + */ +PyAPI_FUNC(PyObject *) _PyErr_TrySetFromCause( + const char *prefix_format, /* ASCII-encoded string */ + ... + ); + +/* In signalmodule.c */ + +int PySignal_SetWakeupFd(int fd); +PyAPI_FUNC(int) _PyErr_CheckSignals(void); + +/* Support for adding program text to SyntaxErrors */ + +PyAPI_FUNC(void) PyErr_SyntaxLocationObject( + PyObject *filename, + int lineno, + int col_offset); + +PyAPI_FUNC(PyObject *) PyErr_ProgramTextObject( + PyObject *filename, + int lineno); + +/* Create a UnicodeEncodeError object. + * + * TODO: This API will be removed in Python 3.11. + */ +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_Create( + const char *encoding, /* UTF-8 encoded string */ + const Py_UNICODE *object, + Py_ssize_t length, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); + +/* Create a UnicodeTranslateError object. + * + * TODO: This API will be removed in Python 3.11. + */ +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_Create( + const Py_UNICODE *object, + Py_ssize_t length, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create( + PyObject *object, + Py_ssize_t start, + Py_ssize_t end, + const char *reason /* UTF-8 encoded string */ + ); + +PyAPI_FUNC(void) _PyErr_WriteUnraisableMsg( + const char *err_msg, + PyObject *obj); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/pylifecycle.h b/client/3rd/include/frame/python/cpython/pylifecycle.h new file mode 100755 index 0000000..2f3a0db --- /dev/null +++ b/client/3rd/include/frame/python/cpython/pylifecycle.h @@ -0,0 +1,78 @@ +#ifndef Py_CPYTHON_PYLIFECYCLE_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Only used by applications that embed the interpreter and need to + * override the standard encoding determination mechanism + */ +PyAPI_FUNC(int) Py_SetStandardStreamEncoding(const char *encoding, + const char *errors); + +/* PEP 432 Multi-phase initialization API (Private while provisional!) */ + +PyAPI_FUNC(PyStatus) Py_PreInitialize( + const PyPreConfig *src_config); +PyAPI_FUNC(PyStatus) Py_PreInitializeFromBytesArgs( + const PyPreConfig *src_config, + Py_ssize_t argc, + char **argv); +PyAPI_FUNC(PyStatus) Py_PreInitializeFromArgs( + const PyPreConfig *src_config, + Py_ssize_t argc, + wchar_t **argv); + +PyAPI_FUNC(int) _Py_IsCoreInitialized(void); + + +/* Initialization and finalization */ + +PyAPI_FUNC(PyStatus) Py_InitializeFromConfig( + const PyConfig *config); +PyAPI_FUNC(PyStatus) _Py_InitializeFromArgs( + const PyConfig *config, + Py_ssize_t argc, + char * const *argv); +PyAPI_FUNC(PyStatus) _Py_InitializeFromWideArgs( + const PyConfig *config, + Py_ssize_t argc, + wchar_t * const *argv); +PyAPI_FUNC(PyStatus) _Py_InitializeMain(void); + +PyAPI_FUNC(int) Py_RunMain(void); + + +PyAPI_FUNC(void) _Py_NO_RETURN Py_ExitStatusException(PyStatus err); + +/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level + * exit functions. + */ +PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *); + +/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */ +PyAPI_FUNC(void) _Py_RestoreSignals(void); + +PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *); + +PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *); + +PyAPI_FUNC(const char *) _Py_gitidentifier(void); +PyAPI_FUNC(const char *) _Py_gitversion(void); + +PyAPI_FUNC(int) _Py_IsFinalizing(void); + +/* Random */ +PyAPI_FUNC(int) _PyOS_URandom(void *buffer, Py_ssize_t size); +PyAPI_FUNC(int) _PyOS_URandomNonblock(void *buffer, Py_ssize_t size); + +/* Legacy locale support */ +PyAPI_FUNC(int) _Py_CoerceLegacyLocale(int warn); +PyAPI_FUNC(int) _Py_LegacyLocaleDetected(int warn); +PyAPI_FUNC(char *) _Py_SetLocaleFromEnv(int category); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/pymem.h b/client/3rd/include/frame/python/cpython/pymem.h new file mode 100755 index 0000000..79f063b --- /dev/null +++ b/client/3rd/include/frame/python/cpython/pymem.h @@ -0,0 +1,108 @@ +#ifndef Py_CPYTHON_PYMEM_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(void *) PyMem_RawMalloc(size_t size); +PyAPI_FUNC(void *) PyMem_RawCalloc(size_t nelem, size_t elsize); +PyAPI_FUNC(void *) PyMem_RawRealloc(void *ptr, size_t new_size); +PyAPI_FUNC(void) PyMem_RawFree(void *ptr); + +/* Try to get the allocators name set by _PyMem_SetupAllocators(). */ +PyAPI_FUNC(const char*) _PyMem_GetCurrentAllocatorName(void); + +PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); + +/* strdup() using PyMem_RawMalloc() */ +PyAPI_FUNC(char *) _PyMem_RawStrdup(const char *str); + +/* strdup() using PyMem_Malloc() */ +PyAPI_FUNC(char *) _PyMem_Strdup(const char *str); + +/* wcsdup() using PyMem_RawMalloc() */ +PyAPI_FUNC(wchar_t*) _PyMem_RawWcsdup(const wchar_t *str); + + +typedef enum { + /* PyMem_RawMalloc(), PyMem_RawRealloc() and PyMem_RawFree() */ + PYMEM_DOMAIN_RAW, + + /* PyMem_Malloc(), PyMem_Realloc() and PyMem_Free() */ + PYMEM_DOMAIN_MEM, + + /* PyObject_Malloc(), PyObject_Realloc() and PyObject_Free() */ + PYMEM_DOMAIN_OBJ +} PyMemAllocatorDomain; + +typedef enum { + PYMEM_ALLOCATOR_NOT_SET = 0, + PYMEM_ALLOCATOR_DEFAULT = 1, + PYMEM_ALLOCATOR_DEBUG = 2, + PYMEM_ALLOCATOR_MALLOC = 3, + PYMEM_ALLOCATOR_MALLOC_DEBUG = 4, +#ifdef WITH_PYMALLOC + PYMEM_ALLOCATOR_PYMALLOC = 5, + PYMEM_ALLOCATOR_PYMALLOC_DEBUG = 6, +#endif +} PyMemAllocatorName; + + +typedef struct { + /* user context passed as the first argument to the 4 functions */ + void *ctx; + + /* allocate a memory block */ + void* (*malloc) (void *ctx, size_t size); + + /* allocate a memory block initialized by zeros */ + void* (*calloc) (void *ctx, size_t nelem, size_t elsize); + + /* allocate or resize a memory block */ + void* (*realloc) (void *ctx, void *ptr, size_t new_size); + + /* release a memory block */ + void (*free) (void *ctx, void *ptr); +} PyMemAllocatorEx; + +/* Get the memory block allocator of the specified domain. */ +PyAPI_FUNC(void) PyMem_GetAllocator(PyMemAllocatorDomain domain, + PyMemAllocatorEx *allocator); + +/* Set the memory block allocator of the specified domain. + + The new allocator must return a distinct non-NULL pointer when requesting + zero bytes. + + For the PYMEM_DOMAIN_RAW domain, the allocator must be thread-safe: the GIL + is not held when the allocator is called. + + If the new allocator is not a hook (don't call the previous allocator), the + PyMem_SetupDebugHooks() function must be called to reinstall the debug hooks + on top on the new allocator. */ +PyAPI_FUNC(void) PyMem_SetAllocator(PyMemAllocatorDomain domain, + PyMemAllocatorEx *allocator); + +/* Setup hooks to detect bugs in the following Python memory allocator + functions: + + - PyMem_RawMalloc(), PyMem_RawRealloc(), PyMem_RawFree() + - PyMem_Malloc(), PyMem_Realloc(), PyMem_Free() + - PyObject_Malloc(), PyObject_Realloc() and PyObject_Free() + + Newly allocated memory is filled with the byte 0xCB, freed memory is filled + with the byte 0xDB. Additional checks: + + - detect API violations, ex: PyObject_Free() called on a buffer allocated + by PyMem_Malloc() + - detect write before the start of the buffer (buffer underflow) + - detect write after the end of the buffer (buffer overflow) + + The function does nothing if Python is not compiled is debug mode. */ +PyAPI_FUNC(void) PyMem_SetupDebugHooks(void); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/pystate.h b/client/3rd/include/frame/python/cpython/pystate.h new file mode 100755 index 0000000..e22b053 --- /dev/null +++ b/client/3rd/include/frame/python/cpython/pystate.h @@ -0,0 +1,252 @@ +#ifndef Py_CPYTHON_PYSTATE_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "cpython/initconfig.h" + +PyAPI_FUNC(int) _PyInterpreterState_RequiresIDRef(PyInterpreterState *); +PyAPI_FUNC(void) _PyInterpreterState_RequireIDRef(PyInterpreterState *, int); + +PyAPI_FUNC(PyObject *) _PyInterpreterState_GetMainModule(PyInterpreterState *); + +/* State unique per thread */ + +/* Py_tracefunc return -1 when raising an exception, or 0 for success. */ +typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *); + +/* The following values are used for 'what' for tracefunc functions + * + * To add a new kind of trace event, also update "trace_init" in + * Python/sysmodule.c to define the Python level event name + */ +#define PyTrace_CALL 0 +#define PyTrace_EXCEPTION 1 +#define PyTrace_LINE 2 +#define PyTrace_RETURN 3 +#define PyTrace_C_CALL 4 +#define PyTrace_C_EXCEPTION 5 +#define PyTrace_C_RETURN 6 +#define PyTrace_OPCODE 7 + + +typedef struct _err_stackitem { + /* This struct represents an entry on the exception stack, which is a + * per-coroutine state. (Coroutine in the computer science sense, + * including the thread and generators). + * This ensures that the exception state is not impacted by "yields" + * from an except handler. + */ + PyObject *exc_type, *exc_value, *exc_traceback; + + struct _err_stackitem *previous_item; + +} _PyErr_StackItem; + + +// The PyThreadState typedef is in Include/pystate.h. +struct _ts { + /* See Python/ceval.c for comments explaining most fields */ + + struct _ts *prev; + struct _ts *next; + PyInterpreterState *interp; + + /* Borrowed reference to the current frame (it can be NULL) */ + struct _frame *frame; + int recursion_depth; + char overflowed; /* The stack has overflowed. Allow 50 more calls + to handle the runtime error. */ + char recursion_critical; /* The current calls must not cause + a stack overflow. */ + int stackcheck_counter; + + /* 'tracing' keeps track of the execution depth when tracing/profiling. + This is to prevent the actual trace/profile code from being recorded in + the trace/profile. */ + int tracing; + int use_tracing; + + Py_tracefunc c_profilefunc; + Py_tracefunc c_tracefunc; + PyObject *c_profileobj; + PyObject *c_traceobj; + + /* The exception currently being raised */ + PyObject *curexc_type; + PyObject *curexc_value; + PyObject *curexc_traceback; + + /* The exception currently being handled, if no coroutines/generators + * are present. Always last element on the stack referred to be exc_info. + */ + _PyErr_StackItem exc_state; + + /* Pointer to the top of the stack of the exceptions currently + * being handled */ + _PyErr_StackItem *exc_info; + + PyObject *dict; /* Stores per-thread state */ + + int gilstate_counter; + + PyObject *async_exc; /* Asynchronous exception to raise */ + unsigned long thread_id; /* Thread id where this tstate was created */ + + int trash_delete_nesting; + PyObject *trash_delete_later; + + /* Called when a thread state is deleted normally, but not when it + * is destroyed after fork(). + * Pain: to prevent rare but fatal shutdown errors (issue 18808), + * Thread.join() must wait for the join'ed thread's tstate to be unlinked + * from the tstate chain. That happens at the end of a thread's life, + * in pystate.c. + * The obvious way doesn't quite work: create a lock which the tstate + * unlinking code releases, and have Thread.join() wait to acquire that + * lock. The problem is that we _are_ at the end of the thread's life: + * if the thread holds the last reference to the lock, decref'ing the + * lock will delete the lock, and that may trigger arbitrary Python code + * if there's a weakref, with a callback, to the lock. But by this time + * _PyRuntime.gilstate.tstate_current is already NULL, so only the simplest + * of C code can be allowed to run (in particular it must not be possible to + * release the GIL). + * So instead of holding the lock directly, the tstate holds a weakref to + * the lock: that's the value of on_delete_data below. Decref'ing a + * weakref is harmless. + * on_delete points to _threadmodule.c's static release_sentinel() function. + * After the tstate is unlinked, release_sentinel is called with the + * weakref-to-lock (on_delete_data) argument, and release_sentinel releases + * the indirectly held lock. + */ + void (*on_delete)(void *); + void *on_delete_data; + + int coroutine_origin_tracking_depth; + + PyObject *async_gen_firstiter; + PyObject *async_gen_finalizer; + + PyObject *context; + uint64_t context_ver; + + /* Unique thread state id. */ + uint64_t id; + + /* XXX signal handlers should also be here */ + +}; + +/* Get the current interpreter state. + + Issue a fatal error if there no current Python thread state or no current + interpreter. It cannot return NULL. + + The caller must hold the GIL.*/ +PyAPI_FUNC(PyInterpreterState *) _PyInterpreterState_Get(void); + +PyAPI_FUNC(int) _PyState_AddModule(PyObject*, struct PyModuleDef*); +PyAPI_FUNC(void) _PyState_ClearModules(void); +PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *); + +/* Similar to PyThreadState_Get(), but don't issue a fatal error + * if it is NULL. */ +PyAPI_FUNC(PyThreadState *) _PyThreadState_UncheckedGet(void); + +/* PyGILState */ + +/* Helper/diagnostic function - return 1 if the current thread + currently holds the GIL, 0 otherwise. + + The function returns 1 if _PyGILState_check_enabled is non-zero. */ +PyAPI_FUNC(int) PyGILState_Check(void); + +/* Get the single PyInterpreterState used by this process' GILState + implementation. + + This function doesn't check for error. Return NULL before _PyGILState_Init() + is called and after _PyGILState_Fini() is called. + + See also _PyInterpreterState_Get() and _PyInterpreterState_GET_UNSAFE(). */ +PyAPI_FUNC(PyInterpreterState *) _PyGILState_GetInterpreterStateUnsafe(void); + +/* The implementation of sys._current_frames() Returns a dict mapping + thread id to that thread's current frame. +*/ +PyAPI_FUNC(PyObject *) _PyThread_CurrentFrames(void); + +/* Routines for advanced debuggers, requested by David Beazley. + Don't use unless you know what you are doing! */ +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Main(void); +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Head(void); +PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *); +PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *); +PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *); + +typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_); + +/* cross-interpreter data */ + +struct _xid; + +// _PyCrossInterpreterData is similar to Py_buffer as an effectively +// opaque struct that holds data outside the object machinery. This +// is necessary to pass safely between interpreters in the same process. +typedef struct _xid { + // data is the cross-interpreter-safe derivation of a Python object + // (see _PyObject_GetCrossInterpreterData). It will be NULL if the + // new_object func (below) encodes the data. + void *data; + // obj is the Python object from which the data was derived. This + // is non-NULL only if the data remains bound to the object in some + // way, such that the object must be "released" (via a decref) when + // the data is released. In that case the code that sets the field, + // likely a registered "crossinterpdatafunc", is responsible for + // ensuring it owns the reference (i.e. incref). + PyObject *obj; + // interp is the ID of the owning interpreter of the original + // object. It corresponds to the active interpreter when + // _PyObject_GetCrossInterpreterData() was called. This should only + // be set by the cross-interpreter machinery. + // + // We use the ID rather than the PyInterpreterState to avoid issues + // with deleted interpreters. Note that IDs are never re-used, so + // each one will always correspond to a specific interpreter + // (whether still alive or not). + int64_t interp; + // new_object is a function that returns a new object in the current + // interpreter given the data. The resulting object (a new + // reference) will be equivalent to the original object. This field + // is required. + PyObject *(*new_object)(struct _xid *); + // free is called when the data is released. If it is NULL then + // nothing will be done to free the data. For some types this is + // okay (e.g. bytes) and for those types this field should be set + // to NULL. However, for most the data was allocated just for + // cross-interpreter use, so it must be freed when + // _PyCrossInterpreterData_Release is called or the memory will + // leak. In that case, at the very least this field should be set + // to PyMem_RawFree (the default if not explicitly set to NULL). + // The call will happen with the original interpreter activated. + void (*free)(void *); +} _PyCrossInterpreterData; + +PyAPI_FUNC(int) _PyObject_GetCrossInterpreterData(PyObject *, _PyCrossInterpreterData *); +PyAPI_FUNC(PyObject *) _PyCrossInterpreterData_NewObject(_PyCrossInterpreterData *); +PyAPI_FUNC(void) _PyCrossInterpreterData_Release(_PyCrossInterpreterData *); + +PyAPI_FUNC(int) _PyObject_CheckCrossInterpreterData(PyObject *); + +/* cross-interpreter data registry */ + +typedef int (*crossinterpdatafunc)(PyObject *, struct _xid *); + +PyAPI_FUNC(int) _PyCrossInterpreterData_RegisterClass(PyTypeObject *, crossinterpdatafunc); +PyAPI_FUNC(crossinterpdatafunc) _PyCrossInterpreterData_Lookup(PyObject *); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/sysmodule.h b/client/3rd/include/frame/python/cpython/sysmodule.h new file mode 100755 index 0000000..72d8ffe --- /dev/null +++ b/client/3rd/include/frame/python/cpython/sysmodule.h @@ -0,0 +1,21 @@ +#ifndef Py_CPYTHON_SYSMODULE_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(PyObject *) _PySys_GetObjectId(_Py_Identifier *key); +PyAPI_FUNC(int) _PySys_SetObjectId(_Py_Identifier *key, PyObject *); + +PyAPI_FUNC(size_t) _PySys_GetSizeOf(PyObject *); + +typedef int(*Py_AuditHookFunction)(const char *, PyObject *, void *); + +PyAPI_FUNC(int) PySys_Audit(const char*, const char *, ...); +PyAPI_FUNC(int) PySys_AddAuditHook(Py_AuditHookFunction, void*); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/traceback.h b/client/3rd/include/frame/python/cpython/traceback.h new file mode 100755 index 0000000..746097d --- /dev/null +++ b/client/3rd/include/frame/python/cpython/traceback.h @@ -0,0 +1,22 @@ +#ifndef Py_CPYTHON_TRACEBACK_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _traceback { + PyObject_HEAD + struct _traceback *tb_next; + struct _frame *tb_frame; + int tb_lasti; + int tb_lineno; +} PyTracebackObject; + +PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int); +PyAPI_FUNC(void) _PyTraceback_Add(const char *, const char *, int); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/tupleobject.h b/client/3rd/include/frame/python/cpython/tupleobject.h new file mode 100755 index 0000000..1565f2a --- /dev/null +++ b/client/3rd/include/frame/python/cpython/tupleobject.h @@ -0,0 +1,36 @@ +#ifndef Py_CPYTHON_TUPLEOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject_VAR_HEAD + /* ob_item contains space for 'ob_size' elements. + Items must normally not be NULL, except during construction when + the tuple is not yet visible outside the function that builds it. */ + PyObject *ob_item[1]; +} PyTupleObject; + +PyAPI_FUNC(int) _PyTuple_Resize(PyObject **, Py_ssize_t); +PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *); + +/* Macros trading safety for speed */ + +/* Cast argument to PyTupleObject* type. */ +#define _PyTuple_CAST(op) (assert(PyTuple_Check(op)), (PyTupleObject *)(op)) + +#define PyTuple_GET_SIZE(op) Py_SIZE(_PyTuple_CAST(op)) + +#define PyTuple_GET_ITEM(op, i) (_PyTuple_CAST(op)->ob_item[i]) + +/* Macro, *only* to be used to fill in brand new tuples */ +#define PyTuple_SET_ITEM(op, i, v) (_PyTuple_CAST(op)->ob_item[i] = v) + +PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/cpython/unicodeobject.h b/client/3rd/include/frame/python/cpython/unicodeobject.h new file mode 100755 index 0000000..87ff31d --- /dev/null +++ b/client/3rd/include/frame/python/cpython/unicodeobject.h @@ -0,0 +1,1239 @@ +#ifndef Py_CPYTHON_UNICODEOBJECT_H +# error "this header file must not be included directly" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Py_UNICODE was the native Unicode storage format (code unit) used by + Python and represents a single Unicode element in the Unicode type. + With PEP 393, Py_UNICODE is deprecated and replaced with a + typedef to wchar_t. */ +#define PY_UNICODE_TYPE wchar_t +/* Py_DEPRECATED(3.3) */ typedef wchar_t Py_UNICODE; + +/* --- Internal Unicode Operations ---------------------------------------- */ + +/* Since splitting on whitespace is an important use case, and + whitespace in most situations is solely ASCII whitespace, we + optimize for the common case by using a quick look-up table + _Py_ascii_whitespace (see below) with an inlined check. + + */ +#define Py_UNICODE_ISSPACE(ch) \ + ((Py_UCS4)(ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch)) + +#define Py_UNICODE_ISLOWER(ch) _PyUnicode_IsLowercase(ch) +#define Py_UNICODE_ISUPPER(ch) _PyUnicode_IsUppercase(ch) +#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch) +#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch) + +#define Py_UNICODE_TOLOWER(ch) _PyUnicode_ToLowercase(ch) +#define Py_UNICODE_TOUPPER(ch) _PyUnicode_ToUppercase(ch) +#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch) + +#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch) +#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch) +#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch) +#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch) + +#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch) +#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch) +#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch) + +#define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch) + +#define Py_UNICODE_ISALNUM(ch) \ + (Py_UNICODE_ISALPHA(ch) || \ + Py_UNICODE_ISDECIMAL(ch) || \ + Py_UNICODE_ISDIGIT(ch) || \ + Py_UNICODE_ISNUMERIC(ch)) + +#define Py_UNICODE_COPY(target, source, length) \ + memcpy((target), (source), (length)*sizeof(Py_UNICODE)) + +#define Py_UNICODE_FILL(target, value, length) \ + do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\ + for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\ + } while (0) + +/* macros to work with surrogates */ +#define Py_UNICODE_IS_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDFFF) +#define Py_UNICODE_IS_HIGH_SURROGATE(ch) (0xD800 <= (ch) && (ch) <= 0xDBFF) +#define Py_UNICODE_IS_LOW_SURROGATE(ch) (0xDC00 <= (ch) && (ch) <= 0xDFFF) +/* Join two surrogate characters and return a single Py_UCS4 value. */ +#define Py_UNICODE_JOIN_SURROGATES(high, low) \ + (((((Py_UCS4)(high) & 0x03FF) << 10) | \ + ((Py_UCS4)(low) & 0x03FF)) + 0x10000) +/* high surrogate = top 10 bits added to D800 */ +#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 - (0x10000 >> 10) + ((ch) >> 10)) +/* low surrogate = bottom 10 bits added to DC00 */ +#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 + ((ch) & 0x3FF)) + +/* Check if substring matches at given offset. The offset must be + valid, and the substring must not be empty. */ + +#define Py_UNICODE_MATCH(string, offset, substring) \ + ((*((string)->wstr + (offset)) == *((substring)->wstr)) && \ + ((*((string)->wstr + (offset) + (substring)->wstr_length-1) == *((substring)->wstr + (substring)->wstr_length-1))) && \ + !memcmp((string)->wstr + (offset), (substring)->wstr, (substring)->wstr_length*sizeof(Py_UNICODE))) + +/* --- Unicode Type ------------------------------------------------------- */ + +/* ASCII-only strings created through PyUnicode_New use the PyASCIIObject + structure. state.ascii and state.compact are set, and the data + immediately follow the structure. utf8_length and wstr_length can be found + in the length field; the utf8 pointer is equal to the data pointer. */ +typedef struct { + /* There are 4 forms of Unicode strings: + + - compact ascii: + + * structure = PyASCIIObject + * test: PyUnicode_IS_COMPACT_ASCII(op) + * kind = PyUnicode_1BYTE_KIND + * compact = 1 + * ascii = 1 + * ready = 1 + * (length is the length of the utf8 and wstr strings) + * (data starts just after the structure) + * (since ASCII is decoded from UTF-8, the utf8 string are the data) + + - compact: + + * structure = PyCompactUnicodeObject + * test: PyUnicode_IS_COMPACT(op) && !PyUnicode_IS_ASCII(op) + * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or + PyUnicode_4BYTE_KIND + * compact = 1 + * ready = 1 + * ascii = 0 + * utf8 is not shared with data + * utf8_length = 0 if utf8 is NULL + * wstr is shared with data and wstr_length=length + if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2 + or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_t)=4 + * wstr_length = 0 if wstr is NULL + * (data starts just after the structure) + + - legacy string, not ready: + + * structure = PyUnicodeObject + * test: kind == PyUnicode_WCHAR_KIND + * length = 0 (use wstr_length) + * hash = -1 + * kind = PyUnicode_WCHAR_KIND + * compact = 0 + * ascii = 0 + * ready = 0 + * interned = SSTATE_NOT_INTERNED + * wstr is not NULL + * data.any is NULL + * utf8 is NULL + * utf8_length = 0 + + - legacy string, ready: + + * structure = PyUnicodeObject structure + * test: !PyUnicode_IS_COMPACT(op) && kind != PyUnicode_WCHAR_KIND + * kind = PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND or + PyUnicode_4BYTE_KIND + * compact = 0 + * ready = 1 + * data.any is not NULL + * utf8 is shared and utf8_length = length with data.any if ascii = 1 + * utf8_length = 0 if utf8 is NULL + * wstr is shared with data.any and wstr_length = length + if kind=PyUnicode_2BYTE_KIND and sizeof(wchar_t)=2 + or if kind=PyUnicode_4BYTE_KIND and sizeof(wchar_4)=4 + * wstr_length = 0 if wstr is NULL + + Compact strings use only one memory block (structure + characters), + whereas legacy strings use one block for the structure and one block + for characters. + + Legacy strings are created by PyUnicode_FromUnicode() and + PyUnicode_FromStringAndSize(NULL, size) functions. They become ready + when PyUnicode_READY() is called. + + See also _PyUnicode_CheckConsistency(). + */ + PyObject_HEAD + Py_ssize_t length; /* Number of code points in the string */ + Py_hash_t hash; /* Hash value; -1 if not set */ + struct { + /* + SSTATE_NOT_INTERNED (0) + SSTATE_INTERNED_MORTAL (1) + SSTATE_INTERNED_IMMORTAL (2) + + If interned != SSTATE_NOT_INTERNED, the two references from the + dictionary to this object are *not* counted in ob_refcnt. + */ + unsigned int interned:2; + /* Character size: + + - PyUnicode_WCHAR_KIND (0): + + * character type = wchar_t (16 or 32 bits, depending on the + platform) + + - PyUnicode_1BYTE_KIND (1): + + * character type = Py_UCS1 (8 bits, unsigned) + * all characters are in the range U+0000-U+00FF (latin1) + * if ascii is set, all characters are in the range U+0000-U+007F + (ASCII), otherwise at least one character is in the range + U+0080-U+00FF + + - PyUnicode_2BYTE_KIND (2): + + * character type = Py_UCS2 (16 bits, unsigned) + * all characters are in the range U+0000-U+FFFF (BMP) + * at least one character is in the range U+0100-U+FFFF + + - PyUnicode_4BYTE_KIND (4): + + * character type = Py_UCS4 (32 bits, unsigned) + * all characters are in the range U+0000-U+10FFFF + * at least one character is in the range U+10000-U+10FFFF + */ + unsigned int kind:3; + /* Compact is with respect to the allocation scheme. Compact unicode + objects only require one memory block while non-compact objects use + one block for the PyUnicodeObject struct and another for its data + buffer. */ + unsigned int compact:1; + /* The string only contains characters in the range U+0000-U+007F (ASCII) + and the kind is PyUnicode_1BYTE_KIND. If ascii is set and compact is + set, use the PyASCIIObject structure. */ + unsigned int ascii:1; + /* The ready flag indicates whether the object layout is initialized + completely. This means that this is either a compact object, or + the data pointer is filled out. The bit is redundant, and helps + to minimize the test in PyUnicode_IS_READY(). */ + unsigned int ready:1; + /* Padding to ensure that PyUnicode_DATA() is always aligned to + 4 bytes (see issue #19537 on m68k). */ + unsigned int :24; + } state; + wchar_t *wstr; /* wchar_t representation (null-terminated) */ +} PyASCIIObject; + +/* Non-ASCII strings allocated through PyUnicode_New use the + PyCompactUnicodeObject structure. state.compact is set, and the data + immediately follow the structure. */ +typedef struct { + PyASCIIObject _base; + Py_ssize_t utf8_length; /* Number of bytes in utf8, excluding the + * terminating \0. */ + char *utf8; /* UTF-8 representation (null-terminated) */ + Py_ssize_t wstr_length; /* Number of code points in wstr, possible + * surrogates count as two code points. */ +} PyCompactUnicodeObject; + +/* Strings allocated through PyUnicode_FromUnicode(NULL, len) use the + PyUnicodeObject structure. The actual string data is initially in the wstr + block, and copied into the data block using _PyUnicode_Ready. */ +typedef struct { + PyCompactUnicodeObject _base; + union { + void *any; + Py_UCS1 *latin1; + Py_UCS2 *ucs2; + Py_UCS4 *ucs4; + } data; /* Canonical, smallest-form Unicode buffer */ +} PyUnicodeObject; + +PyAPI_FUNC(int) _PyUnicode_CheckConsistency( + PyObject *op, + int check_content); + +/* Fast access macros */ +#define PyUnicode_WSTR_LENGTH(op) \ + (PyUnicode_IS_COMPACT_ASCII(op) ? \ + ((PyASCIIObject*)op)->length : \ + ((PyCompactUnicodeObject*)op)->wstr_length) + +/* Returns the deprecated Py_UNICODE representation's size in code units + (this includes surrogate pairs as 2 units). + If the Py_UNICODE representation is not available, it will be computed + on request. Use PyUnicode_GET_LENGTH() for the length in code points. */ + +/* Py_DEPRECATED(3.3) */ +#define PyUnicode_GET_SIZE(op) \ + (assert(PyUnicode_Check(op)), \ + (((PyASCIIObject *)(op))->wstr) ? \ + PyUnicode_WSTR_LENGTH(op) : \ + ((void)PyUnicode_AsUnicode(_PyObject_CAST(op)),\ + assert(((PyASCIIObject *)(op))->wstr), \ + PyUnicode_WSTR_LENGTH(op))) + +/* Py_DEPRECATED(3.3) */ +#define PyUnicode_GET_DATA_SIZE(op) \ + (PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE) + +/* Alias for PyUnicode_AsUnicode(). This will create a wchar_t/Py_UNICODE + representation on demand. Using this macro is very inefficient now, + try to port your code to use the new PyUnicode_*BYTE_DATA() macros or + use PyUnicode_WRITE() and PyUnicode_READ(). */ + +/* Py_DEPRECATED(3.3) */ +#define PyUnicode_AS_UNICODE(op) \ + (assert(PyUnicode_Check(op)), \ + (((PyASCIIObject *)(op))->wstr) ? (((PyASCIIObject *)(op))->wstr) : \ + PyUnicode_AsUnicode(_PyObject_CAST(op))) + +/* Py_DEPRECATED(3.3) */ +#define PyUnicode_AS_DATA(op) \ + ((const char *)(PyUnicode_AS_UNICODE(op))) + + +/* --- Flexible String Representation Helper Macros (PEP 393) -------------- */ + +/* Values for PyASCIIObject.state: */ + +/* Interning state. */ +#define SSTATE_NOT_INTERNED 0 +#define SSTATE_INTERNED_MORTAL 1 +#define SSTATE_INTERNED_IMMORTAL 2 + +/* Return true if the string contains only ASCII characters, or 0 if not. The + string may be compact (PyUnicode_IS_COMPACT_ASCII) or not, but must be + ready. */ +#define PyUnicode_IS_ASCII(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject*)op)->state.ascii) + +/* Return true if the string is compact or 0 if not. + No type checks or Ready calls are performed. */ +#define PyUnicode_IS_COMPACT(op) \ + (((PyASCIIObject*)(op))->state.compact) + +/* Return true if the string is a compact ASCII string (use PyASCIIObject + structure), or 0 if not. No type checks or Ready calls are performed. */ +#define PyUnicode_IS_COMPACT_ASCII(op) \ + (((PyASCIIObject*)op)->state.ascii && PyUnicode_IS_COMPACT(op)) + +enum PyUnicode_Kind { +/* String contains only wstr byte characters. This is only possible + when the string was created with a legacy API and _PyUnicode_Ready() + has not been called yet. */ + PyUnicode_WCHAR_KIND = 0, +/* Return values of the PyUnicode_KIND() macro: */ + PyUnicode_1BYTE_KIND = 1, + PyUnicode_2BYTE_KIND = 2, + PyUnicode_4BYTE_KIND = 4 +}; + +/* Return pointers to the canonical representation cast to unsigned char, + Py_UCS2, or Py_UCS4 for direct character access. + No checks are performed, use PyUnicode_KIND() before to ensure + these will work correctly. */ + +#define PyUnicode_1BYTE_DATA(op) ((Py_UCS1*)PyUnicode_DATA(op)) +#define PyUnicode_2BYTE_DATA(op) ((Py_UCS2*)PyUnicode_DATA(op)) +#define PyUnicode_4BYTE_DATA(op) ((Py_UCS4*)PyUnicode_DATA(op)) + +/* Return one of the PyUnicode_*_KIND values defined above. */ +#define PyUnicode_KIND(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject *)(op))->state.kind) + +/* Return a void pointer to the raw unicode buffer. */ +#define _PyUnicode_COMPACT_DATA(op) \ + (PyUnicode_IS_ASCII(op) ? \ + ((void*)((PyASCIIObject*)(op) + 1)) : \ + ((void*)((PyCompactUnicodeObject*)(op) + 1))) + +#define _PyUnicode_NONCOMPACT_DATA(op) \ + (assert(((PyUnicodeObject*)(op))->data.any), \ + ((((PyUnicodeObject *)(op))->data.any))) + +#define PyUnicode_DATA(op) \ + (assert(PyUnicode_Check(op)), \ + PyUnicode_IS_COMPACT(op) ? _PyUnicode_COMPACT_DATA(op) : \ + _PyUnicode_NONCOMPACT_DATA(op)) + +/* In the access macros below, "kind" may be evaluated more than once. + All other macro parameters are evaluated exactly once, so it is safe + to put side effects into them (such as increasing the index). */ + +/* Write into the canonical representation, this macro does not do any sanity + checks and is intended for usage in loops. The caller should cache the + kind and data pointers obtained from other macro calls. + index is the index in the string (starts at 0) and value is the new + code point value which should be written to that location. */ +#define PyUnicode_WRITE(kind, data, index, value) \ + do { \ + switch ((kind)) { \ + case PyUnicode_1BYTE_KIND: { \ + ((Py_UCS1 *)(data))[(index)] = (Py_UCS1)(value); \ + break; \ + } \ + case PyUnicode_2BYTE_KIND: { \ + ((Py_UCS2 *)(data))[(index)] = (Py_UCS2)(value); \ + break; \ + } \ + default: { \ + assert((kind) == PyUnicode_4BYTE_KIND); \ + ((Py_UCS4 *)(data))[(index)] = (Py_UCS4)(value); \ + } \ + } \ + } while (0) + +/* Read a code point from the string's canonical representation. No checks + or ready calls are performed. */ +#define PyUnicode_READ(kind, data, index) \ + ((Py_UCS4) \ + ((kind) == PyUnicode_1BYTE_KIND ? \ + ((const Py_UCS1 *)(data))[(index)] : \ + ((kind) == PyUnicode_2BYTE_KIND ? \ + ((const Py_UCS2 *)(data))[(index)] : \ + ((const Py_UCS4 *)(data))[(index)] \ + ) \ + )) + +/* PyUnicode_READ_CHAR() is less efficient than PyUnicode_READ() because it + calls PyUnicode_KIND() and might call it twice. For single reads, use + PyUnicode_READ_CHAR, for multiple consecutive reads callers should + cache kind and use PyUnicode_READ instead. */ +#define PyUnicode_READ_CHAR(unicode, index) \ + (assert(PyUnicode_Check(unicode)), \ + assert(PyUnicode_IS_READY(unicode)), \ + (Py_UCS4) \ + (PyUnicode_KIND((unicode)) == PyUnicode_1BYTE_KIND ? \ + ((const Py_UCS1 *)(PyUnicode_DATA((unicode))))[(index)] : \ + (PyUnicode_KIND((unicode)) == PyUnicode_2BYTE_KIND ? \ + ((const Py_UCS2 *)(PyUnicode_DATA((unicode))))[(index)] : \ + ((const Py_UCS4 *)(PyUnicode_DATA((unicode))))[(index)] \ + ) \ + )) + +/* Returns the length of the unicode string. The caller has to make sure that + the string has it's canonical representation set before calling + this macro. Call PyUnicode_(FAST_)Ready to ensure that. */ +#define PyUnicode_GET_LENGTH(op) \ + (assert(PyUnicode_Check(op)), \ + assert(PyUnicode_IS_READY(op)), \ + ((PyASCIIObject *)(op))->length) + + +/* Fast check to determine whether an object is ready. Equivalent to + PyUnicode_IS_COMPACT(op) || ((PyUnicodeObject*)(op))->data.any) */ + +#define PyUnicode_IS_READY(op) (((PyASCIIObject*)op)->state.ready) + +/* PyUnicode_READY() does less work than _PyUnicode_Ready() in the best + case. If the canonical representation is not yet set, it will still call + _PyUnicode_Ready(). + Returns 0 on success and -1 on errors. */ +#define PyUnicode_READY(op) \ + (assert(PyUnicode_Check(op)), \ + (PyUnicode_IS_READY(op) ? \ + 0 : _PyUnicode_Ready(_PyObject_CAST(op)))) + +/* Return a maximum character value which is suitable for creating another + string based on op. This is always an approximation but more efficient + than iterating over the string. */ +#define PyUnicode_MAX_CHAR_VALUE(op) \ + (assert(PyUnicode_IS_READY(op)), \ + (PyUnicode_IS_ASCII(op) ? \ + (0x7f) : \ + (PyUnicode_KIND(op) == PyUnicode_1BYTE_KIND ? \ + (0xffU) : \ + (PyUnicode_KIND(op) == PyUnicode_2BYTE_KIND ? \ + (0xffffU) : \ + (0x10ffffU))))) + +/* === Public API ========================================================= */ + +/* --- Plain Py_UNICODE --------------------------------------------------- */ + +/* With PEP 393, this is the recommended way to allocate a new unicode object. + This function will allocate the object and its buffer in a single memory + block. Objects created using this function are not resizable. */ +PyAPI_FUNC(PyObject*) PyUnicode_New( + Py_ssize_t size, /* Number of code points in the new string */ + Py_UCS4 maxchar /* maximum code point value in the string */ + ); + +/* Initializes the canonical string representation from the deprecated + wstr/Py_UNICODE representation. This function is used to convert Unicode + objects which were created using the old API to the new flexible format + introduced with PEP 393. + + Don't call this function directly, use the public PyUnicode_READY() macro + instead. */ +PyAPI_FUNC(int) _PyUnicode_Ready( + PyObject *unicode /* Unicode object */ + ); + +/* Get a copy of a Unicode string. */ +PyAPI_FUNC(PyObject*) _PyUnicode_Copy( + PyObject *unicode + ); + +/* Copy character from one unicode object into another, this function performs + character conversion when necessary and falls back to memcpy() if possible. + + Fail if to is too small (smaller than *how_many* or smaller than + len(from)-from_start), or if kind(from[from_start:from_start+how_many]) > + kind(to), or if *to* has more than 1 reference. + + Return the number of written character, or return -1 and raise an exception + on error. + + Pseudo-code: + + how_many = min(how_many, len(from) - from_start) + to[to_start:to_start+how_many] = from[from_start:from_start+how_many] + return how_many + + Note: The function doesn't write a terminating null character. + */ +PyAPI_FUNC(Py_ssize_t) PyUnicode_CopyCharacters( + PyObject *to, + Py_ssize_t to_start, + PyObject *from, + Py_ssize_t from_start, + Py_ssize_t how_many + ); + +/* Unsafe version of PyUnicode_CopyCharacters(): don't check arguments and so + may crash if parameters are invalid (e.g. if the output string + is too short). */ +PyAPI_FUNC(void) _PyUnicode_FastCopyCharacters( + PyObject *to, + Py_ssize_t to_start, + PyObject *from, + Py_ssize_t from_start, + Py_ssize_t how_many + ); + +/* Fill a string with a character: write fill_char into + unicode[start:start+length]. + + Fail if fill_char is bigger than the string maximum character, or if the + string has more than 1 reference. + + Return the number of written character, or return -1 and raise an exception + on error. */ +PyAPI_FUNC(Py_ssize_t) PyUnicode_Fill( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t length, + Py_UCS4 fill_char + ); + +/* Unsafe version of PyUnicode_Fill(): don't check arguments and so may crash + if parameters are invalid (e.g. if length is longer than the string). */ +PyAPI_FUNC(void) _PyUnicode_FastFill( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t length, + Py_UCS4 fill_char + ); + +/* Create a Unicode Object from the Py_UNICODE buffer u of the given + size. + + u may be NULL which causes the contents to be undefined. It is the + user's responsibility to fill in the needed data afterwards. Note + that modifying the Unicode object contents after construction is + only allowed if u was set to NULL. + + The buffer is copied into the new object. */ +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( + const Py_UNICODE *u, /* Unicode buffer */ + Py_ssize_t size /* size of buffer */ + ); + +/* Create a new string from a buffer of Py_UCS1, Py_UCS2 or Py_UCS4 characters. + Scan the string to find the maximum character. */ +PyAPI_FUNC(PyObject*) PyUnicode_FromKindAndData( + int kind, + const void *buffer, + Py_ssize_t size); + +/* Create a new string from a buffer of ASCII characters. + WARNING: Don't check if the string contains any non-ASCII character. */ +PyAPI_FUNC(PyObject*) _PyUnicode_FromASCII( + const char *buffer, + Py_ssize_t size); + +/* Compute the maximum character of the substring unicode[start:end]. + Return 127 for an empty string. */ +PyAPI_FUNC(Py_UCS4) _PyUnicode_FindMaxChar ( + PyObject *unicode, + Py_ssize_t start, + Py_ssize_t end); + +/* Return a read-only pointer to the Unicode object's internal + Py_UNICODE buffer. + If the wchar_t/Py_UNICODE representation is not yet available, this + function will calculate it. */ +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( + PyObject *unicode /* Unicode object */ + ); + +/* Similar to PyUnicode_AsUnicode(), but raises a ValueError if the string + contains null characters. */ +PyAPI_FUNC(const Py_UNICODE *) _PyUnicode_AsUnicode( + PyObject *unicode /* Unicode object */ + ); + +/* Return a read-only pointer to the Unicode object's internal + Py_UNICODE buffer and save the length at size. + If the wchar_t/Py_UNICODE representation is not yet available, this + function will calculate it. */ + +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( + PyObject *unicode, /* Unicode object */ + Py_ssize_t *size /* location where to save the length */ + ); + +/* Get the maximum ordinal for a Unicode character. */ +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void); + + +/* --- _PyUnicodeWriter API ----------------------------------------------- */ + +typedef struct { + PyObject *buffer; + void *data; + enum PyUnicode_Kind kind; + Py_UCS4 maxchar; + Py_ssize_t size; + Py_ssize_t pos; + + /* minimum number of allocated characters (default: 0) */ + Py_ssize_t min_length; + + /* minimum character (default: 127, ASCII) */ + Py_UCS4 min_char; + + /* If non-zero, overallocate the buffer (default: 0). */ + unsigned char overallocate; + + /* If readonly is 1, buffer is a shared string (cannot be modified) + and size is set to 0. */ + unsigned char readonly; +} _PyUnicodeWriter ; + +/* Initialize a Unicode writer. + * + * By default, the minimum buffer size is 0 character and overallocation is + * disabled. Set min_length, min_char and overallocate attributes to control + * the allocation of the buffer. */ +PyAPI_FUNC(void) +_PyUnicodeWriter_Init(_PyUnicodeWriter *writer); + +/* Prepare the buffer to write 'length' characters + with the specified maximum character. + + Return 0 on success, raise an exception and return -1 on error. */ +#define _PyUnicodeWriter_Prepare(WRITER, LENGTH, MAXCHAR) \ + (((MAXCHAR) <= (WRITER)->maxchar \ + && (LENGTH) <= (WRITER)->size - (WRITER)->pos) \ + ? 0 \ + : (((LENGTH) == 0) \ + ? 0 \ + : _PyUnicodeWriter_PrepareInternal((WRITER), (LENGTH), (MAXCHAR)))) + +/* Don't call this function directly, use the _PyUnicodeWriter_Prepare() macro + instead. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_PrepareInternal(_PyUnicodeWriter *writer, + Py_ssize_t length, Py_UCS4 maxchar); + +/* Prepare the buffer to have at least the kind KIND. + For example, kind=PyUnicode_2BYTE_KIND ensures that the writer will + support characters in range U+000-U+FFFF. + + Return 0 on success, raise an exception and return -1 on error. */ +#define _PyUnicodeWriter_PrepareKind(WRITER, KIND) \ + (assert((KIND) != PyUnicode_WCHAR_KIND), \ + (KIND) <= (WRITER)->kind \ + ? 0 \ + : _PyUnicodeWriter_PrepareKindInternal((WRITER), (KIND))) + +/* Don't call this function directly, use the _PyUnicodeWriter_PrepareKind() + macro instead. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_PrepareKindInternal(_PyUnicodeWriter *writer, + enum PyUnicode_Kind kind); + +/* Append a Unicode character. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteChar(_PyUnicodeWriter *writer, + Py_UCS4 ch + ); + +/* Append a Unicode string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteStr(_PyUnicodeWriter *writer, + PyObject *str /* Unicode string */ + ); + +/* Append a substring of a Unicode string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteSubstring(_PyUnicodeWriter *writer, + PyObject *str, /* Unicode string */ + Py_ssize_t start, + Py_ssize_t end + ); + +/* Append an ASCII-encoded byte string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteASCIIString(_PyUnicodeWriter *writer, + const char *str, /* ASCII-encoded byte string */ + Py_ssize_t len /* number of bytes, or -1 if unknown */ + ); + +/* Append a latin1-encoded byte string. + Return 0 on success, raise an exception and return -1 on error. */ +PyAPI_FUNC(int) +_PyUnicodeWriter_WriteLatin1String(_PyUnicodeWriter *writer, + const char *str, /* latin1-encoded byte string */ + Py_ssize_t len /* length in bytes */ + ); + +/* Get the value of the writer as a Unicode string. Clear the + buffer of the writer. Raise an exception and return NULL + on error. */ +PyAPI_FUNC(PyObject *) +_PyUnicodeWriter_Finish(_PyUnicodeWriter *writer); + +/* Deallocate memory of a writer (clear its internal buffer). */ +PyAPI_FUNC(void) +_PyUnicodeWriter_Dealloc(_PyUnicodeWriter *writer); + + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyUnicode_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); + +/* --- wchar_t support for platforms which support it --------------------- */ + +#ifdef HAVE_WCHAR_H +PyAPI_FUNC(void*) _PyUnicode_AsKind(PyObject *s, unsigned int kind); +#endif + +/* --- Manage the default encoding ---------------------------------------- */ + +/* Returns a pointer to the default encoding (UTF-8) of the + Unicode object unicode and the size of the encoded representation + in bytes stored in *size. + + In case of an error, no *size is set. + + This function caches the UTF-8 encoded string in the unicodeobject + and subsequent calls will return the same string. The memory is released + when the unicodeobject is deallocated. + + _PyUnicode_AsStringAndSize is a #define for PyUnicode_AsUTF8AndSize to + support the previous internal function with the same behaviour. + + *** This API is for interpreter INTERNAL USE ONLY and will likely + *** be removed or changed in the future. + + *** If you need to access the Unicode object as UTF-8 bytes string, + *** please use PyUnicode_AsUTF8String() instead. +*/ + +PyAPI_FUNC(const char *) PyUnicode_AsUTF8AndSize( + PyObject *unicode, + Py_ssize_t *size); + +#define _PyUnicode_AsStringAndSize PyUnicode_AsUTF8AndSize + +/* Returns a pointer to the default encoding (UTF-8) of the + Unicode object unicode. + + Like PyUnicode_AsUTF8AndSize(), this also caches the UTF-8 representation + in the unicodeobject. + + _PyUnicode_AsString is a #define for PyUnicode_AsUTF8 to + support the previous internal function with the same behaviour. + + Use of this API is DEPRECATED since no size information can be + extracted from the returned data. + + *** This API is for interpreter INTERNAL USE ONLY and will likely + *** be removed or changed for Python 3.1. + + *** If you need to access the Unicode object as UTF-8 bytes string, + *** please use PyUnicode_AsUTF8String() instead. + +*/ + +PyAPI_FUNC(const char *) PyUnicode_AsUTF8(PyObject *unicode); + +#define _PyUnicode_AsString PyUnicode_AsUTF8 + +/* --- Generic Codecs ----------------------------------------------------- */ + +/* Encodes a Py_UNICODE buffer of the given size and returns a + Python string object. */ +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_Encode( + const Py_UNICODE *s, /* Unicode char buffer */ + Py_ssize_t size, /* number of Py_UNICODE chars to encode */ + const char *encoding, /* encoding */ + const char *errors /* error handling */ + ); + +/* --- UTF-7 Codecs ------------------------------------------------------- */ + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + int base64SetO, /* Encode RFC2152 Set O characters in base64 */ + int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF7( + PyObject *unicode, /* Unicode object */ + int base64SetO, /* Encode RFC2152 Set O characters in base64 */ + int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */ + const char *errors /* error handling */ + ); + +/* --- UTF-8 Codecs ------------------------------------------------------- */ + +PyAPI_FUNC(PyObject*) _PyUnicode_AsUTF8String( + PyObject *unicode, + const char *errors); + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); + +/* --- UTF-32 Codecs ------------------------------------------------------ */ + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF32( + PyObject *object, /* Unicode object */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); + +/* --- UTF-16 Codecs ------------------------------------------------------ */ + +/* Returns a Python string object holding the UTF-16 encoded value of + the Unicode data. + + If byteorder is not 0, output is written according to the following + byte order: + + byteorder == -1: little endian + byteorder == 0: native byte order (writes a BOM mark) + byteorder == 1: big endian + + If byteorder is 0, the output string will always start with the + Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is + prepended. + + Note that Py_UNICODE data is being interpreted as UTF-16 reduced to + UCS-2. This trick makes it possible to add full UTF-16 capabilities + at a later point without compromising the APIs. + +*/ +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF16( + PyObject* unicode, /* Unicode object */ + const char *errors, /* error handling */ + int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ + ); + +/* --- Unicode-Escape Codecs ---------------------------------------------- */ + +/* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape + chars. */ +PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape( + const char *string, /* Unicode-Escape encoded string */ + Py_ssize_t length, /* size of string */ + const char *errors, /* error handling */ + const char **first_invalid_escape /* on return, points to first + invalid escaped char in + string. */ +); + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to encode */ + ); + +/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */ + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to encode */ + ); + +/* --- Latin-1 Codecs ----------------------------------------------------- */ + +PyAPI_FUNC(PyObject*) _PyUnicode_AsLatin1String( + PyObject* unicode, + const char* errors); + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); + +/* --- ASCII Codecs ------------------------------------------------------- */ + +PyAPI_FUNC(PyObject*) _PyUnicode_AsASCIIString( + PyObject* unicode, + const char* errors); + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); + +/* --- Character Map Codecs ----------------------------------------------- */ + +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + PyObject *mapping, /* encoding mapping */ + const char *errors /* error handling */ + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_EncodeCharmap( + PyObject *unicode, /* Unicode object */ + PyObject *mapping, /* encoding mapping */ + const char *errors /* error handling */ + ); + +/* Translate a Py_UNICODE buffer of the given length by applying a + character mapping table to it and return the resulting Unicode + object. + + The mapping table must map Unicode ordinal integers to Unicode strings, + Unicode ordinal integers or None (causing deletion of the character). + + Mapping tables may be dictionaries or sequences. Unmapped character + ordinals (ones which cause a LookupError) are left untouched and + are copied as-is. + +*/ +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + PyObject *table, /* Translate table */ + const char *errors /* error handling */ + ); + +/* --- MBCS codecs for Windows -------------------------------------------- */ + +#ifdef MS_WINDOWS +Py_DEPRECATED(3.3) PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS( + const Py_UNICODE *data, /* Unicode char buffer */ + Py_ssize_t length, /* number of Py_UNICODE chars to encode */ + const char *errors /* error handling */ + ); +#endif + +/* --- Decimal Encoder ---------------------------------------------------- */ + +/* Takes a Unicode string holding a decimal value and writes it into + an output buffer using standard ASCII digit codes. + + The output buffer has to provide at least length+1 bytes of storage + area. The output string is 0-terminated. + + The encoder converts whitespace to ' ', decimal characters to their + corresponding ASCII digit and all other Latin-1 characters except + \0 as-is. Characters outside this range (Unicode ordinals 1-256) + are treated as errors. This includes embedded NULL bytes. + + Error handling is defined by the errors argument: + + NULL or "strict": raise a ValueError + "ignore": ignore the wrong characters (these are not copied to the + output buffer) + "replace": replaces illegal characters with '?' + + Returns 0 on success, -1 on failure. + +*/ + +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(int) PyUnicode_EncodeDecimal( + Py_UNICODE *s, /* Unicode buffer */ + Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ + char *output, /* Output buffer; must have size >= length */ + const char *errors /* error handling */ + ); + +/* Transforms code points that have decimal digit property to the + corresponding ASCII digit code points. + + Returns a new Unicode string on success, NULL on failure. +*/ + +/* Py_DEPRECATED(3.3) */ +PyAPI_FUNC(PyObject*) PyUnicode_TransformDecimalToASCII( + Py_UNICODE *s, /* Unicode buffer */ + Py_ssize_t length /* Number of Py_UNICODE chars to transform */ + ); + +/* Coverts a Unicode object holding a decimal value to an ASCII string + for using in int, float and complex parsers. + Transforms code points that have decimal digit property to the + corresponding ASCII digit code points. Transforms spaces to ASCII. + Transforms code points starting from the first non-ASCII code point that + is neither a decimal digit nor a space to the end into '?'. */ + +PyAPI_FUNC(PyObject*) _PyUnicode_TransformDecimalAndSpaceToASCII( + PyObject *unicode /* Unicode object */ + ); + +/* --- Methods & Slots ---------------------------------------------------- */ + +PyAPI_FUNC(PyObject *) _PyUnicode_JoinArray( + PyObject *separator, + PyObject *const *items, + Py_ssize_t seqlen + ); + +/* Test whether a unicode is equal to ASCII identifier. Return 1 if true, + 0 otherwise. The right argument must be ASCII identifier. + Any error occurs inside will be cleared before return. */ +PyAPI_FUNC(int) _PyUnicode_EqualToASCIIId( + PyObject *left, /* Left string */ + _Py_Identifier *right /* Right identifier */ + ); + +/* Test whether a unicode is equal to ASCII string. Return 1 if true, + 0 otherwise. The right argument must be ASCII-encoded string. + Any error occurs inside will be cleared before return. */ +PyAPI_FUNC(int) _PyUnicode_EqualToASCIIString( + PyObject *left, + const char *right /* ASCII-encoded string */ + ); + +/* Externally visible for str.strip(unicode) */ +PyAPI_FUNC(PyObject *) _PyUnicode_XStrip( + PyObject *self, + int striptype, + PyObject *sepobj + ); + +/* Using explicit passed-in values, insert the thousands grouping + into the string pointed to by buffer. For the argument descriptions, + see Objects/stringlib/localeutil.h */ +PyAPI_FUNC(Py_ssize_t) _PyUnicode_InsertThousandsGrouping( + _PyUnicodeWriter *writer, + Py_ssize_t n_buffer, + PyObject *digits, + Py_ssize_t d_pos, + Py_ssize_t n_digits, + Py_ssize_t min_width, + const char *grouping, + PyObject *thousands_sep, + Py_UCS4 *maxchar); + +/* === Characters Type APIs =============================================== */ + +/* Helper array used by Py_UNICODE_ISSPACE(). */ + +PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[]; + +/* These should not be used directly. Use the Py_UNICODE_IS* and + Py_UNICODE_TO* macros instead. + + These APIs are implemented in Objects/unicodectype.c. + +*/ + +PyAPI_FUNC(int) _PyUnicode_IsLowercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsUppercase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsTitlecase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsXidStart( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsXidContinue( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsWhitespace( + const Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsLinebreak( + const Py_UCS4 ch /* Unicode character */ + ); + +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UCS4) _PyUnicode_ToLowercase( + Py_UCS4 ch /* Unicode character */ + ); + +/* Py_DEPRECATED(3.3) */ PyAPI_FUNC(Py_UCS4) _PyUnicode_ToUppercase( + Py_UCS4 ch /* Unicode character */ + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToLowerFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToTitleFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToUpperFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToFoldedFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_IsCaseIgnorable( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsCased( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_ToDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(double) _PyUnicode_ToNumeric( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsDecimalDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsDigit( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsNumeric( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsPrintable( + Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsAlpha( + Py_UCS4 ch /* Unicode character */ + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(size_t) Py_UNICODE_strlen( + const Py_UNICODE *u + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy( + Py_UNICODE *s1, + const Py_UNICODE *s2); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcat( + Py_UNICODE *s1, const Py_UNICODE *s2); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy( + Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n); + +Py_DEPRECATED(3.3) PyAPI_FUNC(int) Py_UNICODE_strcmp( + const Py_UNICODE *s1, + const Py_UNICODE *s2 + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(int) Py_UNICODE_strncmp( + const Py_UNICODE *s1, + const Py_UNICODE *s2, + size_t n + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr( + const Py_UNICODE *s, + Py_UNICODE c + ); + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr( + const Py_UNICODE *s, + Py_UNICODE c + ); + +PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int); + +/* Create a copy of a unicode string ending with a nul character. Return NULL + and raise a MemoryError exception on memory allocation failure, otherwise + return a new allocated buffer (use PyMem_Free() to free the buffer). */ + +Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy( + PyObject *unicode + ); + +/* Return an interned Unicode object for an Identifier; may fail if there is no memory.*/ +PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*); +/* Clear all static strings. */ +PyAPI_FUNC(void) _PyUnicode_ClearStaticStrings(void); + +/* Fast equality check when the inputs are known to be exact unicode types + and where the hash values are equal (i.e. a very probable match) */ +PyAPI_FUNC(int) _PyUnicode_EQ(PyObject *, PyObject *); + +#ifdef __cplusplus +} +#endif diff --git a/client/3rd/include/frame/python/datetime.h b/client/3rd/include/frame/python/datetime.h new file mode 100755 index 0000000..00507cb --- /dev/null +++ b/client/3rd/include/frame/python/datetime.h @@ -0,0 +1,259 @@ +/* datetime.h + */ +#ifndef Py_LIMITED_API +#ifndef DATETIME_H +#define DATETIME_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Fields are packed into successive bytes, each viewed as unsigned and + * big-endian, unless otherwise noted: + * + * byte offset + * 0 year 2 bytes, 1-9999 + * 2 month 1 byte, 1-12 + * 3 day 1 byte, 1-31 + * 4 hour 1 byte, 0-23 + * 5 minute 1 byte, 0-59 + * 6 second 1 byte, 0-59 + * 7 usecond 3 bytes, 0-999999 + * 10 + */ + +/* # of bytes for year, month, and day. */ +#define _PyDateTime_DATE_DATASIZE 4 + +/* # of bytes for hour, minute, second, and usecond. */ +#define _PyDateTime_TIME_DATASIZE 6 + +/* # of bytes for year, month, day, hour, minute, second, and usecond. */ +#define _PyDateTime_DATETIME_DATASIZE 10 + + +typedef struct +{ + PyObject_HEAD + Py_hash_t hashcode; /* -1 when unknown */ + int days; /* -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS */ + int seconds; /* 0 <= seconds < 24*3600 is invariant */ + int microseconds; /* 0 <= microseconds < 1000000 is invariant */ +} PyDateTime_Delta; + +typedef struct +{ + PyObject_HEAD /* a pure abstract base class */ +} PyDateTime_TZInfo; + + +/* The datetime and time types have hashcodes, and an optional tzinfo member, + * present if and only if hastzinfo is true. + */ +#define _PyTZINFO_HEAD \ + PyObject_HEAD \ + Py_hash_t hashcode; \ + char hastzinfo; /* boolean flag */ + +/* No _PyDateTime_BaseTZInfo is allocated; it's just to have something + * convenient to cast to, when getting at the hastzinfo member of objects + * starting with _PyTZINFO_HEAD. + */ +typedef struct +{ + _PyTZINFO_HEAD +} _PyDateTime_BaseTZInfo; + +/* All time objects are of PyDateTime_TimeType, but that can be allocated + * in two ways, with or without a tzinfo member. Without is the same as + * tzinfo == None, but consumes less memory. _PyDateTime_BaseTime is an + * internal struct used to allocate the right amount of space for the + * "without" case. + */ +#define _PyDateTime_TIMEHEAD \ + _PyTZINFO_HEAD \ + unsigned char data[_PyDateTime_TIME_DATASIZE]; + +typedef struct +{ + _PyDateTime_TIMEHEAD +} _PyDateTime_BaseTime; /* hastzinfo false */ + +typedef struct +{ + _PyDateTime_TIMEHEAD + unsigned char fold; + PyObject *tzinfo; +} PyDateTime_Time; /* hastzinfo true */ + + +/* All datetime objects are of PyDateTime_DateTimeType, but that can be + * allocated in two ways too, just like for time objects above. In addition, + * the plain date type is a base class for datetime, so it must also have + * a hastzinfo member (although it's unused there). + */ +typedef struct +{ + _PyTZINFO_HEAD + unsigned char data[_PyDateTime_DATE_DATASIZE]; +} PyDateTime_Date; + +#define _PyDateTime_DATETIMEHEAD \ + _PyTZINFO_HEAD \ + unsigned char data[_PyDateTime_DATETIME_DATASIZE]; + +typedef struct +{ + _PyDateTime_DATETIMEHEAD +} _PyDateTime_BaseDateTime; /* hastzinfo false */ + +typedef struct +{ + _PyDateTime_DATETIMEHEAD + unsigned char fold; + PyObject *tzinfo; +} PyDateTime_DateTime; /* hastzinfo true */ + + +/* Apply for date and datetime instances. */ +#define PyDateTime_GET_YEAR(o) ((((PyDateTime_Date*)o)->data[0] << 8) | \ + ((PyDateTime_Date*)o)->data[1]) +#define PyDateTime_GET_MONTH(o) (((PyDateTime_Date*)o)->data[2]) +#define PyDateTime_GET_DAY(o) (((PyDateTime_Date*)o)->data[3]) + +#define PyDateTime_DATE_GET_HOUR(o) (((PyDateTime_DateTime*)o)->data[4]) +#define PyDateTime_DATE_GET_MINUTE(o) (((PyDateTime_DateTime*)o)->data[5]) +#define PyDateTime_DATE_GET_SECOND(o) (((PyDateTime_DateTime*)o)->data[6]) +#define PyDateTime_DATE_GET_MICROSECOND(o) \ + ((((PyDateTime_DateTime*)o)->data[7] << 16) | \ + (((PyDateTime_DateTime*)o)->data[8] << 8) | \ + ((PyDateTime_DateTime*)o)->data[9]) +#define PyDateTime_DATE_GET_FOLD(o) (((PyDateTime_DateTime*)o)->fold) + +/* Apply for time instances. */ +#define PyDateTime_TIME_GET_HOUR(o) (((PyDateTime_Time*)o)->data[0]) +#define PyDateTime_TIME_GET_MINUTE(o) (((PyDateTime_Time*)o)->data[1]) +#define PyDateTime_TIME_GET_SECOND(o) (((PyDateTime_Time*)o)->data[2]) +#define PyDateTime_TIME_GET_MICROSECOND(o) \ + ((((PyDateTime_Time*)o)->data[3] << 16) | \ + (((PyDateTime_Time*)o)->data[4] << 8) | \ + ((PyDateTime_Time*)o)->data[5]) +#define PyDateTime_TIME_GET_FOLD(o) (((PyDateTime_Time*)o)->fold) + +/* Apply for time delta instances */ +#define PyDateTime_DELTA_GET_DAYS(o) (((PyDateTime_Delta*)o)->days) +#define PyDateTime_DELTA_GET_SECONDS(o) (((PyDateTime_Delta*)o)->seconds) +#define PyDateTime_DELTA_GET_MICROSECONDS(o) \ + (((PyDateTime_Delta*)o)->microseconds) + + +/* Define structure for C API. */ +typedef struct { + /* type objects */ + PyTypeObject *DateType; + PyTypeObject *DateTimeType; + PyTypeObject *TimeType; + PyTypeObject *DeltaType; + PyTypeObject *TZInfoType; + + /* singletons */ + PyObject *TimeZone_UTC; + + /* constructors */ + PyObject *(*Date_FromDate)(int, int, int, PyTypeObject*); + PyObject *(*DateTime_FromDateAndTime)(int, int, int, int, int, int, int, + PyObject*, PyTypeObject*); + PyObject *(*Time_FromTime)(int, int, int, int, PyObject*, PyTypeObject*); + PyObject *(*Delta_FromDelta)(int, int, int, int, PyTypeObject*); + PyObject *(*TimeZone_FromTimeZone)(PyObject *offset, PyObject *name); + + /* constructors for the DB API */ + PyObject *(*DateTime_FromTimestamp)(PyObject*, PyObject*, PyObject*); + PyObject *(*Date_FromTimestamp)(PyObject*, PyObject*); + + /* PEP 495 constructors */ + PyObject *(*DateTime_FromDateAndTimeAndFold)(int, int, int, int, int, int, int, + PyObject*, int, PyTypeObject*); + PyObject *(*Time_FromTimeAndFold)(int, int, int, int, PyObject*, int, PyTypeObject*); + +} PyDateTime_CAPI; + +#define PyDateTime_CAPSULE_NAME "datetime.datetime_CAPI" + + +/* This block is only used as part of the public API and should not be + * included in _datetimemodule.c, which does not use the C API capsule. + * See bpo-35081 for more details. + * */ +#ifndef _PY_DATETIME_IMPL +/* Define global variable for the C API and a macro for setting it. */ +static PyDateTime_CAPI *PyDateTimeAPI = NULL; + +#define PyDateTime_IMPORT \ + PyDateTimeAPI = (PyDateTime_CAPI *)PyCapsule_Import(PyDateTime_CAPSULE_NAME, 0) + +/* Macro for access to the UTC singleton */ +#define PyDateTime_TimeZone_UTC PyDateTimeAPI->TimeZone_UTC + +/* Macros for type checking when not building the Python core. */ +#define PyDate_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateType) +#define PyDate_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateType) + +#define PyDateTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateTimeType) +#define PyDateTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateTimeType) + +#define PyTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TimeType) +#define PyTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TimeType) + +#define PyDelta_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DeltaType) +#define PyDelta_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DeltaType) + +#define PyTZInfo_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TZInfoType) +#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TZInfoType) + + +/* Macros for accessing constructors in a simplified fashion. */ +#define PyDate_FromDate(year, month, day) \ + PyDateTimeAPI->Date_FromDate(year, month, day, PyDateTimeAPI->DateType) + +#define PyDateTime_FromDateAndTime(year, month, day, hour, min, sec, usec) \ + PyDateTimeAPI->DateTime_FromDateAndTime(year, month, day, hour, \ + min, sec, usec, Py_None, PyDateTimeAPI->DateTimeType) + +#define PyDateTime_FromDateAndTimeAndFold(year, month, day, hour, min, sec, usec, fold) \ + PyDateTimeAPI->DateTime_FromDateAndTimeAndFold(year, month, day, hour, \ + min, sec, usec, Py_None, fold, PyDateTimeAPI->DateTimeType) + +#define PyTime_FromTime(hour, minute, second, usecond) \ + PyDateTimeAPI->Time_FromTime(hour, minute, second, usecond, \ + Py_None, PyDateTimeAPI->TimeType) + +#define PyTime_FromTimeAndFold(hour, minute, second, usecond, fold) \ + PyDateTimeAPI->Time_FromTimeAndFold(hour, minute, second, usecond, \ + Py_None, fold, PyDateTimeAPI->TimeType) + +#define PyDelta_FromDSU(days, seconds, useconds) \ + PyDateTimeAPI->Delta_FromDelta(days, seconds, useconds, 1, \ + PyDateTimeAPI->DeltaType) + +#define PyTimeZone_FromOffset(offset) \ + PyDateTimeAPI->TimeZone_FromTimeZone(offset, NULL) + +#define PyTimeZone_FromOffsetAndName(offset, name) \ + PyDateTimeAPI->TimeZone_FromTimeZone(offset, name) + +/* Macros supporting the DB API. */ +#define PyDateTime_FromTimestamp(args) \ + PyDateTimeAPI->DateTime_FromTimestamp( \ + (PyObject*) (PyDateTimeAPI->DateTimeType), args, NULL) + +#define PyDate_FromTimestamp(args) \ + PyDateTimeAPI->Date_FromTimestamp( \ + (PyObject*) (PyDateTimeAPI->DateType), args) + +#endif /* !defined(_PY_DATETIME_IMPL) */ + +#ifdef __cplusplus +} +#endif +#endif +#endif /* !Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/descrobject.h b/client/3rd/include/frame/python/descrobject.h new file mode 100755 index 0000000..ead269d --- /dev/null +++ b/client/3rd/include/frame/python/descrobject.h @@ -0,0 +1,108 @@ +/* Descriptors */ +#ifndef Py_DESCROBJECT_H +#define Py_DESCROBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef PyObject *(*getter)(PyObject *, void *); +typedef int (*setter)(PyObject *, PyObject *, void *); + +typedef struct PyGetSetDef { + const char *name; + getter get; + setter set; + const char *doc; + void *closure; +} PyGetSetDef; + +#ifndef Py_LIMITED_API +typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args, + void *wrapped); + +typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args, + void *wrapped, PyObject *kwds); + +struct wrapperbase { + const char *name; + int offset; + void *function; + wrapperfunc wrapper; + const char *doc; + int flags; + PyObject *name_strobj; +}; + +/* Flags for above struct */ +#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */ + +/* Various kinds of descriptor objects */ + +typedef struct { + PyObject_HEAD + PyTypeObject *d_type; + PyObject *d_name; + PyObject *d_qualname; +} PyDescrObject; + +#define PyDescr_COMMON PyDescrObject d_common + +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) + +typedef struct { + PyDescr_COMMON; + PyMethodDef *d_method; + vectorcallfunc vectorcall; +} PyMethodDescrObject; + +typedef struct { + PyDescr_COMMON; + struct PyMemberDef *d_member; +} PyMemberDescrObject; + +typedef struct { + PyDescr_COMMON; + PyGetSetDef *d_getset; +} PyGetSetDescrObject; + +typedef struct { + PyDescr_COMMON; + struct wrapperbase *d_base; + void *d_wrapped; /* This can be any function pointer */ +} PyWrapperDescrObject; +#endif /* Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type; +PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type; +PyAPI_DATA(PyTypeObject) PyMemberDescr_Type; +PyAPI_DATA(PyTypeObject) PyMethodDescr_Type; +PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type; +PyAPI_DATA(PyTypeObject) PyDictProxy_Type; +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyMethodWrapper_Type; +#endif /* Py_LIMITED_API */ + +PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *); +PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *); +struct PyMemberDef; /* forward declaration for following prototype */ +PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *, + struct PyMemberDef *); +PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *, + struct PyGetSetDef *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *, + struct wrapperbase *, void *); +#define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL) +#endif + +PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *); +PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *); + + +PyAPI_DATA(PyTypeObject) PyProperty_Type; +#ifdef __cplusplus +} +#endif +#endif /* !Py_DESCROBJECT_H */ + diff --git a/client/3rd/include/frame/python/dictobject.h b/client/3rd/include/frame/python/dictobject.h new file mode 100755 index 0000000..b37573a --- /dev/null +++ b/client/3rd/include/frame/python/dictobject.h @@ -0,0 +1,94 @@ +#ifndef Py_DICTOBJECT_H +#define Py_DICTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Dictionary object type -- mapping from hashable object to object */ + +/* The distribution includes a separate file, Objects/dictnotes.txt, + describing explorations into dictionary design and optimization. + It covers typical dictionary use patterns, the parameters for + tuning dictionaries, and several ideas for possible optimizations. +*/ + +PyAPI_DATA(PyTypeObject) PyDict_Type; + +#define PyDict_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS) +#define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type) + +PyAPI_FUNC(PyObject *) PyDict_New(void); +PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); +PyAPI_FUNC(PyObject *) PyDict_GetItemWithError(PyObject *mp, PyObject *key); +PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item); +PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key); +PyAPI_FUNC(void) PyDict_Clear(PyObject *mp); +PyAPI_FUNC(int) PyDict_Next( + PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value); +PyAPI_FUNC(PyObject *) PyDict_Keys(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Values(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Items(PyObject *mp); +PyAPI_FUNC(Py_ssize_t) PyDict_Size(PyObject *mp); +PyAPI_FUNC(PyObject *) PyDict_Copy(PyObject *mp); +PyAPI_FUNC(int) PyDict_Contains(PyObject *mp, PyObject *key); + +/* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */ +PyAPI_FUNC(int) PyDict_Update(PyObject *mp, PyObject *other); + +/* PyDict_Merge updates/merges from a mapping object (an object that + supports PyMapping_Keys() and PyObject_GetItem()). If override is true, + the last occurrence of a key wins, else the first. The Python + dict.update(other) is equivalent to PyDict_Merge(dict, other, 1). +*/ +PyAPI_FUNC(int) PyDict_Merge(PyObject *mp, + PyObject *other, + int override); + +/* PyDict_MergeFromSeq2 updates/merges from an iterable object producing + iterable objects of length 2. If override is true, the last occurrence + of a key wins, else the first. The Python dict constructor dict(seq2) + is equivalent to dict={}; PyDict_MergeFromSeq(dict, seq2, 1). +*/ +PyAPI_FUNC(int) PyDict_MergeFromSeq2(PyObject *d, + PyObject *seq2, + int override); + +PyAPI_FUNC(PyObject *) PyDict_GetItemString(PyObject *dp, const char *key); +PyAPI_FUNC(int) PyDict_SetItemString(PyObject *dp, const char *key, PyObject *item); +PyAPI_FUNC(int) PyDict_DelItemString(PyObject *dp, const char *key); + +/* Dictionary (keys, values, items) views */ + +PyAPI_DATA(PyTypeObject) PyDictKeys_Type; +PyAPI_DATA(PyTypeObject) PyDictValues_Type; +PyAPI_DATA(PyTypeObject) PyDictItems_Type; + +#define PyDictKeys_Check(op) PyObject_TypeCheck(op, &PyDictKeys_Type) +#define PyDictValues_Check(op) PyObject_TypeCheck(op, &PyDictValues_Type) +#define PyDictItems_Check(op) PyObject_TypeCheck(op, &PyDictItems_Type) +/* This excludes Values, since they are not sets. */ +# define PyDictViewSet_Check(op) \ + (PyDictKeys_Check(op) || PyDictItems_Check(op)) + +/* Dictionary (key, value, items) iterators */ + +PyAPI_DATA(PyTypeObject) PyDictIterKey_Type; +PyAPI_DATA(PyTypeObject) PyDictIterValue_Type; +PyAPI_DATA(PyTypeObject) PyDictIterItem_Type; + +PyAPI_DATA(PyTypeObject) PyDictRevIterKey_Type; +PyAPI_DATA(PyTypeObject) PyDictRevIterItem_Type; +PyAPI_DATA(PyTypeObject) PyDictRevIterValue_Type; + + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_DICTOBJECT_H +# include "cpython/dictobject.h" +# undef Py_CPYTHON_DICTOBJECT_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_DICTOBJECT_H */ diff --git a/client/3rd/include/frame/python/dtoa.h b/client/3rd/include/frame/python/dtoa.h new file mode 100755 index 0000000..9bfb625 --- /dev/null +++ b/client/3rd/include/frame/python/dtoa.h @@ -0,0 +1,19 @@ +#ifndef Py_LIMITED_API +#ifndef PY_NO_SHORT_FLOAT_REPR +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr); +PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits, + int *decpt, int *sign, char **rve); +PyAPI_FUNC(void) _Py_dg_freedtoa(char *s); +PyAPI_FUNC(double) _Py_dg_stdnan(int sign); +PyAPI_FUNC(double) _Py_dg_infinity(int sign); + + +#ifdef __cplusplus +} +#endif +#endif +#endif diff --git a/client/3rd/include/frame/python/dynamic_annotations.h b/client/3rd/include/frame/python/dynamic_annotations.h new file mode 100755 index 0000000..0bd1a83 --- /dev/null +++ b/client/3rd/include/frame/python/dynamic_annotations.h @@ -0,0 +1,499 @@ +/* Copyright (c) 2008-2009, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Kostya Serebryany + * Copied to CPython by Jeffrey Yasskin, with all macros renamed to + * start with _Py_ to avoid colliding with users embedding Python, and + * with deprecated macros removed. + */ + +/* This file defines dynamic annotations for use with dynamic analysis + tool such as valgrind, PIN, etc. + + Dynamic annotation is a source code annotation that affects + the generated code (that is, the annotation is not a comment). + Each such annotation is attached to a particular + instruction and/or to a particular object (address) in the program. + + The annotations that should be used by users are macros in all upper-case + (e.g., _Py_ANNOTATE_NEW_MEMORY). + + Actual implementation of these macros may differ depending on the + dynamic analysis tool being used. + + See http://code.google.com/p/data-race-test/ for more information. + + This file supports the following dynamic analysis tools: + - None (DYNAMIC_ANNOTATIONS_ENABLED is not defined or zero). + Macros are defined empty. + - ThreadSanitizer, Helgrind, DRD (DYNAMIC_ANNOTATIONS_ENABLED is 1). + Macros are defined as calls to non-inlinable empty functions + that are intercepted by Valgrind. */ + +#ifndef __DYNAMIC_ANNOTATIONS_H__ +#define __DYNAMIC_ANNOTATIONS_H__ + +#ifndef DYNAMIC_ANNOTATIONS_ENABLED +# define DYNAMIC_ANNOTATIONS_ENABLED 0 +#endif + +#if DYNAMIC_ANNOTATIONS_ENABLED != 0 + + /* ------------------------------------------------------------- + Annotations useful when implementing condition variables such as CondVar, + using conditional critical sections (Await/LockWhen) and when constructing + user-defined synchronization mechanisms. + + The annotations _Py_ANNOTATE_HAPPENS_BEFORE() and + _Py_ANNOTATE_HAPPENS_AFTER() can be used to define happens-before arcs in + user-defined synchronization mechanisms: the race detector will infer an + arc from the former to the latter when they share the same argument + pointer. + + Example 1 (reference counting): + + void Unref() { + _Py_ANNOTATE_HAPPENS_BEFORE(&refcount_); + if (AtomicDecrementByOne(&refcount_) == 0) { + _Py_ANNOTATE_HAPPENS_AFTER(&refcount_); + delete this; + } + } + + Example 2 (message queue): + + void MyQueue::Put(Type *e) { + MutexLock lock(&mu_); + _Py_ANNOTATE_HAPPENS_BEFORE(e); + PutElementIntoMyQueue(e); + } + + Type *MyQueue::Get() { + MutexLock lock(&mu_); + Type *e = GetElementFromMyQueue(); + _Py_ANNOTATE_HAPPENS_AFTER(e); + return e; + } + + Note: when possible, please use the existing reference counting and message + queue implementations instead of inventing new ones. */ + + /* Report that wait on the condition variable at address "cv" has succeeded + and the lock at address "lock" is held. */ +#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) \ + AnnotateCondVarWait(__FILE__, __LINE__, cv, lock) + + /* Report that wait on the condition variable at "cv" has succeeded. Variant + w/o lock. */ +#define _Py_ANNOTATE_CONDVAR_WAIT(cv) \ + AnnotateCondVarWait(__FILE__, __LINE__, cv, NULL) + + /* Report that we are about to signal on the condition variable at address + "cv". */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) \ + AnnotateCondVarSignal(__FILE__, __LINE__, cv) + + /* Report that we are about to signal_all on the condition variable at "cv". */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) \ + AnnotateCondVarSignalAll(__FILE__, __LINE__, cv) + + /* Annotations for user-defined synchronization mechanisms. */ +#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) _Py_ANNOTATE_CONDVAR_SIGNAL(obj) +#define _Py_ANNOTATE_HAPPENS_AFTER(obj) _Py_ANNOTATE_CONDVAR_WAIT(obj) + + /* Report that the bytes in the range [pointer, pointer+size) are about + to be published safely. The race checker will create a happens-before + arc from the call _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) to + subsequent accesses to this memory. + Note: this annotation may not work properly if the race detector uses + sampling, i.e. does not observe all memory accesses. + */ +#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(pointer, size) \ + AnnotatePublishMemoryRange(__FILE__, __LINE__, pointer, size) + + /* Instruct the tool to create a happens-before arc between mu->Unlock() and + mu->Lock(). This annotation may slow down the race detector and hide real + races. Normally it is used only when it would be difficult to annotate each + of the mutex's critical sections individually using the annotations above. + This annotation makes sense only for hybrid race detectors. For pure + happens-before detectors this is a no-op. For more details see + http://code.google.com/p/data-race-test/wiki/PureHappensBeforeVsHybrid . */ +#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) \ + AnnotateMutexIsUsedAsCondVar(__FILE__, __LINE__, mu) + + /* ------------------------------------------------------------- + Annotations useful when defining memory allocators, or when memory that + was protected in one way starts to be protected in another. */ + + /* Report that a new memory at "address" of size "size" has been allocated. + This might be used when the memory has been retrieved from a free list and + is about to be reused, or when the locking discipline for a variable + changes. */ +#define _Py_ANNOTATE_NEW_MEMORY(address, size) \ + AnnotateNewMemory(__FILE__, __LINE__, address, size) + + /* ------------------------------------------------------------- + Annotations useful when defining FIFO queues that transfer data between + threads. */ + + /* Report that the producer-consumer queue (such as ProducerConsumerQueue) at + address "pcq" has been created. The _Py_ANNOTATE_PCQ_* annotations should + be used only for FIFO queues. For non-FIFO queues use + _Py_ANNOTATE_HAPPENS_BEFORE (for put) and _Py_ANNOTATE_HAPPENS_AFTER (for + get). */ +#define _Py_ANNOTATE_PCQ_CREATE(pcq) \ + AnnotatePCQCreate(__FILE__, __LINE__, pcq) + + /* Report that the queue at address "pcq" is about to be destroyed. */ +#define _Py_ANNOTATE_PCQ_DESTROY(pcq) \ + AnnotatePCQDestroy(__FILE__, __LINE__, pcq) + + /* Report that we are about to put an element into a FIFO queue at address + "pcq". */ +#define _Py_ANNOTATE_PCQ_PUT(pcq) \ + AnnotatePCQPut(__FILE__, __LINE__, pcq) + + /* Report that we've just got an element from a FIFO queue at address "pcq". */ +#define _Py_ANNOTATE_PCQ_GET(pcq) \ + AnnotatePCQGet(__FILE__, __LINE__, pcq) + + /* ------------------------------------------------------------- + Annotations that suppress errors. It is usually better to express the + program's synchronization using the other annotations, but these can + be used when all else fails. */ + + /* Report that we may have a benign race at "pointer", with size + "sizeof(*(pointer))". "pointer" must be a non-void* pointer. Insert at the + point where "pointer" has been allocated, preferably close to the point + where the race happens. See also _Py_ANNOTATE_BENIGN_RACE_STATIC. */ +#define _Py_ANNOTATE_BENIGN_RACE(pointer, description) \ + AnnotateBenignRaceSized(__FILE__, __LINE__, pointer, \ + sizeof(*(pointer)), description) + + /* Same as _Py_ANNOTATE_BENIGN_RACE(address, description), but applies to + the memory range [address, address+size). */ +#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) \ + AnnotateBenignRaceSized(__FILE__, __LINE__, address, size, description) + + /* Request the analysis tool to ignore all reads in the current thread + until _Py_ANNOTATE_IGNORE_READS_END is called. + Useful to ignore intentional racey reads, while still checking + other reads and all writes. + See also _Py_ANNOTATE_UNPROTECTED_READ. */ +#define _Py_ANNOTATE_IGNORE_READS_BEGIN() \ + AnnotateIgnoreReadsBegin(__FILE__, __LINE__) + + /* Stop ignoring reads. */ +#define _Py_ANNOTATE_IGNORE_READS_END() \ + AnnotateIgnoreReadsEnd(__FILE__, __LINE__) + + /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore writes. */ +#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() \ + AnnotateIgnoreWritesBegin(__FILE__, __LINE__) + + /* Stop ignoring writes. */ +#define _Py_ANNOTATE_IGNORE_WRITES_END() \ + AnnotateIgnoreWritesEnd(__FILE__, __LINE__) + + /* Start ignoring all memory accesses (reads and writes). */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() \ + do {\ + _Py_ANNOTATE_IGNORE_READS_BEGIN();\ + _Py_ANNOTATE_IGNORE_WRITES_BEGIN();\ + }while(0)\ + + /* Stop ignoring all memory accesses. */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() \ + do {\ + _Py_ANNOTATE_IGNORE_WRITES_END();\ + _Py_ANNOTATE_IGNORE_READS_END();\ + }while(0)\ + + /* Similar to _Py_ANNOTATE_IGNORE_READS_BEGIN, but ignore synchronization events: + RWLOCK* and CONDVAR*. */ +#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() \ + AnnotateIgnoreSyncBegin(__FILE__, __LINE__) + + /* Stop ignoring sync events. */ +#define _Py_ANNOTATE_IGNORE_SYNC_END() \ + AnnotateIgnoreSyncEnd(__FILE__, __LINE__) + + + /* Enable (enable!=0) or disable (enable==0) race detection for all threads. + This annotation could be useful if you want to skip expensive race analysis + during some period of program execution, e.g. during initialization. */ +#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) \ + AnnotateEnableRaceDetection(__FILE__, __LINE__, enable) + + /* ------------------------------------------------------------- + Annotations useful for debugging. */ + + /* Request to trace every access to "address". */ +#define _Py_ANNOTATE_TRACE_MEMORY(address) \ + AnnotateTraceMemory(__FILE__, __LINE__, address) + + /* Report the current thread name to a race detector. */ +#define _Py_ANNOTATE_THREAD_NAME(name) \ + AnnotateThreadName(__FILE__, __LINE__, name) + + /* ------------------------------------------------------------- + Annotations useful when implementing locks. They are not + normally needed by modules that merely use locks. + The "lock" argument is a pointer to the lock object. */ + + /* Report that a lock has been created at address "lock". */ +#define _Py_ANNOTATE_RWLOCK_CREATE(lock) \ + AnnotateRWLockCreate(__FILE__, __LINE__, lock) + + /* Report that the lock at address "lock" is about to be destroyed. */ +#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) \ + AnnotateRWLockDestroy(__FILE__, __LINE__, lock) + + /* Report that the lock at address "lock" has been acquired. + is_w=1 for writer lock, is_w=0 for reader lock. */ +#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) \ + AnnotateRWLockAcquired(__FILE__, __LINE__, lock, is_w) + + /* Report that the lock at address "lock" is about to be released. */ +#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) \ + AnnotateRWLockReleased(__FILE__, __LINE__, lock, is_w) + + /* ------------------------------------------------------------- + Annotations useful when implementing barriers. They are not + normally needed by modules that merely use barriers. + The "barrier" argument is a pointer to the barrier object. */ + + /* Report that the "barrier" has been initialized with initial "count". + If 'reinitialization_allowed' is true, initialization is allowed to happen + multiple times w/o calling barrier_destroy() */ +#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) \ + AnnotateBarrierInit(__FILE__, __LINE__, barrier, count, \ + reinitialization_allowed) + + /* Report that we are about to enter barrier_wait("barrier"). */ +#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) \ + AnnotateBarrierWaitBefore(__FILE__, __LINE__, barrier) + + /* Report that we just exited barrier_wait("barrier"). */ +#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) \ + AnnotateBarrierWaitAfter(__FILE__, __LINE__, barrier) + + /* Report that the "barrier" has been destroyed. */ +#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) \ + AnnotateBarrierDestroy(__FILE__, __LINE__, barrier) + + /* ------------------------------------------------------------- + Annotations useful for testing race detectors. */ + + /* Report that we expect a race on the variable at "address". + Use only in unit tests for a race detector. */ +#define _Py_ANNOTATE_EXPECT_RACE(address, description) \ + AnnotateExpectRace(__FILE__, __LINE__, address, description) + + /* A no-op. Insert where you like to test the interceptors. */ +#define _Py_ANNOTATE_NO_OP(arg) \ + AnnotateNoOp(__FILE__, __LINE__, arg) + + /* Force the race detector to flush its state. The actual effect depends on + * the implementation of the detector. */ +#define _Py_ANNOTATE_FLUSH_STATE() \ + AnnotateFlushState(__FILE__, __LINE__) + + +#else /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */ + +#define _Py_ANNOTATE_RWLOCK_CREATE(lock) /* empty */ +#define _Py_ANNOTATE_RWLOCK_DESTROY(lock) /* empty */ +#define _Py_ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) /* empty */ +#define _Py_ANNOTATE_RWLOCK_RELEASED(lock, is_w) /* empty */ +#define _Py_ANNOTATE_BARRIER_INIT(barrier, count, reinitialization_allowed) /* */ +#define _Py_ANNOTATE_BARRIER_WAIT_BEFORE(barrier) /* empty */ +#define _Py_ANNOTATE_BARRIER_WAIT_AFTER(barrier) /* empty */ +#define _Py_ANNOTATE_BARRIER_DESTROY(barrier) /* empty */ +#define _Py_ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) /* empty */ +#define _Py_ANNOTATE_CONDVAR_WAIT(cv) /* empty */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL(cv) /* empty */ +#define _Py_ANNOTATE_CONDVAR_SIGNAL_ALL(cv) /* empty */ +#define _Py_ANNOTATE_HAPPENS_BEFORE(obj) /* empty */ +#define _Py_ANNOTATE_HAPPENS_AFTER(obj) /* empty */ +#define _Py_ANNOTATE_PUBLISH_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_UNPUBLISH_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_SWAP_MEMORY_RANGE(address, size) /* empty */ +#define _Py_ANNOTATE_PCQ_CREATE(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_DESTROY(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_PUT(pcq) /* empty */ +#define _Py_ANNOTATE_PCQ_GET(pcq) /* empty */ +#define _Py_ANNOTATE_NEW_MEMORY(address, size) /* empty */ +#define _Py_ANNOTATE_EXPECT_RACE(address, description) /* empty */ +#define _Py_ANNOTATE_BENIGN_RACE(address, description) /* empty */ +#define _Py_ANNOTATE_BENIGN_RACE_SIZED(address, size, description) /* empty */ +#define _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(mu) /* empty */ +#define _Py_ANNOTATE_MUTEX_IS_USED_AS_CONDVAR(mu) /* empty */ +#define _Py_ANNOTATE_TRACE_MEMORY(arg) /* empty */ +#define _Py_ANNOTATE_THREAD_NAME(name) /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_WRITES_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_WRITES_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_READS_AND_WRITES_END() /* empty */ +#define _Py_ANNOTATE_IGNORE_SYNC_BEGIN() /* empty */ +#define _Py_ANNOTATE_IGNORE_SYNC_END() /* empty */ +#define _Py_ANNOTATE_ENABLE_RACE_DETECTION(enable) /* empty */ +#define _Py_ANNOTATE_NO_OP(arg) /* empty */ +#define _Py_ANNOTATE_FLUSH_STATE() /* empty */ + +#endif /* DYNAMIC_ANNOTATIONS_ENABLED */ + +/* Use the macros above rather than using these functions directly. */ +#ifdef __cplusplus +extern "C" { +#endif +void AnnotateRWLockCreate(const char *file, int line, + const volatile void *lock); +void AnnotateRWLockDestroy(const char *file, int line, + const volatile void *lock); +void AnnotateRWLockAcquired(const char *file, int line, + const volatile void *lock, long is_w); +void AnnotateRWLockReleased(const char *file, int line, + const volatile void *lock, long is_w); +void AnnotateBarrierInit(const char *file, int line, + const volatile void *barrier, long count, + long reinitialization_allowed); +void AnnotateBarrierWaitBefore(const char *file, int line, + const volatile void *barrier); +void AnnotateBarrierWaitAfter(const char *file, int line, + const volatile void *barrier); +void AnnotateBarrierDestroy(const char *file, int line, + const volatile void *barrier); +void AnnotateCondVarWait(const char *file, int line, + const volatile void *cv, + const volatile void *lock); +void AnnotateCondVarSignal(const char *file, int line, + const volatile void *cv); +void AnnotateCondVarSignalAll(const char *file, int line, + const volatile void *cv); +void AnnotatePublishMemoryRange(const char *file, int line, + const volatile void *address, + long size); +void AnnotateUnpublishMemoryRange(const char *file, int line, + const volatile void *address, + long size); +void AnnotatePCQCreate(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQDestroy(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQPut(const char *file, int line, + const volatile void *pcq); +void AnnotatePCQGet(const char *file, int line, + const volatile void *pcq); +void AnnotateNewMemory(const char *file, int line, + const volatile void *address, + long size); +void AnnotateExpectRace(const char *file, int line, + const volatile void *address, + const char *description); +void AnnotateBenignRace(const char *file, int line, + const volatile void *address, + const char *description); +void AnnotateBenignRaceSized(const char *file, int line, + const volatile void *address, + long size, + const char *description); +void AnnotateMutexIsUsedAsCondVar(const char *file, int line, + const volatile void *mu); +void AnnotateTraceMemory(const char *file, int line, + const volatile void *arg); +void AnnotateThreadName(const char *file, int line, + const char *name); +void AnnotateIgnoreReadsBegin(const char *file, int line); +void AnnotateIgnoreReadsEnd(const char *file, int line); +void AnnotateIgnoreWritesBegin(const char *file, int line); +void AnnotateIgnoreWritesEnd(const char *file, int line); +void AnnotateEnableRaceDetection(const char *file, int line, int enable); +void AnnotateNoOp(const char *file, int line, + const volatile void *arg); +void AnnotateFlushState(const char *file, int line); + +/* Return non-zero value if running under valgrind. + + If "valgrind.h" is included into dynamic_annotations.c, + the regular valgrind mechanism will be used. + See http://valgrind.org/docs/manual/manual-core-adv.html about + RUNNING_ON_VALGRIND and other valgrind "client requests". + The file "valgrind.h" may be obtained by doing + svn co svn://svn.valgrind.org/valgrind/trunk/include + + If for some reason you can't use "valgrind.h" or want to fake valgrind, + there are two ways to make this function return non-zero: + - Use environment variable: export RUNNING_ON_VALGRIND=1 + - Make your tool intercept the function RunningOnValgrind() and + change its return value. + */ +int RunningOnValgrind(void); + +#ifdef __cplusplus +} +#endif + +#if DYNAMIC_ANNOTATIONS_ENABLED != 0 && defined(__cplusplus) + + /* _Py_ANNOTATE_UNPROTECTED_READ is the preferred way to annotate racey reads. + + Instead of doing + _Py_ANNOTATE_IGNORE_READS_BEGIN(); + ... = x; + _Py_ANNOTATE_IGNORE_READS_END(); + one can use + ... = _Py_ANNOTATE_UNPROTECTED_READ(x); */ + template + inline T _Py_ANNOTATE_UNPROTECTED_READ(const volatile T &x) { + _Py_ANNOTATE_IGNORE_READS_BEGIN(); + T res = x; + _Py_ANNOTATE_IGNORE_READS_END(); + return res; + } + /* Apply _Py_ANNOTATE_BENIGN_RACE_SIZED to a static variable. */ +#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description) \ + namespace { \ + class static_var ## _annotator { \ + public: \ + static_var ## _annotator() { \ + _Py_ANNOTATE_BENIGN_RACE_SIZED(&static_var, \ + sizeof(static_var), \ + # static_var ": " description); \ + } \ + }; \ + static static_var ## _annotator the ## static_var ## _annotator;\ + } +#else /* DYNAMIC_ANNOTATIONS_ENABLED == 0 */ + +#define _Py_ANNOTATE_UNPROTECTED_READ(x) (x) +#define _Py_ANNOTATE_BENIGN_RACE_STATIC(static_var, description) /* empty */ + +#endif /* DYNAMIC_ANNOTATIONS_ENABLED */ + +#endif /* __DYNAMIC_ANNOTATIONS_H__ */ diff --git a/client/3rd/include/frame/python/enumobject.h b/client/3rd/include/frame/python/enumobject.h new file mode 100755 index 0000000..c14dbfc --- /dev/null +++ b/client/3rd/include/frame/python/enumobject.h @@ -0,0 +1,17 @@ +#ifndef Py_ENUMOBJECT_H +#define Py_ENUMOBJECT_H + +/* Enumerate Object */ + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyEnum_Type; +PyAPI_DATA(PyTypeObject) PyReversed_Type; + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_ENUMOBJECT_H */ diff --git a/client/3rd/include/frame/python/errcode.h b/client/3rd/include/frame/python/errcode.h new file mode 100755 index 0000000..b37cd26 --- /dev/null +++ b/client/3rd/include/frame/python/errcode.h @@ -0,0 +1,38 @@ +#ifndef Py_ERRCODE_H +#define Py_ERRCODE_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Error codes passed around between file input, tokenizer, parser and + interpreter. This is necessary so we can turn them into Python + exceptions at a higher level. Note that some errors have a + slightly different meaning when passed from the tokenizer to the + parser than when passed from the parser to the interpreter; e.g. + the parser only returns E_EOF when it hits EOF immediately, and it + never returns E_OK. */ + +#define E_OK 10 /* No error */ +#define E_EOF 11 /* End Of File */ +#define E_INTR 12 /* Interrupted */ +#define E_TOKEN 13 /* Bad token */ +#define E_SYNTAX 14 /* Syntax error */ +#define E_NOMEM 15 /* Ran out of memory */ +#define E_DONE 16 /* Parsing complete */ +#define E_ERROR 17 /* Execution error */ +#define E_TABSPACE 18 /* Inconsistent mixing of tabs and spaces */ +#define E_OVERFLOW 19 /* Node had too many children */ +#define E_TOODEEP 20 /* Too many indentation levels */ +#define E_DEDENT 21 /* No matching outer block for dedent */ +#define E_DECODE 22 /* Error in decoding into Unicode */ +#define E_EOFS 23 /* EOF in triple-quoted string */ +#define E_EOLS 24 /* EOL in single-quoted string */ +#define E_LINECONT 25 /* Unexpected characters after a line continuation */ +#define E_IDENTIFIER 26 /* Invalid characters in identifier */ +#define E_BADSINGLE 27 /* Ill-formed single statement input */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ERRCODE_H */ diff --git a/client/3rd/include/frame/python/eval.h b/client/3rd/include/frame/python/eval.h new file mode 100755 index 0000000..2c1c2d0 --- /dev/null +++ b/client/3rd/include/frame/python/eval.h @@ -0,0 +1,37 @@ + +/* Interface to execute compiled code */ + +#ifndef Py_EVAL_H +#define Py_EVAL_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(PyObject *) PyEval_EvalCode(PyObject *, PyObject *, PyObject *); + +PyAPI_FUNC(PyObject *) PyEval_EvalCodeEx(PyObject *co, + PyObject *globals, + PyObject *locals, + PyObject *const *args, int argc, + PyObject *const *kwds, int kwdc, + PyObject *const *defs, int defc, + PyObject *kwdefs, PyObject *closure); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyEval_EvalCodeWithName( + PyObject *co, + PyObject *globals, PyObject *locals, + PyObject *const *args, Py_ssize_t argcount, + PyObject *const *kwnames, PyObject *const *kwargs, + Py_ssize_t kwcount, int kwstep, + PyObject *const *defs, Py_ssize_t defcount, + PyObject *kwdefs, PyObject *closure, + PyObject *name, PyObject *qualname); + +PyAPI_FUNC(PyObject *) _PyEval_CallTracing(PyObject *func, PyObject *args); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_EVAL_H */ diff --git a/client/3rd/include/frame/python/fileobject.h b/client/3rd/include/frame/python/fileobject.h new file mode 100755 index 0000000..6ec2994 --- /dev/null +++ b/client/3rd/include/frame/python/fileobject.h @@ -0,0 +1,49 @@ +/* File object interface (what's left of it -- see io.py) */ + +#ifndef Py_FILEOBJECT_H +#define Py_FILEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#define PY_STDIOTEXTMODE "b" + +PyAPI_FUNC(PyObject *) PyFile_FromFd(int, const char *, const char *, int, + const char *, const char *, + const char *, int); +PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); +PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); +PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); +PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); + +/* The default encoding used by the platform file system APIs + If non-NULL, this is different than the default encoding for strings +*/ +PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; +#endif +PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding; + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000 +PyAPI_DATA(int) Py_UTF8Mode; +#endif + +/* A routine to check if a file descriptor can be select()-ed. */ +#ifdef _MSC_VER + /* On Windows, any socket fd can be select()-ed, no matter how high */ + #define _PyIsSelectable_fd(FD) (1) +#else + #define _PyIsSelectable_fd(FD) ((unsigned int)(FD) < (unsigned int)FD_SETSIZE) +#endif + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_FILEOBJECT_H +# include "cpython/fileobject.h" +# undef Py_CPYTHON_FILEOBJECT_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FILEOBJECT_H */ diff --git a/client/3rd/include/frame/python/fileutils.h b/client/3rd/include/frame/python/fileutils.h new file mode 100755 index 0000000..359dd0a --- /dev/null +++ b/client/3rd/include/frame/python/fileutils.h @@ -0,0 +1,185 @@ +#ifndef Py_FILEUTILS_H +#define Py_FILEUTILS_H +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(wchar_t *) Py_DecodeLocale( + const char *arg, + size_t *size); + +PyAPI_FUNC(char*) Py_EncodeLocale( + const wchar_t *text, + size_t *error_pos); + +PyAPI_FUNC(char*) _Py_EncodeLocaleRaw( + const wchar_t *text, + size_t *error_pos); +#endif + + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03080000 +typedef enum { + _Py_ERROR_UNKNOWN=0, + _Py_ERROR_STRICT, + _Py_ERROR_SURROGATEESCAPE, + _Py_ERROR_REPLACE, + _Py_ERROR_IGNORE, + _Py_ERROR_BACKSLASHREPLACE, + _Py_ERROR_SURROGATEPASS, + _Py_ERROR_XMLCHARREFREPLACE, + _Py_ERROR_OTHER +} _Py_error_handler; + +PyAPI_FUNC(_Py_error_handler) _Py_GetErrorHandler(const char *errors); + +PyAPI_FUNC(int) _Py_DecodeLocaleEx( + const char *arg, + wchar_t **wstr, + size_t *wlen, + const char **reason, + int current_locale, + _Py_error_handler errors); + +PyAPI_FUNC(int) _Py_EncodeLocaleEx( + const wchar_t *text, + char **str, + size_t *error_pos, + const char **reason, + int current_locale, + _Py_error_handler errors); +#endif + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _Py_device_encoding(int); + +#if defined(MS_WINDOWS) || defined(__APPLE__) + /* On Windows, the count parameter of read() is an int (bpo-9015, bpo-9611). + On macOS 10.13, read() and write() with more than INT_MAX bytes + fail with EINVAL (bpo-24658). */ +# define _PY_READ_MAX INT_MAX +# define _PY_WRITE_MAX INT_MAX +#else + /* write() should truncate the input to PY_SSIZE_T_MAX bytes, + but it's safer to do it ourself to have a portable behaviour */ +# define _PY_READ_MAX PY_SSIZE_T_MAX +# define _PY_WRITE_MAX PY_SSIZE_T_MAX +#endif + +#ifdef MS_WINDOWS +struct _Py_stat_struct { + unsigned long st_dev; + uint64_t st_ino; + unsigned short st_mode; + int st_nlink; + int st_uid; + int st_gid; + unsigned long st_rdev; + __int64 st_size; + time_t st_atime; + int st_atime_nsec; + time_t st_mtime; + int st_mtime_nsec; + time_t st_ctime; + int st_ctime_nsec; + unsigned long st_file_attributes; + unsigned long st_reparse_tag; +}; +#else +# define _Py_stat_struct stat +#endif + +PyAPI_FUNC(int) _Py_fstat( + int fd, + struct _Py_stat_struct *status); + +PyAPI_FUNC(int) _Py_fstat_noraise( + int fd, + struct _Py_stat_struct *status); + +PyAPI_FUNC(int) _Py_stat( + PyObject *path, + struct stat *status); + +PyAPI_FUNC(int) _Py_open( + const char *pathname, + int flags); + +PyAPI_FUNC(int) _Py_open_noraise( + const char *pathname, + int flags); + +PyAPI_FUNC(FILE *) _Py_wfopen( + const wchar_t *path, + const wchar_t *mode); + +PyAPI_FUNC(FILE*) _Py_fopen( + const char *pathname, + const char *mode); + +PyAPI_FUNC(FILE*) _Py_fopen_obj( + PyObject *path, + const char *mode); + +PyAPI_FUNC(Py_ssize_t) _Py_read( + int fd, + void *buf, + size_t count); + +PyAPI_FUNC(Py_ssize_t) _Py_write( + int fd, + const void *buf, + size_t count); + +PyAPI_FUNC(Py_ssize_t) _Py_write_noraise( + int fd, + const void *buf, + size_t count); + +#ifdef HAVE_READLINK +PyAPI_FUNC(int) _Py_wreadlink( + const wchar_t *path, + wchar_t *buf, + /* Number of characters of 'buf' buffer + including the trailing NUL character */ + size_t buflen); +#endif + +#ifdef HAVE_REALPATH +PyAPI_FUNC(wchar_t*) _Py_wrealpath( + const wchar_t *path, + wchar_t *resolved_path, + /* Number of characters of 'resolved_path' buffer + including the trailing NUL character */ + size_t resolved_path_len); +#endif + +PyAPI_FUNC(wchar_t*) _Py_wgetcwd( + wchar_t *buf, + /* Number of characters of 'buf' buffer + including the trailing NUL character */ + size_t buflen); + +PyAPI_FUNC(int) _Py_get_inheritable(int fd); + +PyAPI_FUNC(int) _Py_set_inheritable(int fd, int inheritable, + int *atomic_flag_works); + +PyAPI_FUNC(int) _Py_set_inheritable_async_safe(int fd, int inheritable, + int *atomic_flag_works); + +PyAPI_FUNC(int) _Py_dup(int fd); + +#ifndef MS_WINDOWS +PyAPI_FUNC(int) _Py_get_blocking(int fd); + +PyAPI_FUNC(int) _Py_set_blocking(int fd, int blocking); +#endif /* !MS_WINDOWS */ + +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FILEUTILS_H */ diff --git a/client/3rd/include/frame/python/floatobject.h b/client/3rd/include/frame/python/floatobject.h new file mode 100755 index 0000000..f1044d6 --- /dev/null +++ b/client/3rd/include/frame/python/floatobject.h @@ -0,0 +1,130 @@ + +/* Float object interface */ + +/* +PyFloatObject represents a (double precision) floating point number. +*/ + +#ifndef Py_FLOATOBJECT_H +#define Py_FLOATOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + double ob_fval; +} PyFloatObject; +#endif + +PyAPI_DATA(PyTypeObject) PyFloat_Type; + +#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type) +#define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type) + +#ifdef Py_NAN +#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN) +#endif + +#define Py_RETURN_INF(sign) do \ + if (copysign(1., sign) == 1.) { \ + return PyFloat_FromDouble(Py_HUGE_VAL); \ + } else { \ + return PyFloat_FromDouble(-Py_HUGE_VAL); \ + } while(0) + +PyAPI_FUNC(double) PyFloat_GetMax(void); +PyAPI_FUNC(double) PyFloat_GetMin(void); +PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void); + +/* Return Python float from string PyObject. */ +PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*); + +/* Return Python float from C double. */ +PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double); + +/* Extract C double from Python float. The macro version trades safety for + speed. */ +PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *); +#ifndef Py_LIMITED_API +#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval) +#endif + +#ifndef Py_LIMITED_API +/* _PyFloat_{Pack,Unpack}{4,8} + * + * The struct and pickle (at least) modules need an efficient platform- + * independent way to store floating-point values as byte strings. + * The Pack routines produce a string from a C double, and the Unpack + * routines produce a C double from such a string. The suffix (4 or 8) + * specifies the number of bytes in the string. + * + * On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats + * these functions work by copying bits. On other platforms, the formats the + * 4- byte format is identical to the IEEE-754 single precision format, and + * the 8-byte format to the IEEE-754 double precision format, although the + * packing of INFs and NaNs (if such things exist on the platform) isn't + * handled correctly, and attempting to unpack a string containing an IEEE + * INF or NaN will raise an exception. + * + * On non-IEEE platforms with more precision, or larger dynamic range, than + * 754 supports, not all values can be packed; on non-IEEE platforms with less + * precision, or smaller dynamic range, not all values can be unpacked. What + * happens in such cases is partly accidental (alas). + */ + +/* The pack routines write 2, 4 or 8 bytes, starting at p. le is a bool + * argument, true if you want the string in little-endian format (exponent + * last, at p+1, p+3 or p+7), false if you want big-endian format (exponent + * first, at p). + * Return value: 0 if all is OK, -1 if error (and an exception is + * set, most likely OverflowError). + * There are two problems on non-IEEE platforms: + * 1): What this does is undefined if x is a NaN or infinity. + * 2): -0.0 and +0.0 produce the same string. + */ +PyAPI_FUNC(int) _PyFloat_Pack2(double x, unsigned char *p, int le); +PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le); +PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le); + +/* Needed for the old way for marshal to store a floating point number. + Returns the string length copied into p, -1 on error. + */ +PyAPI_FUNC(int) _PyFloat_Repr(double x, char *p, size_t len); + +/* Used to get the important decimal digits of a double */ +PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum); +PyAPI_FUNC(void) _PyFloat_DigitsInit(void); + +/* The unpack routines read 2, 4 or 8 bytes, starting at p. le is a bool + * argument, true if the string is in little-endian format (exponent + * last, at p+1, p+3 or p+7), false if big-endian (exponent first, at p). + * Return value: The unpacked double. On error, this is -1.0 and + * PyErr_Occurred() is true (and an exception is set, most likely + * OverflowError). Note that on a non-IEEE platform this will refuse + * to unpack a string that represents a NaN or infinity. + */ +PyAPI_FUNC(double) _PyFloat_Unpack2(const unsigned char *p, int le); +PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le); +PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le); + +/* free list api */ +PyAPI_FUNC(int) PyFloat_ClearFreeList(void); + +PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out); + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif /* Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FLOATOBJECT_H */ diff --git a/client/3rd/include/frame/python/frameobject.h b/client/3rd/include/frame/python/frameobject.h new file mode 100755 index 0000000..3bad86a --- /dev/null +++ b/client/3rd/include/frame/python/frameobject.h @@ -0,0 +1,92 @@ +/* Frame object interface */ + +#ifndef Py_LIMITED_API +#ifndef Py_FRAMEOBJECT_H +#define Py_FRAMEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int b_type; /* what kind of block this is */ + int b_handler; /* where to jump to find handler */ + int b_level; /* value stack level to pop to */ +} PyTryBlock; + +typedef struct _frame { + PyObject_VAR_HEAD + struct _frame *f_back; /* previous frame, or NULL */ + PyCodeObject *f_code; /* code segment */ + PyObject *f_builtins; /* builtin symbol table (PyDictObject) */ + PyObject *f_globals; /* global symbol table (PyDictObject) */ + PyObject *f_locals; /* local symbol table (any mapping) */ + PyObject **f_valuestack; /* points after the last local */ + /* Next free slot in f_valuestack. Frame creation sets to f_valuestack. + Frame evaluation usually NULLs it, but a frame that yields sets it + to the current stack top. */ + PyObject **f_stacktop; + PyObject *f_trace; /* Trace function */ + char f_trace_lines; /* Emit per-line trace events? */ + char f_trace_opcodes; /* Emit per-opcode trace events? */ + + /* Borrowed reference to a generator, or NULL */ + PyObject *f_gen; + + int f_lasti; /* Last instruction if called */ + /* Call PyFrame_GetLineNumber() instead of reading this field + directly. As of 2.3 f_lineno is only valid when tracing is + active (i.e. when f_trace is set). At other times we use + PyCode_Addr2Line to calculate the line from the current + bytecode index. */ + int f_lineno; /* Current line number */ + int f_iblock; /* index in f_blockstack */ + char f_executing; /* whether the frame is still executing */ + PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */ + PyObject *f_localsplus[1]; /* locals+stack, dynamically sized */ +} PyFrameObject; + + +/* Standard object interface */ + +PyAPI_DATA(PyTypeObject) PyFrame_Type; + +#define PyFrame_Check(op) (Py_TYPE(op) == &PyFrame_Type) + +PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *, + PyObject *, PyObject *); + +/* only internal use */ +PyFrameObject* _PyFrame_New_NoTrack(PyThreadState *, PyCodeObject *, + PyObject *, PyObject *); + + +/* The rest of the interface is specific for frame objects */ + +/* Block management functions */ + +PyAPI_FUNC(void) PyFrame_BlockSetup(PyFrameObject *, int, int, int); +PyAPI_FUNC(PyTryBlock *) PyFrame_BlockPop(PyFrameObject *); + +/* Extend the value stack */ + +PyAPI_FUNC(PyObject **) PyFrame_ExtendStack(PyFrameObject *, int, int); + +/* Conversions between "fast locals" and locals in dictionary */ + +PyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int); + +PyAPI_FUNC(int) PyFrame_FastToLocalsWithError(PyFrameObject *f); +PyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *); + +PyAPI_FUNC(int) PyFrame_ClearFreeList(void); + +PyAPI_FUNC(void) _PyFrame_DebugMallocStats(FILE *out); + +/* Return the line of code the frame is currently executing. */ +PyAPI_FUNC(int) PyFrame_GetLineNumber(PyFrameObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FRAMEOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/funcobject.h b/client/3rd/include/frame/python/funcobject.h new file mode 100755 index 0000000..e563a74 --- /dev/null +++ b/client/3rd/include/frame/python/funcobject.h @@ -0,0 +1,104 @@ + +/* Function object interface */ +#ifndef Py_LIMITED_API +#ifndef Py_FUNCOBJECT_H +#define Py_FUNCOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Function objects and code objects should not be confused with each other: + * + * Function objects are created by the execution of the 'def' statement. + * They reference a code object in their __code__ attribute, which is a + * purely syntactic object, i.e. nothing more than a compiled version of some + * source code lines. There is one code object per source code "fragment", + * but each code object can be referenced by zero or many function objects + * depending only on how many times the 'def' statement in the source was + * executed so far. + */ + +typedef struct { + PyObject_HEAD + PyObject *func_code; /* A code object, the __code__ attribute */ + PyObject *func_globals; /* A dictionary (other mappings won't do) */ + PyObject *func_defaults; /* NULL or a tuple */ + PyObject *func_kwdefaults; /* NULL or a dict */ + PyObject *func_closure; /* NULL or a tuple of cell objects */ + PyObject *func_doc; /* The __doc__ attribute, can be anything */ + PyObject *func_name; /* The __name__ attribute, a string object */ + PyObject *func_dict; /* The __dict__ attribute, a dict or NULL */ + PyObject *func_weakreflist; /* List of weak references */ + PyObject *func_module; /* The __module__ attribute, can be anything */ + PyObject *func_annotations; /* Annotations, a dict or NULL */ + PyObject *func_qualname; /* The qualified name */ + vectorcallfunc vectorcall; + + /* Invariant: + * func_closure contains the bindings for func_code->co_freevars, so + * PyTuple_Size(func_closure) == PyCode_GetNumFree(func_code) + * (func_closure may be NULL if PyCode_GetNumFree(func_code) == 0). + */ +} PyFunctionObject; + +PyAPI_DATA(PyTypeObject) PyFunction_Type; + +#define PyFunction_Check(op) (Py_TYPE(op) == &PyFunction_Type) + +PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_NewWithQualName(PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetCode(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetGlobals(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetModule(PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetDefaults(PyObject *); +PyAPI_FUNC(int) PyFunction_SetDefaults(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetKwDefaults(PyObject *); +PyAPI_FUNC(int) PyFunction_SetKwDefaults(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetClosure(PyObject *); +PyAPI_FUNC(int) PyFunction_SetClosure(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyFunction_GetAnnotations(PyObject *); +PyAPI_FUNC(int) PyFunction_SetAnnotations(PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyFunction_FastCallDict( + PyObject *func, + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyFunction_Vectorcall( + PyObject *func, + PyObject *const *stack, + size_t nargsf, + PyObject *kwnames); +#endif + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#define PyFunction_GET_CODE(func) \ + (((PyFunctionObject *)func) -> func_code) +#define PyFunction_GET_GLOBALS(func) \ + (((PyFunctionObject *)func) -> func_globals) +#define PyFunction_GET_MODULE(func) \ + (((PyFunctionObject *)func) -> func_module) +#define PyFunction_GET_DEFAULTS(func) \ + (((PyFunctionObject *)func) -> func_defaults) +#define PyFunction_GET_KW_DEFAULTS(func) \ + (((PyFunctionObject *)func) -> func_kwdefaults) +#define PyFunction_GET_CLOSURE(func) \ + (((PyFunctionObject *)func) -> func_closure) +#define PyFunction_GET_ANNOTATIONS(func) \ + (((PyFunctionObject *)func) -> func_annotations) + +/* The classmethod and staticmethod types lives here, too */ +PyAPI_DATA(PyTypeObject) PyClassMethod_Type; +PyAPI_DATA(PyTypeObject) PyStaticMethod_Type; + +PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *); +PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_FUNCOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/genobject.h b/client/3rd/include/frame/python/genobject.h new file mode 100755 index 0000000..59ede28 --- /dev/null +++ b/client/3rd/include/frame/python/genobject.h @@ -0,0 +1,109 @@ + +/* Generator object interface */ + +#ifndef Py_LIMITED_API +#ifndef Py_GENOBJECT_H +#define Py_GENOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "pystate.h" /* _PyErr_StackItem */ + +struct _frame; /* Avoid including frameobject.h */ + +/* _PyGenObject_HEAD defines the initial segment of generator + and coroutine objects. */ +#define _PyGenObject_HEAD(prefix) \ + PyObject_HEAD \ + /* Note: gi_frame can be NULL if the generator is "finished" */ \ + struct _frame *prefix##_frame; \ + /* True if generator is being executed. */ \ + char prefix##_running; \ + /* The code object backing the generator */ \ + PyObject *prefix##_code; \ + /* List of weak reference. */ \ + PyObject *prefix##_weakreflist; \ + /* Name of the generator. */ \ + PyObject *prefix##_name; \ + /* Qualified name of the generator. */ \ + PyObject *prefix##_qualname; \ + _PyErr_StackItem prefix##_exc_state; + +typedef struct { + /* The gi_ prefix is intended to remind of generator-iterator. */ + _PyGenObject_HEAD(gi) +} PyGenObject; + +PyAPI_DATA(PyTypeObject) PyGen_Type; + +#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type) +#define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type) + +PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); +PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(struct _frame *, + PyObject *name, PyObject *qualname); +PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *); +PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *); +PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **); +PyAPI_FUNC(PyObject *) _PyGen_Send(PyGenObject *, PyObject *); +PyObject *_PyGen_yf(PyGenObject *); +PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self); + +#ifndef Py_LIMITED_API +typedef struct { + _PyGenObject_HEAD(cr) + PyObject *cr_origin; +} PyCoroObject; + +PyAPI_DATA(PyTypeObject) PyCoro_Type; +PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type; + +PyAPI_DATA(PyTypeObject) _PyAIterWrapper_Type; + +#define PyCoro_CheckExact(op) (Py_TYPE(op) == &PyCoro_Type) +PyObject *_PyCoro_GetAwaitableIter(PyObject *o); +PyAPI_FUNC(PyObject *) PyCoro_New(struct _frame *, + PyObject *name, PyObject *qualname); + +/* Asynchronous Generators */ + +typedef struct { + _PyGenObject_HEAD(ag) + PyObject *ag_finalizer; + + /* Flag is set to 1 when hooks set up by sys.set_asyncgen_hooks + were called on the generator, to avoid calling them more + than once. */ + int ag_hooks_inited; + + /* Flag is set to 1 when aclose() is called for the first time, or + when a StopAsyncIteration exception is raised. */ + int ag_closed; + + int ag_running_async; +} PyAsyncGenObject; + +PyAPI_DATA(PyTypeObject) PyAsyncGen_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenASend_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenWrappedValue_Type; +PyAPI_DATA(PyTypeObject) _PyAsyncGenAThrow_Type; + +PyAPI_FUNC(PyObject *) PyAsyncGen_New(struct _frame *, + PyObject *name, PyObject *qualname); + +#define PyAsyncGen_CheckExact(op) (Py_TYPE(op) == &PyAsyncGen_Type) + +PyObject *_PyAsyncGenValueWrapperNew(PyObject *); + +int PyAsyncGen_ClearFreeLists(void); + +#endif + +#undef _PyGenObject_HEAD + +#ifdef __cplusplus +} +#endif +#endif /* !Py_GENOBJECT_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/graminit.h b/client/3rd/include/frame/python/graminit.h new file mode 100755 index 0000000..d1027b7 --- /dev/null +++ b/client/3rd/include/frame/python/graminit.h @@ -0,0 +1,94 @@ +/* Generated by Parser/pgen */ + +#define single_input 256 +#define file_input 257 +#define eval_input 258 +#define decorator 259 +#define decorators 260 +#define decorated 261 +#define async_funcdef 262 +#define funcdef 263 +#define parameters 264 +#define typedargslist 265 +#define tfpdef 266 +#define varargslist 267 +#define vfpdef 268 +#define stmt 269 +#define simple_stmt 270 +#define small_stmt 271 +#define expr_stmt 272 +#define annassign 273 +#define testlist_star_expr 274 +#define augassign 275 +#define del_stmt 276 +#define pass_stmt 277 +#define flow_stmt 278 +#define break_stmt 279 +#define continue_stmt 280 +#define return_stmt 281 +#define yield_stmt 282 +#define raise_stmt 283 +#define import_stmt 284 +#define import_name 285 +#define import_from 286 +#define import_as_name 287 +#define dotted_as_name 288 +#define import_as_names 289 +#define dotted_as_names 290 +#define dotted_name 291 +#define global_stmt 292 +#define nonlocal_stmt 293 +#define assert_stmt 294 +#define compound_stmt 295 +#define async_stmt 296 +#define if_stmt 297 +#define while_stmt 298 +#define for_stmt 299 +#define try_stmt 300 +#define with_stmt 301 +#define with_item 302 +#define except_clause 303 +#define suite 304 +#define namedexpr_test 305 +#define test 306 +#define test_nocond 307 +#define lambdef 308 +#define lambdef_nocond 309 +#define or_test 310 +#define and_test 311 +#define not_test 312 +#define comparison 313 +#define comp_op 314 +#define star_expr 315 +#define expr 316 +#define xor_expr 317 +#define and_expr 318 +#define shift_expr 319 +#define arith_expr 320 +#define term 321 +#define factor 322 +#define power 323 +#define atom_expr 324 +#define atom 325 +#define testlist_comp 326 +#define trailer 327 +#define subscriptlist 328 +#define subscript 329 +#define sliceop 330 +#define exprlist 331 +#define testlist 332 +#define dictorsetmaker 333 +#define classdef 334 +#define arglist 335 +#define argument 336 +#define comp_iter 337 +#define sync_comp_for 338 +#define comp_for 339 +#define comp_if 340 +#define encoding_decl 341 +#define yield_expr 342 +#define yield_arg 343 +#define func_body_suite 344 +#define func_type_input 345 +#define func_type 346 +#define typelist 347 diff --git a/client/3rd/include/frame/python/grammar.h b/client/3rd/include/frame/python/grammar.h new file mode 100755 index 0000000..4b66b1e --- /dev/null +++ b/client/3rd/include/frame/python/grammar.h @@ -0,0 +1,77 @@ + +/* Grammar interface */ + +#ifndef Py_GRAMMAR_H +#define Py_GRAMMAR_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "bitset.h" /* Sigh... */ + +/* A label of an arc */ + +typedef struct { + int lb_type; + const char *lb_str; +} label; + +#define EMPTY 0 /* Label number 0 is by definition the empty label */ + +/* A list of labels */ + +typedef struct { + int ll_nlabels; + const label *ll_label; +} labellist; + +/* An arc from one state to another */ + +typedef struct { + short a_lbl; /* Label of this arc */ + short a_arrow; /* State where this arc goes to */ +} arc; + +/* A state in a DFA */ + +typedef struct { + int s_narcs; + const arc *s_arc; /* Array of arcs */ + + /* Optional accelerators */ + int s_lower; /* Lowest label index */ + int s_upper; /* Highest label index */ + int *s_accel; /* Accelerator */ + int s_accept; /* Nonzero for accepting state */ +} state; + +/* A DFA */ + +typedef struct { + int d_type; /* Non-terminal this represents */ + char *d_name; /* For printing */ + int d_nstates; + state *d_state; /* Array of states */ + bitset d_first; +} dfa; + +/* A grammar */ + +typedef struct { + int g_ndfas; + const dfa *g_dfa; /* Array of DFAs */ + const labellist g_ll; + int g_start; /* Start symbol of the grammar */ + int g_accel; /* Set if accelerators present */ +} grammar; + +/* FUNCTIONS */ +const dfa *PyGrammar_FindDFA(grammar *g, int type); +const char *PyGrammar_LabelRepr(label *lb); +void PyGrammar_AddAccelerators(grammar *g); +void PyGrammar_RemoveAccelerators(grammar *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_GRAMMAR_H */ diff --git a/client/3rd/include/frame/python/import.h b/client/3rd/include/frame/python/import.h new file mode 100755 index 0000000..13c6149 --- /dev/null +++ b/client/3rd/include/frame/python/import.h @@ -0,0 +1,149 @@ + +/* Module definition and import interface */ + +#ifndef Py_IMPORT_H +#define Py_IMPORT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyMODINIT_FUNC PyInit__imp(void); +#endif /* !Py_LIMITED_API */ +PyAPI_FUNC(long) PyImport_GetMagicNumber(void); +PyAPI_FUNC(const char *) PyImport_GetMagicTag(void); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule( + const char *name, /* UTF-8 encoded string */ + PyObject *co + ); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleEx( + const char *name, /* UTF-8 encoded string */ + PyObject *co, + const char *pathname /* decoded from the filesystem encoding */ + ); +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleWithPathnames( + const char *name, /* UTF-8 encoded string */ + PyObject *co, + const char *pathname, /* decoded from the filesystem encoding */ + const char *cpathname /* decoded from the filesystem encoding */ + ); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject( + PyObject *name, + PyObject *co, + PyObject *pathname, + PyObject *cpathname + ); +#endif +PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000 +PyAPI_FUNC(PyObject *) PyImport_GetModule(PyObject *name); +#endif +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyImport_IsInitialized(PyInterpreterState *); +PyAPI_FUNC(PyObject *) _PyImport_GetModuleId(struct _Py_Identifier *name); +PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *name, + PyObject *modules); +PyAPI_FUNC(int) _PyImport_SetModule(PyObject *name, PyObject *module); +PyAPI_FUNC(int) _PyImport_SetModuleString(const char *name, PyObject* module); +#endif +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyImport_AddModuleObject( + PyObject *name + ); +#endif +PyAPI_FUNC(PyObject *) PyImport_AddModule( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModule( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel( + const char *name, /* UTF-8 encoded string */ + PyObject *globals, + PyObject *locals, + PyObject *fromlist, + int level + ); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( + PyObject *name, + PyObject *globals, + PyObject *locals, + PyObject *fromlist, + int level + ); +#endif + +#define PyImport_ImportModuleEx(n, g, l, f) \ + PyImport_ImportModuleLevel(n, g, l, f, 0) + +PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path); +PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name); +PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m); +PyAPI_FUNC(void) PyImport_Cleanup(void); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject( + PyObject *name + ); +#endif +PyAPI_FUNC(int) PyImport_ImportFrozenModule( + const char *name /* UTF-8 encoded string */ + ); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyImport_AcquireLock(void); +PyAPI_FUNC(int) _PyImport_ReleaseLock(void); + +PyAPI_FUNC(void) _PyImport_ReInitLock(void); + +PyAPI_FUNC(PyObject *) _PyImport_FindBuiltin( + const char *name, /* UTF-8 encoded string */ + PyObject *modules + ); +PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObject(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) _PyImport_FindExtensionObjectEx(PyObject *, PyObject *, + PyObject *); +PyAPI_FUNC(int) _PyImport_FixupBuiltin( + PyObject *mod, + const char *name, /* UTF-8 encoded string */ + PyObject *modules + ); +PyAPI_FUNC(int) _PyImport_FixupExtensionObject(PyObject*, PyObject *, + PyObject *, PyObject *); + +struct _inittab { + const char *name; /* ASCII encoded string */ + PyObject* (*initfunc)(void); +}; +PyAPI_DATA(struct _inittab *) PyImport_Inittab; +PyAPI_FUNC(int) PyImport_ExtendInittab(struct _inittab *newtab); +#endif /* Py_LIMITED_API */ + +PyAPI_DATA(PyTypeObject) PyNullImporter_Type; + +PyAPI_FUNC(int) PyImport_AppendInittab( + const char *name, /* ASCII encoded string */ + PyObject* (*initfunc)(void) + ); + +#ifndef Py_LIMITED_API +struct _frozen { + const char *name; /* ASCII encoded string */ + const unsigned char *code; + int size; +}; + +/* Embedding apps may change this pointer to point to their favorite + collection of frozen modules: */ + +PyAPI_DATA(const struct _frozen *) PyImport_FrozenModules; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_IMPORT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_accu.h b/client/3rd/include/frame/python/internal/pycore_accu.h new file mode 100755 index 0000000..d346222 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_accu.h @@ -0,0 +1,39 @@ +#ifndef Py_LIMITED_API +#ifndef Py_INTERNAL_ACCU_H +#define Py_INTERNAL_ACCU_H +#ifdef __cplusplus +extern "C" { +#endif + +/*** This is a private API for use by the interpreter and the stdlib. + *** Its definition may be changed or removed at any moment. + ***/ + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +/* + * A two-level accumulator of unicode objects that avoids both the overhead + * of keeping a huge number of small separate objects, and the quadratic + * behaviour of using a naive repeated concatenation scheme. + */ + +#undef small /* defined by some Windows headers */ + +typedef struct { + PyObject *large; /* A list of previously accumulated large strings */ + PyObject *small; /* Pending small strings */ +} _PyAccu; + +PyAPI_FUNC(int) _PyAccu_Init(_PyAccu *acc); +PyAPI_FUNC(int) _PyAccu_Accumulate(_PyAccu *acc, PyObject *unicode); +PyAPI_FUNC(PyObject *) _PyAccu_FinishAsList(_PyAccu *acc); +PyAPI_FUNC(PyObject *) _PyAccu_Finish(_PyAccu *acc); +PyAPI_FUNC(void) _PyAccu_Destroy(_PyAccu *acc); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_ACCU_H */ +#endif /* !Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/internal/pycore_atomic.h b/client/3rd/include/frame/python/internal/pycore_atomic.h new file mode 100755 index 0000000..336bc3f --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_atomic.h @@ -0,0 +1,558 @@ +#ifndef Py_ATOMIC_H +#define Py_ATOMIC_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "dynamic_annotations.h" + +#include "pyconfig.h" + +#if defined(HAVE_STD_ATOMIC) +#include +#endif + + +#if defined(_MSC_VER) +#include +#if defined(_M_IX86) || defined(_M_X64) +# include +#endif +#endif + +/* This is modeled after the atomics interface from C1x, according to + * the draft at + * http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1425.pdf. + * Operations and types are named the same except with a _Py_ prefix + * and have the same semantics. + * + * Beware, the implementations here are deep magic. + */ + +#if defined(HAVE_STD_ATOMIC) + +typedef enum _Py_memory_order { + _Py_memory_order_relaxed = memory_order_relaxed, + _Py_memory_order_acquire = memory_order_acquire, + _Py_memory_order_release = memory_order_release, + _Py_memory_order_acq_rel = memory_order_acq_rel, + _Py_memory_order_seq_cst = memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + atomic_uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + atomic_int _value; +} _Py_atomic_int; + +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \ + atomic_signal_fence(ORDER) + +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \ + atomic_thread_fence(ORDER) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + atomic_store_explicit(&((ATOMIC_VAL)->_value), NEW_VAL, ORDER) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + atomic_load_explicit(&((ATOMIC_VAL)->_value), ORDER) + +/* Use builtin atomic operations in GCC >= 4.7 */ +#elif defined(HAVE_BUILTIN_ATOMIC) + +typedef enum _Py_memory_order { + _Py_memory_order_relaxed = __ATOMIC_RELAXED, + _Py_memory_order_acquire = __ATOMIC_ACQUIRE, + _Py_memory_order_release = __ATOMIC_RELEASE, + _Py_memory_order_acq_rel = __ATOMIC_ACQ_REL, + _Py_memory_order_seq_cst = __ATOMIC_SEQ_CST +} _Py_memory_order; + +typedef struct _Py_atomic_address { + uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + int _value; +} _Py_atomic_int; + +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) \ + __atomic_signal_fence(ORDER) + +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) \ + __atomic_thread_fence(ORDER) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + (assert((ORDER) == __ATOMIC_RELAXED \ + || (ORDER) == __ATOMIC_SEQ_CST \ + || (ORDER) == __ATOMIC_RELEASE), \ + __atomic_store_n(&((ATOMIC_VAL)->_value), NEW_VAL, ORDER)) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + (assert((ORDER) == __ATOMIC_RELAXED \ + || (ORDER) == __ATOMIC_SEQ_CST \ + || (ORDER) == __ATOMIC_ACQUIRE \ + || (ORDER) == __ATOMIC_CONSUME), \ + __atomic_load_n(&((ATOMIC_VAL)->_value), ORDER)) + +/* Only support GCC (for expression statements) and x86 (for simple + * atomic semantics) and MSVC x86/x64/ARM */ +#elif defined(__GNUC__) && (defined(__i386__) || defined(__amd64)) +typedef enum _Py_memory_order { + _Py_memory_order_relaxed, + _Py_memory_order_acquire, + _Py_memory_order_release, + _Py_memory_order_acq_rel, + _Py_memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + int _value; +} _Py_atomic_int; + + +static __inline__ void +_Py_atomic_signal_fence(_Py_memory_order order) +{ + if (order != _Py_memory_order_relaxed) + __asm__ volatile("":::"memory"); +} + +static __inline__ void +_Py_atomic_thread_fence(_Py_memory_order order) +{ + if (order != _Py_memory_order_relaxed) + __asm__ volatile("mfence":::"memory"); +} + +/* Tell the race checker about this operation's effects. */ +static __inline__ void +_Py_ANNOTATE_MEMORY_ORDER(const volatile void *address, _Py_memory_order order) +{ + (void)address; /* shut up -Wunused-parameter */ + switch(order) { + case _Py_memory_order_release: + case _Py_memory_order_acq_rel: + case _Py_memory_order_seq_cst: + _Py_ANNOTATE_HAPPENS_BEFORE(address); + break; + case _Py_memory_order_relaxed: + case _Py_memory_order_acquire: + break; + } + switch(order) { + case _Py_memory_order_acquire: + case _Py_memory_order_acq_rel: + case _Py_memory_order_seq_cst: + _Py_ANNOTATE_HAPPENS_AFTER(address); + break; + case _Py_memory_order_relaxed: + case _Py_memory_order_release: + break; + } +} + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + __extension__ ({ \ + __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ + __typeof__(atomic_val->_value) new_val = NEW_VAL;\ + volatile __typeof__(new_val) *volatile_data = &atomic_val->_value; \ + _Py_memory_order order = ORDER; \ + _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ + \ + /* Perform the operation. */ \ + _Py_ANNOTATE_IGNORE_WRITES_BEGIN(); \ + switch(order) { \ + case _Py_memory_order_release: \ + _Py_atomic_signal_fence(_Py_memory_order_release); \ + /* fallthrough */ \ + case _Py_memory_order_relaxed: \ + *volatile_data = new_val; \ + break; \ + \ + case _Py_memory_order_acquire: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + __asm__ volatile("xchg %0, %1" \ + : "+r"(new_val) \ + : "m"(atomic_val->_value) \ + : "memory"); \ + break; \ + } \ + _Py_ANNOTATE_IGNORE_WRITES_END(); \ + }) + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + __extension__ ({ \ + __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ + __typeof__(atomic_val->_value) result; \ + volatile __typeof__(result) *volatile_data = &atomic_val->_value; \ + _Py_memory_order order = ORDER; \ + _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ + \ + /* Perform the operation. */ \ + _Py_ANNOTATE_IGNORE_READS_BEGIN(); \ + switch(order) { \ + case _Py_memory_order_release: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + /* Loads on x86 are not releases by default, so need a */ \ + /* thread fence. */ \ + _Py_atomic_thread_fence(_Py_memory_order_release); \ + break; \ + default: \ + /* No fence */ \ + break; \ + } \ + result = *volatile_data; \ + switch(order) { \ + case _Py_memory_order_acquire: \ + case _Py_memory_order_acq_rel: \ + case _Py_memory_order_seq_cst: \ + /* Loads on x86 are automatically acquire operations so */ \ + /* can get by with just a compiler fence. */ \ + _Py_atomic_signal_fence(_Py_memory_order_acquire); \ + break; \ + default: \ + /* No fence */ \ + break; \ + } \ + _Py_ANNOTATE_IGNORE_READS_END(); \ + result; \ + }) + +#elif defined(_MSC_VER) +/* _Interlocked* functions provide a full memory barrier and are therefore + enough for acq_rel and seq_cst. If the HLE variants aren't available + in hardware they will fall back to a full memory barrier as well. + + This might affect performance but likely only in some very specific and + hard to meassure scenario. +*/ +#if defined(_M_IX86) || defined(_M_X64) +typedef enum _Py_memory_order { + _Py_memory_order_relaxed, + _Py_memory_order_acquire, + _Py_memory_order_release, + _Py_memory_order_acq_rel, + _Py_memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + volatile uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + volatile int _value; +} _Py_atomic_int; + + +#if defined(_M_X64) +#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) \ + switch (ORDER) { \ + case _Py_memory_order_acquire: \ + _InterlockedExchange64_HLEAcquire((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)(NEW_VAL)); \ + break; \ + case _Py_memory_order_release: \ + _InterlockedExchange64_HLERelease((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)(NEW_VAL)); \ + break; \ + default: \ + _InterlockedExchange64((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)(NEW_VAL)); \ + break; \ + } +#else +#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) ((void)0); +#endif + +#define _Py_atomic_store_32bit(ATOMIC_VAL, NEW_VAL, ORDER) \ + switch (ORDER) { \ + case _Py_memory_order_acquire: \ + _InterlockedExchange_HLEAcquire((volatile long*)&((ATOMIC_VAL)->_value), (int)(NEW_VAL)); \ + break; \ + case _Py_memory_order_release: \ + _InterlockedExchange_HLERelease((volatile long*)&((ATOMIC_VAL)->_value), (int)(NEW_VAL)); \ + break; \ + default: \ + _InterlockedExchange((volatile long*)&((ATOMIC_VAL)->_value), (int)(NEW_VAL)); \ + break; \ + } + +#if defined(_M_X64) +/* This has to be an intptr_t for now. + gil_created() uses -1 as a sentinel value, if this returns + a uintptr_t it will do an unsigned compare and crash +*/ +inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { + __int64 old; + switch (order) { + case _Py_memory_order_acquire: + { + do { + old = *value; + } while(_InterlockedCompareExchange64_HLEAcquire((volatile __int64*)value, old, old) != old); + break; + } + case _Py_memory_order_release: + { + do { + old = *value; + } while(_InterlockedCompareExchange64_HLERelease((volatile __int64*)value, old, old) != old); + break; + } + case _Py_memory_order_relaxed: + old = *value; + break; + default: + { + do { + old = *value; + } while(_InterlockedCompareExchange64((volatile __int64*)value, old, old) != old); + break; + } + } + return old; +} + +#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) \ + _Py_atomic_load_64bit_impl((volatile uintptr_t*)&((ATOMIC_VAL)->_value), (ORDER)) + +#else +#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) ((ATOMIC_VAL)->_value) +#endif + +inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) { + long old; + switch (order) { + case _Py_memory_order_acquire: + { + do { + old = *value; + } while(_InterlockedCompareExchange_HLEAcquire((volatile long*)value, old, old) != old); + break; + } + case _Py_memory_order_release: + { + do { + old = *value; + } while(_InterlockedCompareExchange_HLERelease((volatile long*)value, old, old) != old); + break; + } + case _Py_memory_order_relaxed: + old = *value; + break; + default: + { + do { + old = *value; + } while(_InterlockedCompareExchange((volatile long*)value, old, old) != old); + break; + } + } + return old; +} + +#define _Py_atomic_load_32bit(ATOMIC_VAL, ORDER) \ + _Py_atomic_load_32bit_impl((volatile int*)&((ATOMIC_VAL)->_value), (ORDER)) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + if (sizeof((ATOMIC_VAL)->_value) == 8) { \ + _Py_atomic_store_64bit((ATOMIC_VAL), NEW_VAL, ORDER) } else { \ + _Py_atomic_store_32bit((ATOMIC_VAL), NEW_VAL, ORDER) } + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + ( \ + sizeof((ATOMIC_VAL)->_value) == 8 ? \ + _Py_atomic_load_64bit((ATOMIC_VAL), ORDER) : \ + _Py_atomic_load_32bit((ATOMIC_VAL), ORDER) \ + ) +#elif defined(_M_ARM) || defined(_M_ARM64) +typedef enum _Py_memory_order { + _Py_memory_order_relaxed, + _Py_memory_order_acquire, + _Py_memory_order_release, + _Py_memory_order_acq_rel, + _Py_memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + volatile uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + volatile int _value; +} _Py_atomic_int; + + +#if defined(_M_ARM64) +#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) \ + switch (ORDER) { \ + case _Py_memory_order_acquire: \ + _InterlockedExchange64_acq((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)NEW_VAL); \ + break; \ + case _Py_memory_order_release: \ + _InterlockedExchange64_rel((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)NEW_VAL); \ + break; \ + default: \ + _InterlockedExchange64((__int64 volatile*)&((ATOMIC_VAL)->_value), (__int64)NEW_VAL); \ + break; \ + } +#else +#define _Py_atomic_store_64bit(ATOMIC_VAL, NEW_VAL, ORDER) ((void)0); +#endif + +#define _Py_atomic_store_32bit(ATOMIC_VAL, NEW_VAL, ORDER) \ + switch (ORDER) { \ + case _Py_memory_order_acquire: \ + _InterlockedExchange_acq((volatile long*)&((ATOMIC_VAL)->_value), (int)NEW_VAL); \ + break; \ + case _Py_memory_order_release: \ + _InterlockedExchange_rel((volatile long*)&((ATOMIC_VAL)->_value), (int)NEW_VAL); \ + break; \ + default: \ + _InterlockedExchange((volatile long*)&((ATOMIC_VAL)->_value), (int)NEW_VAL); \ + break; \ + } + +#if defined(_M_ARM64) +/* This has to be an intptr_t for now. + gil_created() uses -1 as a sentinel value, if this returns + a uintptr_t it will do an unsigned compare and crash +*/ +inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { + uintptr_t old; + switch (order) { + case _Py_memory_order_acquire: + { + do { + old = *value; + } while(_InterlockedCompareExchange64_acq(value, old, old) != old); + break; + } + case _Py_memory_order_release: + { + do { + old = *value; + } while(_InterlockedCompareExchange64_rel(value, old, old) != old); + break; + } + case _Py_memory_order_relaxed: + old = *value; + break; + default: + { + do { + old = *value; + } while(_InterlockedCompareExchange64(value, old, old) != old); + break; + } + } + return old; +} + +#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) \ + _Py_atomic_load_64bit_impl((volatile uintptr_t*)&((ATOMIC_VAL)->_value), (ORDER)) + +#else +#define _Py_atomic_load_64bit(ATOMIC_VAL, ORDER) ((ATOMIC_VAL)->_value) +#endif + +inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) { + int old; + switch (order) { + case _Py_memory_order_acquire: + { + do { + old = *value; + } while(_InterlockedCompareExchange_acq(value, old, old) != old); + break; + } + case _Py_memory_order_release: + { + do { + old = *value; + } while(_InterlockedCompareExchange_rel(value, old, old) != old); + break; + } + case _Py_memory_order_relaxed: + old = *value; + break; + default: + { + do { + old = *value; + } while(_InterlockedCompareExchange(value, old, old) != old); + break; + } + } + return old; +} + +#define _Py_atomic_load_32bit(ATOMIC_VAL, ORDER) \ + _Py_atomic_load_32bit_impl((volatile int*)&((ATOMIC_VAL)->_value), (ORDER)) + +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + if (sizeof((ATOMIC_VAL)->_value) == 8) { \ + _Py_atomic_store_64bit((ATOMIC_VAL), (NEW_VAL), (ORDER)) } else { \ + _Py_atomic_store_32bit((ATOMIC_VAL), (NEW_VAL), (ORDER)) } + +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + ( \ + sizeof((ATOMIC_VAL)->_value) == 8 ? \ + _Py_atomic_load_64bit((ATOMIC_VAL), (ORDER)) : \ + _Py_atomic_load_32bit((ATOMIC_VAL), (ORDER)) \ + ) +#endif +#else /* !gcc x86 !_msc_ver */ +typedef enum _Py_memory_order { + _Py_memory_order_relaxed, + _Py_memory_order_acquire, + _Py_memory_order_release, + _Py_memory_order_acq_rel, + _Py_memory_order_seq_cst +} _Py_memory_order; + +typedef struct _Py_atomic_address { + uintptr_t _value; +} _Py_atomic_address; + +typedef struct _Py_atomic_int { + int _value; +} _Py_atomic_int; +/* Fall back to other compilers and processors by assuming that simple + volatile accesses are atomic. This is false, so people should port + this. */ +#define _Py_atomic_signal_fence(/*memory_order*/ ORDER) ((void)0) +#define _Py_atomic_thread_fence(/*memory_order*/ ORDER) ((void)0) +#define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ + ((ATOMIC_VAL)->_value = NEW_VAL) +#define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ + ((ATOMIC_VAL)->_value) +#endif + +/* Standardized shortcuts. */ +#define _Py_atomic_store(ATOMIC_VAL, NEW_VAL) \ + _Py_atomic_store_explicit((ATOMIC_VAL), (NEW_VAL), _Py_memory_order_seq_cst) +#define _Py_atomic_load(ATOMIC_VAL) \ + _Py_atomic_load_explicit((ATOMIC_VAL), _Py_memory_order_seq_cst) + +/* Python-local extensions */ + +#define _Py_atomic_store_relaxed(ATOMIC_VAL, NEW_VAL) \ + _Py_atomic_store_explicit((ATOMIC_VAL), (NEW_VAL), _Py_memory_order_relaxed) +#define _Py_atomic_load_relaxed(ATOMIC_VAL) \ + _Py_atomic_load_explicit((ATOMIC_VAL), _Py_memory_order_relaxed) + +#ifdef __cplusplus +} +#endif +#endif /* Py_ATOMIC_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_ceval.h b/client/3rd/include/frame/python/internal/pycore_ceval.h new file mode 100755 index 0000000..4c1c0e2 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_ceval.h @@ -0,0 +1,37 @@ +#ifndef Py_INTERNAL_CEVAL_H +#define Py_INTERNAL_CEVAL_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_atomic.h" +#include "pycore_pystate.h" +#include "pythread.h" + +PyAPI_FUNC(void) _Py_FinishPendingCalls(_PyRuntimeState *runtime); +PyAPI_FUNC(void) _PyEval_Initialize(struct _ceval_runtime_state *); +PyAPI_FUNC(void) _PyEval_FiniThreads( + struct _ceval_runtime_state *ceval); +PyAPI_FUNC(void) _PyEval_SignalReceived( + struct _ceval_runtime_state *ceval); +PyAPI_FUNC(int) _PyEval_AddPendingCall( + PyThreadState *tstate, + struct _ceval_runtime_state *ceval, + int (*func)(void *), + void *arg); +PyAPI_FUNC(void) _PyEval_SignalAsyncExc( + struct _ceval_runtime_state *ceval); +PyAPI_FUNC(void) _PyEval_ReInitThreads( + _PyRuntimeState *runtime); + +/* Private function */ +void _PyEval_Fini(void); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_CEVAL_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_code.h b/client/3rd/include/frame/python/internal/pycore_code.h new file mode 100755 index 0000000..88956f1 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_code.h @@ -0,0 +1,27 @@ +#ifndef Py_INTERNAL_CODE_H +#define Py_INTERNAL_CODE_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + PyObject *ptr; /* Cached pointer (borrowed reference) */ + uint64_t globals_ver; /* ma_version of global dict */ + uint64_t builtins_ver; /* ma_version of builtin dict */ +} _PyOpcache_LoadGlobal; + +struct _PyOpcache { + union { + _PyOpcache_LoadGlobal lg; + } u; + char optimized; +}; + +/* Private API */ +int _PyCode_InitOpcache(PyCodeObject *co); + + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_CODE_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_condvar.h b/client/3rd/include/frame/python/internal/pycore_condvar.h new file mode 100755 index 0000000..8b89d70 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_condvar.h @@ -0,0 +1,95 @@ +#ifndef Py_INTERNAL_CONDVAR_H +#define Py_INTERNAL_CONDVAR_H + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#ifndef _POSIX_THREADS +/* This means pthreads are not implemented in libc headers, hence the macro + not present in unistd.h. But they still can be implemented as an external + library (e.g. gnu pth in pthread emulation) */ +# ifdef HAVE_PTHREAD_H +# include /* _POSIX_THREADS */ +# endif +#endif + +#ifdef _POSIX_THREADS +/* + * POSIX support + */ +#define Py_HAVE_CONDVAR + +#include + +#define PyMUTEX_T pthread_mutex_t +#define PyCOND_T pthread_cond_t + +#elif defined(NT_THREADS) +/* + * Windows (XP, 2003 server and later, as well as (hopefully) CE) support + * + * Emulated condition variables ones that work with XP and later, plus + * example native support on VISTA and onwards. + */ +#define Py_HAVE_CONDVAR + +/* include windows if it hasn't been done before */ +#define WIN32_LEAN_AND_MEAN +#include + +/* options */ +/* non-emulated condition variables are provided for those that want + * to target Windows Vista. Modify this macro to enable them. + */ +#ifndef _PY_EMULATED_WIN_CV +#define _PY_EMULATED_WIN_CV 1 /* use emulated condition variables */ +#endif + +/* fall back to emulation if not targeting Vista */ +#if !defined NTDDI_VISTA || NTDDI_VERSION < NTDDI_VISTA +#undef _PY_EMULATED_WIN_CV +#define _PY_EMULATED_WIN_CV 1 +#endif + +#if _PY_EMULATED_WIN_CV + +typedef CRITICAL_SECTION PyMUTEX_T; + +/* The ConditionVariable object. From XP onwards it is easily emulated + with a Semaphore. + Semaphores are available on Windows XP (2003 server) and later. + We use a Semaphore rather than an auto-reset event, because although + an auto-resent event might appear to solve the lost-wakeup bug (race + condition between releasing the outer lock and waiting) because it + maintains state even though a wait hasn't happened, there is still + a lost wakeup problem if more than one thread are interrupted in the + critical place. A semaphore solves that, because its state is + counted, not Boolean. + Because it is ok to signal a condition variable with no one + waiting, we need to keep track of the number of + waiting threads. Otherwise, the semaphore's state could rise + without bound. This also helps reduce the number of "spurious wakeups" + that would otherwise happen. + */ + +typedef struct _PyCOND_T +{ + HANDLE sem; + int waiting; /* to allow PyCOND_SIGNAL to be a no-op */ +} PyCOND_T; + +#else /* !_PY_EMULATED_WIN_CV */ + +/* Use native Win7 primitives if build target is Win7 or higher */ + +/* SRWLOCK is faster and better than CriticalSection */ +typedef SRWLOCK PyMUTEX_T; + +typedef CONDITION_VARIABLE PyCOND_T; + +#endif /* _PY_EMULATED_WIN_CV */ + +#endif /* _POSIX_THREADS, NT_THREADS */ + +#endif /* Py_INTERNAL_CONDVAR_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_context.h b/client/3rd/include/frame/python/internal/pycore_context.h new file mode 100755 index 0000000..5e1ba0d --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_context.h @@ -0,0 +1,42 @@ +#ifndef Py_INTERNAL_CONTEXT_H +#define Py_INTERNAL_CONTEXT_H + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_hamt.h" + +struct _pycontextobject { + PyObject_HEAD + PyContext *ctx_prev; + PyHamtObject *ctx_vars; + PyObject *ctx_weakreflist; + int ctx_entered; +}; + + +struct _pycontextvarobject { + PyObject_HEAD + PyObject *var_name; + PyObject *var_default; + PyObject *var_cached; + uint64_t var_cached_tsid; + uint64_t var_cached_tsver; + Py_hash_t var_hash; +}; + + +struct _pycontexttokenobject { + PyObject_HEAD + PyContext *tok_ctx; + PyContextVar *tok_var; + PyObject *tok_oldval; + int tok_used; +}; + + +int _PyContext_Init(void); +void _PyContext_Fini(void); + +#endif /* !Py_INTERNAL_CONTEXT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_fileutils.h b/client/3rd/include/frame/python/internal/pycore_fileutils.h new file mode 100755 index 0000000..bbee586 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_fileutils.h @@ -0,0 +1,54 @@ +#ifndef Py_INTERNAL_FILEUTILS_H +#define Py_INTERNAL_FILEUTILS_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "Py_BUILD_CORE must be defined to include this header" +#endif + +#include /* struct lconv */ + +PyAPI_DATA(int) _Py_HasFileSystemDefaultEncodeErrors; + +PyAPI_FUNC(int) _Py_DecodeUTF8Ex( + const char *arg, + Py_ssize_t arglen, + wchar_t **wstr, + size_t *wlen, + const char **reason, + _Py_error_handler errors); + +PyAPI_FUNC(int) _Py_EncodeUTF8Ex( + const wchar_t *text, + char **str, + size_t *error_pos, + const char **reason, + int raw_malloc, + _Py_error_handler errors); + +PyAPI_FUNC(wchar_t*) _Py_DecodeUTF8_surrogateescape( + const char *arg, + Py_ssize_t arglen, + size_t *wlen); + +PyAPI_FUNC(int) _Py_GetForceASCII(void); + +/* Reset "force ASCII" mode (if it was initialized). + + This function should be called when Python changes the LC_CTYPE locale, + so the "force ASCII" mode can be detected again on the new locale + encoding. */ +PyAPI_FUNC(void) _Py_ResetForceASCII(void); + + +PyAPI_FUNC(int) _Py_GetLocaleconvNumeric( + struct lconv *lc, + PyObject **decimal_point, + PyObject **thousands_sep); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_FILEUTILS_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_getopt.h b/client/3rd/include/frame/python/internal/pycore_getopt.h new file mode 100755 index 0000000..7f0dd13 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_getopt.h @@ -0,0 +1,22 @@ +#ifndef Py_INTERNAL_PYGETOPT_H +#define Py_INTERNAL_PYGETOPT_H + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +extern int _PyOS_opterr; +extern Py_ssize_t _PyOS_optind; +extern const wchar_t *_PyOS_optarg; + +extern void _PyOS_ResetGetOpt(void); + +typedef struct { + const wchar_t *name; + int has_arg; + int val; +} _PyOS_LongOption; + +extern int _PyOS_GetOpt(Py_ssize_t argc, wchar_t * const *argv, int *longindex); + +#endif /* !Py_INTERNAL_PYGETOPT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_gil.h b/client/3rd/include/frame/python/internal/pycore_gil.h new file mode 100755 index 0000000..7de3163 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_gil.h @@ -0,0 +1,50 @@ +#ifndef Py_INTERNAL_GIL_H +#define Py_INTERNAL_GIL_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_condvar.h" +#include "pycore_atomic.h" + +#ifndef Py_HAVE_CONDVAR +# error You need either a POSIX-compatible or a Windows system! +#endif + +/* Enable if you want to force the switching of threads at least + every `interval`. */ +#undef FORCE_SWITCHING +#define FORCE_SWITCHING + +struct _gil_runtime_state { + /* microseconds (the Python API uses seconds, though) */ + unsigned long interval; + /* Last PyThreadState holding / having held the GIL. This helps us + know whether anyone else was scheduled after we dropped the GIL. */ + _Py_atomic_address last_holder; + /* Whether the GIL is already taken (-1 if uninitialized). This is + atomic because it can be read without any lock taken in ceval.c. */ + _Py_atomic_int locked; + /* Number of GIL switches since the beginning. */ + unsigned long switch_number; + /* This condition variable allows one or several threads to wait + until the GIL is released. In addition, the mutex also protects + the above variables. */ + PyCOND_T cond; + PyMUTEX_T mutex; +#ifdef FORCE_SWITCHING + /* This condition variable helps the GIL-releasing thread wait for + a GIL-awaiting thread to be scheduled and take the GIL. */ + PyCOND_T switch_cond; + PyMUTEX_T switch_mutex; +#endif +}; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_GIL_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_hamt.h b/client/3rd/include/frame/python/internal/pycore_hamt.h new file mode 100755 index 0000000..ff9cc24 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_hamt.h @@ -0,0 +1,128 @@ +#ifndef Py_INTERNAL_HAMT_H +#define Py_INTERNAL_HAMT_H + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + + +/* +HAMT tree is shaped by hashes of keys. Every group of 5 bits of a hash denotes +the exact position of the key in one level of the tree. Since we're using +32 bit hashes, we can have at most 7 such levels. Although if there are +two distinct keys with equal hashes, they will have to occupy the same +cell in the 7th level of the tree -- so we'd put them in a "collision" node. +Which brings the total possible tree depth to 8. Read more about the actual +layout of the HAMT tree in `hamt.c`. + +This constant is used to define a datastucture for storing iteration state. +*/ +#define _Py_HAMT_MAX_TREE_DEPTH 8 + + +#define PyHamt_Check(o) (Py_TYPE(o) == &_PyHamt_Type) + + +/* Abstract tree node. */ +typedef struct { + PyObject_HEAD +} PyHamtNode; + + +/* An HAMT immutable mapping collection. */ +typedef struct { + PyObject_HEAD + PyHamtNode *h_root; + PyObject *h_weakreflist; + Py_ssize_t h_count; +} PyHamtObject; + + +/* A struct to hold the state of depth-first traverse of the tree. + + HAMT is an immutable collection. Iterators will hold a strong reference + to it, and every node in the HAMT has strong references to its children. + + So for iterators, we can implement zero allocations and zero reference + inc/dec depth-first iteration. + + - i_nodes: an array of seven pointers to tree nodes + - i_level: the current node in i_nodes + - i_pos: an array of positions within nodes in i_nodes. +*/ +typedef struct { + PyHamtNode *i_nodes[_Py_HAMT_MAX_TREE_DEPTH]; + Py_ssize_t i_pos[_Py_HAMT_MAX_TREE_DEPTH]; + int8_t i_level; +} PyHamtIteratorState; + + +/* Base iterator object. + + Contains the iteration state, a pointer to the HAMT tree, + and a pointer to the 'yield function'. The latter is a simple + function that returns a key/value tuple for the 'Items' iterator, + just a key for the 'Keys' iterator, and a value for the 'Values' + iterator. +*/ +typedef struct { + PyObject_HEAD + PyHamtObject *hi_obj; + PyHamtIteratorState hi_iter; + binaryfunc hi_yield; +} PyHamtIterator; + + +PyAPI_DATA(PyTypeObject) _PyHamt_Type; +PyAPI_DATA(PyTypeObject) _PyHamt_ArrayNode_Type; +PyAPI_DATA(PyTypeObject) _PyHamt_BitmapNode_Type; +PyAPI_DATA(PyTypeObject) _PyHamt_CollisionNode_Type; +PyAPI_DATA(PyTypeObject) _PyHamtKeys_Type; +PyAPI_DATA(PyTypeObject) _PyHamtValues_Type; +PyAPI_DATA(PyTypeObject) _PyHamtItems_Type; + + +/* Create a new HAMT immutable mapping. */ +PyHamtObject * _PyHamt_New(void); + +/* Return a new collection based on "o", but with an additional + key/val pair. */ +PyHamtObject * _PyHamt_Assoc(PyHamtObject *o, PyObject *key, PyObject *val); + +/* Return a new collection based on "o", but without "key". */ +PyHamtObject * _PyHamt_Without(PyHamtObject *o, PyObject *key); + +/* Find "key" in the "o" collection. + + Return: + - -1: An error occurred. + - 0: "key" wasn't found in "o". + - 1: "key" is in "o"; "*val" is set to its value (a borrowed ref). +*/ +int _PyHamt_Find(PyHamtObject *o, PyObject *key, PyObject **val); + +/* Check if "v" is equal to "w". + + Return: + - 0: v != w + - 1: v == w + - -1: An error occurred. +*/ +int _PyHamt_Eq(PyHamtObject *v, PyHamtObject *w); + +/* Return the size of "o"; equivalent of "len(o)". */ +Py_ssize_t _PyHamt_Len(PyHamtObject *o); + +/* Return a Keys iterator over "o". */ +PyObject * _PyHamt_NewIterKeys(PyHamtObject *o); + +/* Return a Values iterator over "o". */ +PyObject * _PyHamt_NewIterValues(PyHamtObject *o); + +/* Return a Items iterator over "o". */ +PyObject * _PyHamt_NewIterItems(PyHamtObject *o); + +int _PyHamt_Init(void); +void _PyHamt_Fini(void); + +#endif /* !Py_INTERNAL_HAMT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_initconfig.h b/client/3rd/include/frame/python/internal/pycore_initconfig.h new file mode 100755 index 0000000..cf4c3ee --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_initconfig.h @@ -0,0 +1,168 @@ +#ifndef Py_INTERNAL_CORECONFIG_H +#define Py_INTERNAL_CORECONFIG_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_pystate.h" /* _PyRuntimeState */ + +/* --- PyStatus ----------------------------------------------- */ + +/* Almost all errors causing Python initialization to fail */ +#ifdef _MSC_VER + /* Visual Studio 2015 doesn't implement C99 __func__ in C */ +# define _PyStatus_GET_FUNC() __FUNCTION__ +#else +# define _PyStatus_GET_FUNC() __func__ +#endif + +#define _PyStatus_OK() \ + (PyStatus){._type = _PyStatus_TYPE_OK,} + /* other fields are set to 0 */ +#define _PyStatus_ERR(ERR_MSG) \ + (PyStatus){ \ + ._type = _PyStatus_TYPE_ERROR, \ + .func = _PyStatus_GET_FUNC(), \ + .err_msg = (ERR_MSG)} + /* other fields are set to 0 */ +#define _PyStatus_NO_MEMORY() _PyStatus_ERR("memory allocation failed") +#define _PyStatus_EXIT(EXITCODE) \ + (PyStatus){ \ + ._type = _PyStatus_TYPE_EXIT, \ + .exitcode = (EXITCODE)} +#define _PyStatus_IS_ERROR(err) \ + (err._type == _PyStatus_TYPE_ERROR) +#define _PyStatus_IS_EXIT(err) \ + (err._type == _PyStatus_TYPE_EXIT) +#define _PyStatus_EXCEPTION(err) \ + (err._type != _PyStatus_TYPE_OK) +#define _PyStatus_UPDATE_FUNC(err) \ + do { err.func = _PyStatus_GET_FUNC(); } while (0) + +/* --- PyWideStringList ------------------------------------------------ */ + +#define _PyWideStringList_INIT (PyWideStringList){.length = 0, .items = NULL} + +#ifndef NDEBUG +PyAPI_FUNC(int) _PyWideStringList_CheckConsistency(const PyWideStringList *list); +#endif +PyAPI_FUNC(void) _PyWideStringList_Clear(PyWideStringList *list); +PyAPI_FUNC(int) _PyWideStringList_Copy(PyWideStringList *list, + const PyWideStringList *list2); +PyAPI_FUNC(PyStatus) _PyWideStringList_Extend(PyWideStringList *list, + const PyWideStringList *list2); +PyAPI_FUNC(PyObject*) _PyWideStringList_AsList(const PyWideStringList *list); + + +/* --- _PyArgv ---------------------------------------------------- */ + +typedef struct { + Py_ssize_t argc; + int use_bytes_argv; + char * const *bytes_argv; + wchar_t * const *wchar_argv; +} _PyArgv; + +PyAPI_FUNC(PyStatus) _PyArgv_AsWstrList(const _PyArgv *args, + PyWideStringList *list); + + +/* --- Helper functions ------------------------------------------- */ + +PyAPI_FUNC(int) _Py_str_to_int( + const char *str, + int *result); +PyAPI_FUNC(const wchar_t*) _Py_get_xoption( + const PyWideStringList *xoptions, + const wchar_t *name); +PyAPI_FUNC(const char*) _Py_GetEnv( + int use_environment, + const char *name); +PyAPI_FUNC(void) _Py_get_env_flag( + int use_environment, + int *flag, + const char *name); + +/* Py_GetArgcArgv() helper */ +PyAPI_FUNC(void) _Py_ClearArgcArgv(void); + + +/* --- _PyPreCmdline ------------------------------------------------- */ + +typedef struct { + PyWideStringList argv; + PyWideStringList xoptions; /* "-X value" option */ + int isolated; /* -I option */ + int use_environment; /* -E option */ + int dev_mode; /* -X dev and PYTHONDEVMODE */ +} _PyPreCmdline; + +#define _PyPreCmdline_INIT \ + (_PyPreCmdline){ \ + .use_environment = -1, \ + .isolated = -1, \ + .dev_mode = -1} +/* Note: _PyPreCmdline_INIT sets other fields to 0/NULL */ + +extern void _PyPreCmdline_Clear(_PyPreCmdline *cmdline); +extern PyStatus _PyPreCmdline_SetArgv(_PyPreCmdline *cmdline, + const _PyArgv *args); +extern PyStatus _PyPreCmdline_SetConfig( + const _PyPreCmdline *cmdline, + PyConfig *config); +extern PyStatus _PyPreCmdline_Read(_PyPreCmdline *cmdline, + const PyPreConfig *preconfig); + + +/* --- PyPreConfig ----------------------------------------------- */ + +PyAPI_FUNC(void) _PyPreConfig_InitCompatConfig(PyPreConfig *preconfig); +extern void _PyPreConfig_InitFromConfig( + PyPreConfig *preconfig, + const PyConfig *config); +extern PyStatus _PyPreConfig_InitFromPreConfig( + PyPreConfig *preconfig, + const PyPreConfig *config2); +extern PyObject* _PyPreConfig_AsDict(const PyPreConfig *preconfig); +extern void _PyPreConfig_GetConfig(PyPreConfig *preconfig, + const PyConfig *config); +extern PyStatus _PyPreConfig_Read(PyPreConfig *preconfig, + const _PyArgv *args); +extern PyStatus _PyPreConfig_Write(const PyPreConfig *preconfig); + + +/* --- PyConfig ---------------------------------------------- */ + +typedef enum { + /* Py_Initialize() API: backward compatibility with Python 3.6 and 3.7 */ + _PyConfig_INIT_COMPAT = 1, + _PyConfig_INIT_PYTHON = 2, + _PyConfig_INIT_ISOLATED = 3 +} _PyConfigInitEnum; + +PyAPI_FUNC(void) _PyConfig_InitCompatConfig(PyConfig *config); +extern PyStatus _PyConfig_Copy( + PyConfig *config, + const PyConfig *config2); +extern PyStatus _PyConfig_InitPathConfig(PyConfig *config); +extern void _PyConfig_Write(const PyConfig *config, + _PyRuntimeState *runtime); +extern PyStatus _PyConfig_SetPyArgv( + PyConfig *config, + const _PyArgv *args); + +extern int _Py_global_config_int_max_str_digits; + + +/* --- Function used for testing ---------------------------------- */ + +PyAPI_FUNC(PyObject*) _Py_GetConfigsAsDict(void); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_CORECONFIG_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_long.h b/client/3rd/include/frame/python/internal/pycore_long.h new file mode 100755 index 0000000..ae04332 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_long.h @@ -0,0 +1,49 @@ +#ifndef Py_INTERNAL_LONG_H +#define Py_INTERNAL_LONG_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +/* + * Default int base conversion size limitation: Denial of Service prevention. + * + * Chosen such that this isn't wildly slow on modern hardware and so that + * everyone's existing deployed numpy test suite passes before + * https://github.com/numpy/numpy/issues/22098 is widely available. + * + * $ python -m timeit -s 's = "1"*4300' 'int(s)' + * 2000 loops, best of 5: 125 usec per loop + * $ python -m timeit -s 's = "1"*4300; v = int(s)' 'str(v)' + * 1000 loops, best of 5: 311 usec per loop + * (zen2 cloud VM) + * + * 4300 decimal digits fits a ~14284 bit number. + */ +#define _PY_LONG_DEFAULT_MAX_STR_DIGITS 4300 +/* + * Threshold for max digits check. For performance reasons int() and + * int.__str__() don't checks values that are smaller than this + * threshold. Acts as a guaranteed minimum size limit for bignums that + * applications can expect from CPython. + * + * % python -m timeit -s 's = "1"*640; v = int(s)' 'str(int(s))' + * 20000 loops, best of 5: 12 usec per loop + * + * "640 digits should be enough for anyone." - gps + * fits a ~2126 bit decimal number. + */ +#define _PY_LONG_MAX_STR_DIGITS_THRESHOLD 640 + +#if ((_PY_LONG_DEFAULT_MAX_STR_DIGITS != 0) && \ + (_PY_LONG_DEFAULT_MAX_STR_DIGITS < _PY_LONG_MAX_STR_DIGITS_THRESHOLD)) +# error "_PY_LONG_DEFAULT_MAX_STR_DIGITS smaller than threshold." +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_LONG_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_object.h b/client/3rd/include/frame/python/internal/pycore_object.h new file mode 100755 index 0000000..7418c69 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_object.h @@ -0,0 +1,81 @@ +#ifndef Py_INTERNAL_OBJECT_H +#define Py_INTERNAL_OBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_pystate.h" /* _PyRuntime */ + +PyAPI_FUNC(int) _PyType_CheckConsistency(PyTypeObject *type); +PyAPI_FUNC(int) _PyDict_CheckConsistency(PyObject *mp, int check_content); + +/* Tell the GC to track this object. + * + * NB: While the object is tracked by the collector, it must be safe to call the + * ob_traverse method. + * + * Internal note: _PyRuntime.gc.generation0->_gc_prev doesn't have any bit flags + * because it's not object header. So we don't use _PyGCHead_PREV() and + * _PyGCHead_SET_PREV() for it to avoid unnecessary bitwise operations. + * + * The PyObject_GC_Track() function is the public version of this macro. + */ +static inline void _PyObject_GC_TRACK_impl(const char *filename, int lineno, + PyObject *op) +{ + _PyObject_ASSERT_FROM(op, !_PyObject_GC_IS_TRACKED(op), + "object already tracked by the garbage collector", + filename, lineno, "_PyObject_GC_TRACK"); + + PyGC_Head *gc = _Py_AS_GC(op); + _PyObject_ASSERT_FROM(op, + (gc->_gc_prev & _PyGC_PREV_MASK_COLLECTING) == 0, + "object is in generation which is garbage collected", + filename, lineno, "_PyObject_GC_TRACK"); + + PyGC_Head *last = (PyGC_Head*)(_PyRuntime.gc.generation0->_gc_prev); + _PyGCHead_SET_NEXT(last, gc); + _PyGCHead_SET_PREV(gc, last); + _PyGCHead_SET_NEXT(gc, _PyRuntime.gc.generation0); + _PyRuntime.gc.generation0->_gc_prev = (uintptr_t)gc; +} + +#define _PyObject_GC_TRACK(op) \ + _PyObject_GC_TRACK_impl(__FILE__, __LINE__, _PyObject_CAST(op)) + +/* Tell the GC to stop tracking this object. + * + * Internal note: This may be called while GC. So _PyGC_PREV_MASK_COLLECTING + * must be cleared. But _PyGC_PREV_MASK_FINALIZED bit is kept. + * + * The object must be tracked by the GC. + * + * The PyObject_GC_UnTrack() function is the public version of this macro. + */ +static inline void _PyObject_GC_UNTRACK_impl(const char *filename, int lineno, + PyObject *op) +{ + _PyObject_ASSERT_FROM(op, _PyObject_GC_IS_TRACKED(op), + "object not tracked by the garbage collector", + filename, lineno, "_PyObject_GC_UNTRACK"); + + PyGC_Head *gc = _Py_AS_GC(op); + PyGC_Head *prev = _PyGCHead_PREV(gc); + PyGC_Head *next = _PyGCHead_NEXT(gc); + _PyGCHead_SET_NEXT(prev, next); + _PyGCHead_SET_PREV(next, prev); + gc->_gc_next = 0; + gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED; +} + +#define _PyObject_GC_UNTRACK(op) \ + _PyObject_GC_UNTRACK_impl(__FILE__, __LINE__, _PyObject_CAST(op)) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_OBJECT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_pathconfig.h b/client/3rd/include/frame/python/internal/pycore_pathconfig.h new file mode 100755 index 0000000..ce75cce --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pathconfig.h @@ -0,0 +1,75 @@ +#ifndef Py_INTERNAL_PATHCONFIG_H +#define Py_INTERNAL_PATHCONFIG_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +typedef struct _PyPathConfig { + /* Full path to the Python program */ + wchar_t *program_full_path; + wchar_t *prefix; + wchar_t *exec_prefix; + /* Set by Py_SetPath(), or computed by _PyConfig_InitPathConfig() */ + wchar_t *module_search_path; + /* Python program name */ + wchar_t *program_name; + /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */ + wchar_t *home; +#ifdef MS_WINDOWS + /* isolated and site_import are used to set Py_IsolatedFlag and + Py_NoSiteFlag flags on Windows in read_pth_file(). These fields + are ignored when their value are equal to -1 (unset). */ + int isolated; + int site_import; + /* Set when a venv is detected */ + wchar_t *base_executable; +#endif +} _PyPathConfig; + +#ifdef MS_WINDOWS +# define _PyPathConfig_INIT \ + {.module_search_path = NULL, \ + .isolated = -1, \ + .site_import = -1} +#else +# define _PyPathConfig_INIT \ + {.module_search_path = NULL} +#endif +/* Note: _PyPathConfig_INIT sets other fields to 0/NULL */ + +PyAPI_DATA(_PyPathConfig) _Py_path_config; +#ifdef MS_WINDOWS +PyAPI_DATA(wchar_t*) _Py_dll_path; +#endif + +extern void _PyPathConfig_ClearGlobal(void); +extern PyStatus _PyPathConfig_SetGlobal( + const struct _PyPathConfig *pathconfig); + +extern PyStatus _PyPathConfig_Calculate( + _PyPathConfig *pathconfig, + const PyConfig *config); +extern int _PyPathConfig_ComputeSysPath0( + const PyWideStringList *argv, + PyObject **path0); +extern int _Py_FindEnvConfigValue( + FILE *env_file, + const wchar_t *key, + wchar_t *value, + size_t value_size); + +#ifdef MS_WINDOWS +extern wchar_t* _Py_GetDLLPath(void); +#endif + +extern PyStatus _PyConfig_WritePathConfig(const PyConfig *config); +extern void _Py_DumpPathConfig(PyThreadState *tstate); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_PATHCONFIG_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_pyerrors.h b/client/3rd/include/frame/python/internal/pycore_pyerrors.h new file mode 100755 index 0000000..23327ef --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pyerrors.h @@ -0,0 +1,62 @@ +#ifndef Py_INTERNAL_PYERRORS_H +#define Py_INTERNAL_PYERRORS_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +static inline PyObject* _PyErr_Occurred(PyThreadState *tstate) +{ + return tstate == NULL ? NULL : tstate->curexc_type; +} + + +PyAPI_FUNC(void) _PyErr_Fetch( + PyThreadState *tstate, + PyObject **type, + PyObject **value, + PyObject **traceback); + +PyAPI_FUNC(int) _PyErr_ExceptionMatches( + PyThreadState *tstate, + PyObject *exc); + +PyAPI_FUNC(void) _PyErr_Restore( + PyThreadState *tstate, + PyObject *type, + PyObject *value, + PyObject *traceback); + +PyAPI_FUNC(void) _PyErr_SetObject( + PyThreadState *tstate, + PyObject *type, + PyObject *value); + +PyAPI_FUNC(void) _PyErr_Clear(PyThreadState *tstate); + +PyAPI_FUNC(void) _PyErr_SetNone(PyThreadState *tstate, PyObject *exception); + +PyAPI_FUNC(void) _PyErr_SetString( + PyThreadState *tstate, + PyObject *exception, + const char *string); + +PyAPI_FUNC(PyObject *) _PyErr_Format( + PyThreadState *tstate, + PyObject *exception, + const char *format, + ...); + +PyAPI_FUNC(void) _PyErr_NormalizeException( + PyThreadState *tstate, + PyObject **exc, + PyObject **val, + PyObject **tb); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_PYERRORS_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_pyhash.h b/client/3rd/include/frame/python/internal/pycore_pyhash.h new file mode 100755 index 0000000..a229f8d --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pyhash.h @@ -0,0 +1,10 @@ +#ifndef Py_INTERNAL_HASH_H +#define Py_INTERNAL_HASH_H + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +uint64_t _Py_KeyedHash(uint64_t, const char *, Py_ssize_t); + +#endif diff --git a/client/3rd/include/frame/python/internal/pycore_pylifecycle.h b/client/3rd/include/frame/python/internal/pycore_pylifecycle.h new file mode 100755 index 0000000..c237b1d --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pylifecycle.h @@ -0,0 +1,118 @@ +#ifndef Py_INTERNAL_LIFECYCLE_H +#define Py_INTERNAL_LIFECYCLE_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pycore_initconfig.h" /* _PyArgv */ +#include "pycore_pystate.h" /* _PyRuntimeState */ + +/* True if the main interpreter thread exited due to an unhandled + * KeyboardInterrupt exception, suggesting the user pressed ^C. */ +PyAPI_DATA(int) _Py_UnhandledKeyboardInterrupt; + +extern int _Py_SetFileSystemEncoding( + const char *encoding, + const char *errors); +extern void _Py_ClearFileSystemEncoding(void); +extern PyStatus _PyUnicode_InitEncodings(PyThreadState *tstate); +#ifdef MS_WINDOWS +extern int _PyUnicode_EnableLegacyWindowsFSEncoding(void); +#endif + +PyAPI_FUNC(void) _Py_ClearStandardStreamEncoding(void); + +PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); + +/* Various one-time initializers */ + +extern PyStatus _PyUnicode_Init(void); +extern int _PyStructSequence_Init(void); +extern int _PyLong_Init(void); +extern PyStatus _PyFaulthandler_Init(int enable); +extern int _PyTraceMalloc_Init(int enable); +extern PyObject * _PyBuiltin_Init(void); +extern PyStatus _PySys_Create( + _PyRuntimeState *runtime, + PyInterpreterState *interp, + PyObject **sysmod_p); +extern PyStatus _PySys_SetPreliminaryStderr(PyObject *sysdict); +extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options); +extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config); +extern int _PySys_InitMain( + _PyRuntimeState *runtime, + PyInterpreterState *interp); +extern PyStatus _PyImport_Init(PyInterpreterState *interp); +extern PyStatus _PyExc_Init(void); +extern PyStatus _PyErr_Init(void); +extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod); +extern PyStatus _PyImportHooks_Init(void); +extern int _PyFloat_Init(void); +extern PyStatus _Py_HashRandomization_Init(const PyConfig *); + +extern PyStatus _PyTypes_Init(void); +extern PyStatus _PyImportZip_Init(PyInterpreterState *interp); + + +/* Various internal finalizers */ + +extern void PyMethod_Fini(void); +extern void PyFrame_Fini(void); +extern void PyCFunction_Fini(void); +extern void PyDict_Fini(void); +extern void PyTuple_Fini(void); +extern void PyList_Fini(void); +extern void PySet_Fini(void); +extern void PyBytes_Fini(void); +extern void PyFloat_Fini(void); + +extern int _PySignal_Init(int install_signal_handlers); +extern void PyOS_FiniInterrupts(void); +extern void PySlice_Fini(void); +extern void PyAsyncGen_Fini(void); + +extern void _PyExc_Fini(void); +extern void _PyImport_Fini(void); +extern void _PyImport_Fini2(void); +extern void _PyGC_Fini(_PyRuntimeState *runtime); +extern void _PyType_Fini(void); +extern void _Py_HashRandomization_Fini(void); +extern void _PyUnicode_Fini(void); +extern void PyLong_Fini(void); +extern void _PyFaulthandler_Fini(void); +extern void _PyHash_Fini(void); +extern void _PyTraceMalloc_Fini(void); +extern void _PyWarnings_Fini(PyInterpreterState *interp); + +extern void _PyGILState_Init( + _PyRuntimeState *runtime, + PyInterpreterState *interp, + PyThreadState *tstate); +extern void _PyGILState_Fini(_PyRuntimeState *runtime); + +PyAPI_FUNC(void) _PyGC_DumpShutdownStats(_PyRuntimeState *runtime); + +PyAPI_FUNC(PyStatus) _Py_PreInitializeFromPyArgv( + const PyPreConfig *src_config, + const _PyArgv *args); +PyAPI_FUNC(PyStatus) _Py_PreInitializeFromConfig( + const PyConfig *config, + const _PyArgv *args); + + +PyAPI_FUNC(int) _Py_HandleSystemExit(int *exitcode_p); + +PyAPI_FUNC(PyObject*) _PyErr_WriteUnraisableDefaultHook(PyObject *unraisable); + +PyAPI_FUNC(void) _PyErr_Print(PyThreadState *tstate); +PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception, + PyObject *value, PyObject *tb); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_LIFECYCLE_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_pymem.h b/client/3rd/include/frame/python/internal/pycore_pymem.h new file mode 100755 index 0000000..47d092f --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pymem.h @@ -0,0 +1,212 @@ +#ifndef Py_INTERNAL_PYMEM_H +#define Py_INTERNAL_PYMEM_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "objimpl.h" +#include "pymem.h" + + +/* GC runtime state */ + +/* If we change this, we need to change the default value in the + signature of gc.collect. */ +#define NUM_GENERATIONS 3 + +/* + NOTE: about the counting of long-lived objects. + + To limit the cost of garbage collection, there are two strategies; + - make each collection faster, e.g. by scanning fewer objects + - do less collections + This heuristic is about the latter strategy. + + In addition to the various configurable thresholds, we only trigger a + full collection if the ratio + long_lived_pending / long_lived_total + is above a given value (hardwired to 25%). + + The reason is that, while "non-full" collections (i.e., collections of + the young and middle generations) will always examine roughly the same + number of objects -- determined by the aforementioned thresholds --, + the cost of a full collection is proportional to the total number of + long-lived objects, which is virtually unbounded. + + Indeed, it has been remarked that doing a full collection every + of object creations entails a dramatic performance + degradation in workloads which consist in creating and storing lots of + long-lived objects (e.g. building a large list of GC-tracked objects would + show quadratic performance, instead of linear as expected: see issue #4074). + + Using the above ratio, instead, yields amortized linear performance in + the total number of objects (the effect of which can be summarized + thusly: "each full garbage collection is more and more costly as the + number of objects grows, but we do fewer and fewer of them"). + + This heuristic was suggested by Martin von Löwis on python-dev in + June 2008. His original analysis and proposal can be found at: + http://mail.python.org/pipermail/python-dev/2008-June/080579.html +*/ + +/* + NOTE: about untracking of mutable objects. + + Certain types of container cannot participate in a reference cycle, and + so do not need to be tracked by the garbage collector. Untracking these + objects reduces the cost of garbage collections. However, determining + which objects may be untracked is not free, and the costs must be + weighed against the benefits for garbage collection. + + There are two possible strategies for when to untrack a container: + + i) When the container is created. + ii) When the container is examined by the garbage collector. + + Tuples containing only immutable objects (integers, strings etc, and + recursively, tuples of immutable objects) do not need to be tracked. + The interpreter creates a large number of tuples, many of which will + not survive until garbage collection. It is therefore not worthwhile + to untrack eligible tuples at creation time. + + Instead, all tuples except the empty tuple are tracked when created. + During garbage collection it is determined whether any surviving tuples + can be untracked. A tuple can be untracked if all of its contents are + already not tracked. Tuples are examined for untracking in all garbage + collection cycles. It may take more than one cycle to untrack a tuple. + + Dictionaries containing only immutable objects also do not need to be + tracked. Dictionaries are untracked when created. If a tracked item is + inserted into a dictionary (either as a key or value), the dictionary + becomes tracked. During a full garbage collection (all generations), + the collector will untrack any dictionaries whose contents are not + tracked. + + The module provides the python function is_tracked(obj), which returns + the CURRENT tracking status of the object. Subsequent garbage + collections may change the tracking status of the object. + + Untracking of certain containers was introduced in issue #4688, and + the algorithm was refined in response to issue #14775. +*/ + +struct gc_generation { + PyGC_Head head; + int threshold; /* collection threshold */ + int count; /* count of allocations or collections of younger + generations */ +}; + +/* Running stats per generation */ +struct gc_generation_stats { + /* total number of collections */ + Py_ssize_t collections; + /* total number of collected objects */ + Py_ssize_t collected; + /* total number of uncollectable objects (put into gc.garbage) */ + Py_ssize_t uncollectable; +}; + +struct _gc_runtime_state { + /* List of objects that still need to be cleaned up, singly linked + * via their gc headers' gc_prev pointers. */ + PyObject *trash_delete_later; + /* Current call-stack depth of tp_dealloc calls. */ + int trash_delete_nesting; + + int enabled; + int debug; + /* linked lists of container objects */ + struct gc_generation generations[NUM_GENERATIONS]; + PyGC_Head *generation0; + /* a permanent generation which won't be collected */ + struct gc_generation permanent_generation; + struct gc_generation_stats generation_stats[NUM_GENERATIONS]; + /* true if we are currently running the collector */ + int collecting; + /* list of uncollectable objects */ + PyObject *garbage; + /* a list of callbacks to be invoked when collection is performed */ + PyObject *callbacks; + /* This is the number of objects that survived the last full + collection. It approximates the number of long lived objects + tracked by the GC. + + (by "full collection", we mean a collection of the oldest + generation). */ + Py_ssize_t long_lived_total; + /* This is the number of objects that survived all "non-full" + collections, and are awaiting to undergo a full collection for + the first time. */ + Py_ssize_t long_lived_pending; +}; + +PyAPI_FUNC(void) _PyGC_Initialize(struct _gc_runtime_state *); + + +/* Set the memory allocator of the specified domain to the default. + Save the old allocator into *old_alloc if it's non-NULL. + Return on success, or return -1 if the domain is unknown. */ +PyAPI_FUNC(int) _PyMem_SetDefaultAllocator( + PyMemAllocatorDomain domain, + PyMemAllocatorEx *old_alloc); + +/* Special bytes broadcast into debug memory blocks at appropriate times. + Strings of these are unlikely to be valid addresses, floats, ints or + 7-bit ASCII. + + - PYMEM_CLEANBYTE: clean (newly allocated) memory + - PYMEM_DEADBYTE dead (newly freed) memory + - PYMEM_FORBIDDENBYTE: untouchable bytes at each end of a block + + Byte patterns 0xCB, 0xDB and 0xFB have been replaced with 0xCD, 0xDD and + 0xFD to use the same values than Windows CRT debug malloc() and free(). + If modified, _PyMem_IsPtrFreed() should be updated as well. */ +#define PYMEM_CLEANBYTE 0xCD +#define PYMEM_DEADBYTE 0xDD +#define PYMEM_FORBIDDENBYTE 0xFD + +/* Heuristic checking if a pointer value is newly allocated + (uninitialized), newly freed or NULL (is equal to zero). + + The pointer is not dereferenced, only the pointer value is checked. + + The heuristic relies on the debug hooks on Python memory allocators which + fills newly allocated memory with CLEANBYTE (0xCD) and newly freed memory + with DEADBYTE (0xDD). Detect also "untouchable bytes" marked + with FORBIDDENBYTE (0xFD). */ +static inline int _PyMem_IsPtrFreed(void *ptr) +{ + uintptr_t value = (uintptr_t)ptr; +#if SIZEOF_VOID_P == 8 + return (value == 0 + || value == (uintptr_t)0xCDCDCDCDCDCDCDCD + || value == (uintptr_t)0xDDDDDDDDDDDDDDDD + || value == (uintptr_t)0xFDFDFDFDFDFDFDFD); +#elif SIZEOF_VOID_P == 4 + return (value == 0 + || value == (uintptr_t)0xCDCDCDCD + || value == (uintptr_t)0xDDDDDDDD + || value == (uintptr_t)0xFDFDFDFD); +#else +# error "unknown pointer size" +#endif +} + +PyAPI_FUNC(int) _PyMem_GetAllocatorName( + const char *name, + PyMemAllocatorName *allocator); + +/* Configure the Python memory allocators. + Pass PYMEM_ALLOCATOR_DEFAULT to use default allocators. + PYMEM_ALLOCATOR_NOT_SET does nothing. */ +PyAPI_FUNC(int) _PyMem_SetupAllocators(PyMemAllocatorName allocator); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_PYMEM_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_pystate.h b/client/3rd/include/frame/python/internal/pycore_pystate.h new file mode 100755 index 0000000..933e36b --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_pystate.h @@ -0,0 +1,328 @@ +#ifndef Py_INTERNAL_PYSTATE_H +#define Py_INTERNAL_PYSTATE_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "cpython/initconfig.h" +#include "fileobject.h" +#include "pystate.h" +#include "pythread.h" +#include "sysmodule.h" + +#include "pycore_gil.h" /* _gil_runtime_state */ +#include "pycore_pathconfig.h" +#include "pycore_pymem.h" +#include "pycore_warnings.h" + + +/* ceval state */ + +struct _pending_calls { + int finishing; + PyThread_type_lock lock; + /* Request for running pending calls. */ + _Py_atomic_int calls_to_do; + /* Request for looking at the `async_exc` field of the current + thread state. + Guarded by the GIL. */ + int async_exc; +#define NPENDINGCALLS 32 + struct { + int (*func)(void *); + void *arg; + } calls[NPENDINGCALLS]; + int first; + int last; +}; + +struct _ceval_runtime_state { + int recursion_limit; + /* Records whether tracing is on for any thread. Counts the number + of threads for which tstate->c_tracefunc is non-NULL, so if the + value is 0, we know we don't have to check this thread's + c_tracefunc. This speeds up the if statement in + PyEval_EvalFrameEx() after fast_next_opcode. */ + int tracing_possible; + /* This single variable consolidates all requests to break out of + the fast path in the eval loop. */ + _Py_atomic_int eval_breaker; + /* Request for dropping the GIL */ + _Py_atomic_int gil_drop_request; + struct _pending_calls pending; + /* Request for checking signals. */ + _Py_atomic_int signals_pending; + struct _gil_runtime_state gil; +}; + +/* interpreter state */ + +typedef PyObject* (*_PyFrameEvalFunction)(struct _frame *, int); + +// The PyInterpreterState typedef is in Include/pystate.h. +struct _is { + + struct _is *next; + struct _ts *tstate_head; + + int64_t id; + int64_t id_refcount; + int requires_idref; + PyThread_type_lock id_mutex; + + int finalizing; + + PyObject *modules; + PyObject *modules_by_index; + PyObject *sysdict; + PyObject *builtins; + PyObject *importlib; + + /* Used in Python/sysmodule.c. */ + int check_interval; + + /* Used in Modules/_threadmodule.c. */ + long num_threads; + /* Support for runtime thread stack size tuning. + A value of 0 means using the platform's default stack size + or the size specified by the THREAD_STACK_SIZE macro. */ + /* Used in Python/thread.c. */ + size_t pythread_stacksize; + + PyObject *codec_search_path; + PyObject *codec_search_cache; + PyObject *codec_error_registry; + int codecs_initialized; + + /* fs_codec.encoding is initialized to NULL. + Later, it is set to a non-NULL string by _PyUnicode_InitEncodings(). */ + struct { + char *encoding; /* Filesystem encoding (encoded to UTF-8) */ + char *errors; /* Filesystem errors (encoded to UTF-8) */ + _Py_error_handler error_handler; + } fs_codec; + + PyConfig config; +#ifdef HAVE_DLOPEN + int dlopenflags; +#endif + + PyObject *dict; /* Stores per-interpreter state */ + + PyObject *builtins_copy; + PyObject *import_func; + /* Initialized to PyEval_EvalFrameDefault(). */ + _PyFrameEvalFunction eval_frame; + + Py_ssize_t co_extra_user_count; + freefunc co_extra_freefuncs[MAX_CO_EXTRA_USERS]; + +#ifdef HAVE_FORK + PyObject *before_forkers; + PyObject *after_forkers_parent; + PyObject *after_forkers_child; +#endif + /* AtExit module */ + void (*pyexitfunc)(PyObject *); + PyObject *pyexitmodule; + + uint64_t tstate_next_unique_id; + + struct _warnings_runtime_state warnings; + + PyObject *audit_hooks; + + int int_max_str_digits; +}; + +PyAPI_FUNC(struct _is*) _PyInterpreterState_LookUpID(PY_INT64_T); + +PyAPI_FUNC(int) _PyInterpreterState_IDInitref(struct _is *); +PyAPI_FUNC(int) _PyInterpreterState_IDIncref(struct _is *); +PyAPI_FUNC(void) _PyInterpreterState_IDDecref(struct _is *); + + +/* cross-interpreter data registry */ + +/* For now we use a global registry of shareable classes. An + alternative would be to add a tp_* slot for a class's + crossinterpdatafunc. It would be simpler and more efficient. */ + +struct _xidregitem; + +struct _xidregitem { + PyTypeObject *cls; + crossinterpdatafunc getdata; + struct _xidregitem *next; +}; + +/* runtime audit hook state */ + +typedef struct _Py_AuditHookEntry { + struct _Py_AuditHookEntry *next; + Py_AuditHookFunction hookCFunction; + void *userData; +} _Py_AuditHookEntry; + +/* GIL state */ + +struct _gilstate_runtime_state { + int check_enabled; + /* Assuming the current thread holds the GIL, this is the + PyThreadState for the current thread. */ + _Py_atomic_address tstate_current; + PyThreadFrameGetter getframe; + /* The single PyInterpreterState used by this process' + GILState implementation + */ + /* TODO: Given interp_main, it may be possible to kill this ref */ + PyInterpreterState *autoInterpreterState; + Py_tss_t autoTSSkey; +}; + +/* hook for PyEval_GetFrame(), requested for Psyco */ +#define _PyThreadState_GetFrame _PyRuntime.gilstate.getframe + +/* Issue #26558: Flag to disable PyGILState_Check(). + If set to non-zero, PyGILState_Check() always return 1. */ +#define _PyGILState_check_enabled _PyRuntime.gilstate.check_enabled + + +/* Full Python runtime state */ + +typedef struct pyruntimestate { + /* Is running Py_PreInitialize()? */ + int preinitializing; + + /* Is Python preinitialized? Set to 1 by Py_PreInitialize() */ + int preinitialized; + + /* Is Python core initialized? Set to 1 by _Py_InitializeCore() */ + int core_initialized; + + /* Is Python fully initialized? Set to 1 by Py_Initialize() */ + int initialized; + + /* Set by Py_FinalizeEx(). Only reset to NULL if Py_Initialize() + is called again. */ + PyThreadState *finalizing; + + struct pyinterpreters { + PyThread_type_lock mutex; + PyInterpreterState *head; + PyInterpreterState *main; + /* _next_interp_id is an auto-numbered sequence of small + integers. It gets initialized in _PyInterpreterState_Init(), + which is called in Py_Initialize(), and used in + PyInterpreterState_New(). A negative interpreter ID + indicates an error occurred. The main interpreter will + always have an ID of 0. Overflow results in a RuntimeError. + If that becomes a problem later then we can adjust, e.g. by + using a Python int. */ + int64_t next_id; + } interpreters; + // XXX Remove this field once we have a tp_* slot. + struct _xidregistry { + PyThread_type_lock mutex; + struct _xidregitem *head; + } xidregistry; + + unsigned long main_thread; + +#define NEXITFUNCS 32 + void (*exitfuncs[NEXITFUNCS])(void); + int nexitfuncs; + + struct _gc_runtime_state gc; + struct _ceval_runtime_state ceval; + struct _gilstate_runtime_state gilstate; + + PyPreConfig preconfig; + + Py_OpenCodeHookFunction open_code_hook; + void *open_code_userdata; + _Py_AuditHookEntry *audit_hook_head; + + // XXX Consolidate globals found via the check-c-globals script. +} _PyRuntimeState; + +#define _PyRuntimeState_INIT \ + {.preinitialized = 0, .core_initialized = 0, .initialized = 0} +/* Note: _PyRuntimeState_INIT sets other fields to 0/NULL */ + +PyAPI_DATA(_PyRuntimeState) _PyRuntime; +PyAPI_FUNC(PyStatus) _PyRuntimeState_Init(_PyRuntimeState *runtime); +PyAPI_FUNC(void) _PyRuntimeState_Fini(_PyRuntimeState *runtime); +PyAPI_FUNC(void) _PyRuntimeState_ReInitThreads(_PyRuntimeState *runtime); + +/* Initialize _PyRuntimeState. + Return NULL on success, or return an error message on failure. */ +PyAPI_FUNC(PyStatus) _PyRuntime_Initialize(void); + +PyAPI_FUNC(void) _PyRuntime_Finalize(void); + +#define _Py_CURRENTLY_FINALIZING(runtime, tstate) \ + (runtime->finalizing == tstate) + + +/* Variable and macro for in-line access to current thread + and interpreter state */ + +#define _PyRuntimeState_GetThreadState(runtime) \ + ((PyThreadState*)_Py_atomic_load_relaxed(&(runtime)->gilstate.tstate_current)) + +/* Get the current Python thread state. + + Efficient macro reading directly the 'gilstate.tstate_current' atomic + variable. The macro is unsafe: it does not check for error and it can + return NULL. + + The caller must hold the GIL. + + See also PyThreadState_Get() and PyThreadState_GET(). */ +#define _PyThreadState_GET() _PyRuntimeState_GetThreadState(&_PyRuntime) + +/* Redefine PyThreadState_GET() as an alias to _PyThreadState_GET() */ +#undef PyThreadState_GET +#define PyThreadState_GET() _PyThreadState_GET() + +/* Get the current interpreter state. + + The macro is unsafe: it does not check for error and it can return NULL. + + The caller must hold the GIL. + + See also _PyInterpreterState_Get() + and _PyGILState_GetInterpreterStateUnsafe(). */ +#define _PyInterpreterState_GET_UNSAFE() (_PyThreadState_GET()->interp) + + +/* Other */ + +PyAPI_FUNC(void) _PyThreadState_Init( + _PyRuntimeState *runtime, + PyThreadState *tstate); +PyAPI_FUNC(void) _PyThreadState_DeleteExcept( + _PyRuntimeState *runtime, + PyThreadState *tstate); + +PyAPI_FUNC(PyThreadState *) _PyThreadState_Swap( + struct _gilstate_runtime_state *gilstate, + PyThreadState *newts); + +PyAPI_FUNC(PyStatus) _PyInterpreterState_Enable(_PyRuntimeState *runtime); +PyAPI_FUNC(void) _PyInterpreterState_DeleteExceptMain(_PyRuntimeState *runtime); + +PyAPI_FUNC(void) _PyGILState_Reinit(_PyRuntimeState *runtime); + + +PyAPI_FUNC(int) _PyOS_InterruptOccurred(PyThreadState *tstate); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_PYSTATE_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_traceback.h b/client/3rd/include/frame/python/internal/pycore_traceback.h new file mode 100755 index 0000000..bf4d7fe --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_traceback.h @@ -0,0 +1,96 @@ +#ifndef Py_INTERNAL_TRACEBACK_H +#define Py_INTERNAL_TRACEBACK_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "pystate.h" /* PyInterpreterState */ + +/* Write the Python traceback into the file 'fd'. For example: + + Traceback (most recent call first): + File "xxx", line xxx in + File "xxx", line xxx in + ... + File "xxx", line xxx in + + This function is written for debug purpose only, to dump the traceback in + the worst case: after a segmentation fault, at fatal error, etc. That's why, + it is very limited. Strings are truncated to 100 characters and encoded to + ASCII with backslashreplace. It doesn't write the source code, only the + function name, filename and line number of each frame. Write only the first + 100 frames: if the traceback is truncated, write the line " ...". + + This function is signal safe. */ + +PyAPI_FUNC(void) _Py_DumpTraceback( + int fd, + PyThreadState *tstate); + +/* Write the traceback of all threads into the file 'fd'. current_thread can be + NULL. + + Return NULL on success, or an error message on error. + + This function is written for debug purpose only. It calls + _Py_DumpTraceback() for each thread, and so has the same limitations. It + only write the traceback of the first 100 threads: write "..." if there are + more threads. + + If current_tstate is NULL, the function tries to get the Python thread state + of the current thread. It is not an error if the function is unable to get + the current Python thread state. + + If interp is NULL, the function tries to get the interpreter state from + the current Python thread state, or from + _PyGILState_GetInterpreterStateUnsafe() in last resort. + + It is better to pass NULL to interp and current_tstate, the function tries + different options to retrieve these informations. + + This function is signal safe. */ + +PyAPI_FUNC(const char*) _Py_DumpTracebackThreads( + int fd, + PyInterpreterState *interp, + PyThreadState *current_tstate); + +/* Write a Unicode object into the file descriptor fd. Encode the string to + ASCII using the backslashreplace error handler. + + Do nothing if text is not a Unicode object. The function accepts Unicode + string which is not ready (PyUnicode_WCHAR_KIND). + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpASCII(int fd, PyObject *text); + +/* Format an integer as decimal into the file descriptor fd. + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpDecimal( + int fd, + unsigned long value); + +/* Format an integer as hexadecimal into the file descriptor fd with at least + width digits. + + The maximum width is sizeof(unsigned long)*2 digits. + + This function is signal safe. */ +PyAPI_FUNC(void) _Py_DumpHexadecimal( + int fd, + unsigned long value, + Py_ssize_t width); + +PyAPI_FUNC(PyObject*) _PyTraceBack_FromFrame( + PyObject *tb_next, + struct _frame *frame); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_TRACEBACK_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_tupleobject.h b/client/3rd/include/frame/python/internal/pycore_tupleobject.h new file mode 100755 index 0000000..9fcfc5c --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_tupleobject.h @@ -0,0 +1,19 @@ +#ifndef Py_INTERNAL_TUPLEOBJECT_H +#define Py_INTERNAL_TUPLEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "tupleobject.h" + +#define _PyTuple_ITEMS(op) (_PyTuple_CAST(op)->ob_item) +PyAPI_FUNC(PyObject *) _PyTuple_FromArray(PyObject *const *, Py_ssize_t); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_TUPLEOBJECT_H */ diff --git a/client/3rd/include/frame/python/internal/pycore_warnings.h b/client/3rd/include/frame/python/internal/pycore_warnings.h new file mode 100755 index 0000000..73e5350 --- /dev/null +++ b/client/3rd/include/frame/python/internal/pycore_warnings.h @@ -0,0 +1,25 @@ +#ifndef Py_INTERNAL_WARNINGS_H +#define Py_INTERNAL_WARNINGS_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#include "object.h" + +struct _warnings_runtime_state { + /* Both 'filters' and 'onceregistry' can be set in warnings.py; + get_warnings_attr() will reset these variables accordingly. */ + PyObject *filters; /* List */ + PyObject *once_registry; /* Dict */ + PyObject *default_action; /* String */ + long filters_version; +}; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_WARNINGS_H */ diff --git a/client/3rd/include/frame/python/interpreteridobject.h b/client/3rd/include/frame/python/interpreteridobject.h new file mode 100755 index 0000000..e744fcd --- /dev/null +++ b/client/3rd/include/frame/python/interpreteridobject.h @@ -0,0 +1,17 @@ +#ifndef Py_INTERPRETERIDOBJECT_H +#define Py_INTERPRETERIDOBJECT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_INTERPRETERIDOBJECT_H +# include "cpython/interpreteridobject.h" +# undef Py_CPYTHON_INTERPRETERIDOBJECT_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERPRETERIDOBJECT_H */ diff --git a/client/3rd/include/frame/python/intrcheck.h b/client/3rd/include/frame/python/intrcheck.h new file mode 100755 index 0000000..e5bf5a8 --- /dev/null +++ b/client/3rd/include/frame/python/intrcheck.h @@ -0,0 +1,33 @@ + +#ifndef Py_INTRCHECK_H +#define Py_INTRCHECK_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(int) PyOS_InterruptOccurred(void); +PyAPI_FUNC(void) PyOS_InitInterrupts(void); +#ifdef HAVE_FORK +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03070000 +PyAPI_FUNC(void) PyOS_BeforeFork(void); +PyAPI_FUNC(void) PyOS_AfterFork_Parent(void); +PyAPI_FUNC(void) PyOS_AfterFork_Child(void); +#endif +#endif +/* Deprecated, please use PyOS_AfterFork_Child() instead */ +Py_DEPRECATED(3.7) PyAPI_FUNC(void) PyOS_AfterFork(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyOS_IsMainThread(void); +PyAPI_FUNC(void) _PySignal_AfterFork(void); + +#ifdef MS_WINDOWS +/* windows.h is not included by Python.h so use void* instead of HANDLE */ +PyAPI_FUNC(void*) _PyOS_SigintEvent(void); +#endif +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTRCHECK_H */ diff --git a/client/3rd/include/frame/python/iterobject.h b/client/3rd/include/frame/python/iterobject.h new file mode 100755 index 0000000..f61726f --- /dev/null +++ b/client/3rd/include/frame/python/iterobject.h @@ -0,0 +1,25 @@ +#ifndef Py_ITEROBJECT_H +#define Py_ITEROBJECT_H +/* Iterators (the basic kind, over a sequence) */ +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PySeqIter_Type; +PyAPI_DATA(PyTypeObject) PyCallIter_Type; +PyAPI_DATA(PyTypeObject) PyCmpWrapper_Type; + +#define PySeqIter_Check(op) (Py_TYPE(op) == &PySeqIter_Type) + +PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); + + +#define PyCallIter_Check(op) (Py_TYPE(op) == &PyCallIter_Type) + +PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ITEROBJECT_H */ + diff --git a/client/3rd/include/frame/python/listobject.h b/client/3rd/include/frame/python/listobject.h new file mode 100755 index 0000000..6057279 --- /dev/null +++ b/client/3rd/include/frame/python/listobject.h @@ -0,0 +1,81 @@ + +/* List object interface */ + +/* +Another generally useful object type is a list of object pointers. +This is a mutable type: the list items can be changed, and items can be +added or removed. Out-of-range indices or non-list objects are ignored. + +*** WARNING *** PyList_SetItem does not increment the new item's reference +count, but does decrement the reference count of the item it replaces, +if not nil. It does *decrement* the reference count if it is *not* +inserted in the list. Similarly, PyList_GetItem does not increment the +returned item's reference count. +*/ + +#ifndef Py_LISTOBJECT_H +#define Py_LISTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_VAR_HEAD + /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ + PyObject **ob_item; + + /* ob_item contains space for 'allocated' elements. The number + * currently in use is ob_size. + * Invariants: + * 0 <= ob_size <= allocated + * len(list) == ob_size + * ob_item == NULL implies ob_size == allocated == 0 + * list.sort() temporarily sets allocated to -1 to detect mutations. + * + * Items must normally not be NULL, except during construction when + * the list is not yet visible outside the function that builds it. + */ + Py_ssize_t allocated; +} PyListObject; +#endif + +PyAPI_DATA(PyTypeObject) PyList_Type; +PyAPI_DATA(PyTypeObject) PyListIter_Type; +PyAPI_DATA(PyTypeObject) PyListRevIter_Type; +PyAPI_DATA(PyTypeObject) PySortWrapper_Type; + +#define PyList_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS) +#define PyList_CheckExact(op) (Py_TYPE(op) == &PyList_Type) + +PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size); +PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *); +PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t); +PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyList_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t); +PyAPI_FUNC(int) PyList_SetSlice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); +PyAPI_FUNC(int) PyList_Sort(PyObject *); +PyAPI_FUNC(int) PyList_Reverse(PyObject *); +PyAPI_FUNC(PyObject *) PyList_AsTuple(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyList_Extend(PyListObject *, PyObject *); + +PyAPI_FUNC(int) PyList_ClearFreeList(void); +PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out); +#endif + +/* Macro, trading safety for speed */ +#ifndef Py_LIMITED_API +#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i]) +#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v)) +#define PyList_GET_SIZE(op) (assert(PyList_Check(op)),Py_SIZE(op)) +#define _PyList_ITEMS(op) (((PyListObject *)(op))->ob_item) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LISTOBJECT_H */ diff --git a/client/3rd/include/frame/python/longintrepr.h b/client/3rd/include/frame/python/longintrepr.h new file mode 100755 index 0000000..ff4155f --- /dev/null +++ b/client/3rd/include/frame/python/longintrepr.h @@ -0,0 +1,99 @@ +#ifndef Py_LIMITED_API +#ifndef Py_LONGINTREPR_H +#define Py_LONGINTREPR_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* This is published for the benefit of "friends" marshal.c and _decimal.c. */ + +/* Parameters of the integer representation. There are two different + sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit + integer type, and one set for 15-bit digits with each digit stored in an + unsigned short. The value of PYLONG_BITS_IN_DIGIT, defined either at + configure time or in pyport.h, is used to decide which digit size to use. + + Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits' + should be an unsigned integer type able to hold all integers up to + PyLong_BASE*PyLong_BASE-1. x_sub assumes that 'digit' is an unsigned type, + and that overflow is handled by taking the result modulo 2**N for some N > + PyLong_SHIFT. The majority of the code doesn't care about the precise + value of PyLong_SHIFT, but there are some notable exceptions: + + - long_pow() requires that PyLong_SHIFT be divisible by 5 + + - PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8 + + - long_hash() requires that PyLong_SHIFT is *strictly* less than the number + of bits in an unsigned long, as do the PyLong <-> long (or unsigned long) + conversion functions + + - the Python int <-> size_t/Py_ssize_t conversion functions expect that + PyLong_SHIFT is strictly less than the number of bits in a size_t + + - the marshal code currently expects that PyLong_SHIFT is a multiple of 15 + + - NSMALLNEGINTS and NSMALLPOSINTS should be small enough to fit in a single + digit; with the current values this forces PyLong_SHIFT >= 9 + + The values 15 and 30 should fit all of the above requirements, on any + platform. +*/ + +#if PYLONG_BITS_IN_DIGIT == 30 +typedef uint32_t digit; +typedef int32_t sdigit; /* signed variant of digit */ +typedef uint64_t twodigits; +typedef int64_t stwodigits; /* signed variant of twodigits */ +#define PyLong_SHIFT 30 +#define _PyLong_DECIMAL_SHIFT 9 /* max(e such that 10**e fits in a digit) */ +#define _PyLong_DECIMAL_BASE ((digit)1000000000) /* 10 ** DECIMAL_SHIFT */ +#elif PYLONG_BITS_IN_DIGIT == 15 +typedef unsigned short digit; +typedef short sdigit; /* signed variant of digit */ +typedef unsigned long twodigits; +typedef long stwodigits; /* signed variant of twodigits */ +#define PyLong_SHIFT 15 +#define _PyLong_DECIMAL_SHIFT 4 /* max(e such that 10**e fits in a digit) */ +#define _PyLong_DECIMAL_BASE ((digit)10000) /* 10 ** DECIMAL_SHIFT */ +#else +#error "PYLONG_BITS_IN_DIGIT should be 15 or 30" +#endif +#define PyLong_BASE ((digit)1 << PyLong_SHIFT) +#define PyLong_MASK ((digit)(PyLong_BASE - 1)) + +#if PyLong_SHIFT % 5 != 0 +#error "longobject.c requires that PyLong_SHIFT be divisible by 5" +#endif + +/* Long integer representation. + The absolute value of a number is equal to + SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i) + Negative numbers are represented with ob_size < 0; + zero is represented by ob_size == 0. + In a normalized number, ob_digit[abs(ob_size)-1] (the most significant + digit) is never zero. Also, in all cases, for all valid i, + 0 <= ob_digit[i] <= MASK. + The allocation function takes care of allocating extra memory + so that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available. + + CAUTION: Generic code manipulating subtypes of PyVarObject has to + aware that ints abuse ob_size's sign bit. +*/ + +struct _longobject { + PyObject_VAR_HEAD + digit ob_digit[1]; +}; + +PyAPI_FUNC(PyLongObject *) _PyLong_New(Py_ssize_t); + +/* Return a copy of src. */ +PyAPI_FUNC(PyObject *) _PyLong_Copy(PyLongObject *src); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LONGINTREPR_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/longobject.h b/client/3rd/include/frame/python/longobject.h new file mode 100755 index 0000000..1e7a58d --- /dev/null +++ b/client/3rd/include/frame/python/longobject.h @@ -0,0 +1,242 @@ +#ifndef Py_LONGOBJECT_H +#define Py_LONGOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Long (arbitrary precision) integer object interface */ + +typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */ + +PyAPI_DATA(PyTypeObject) PyLong_Type; + +#define PyLong_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS) +#define PyLong_CheckExact(op) (Py_TYPE(op) == &PyLong_Type) + +PyAPI_FUNC(PyObject *) PyLong_FromLong(long); +PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long); +PyAPI_FUNC(PyObject *) PyLong_FromSize_t(size_t); +PyAPI_FUNC(PyObject *) PyLong_FromSsize_t(Py_ssize_t); +PyAPI_FUNC(PyObject *) PyLong_FromDouble(double); +PyAPI_FUNC(long) PyLong_AsLong(PyObject *); +PyAPI_FUNC(long) PyLong_AsLongAndOverflow(PyObject *, int *); +PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *); +PyAPI_FUNC(size_t) PyLong_AsSize_t(PyObject *); +PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *); +PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyLong_AsInt(PyObject *); +#endif +PyAPI_FUNC(PyObject *) PyLong_GetInfo(void); + +/* It may be useful in the future. I've added it in the PyInt -> PyLong + cleanup to keep the extra information. [CH] */ +#define PyLong_AS_LONG(op) PyLong_AsLong(op) + +/* Issue #1983: pid_t can be longer than a C long on some systems */ +#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT +#define _Py_PARSE_PID "i" +#define PyLong_FromPid PyLong_FromLong +#define PyLong_AsPid PyLong_AsLong +#elif SIZEOF_PID_T == SIZEOF_LONG +#define _Py_PARSE_PID "l" +#define PyLong_FromPid PyLong_FromLong +#define PyLong_AsPid PyLong_AsLong +#elif defined(SIZEOF_LONG_LONG) && SIZEOF_PID_T == SIZEOF_LONG_LONG +#define _Py_PARSE_PID "L" +#define PyLong_FromPid PyLong_FromLongLong +#define PyLong_AsPid PyLong_AsLongLong +#else +#error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)" +#endif /* SIZEOF_PID_T */ + +#if SIZEOF_VOID_P == SIZEOF_INT +# define _Py_PARSE_INTPTR "i" +# define _Py_PARSE_UINTPTR "I" +#elif SIZEOF_VOID_P == SIZEOF_LONG +# define _Py_PARSE_INTPTR "l" +# define _Py_PARSE_UINTPTR "k" +#elif defined(SIZEOF_LONG_LONG) && SIZEOF_VOID_P == SIZEOF_LONG_LONG +# define _Py_PARSE_INTPTR "L" +# define _Py_PARSE_UINTPTR "K" +#else +# error "void* different in size from int, long and long long" +#endif /* SIZEOF_VOID_P */ + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyLong_UnsignedShort_Converter(PyObject *, void *); +PyAPI_FUNC(int) _PyLong_UnsignedInt_Converter(PyObject *, void *); +PyAPI_FUNC(int) _PyLong_UnsignedLong_Converter(PyObject *, void *); +PyAPI_FUNC(int) _PyLong_UnsignedLongLong_Converter(PyObject *, void *); +PyAPI_FUNC(int) _PyLong_Size_t_Converter(PyObject *, void *); +#endif + +/* Used by Python/mystrtoul.c, _PyBytes_FromHex(), + _PyBytes_DecodeEscapeRecode(), etc. */ +#ifndef Py_LIMITED_API +PyAPI_DATA(unsigned char) _PyLong_DigitValue[256]; +#endif + +/* _PyLong_Frexp returns a double x and an exponent e such that the + true value is approximately equal to x * 2**e. e is >= 0. x is + 0.0 if and only if the input is 0 (in which case, e and x are both + zeroes); otherwise, 0.5 <= abs(x) < 1.0. On overflow, which is + possible if the number of bits doesn't fit into a Py_ssize_t, sets + OverflowError and returns -1.0 for x, 0 for e. */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e); +#endif + +PyAPI_FUNC(double) PyLong_AsDouble(PyObject *); +PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *); +PyAPI_FUNC(void *) PyLong_AsVoidPtr(PyObject *); + +PyAPI_FUNC(PyObject *) PyLong_FromLongLong(long long); +PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned long long); +PyAPI_FUNC(long long) PyLong_AsLongLong(PyObject *); +PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLong(PyObject *); +PyAPI_FUNC(unsigned long long) PyLong_AsUnsignedLongLongMask(PyObject *); +PyAPI_FUNC(long long) PyLong_AsLongLongAndOverflow(PyObject *, int *); + +PyAPI_FUNC(PyObject *) PyLong_FromString(const char *, char **, int); +#ifndef Py_LIMITED_API +Py_DEPRECATED(3.3) +PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int); +PyAPI_FUNC(PyObject *) PyLong_FromUnicodeObject(PyObject *u, int base); +PyAPI_FUNC(PyObject *) _PyLong_FromBytes(const char *, Py_ssize_t, int); +#endif + +#ifndef Py_LIMITED_API +/* _PyLong_Sign. Return 0 if v is 0, -1 if v < 0, +1 if v > 0. + v must not be NULL, and must be a normalized long. + There are no error cases. +*/ +PyAPI_FUNC(int) _PyLong_Sign(PyObject *v); + + +/* _PyLong_NumBits. Return the number of bits needed to represent the + absolute value of a long. For example, this returns 1 for 1 and -1, 2 + for 2 and -2, and 2 for 3 and -3. It returns 0 for 0. + v must not be NULL, and must be a normalized long. + (size_t)-1 is returned and OverflowError set if the true result doesn't + fit in a size_t. +*/ +PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v); + +/* _PyLong_DivmodNear. Given integers a and b, compute the nearest + integer q to the exact quotient a / b, rounding to the nearest even integer + in the case of a tie. Return (q, r), where r = a - q*b. The remainder r + will satisfy abs(r) <= abs(b)/2, with equality possible only if q is + even. +*/ +PyAPI_FUNC(PyObject *) _PyLong_DivmodNear(PyObject *, PyObject *); + +/* _PyLong_FromByteArray: View the n unsigned bytes as a binary integer in + base 256, and return a Python int with the same numeric value. + If n is 0, the integer is 0. Else: + If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB; + else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the + LSB. + If is_signed is 0/false, view the bytes as a non-negative integer. + If is_signed is 1/true, view the bytes as a 2's-complement integer, + non-negative if bit 0x80 of the MSB is clear, negative if set. + Error returns: + + Return NULL with the appropriate exception set if there's not + enough memory to create the Python int. +*/ +PyAPI_FUNC(PyObject *) _PyLong_FromByteArray( + const unsigned char* bytes, size_t n, + int little_endian, int is_signed); + +/* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long + v to a base-256 integer, stored in array bytes. Normally return 0, + return -1 on error. + If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at + bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and + the LSB at bytes[n-1]. + If is_signed is 0/false, it's an error if v < 0; else (v >= 0) n bytes + are filled and there's nothing special about bit 0x80 of the MSB. + If is_signed is 1/true, bytes is filled with the 2's-complement + representation of v's value. Bit 0x80 of the MSB is the sign bit. + Error returns (-1): + + is_signed is 0 and v < 0. TypeError is set in this case, and bytes + isn't altered. + + n isn't big enough to hold the full mathematical value of v. For + example, if is_signed is 0 and there are more digits in the v than + fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of + being large enough to hold a sign bit. OverflowError is set in this + case, but bytes holds the least-significant n bytes of the true value. +*/ +PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v, + unsigned char* bytes, size_t n, + int little_endian, int is_signed); + +/* _PyLong_FromNbInt: Convert the given object to a PyLongObject + using the nb_int slot, if available. Raise TypeError if either the + nb_int slot is not available or the result of the call to nb_int + returns something not of type int. +*/ +PyAPI_FUNC(PyObject *) _PyLong_FromNbInt(PyObject *); + +/* Convert the given object to a PyLongObject using the nb_index or + nb_int slots, if available (the latter is deprecated). + Raise TypeError if either nb_index and nb_int slots are not + available or the result of the call to nb_index or nb_int + returns something not of type int. + Should be replaced with PyNumber_Index after the end of the + deprecation period. +*/ +PyAPI_FUNC(PyObject *) _PyLong_FromNbIndexOrNbInt(PyObject *); + +/* _PyLong_Format: Convert the long to a string object with given base, + appending a base prefix of 0[box] if base is 2, 8 or 16. */ +PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *obj, int base); + +PyAPI_FUNC(int) _PyLong_FormatWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + int base, + int alternate); + +PyAPI_FUNC(char*) _PyLong_FormatBytesWriter( + _PyBytesWriter *writer, + char *str, + PyObject *obj, + int base, + int alternate); + +/* Format the object based on the format_spec, as defined in PEP 3101 + (Advanced String Formatting). */ +PyAPI_FUNC(int) _PyLong_FormatAdvancedWriter( + _PyUnicodeWriter *writer, + PyObject *obj, + PyObject *format_spec, + Py_ssize_t start, + Py_ssize_t end); +#endif /* Py_LIMITED_API */ + +/* These aren't really part of the int object, but they're handy. The + functions are in Python/mystrtoul.c. + */ +PyAPI_FUNC(unsigned long) PyOS_strtoul(const char *, char **, int); +PyAPI_FUNC(long) PyOS_strtol(const char *, char **, int); + +#ifndef Py_LIMITED_API +/* For use by the gcd function in mathmodule.c */ +PyAPI_FUNC(PyObject *) _PyLong_GCD(PyObject *, PyObject *); +#endif /* !Py_LIMITED_API */ + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyObject *) _PyLong_Zero; +PyAPI_DATA(PyObject *) _PyLong_One; + +PyAPI_FUNC(PyObject *) _PyLong_Rshift(PyObject *, size_t); +PyAPI_FUNC(PyObject *) _PyLong_Lshift(PyObject *, size_t); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_LONGOBJECT_H */ diff --git a/client/3rd/include/frame/python/marshal.h b/client/3rd/include/frame/python/marshal.h new file mode 100755 index 0000000..09d9337 --- /dev/null +++ b/client/3rd/include/frame/python/marshal.h @@ -0,0 +1,28 @@ + +/* Interface for marshal.c */ + +#ifndef Py_MARSHAL_H +#define Py_MARSHAL_H +#ifdef __cplusplus +extern "C" { +#endif + +#define Py_MARSHAL_VERSION 4 + +PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int); +PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int); +PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *); +PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *); +PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *); +PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *); +#endif +PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *, + Py_ssize_t); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MARSHAL_H */ diff --git a/client/3rd/include/frame/python/memoryobject.h b/client/3rd/include/frame/python/memoryobject.h new file mode 100755 index 0000000..990a716 --- /dev/null +++ b/client/3rd/include/frame/python/memoryobject.h @@ -0,0 +1,72 @@ +/* Memory view object. In Python this is available as "memoryview". */ + +#ifndef Py_MEMORYOBJECT_H +#define Py_MEMORYOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyManagedBuffer_Type; +#endif +PyAPI_DATA(PyTypeObject) PyMemoryView_Type; + +#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type) + +#ifndef Py_LIMITED_API +/* Get a pointer to the memoryview's private copy of the exporter's buffer. */ +#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view) +/* Get a pointer to the exporting object (this may be NULL!). */ +#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj) +#endif + +PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, + int flags); +#endif +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); +#endif +PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, + int buffertype, + char order); + + +/* The structs are declared here so that macros can work, but they shouldn't + be considered public. Don't access their fields directly, use the macros + and functions instead! */ +#ifndef Py_LIMITED_API +#define _Py_MANAGED_BUFFER_RELEASED 0x001 /* access to exporter blocked */ +#define _Py_MANAGED_BUFFER_FREE_FORMAT 0x002 /* free format */ +typedef struct { + PyObject_HEAD + int flags; /* state flags */ + Py_ssize_t exports; /* number of direct memoryview exports */ + Py_buffer master; /* snapshot buffer obtained from the original exporter */ +} _PyManagedBufferObject; + + +/* memoryview state flags */ +#define _Py_MEMORYVIEW_RELEASED 0x001 /* access to master buffer blocked */ +#define _Py_MEMORYVIEW_C 0x002 /* C-contiguous layout */ +#define _Py_MEMORYVIEW_FORTRAN 0x004 /* Fortran contiguous layout */ +#define _Py_MEMORYVIEW_SCALAR 0x008 /* scalar: ndim = 0 */ +#define _Py_MEMORYVIEW_PIL 0x010 /* PIL-style layout */ + +typedef struct { + PyObject_VAR_HEAD + _PyManagedBufferObject *mbuf; /* managed buffer */ + Py_hash_t hash; /* hash value for read-only views */ + int flags; /* state flags */ + Py_ssize_t exports; /* number of buffer re-exports */ + Py_buffer view; /* private copy of the exporter's view */ + PyObject *weakreflist; + Py_ssize_t ob_array[1]; /* shape, strides, suboffsets */ +} PyMemoryViewObject; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MEMORYOBJECT_H */ diff --git a/client/3rd/include/frame/python/methodobject.h b/client/3rd/include/frame/python/methodobject.h new file mode 100755 index 0000000..ba3b887 --- /dev/null +++ b/client/3rd/include/frame/python/methodobject.h @@ -0,0 +1,131 @@ + +/* Method object interface */ + +#ifndef Py_METHODOBJECT_H +#define Py_METHODOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* This is about the type 'builtin_function_or_method', + not Python methods in user-defined classes. See classobject.h + for the latter. */ + +PyAPI_DATA(PyTypeObject) PyCFunction_Type; + +#define PyCFunction_Check(op) (Py_TYPE(op) == &PyCFunction_Type) + +typedef PyObject *(*PyCFunction)(PyObject *, PyObject *); +typedef PyObject *(*_PyCFunctionFast) (PyObject *, PyObject *const *, Py_ssize_t); +typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *, + PyObject *); +typedef PyObject *(*_PyCFunctionFastWithKeywords) (PyObject *, + PyObject *const *, Py_ssize_t, + PyObject *); +typedef PyObject *(*PyNoArgsFunction)(PyObject *); + +PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *); +PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *); +PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *); + +/* Macros for direct access to these values. Type checks are *not* + done, so use with care. */ +#ifndef Py_LIMITED_API +#define PyCFunction_GET_FUNCTION(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_meth) +#define PyCFunction_GET_SELF(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_flags & METH_STATIC ? \ + NULL : ((PyCFunctionObject *)func) -> m_self) +#define PyCFunction_GET_FLAGS(func) \ + (((PyCFunctionObject *)func) -> m_ml -> ml_flags) +#endif +PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyCFunction_FastCallDict(PyObject *func, + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwargs); +#endif + +struct PyMethodDef { + const char *ml_name; /* The name of the built-in function/method */ + PyCFunction ml_meth; /* The C function that implements it */ + int ml_flags; /* Combination of METH_xxx flags, which mostly + describe the args expected by the C func */ + const char *ml_doc; /* The __doc__ attribute, or NULL */ +}; +typedef struct PyMethodDef PyMethodDef; + +#define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL) +PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, + PyObject *); + +/* Flag passed to newmethodobject */ +/* #define METH_OLDARGS 0x0000 -- unsupported now */ +#define METH_VARARGS 0x0001 +#define METH_KEYWORDS 0x0002 +/* METH_NOARGS and METH_O must not be combined with the flags above. */ +#define METH_NOARGS 0x0004 +#define METH_O 0x0008 + +/* METH_CLASS and METH_STATIC are a little different; these control + the construction of methods for a class. These cannot be used for + functions in modules. */ +#define METH_CLASS 0x0010 +#define METH_STATIC 0x0020 + +/* METH_COEXIST allows a method to be entered even though a slot has + already filled the entry. When defined, the flag allows a separate + method, "__contains__" for example, to coexist with a defined + slot like sq_contains. */ + +#define METH_COEXIST 0x0040 + +#ifndef Py_LIMITED_API +#define METH_FASTCALL 0x0080 +#endif + +/* This bit is preserved for Stackless Python */ +#ifdef STACKLESS +#define METH_STACKLESS 0x0100 +#else +#define METH_STACKLESS 0x0000 +#endif + +#ifndef Py_LIMITED_API +typedef struct { + PyObject_HEAD + PyMethodDef *m_ml; /* Description of the C function to call */ + PyObject *m_self; /* Passed as 'self' arg to the C func, can be NULL */ + PyObject *m_module; /* The __module__ attribute, can be anything */ + PyObject *m_weakreflist; /* List of weak references */ + vectorcallfunc vectorcall; +} PyCFunctionObject; + +PyAPI_FUNC(PyObject *) _PyMethodDef_RawFastCallDict( + PyMethodDef *method, + PyObject *self, + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwargs); + +PyAPI_FUNC(PyObject *) _PyMethodDef_RawFastCallKeywords( + PyMethodDef *method, + PyObject *self, + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwnames); +#endif + +PyAPI_FUNC(int) PyCFunction_ClearFreeList(void); + +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyCFunction_DebugMallocStats(FILE *out); +PyAPI_FUNC(void) _PyMethod_DebugMallocStats(FILE *out); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_METHODOBJECT_H */ diff --git a/client/3rd/include/frame/python/modsupport.h b/client/3rd/include/frame/python/modsupport.h new file mode 100755 index 0000000..f90ede4 --- /dev/null +++ b/client/3rd/include/frame/python/modsupport.h @@ -0,0 +1,248 @@ + +#ifndef Py_MODSUPPORT_H +#define Py_MODSUPPORT_H +#ifdef __cplusplus +extern "C" { +#endif + +/* Module support interface */ + +#include + +/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier + to mean Py_ssize_t */ +#ifdef PY_SSIZE_T_CLEAN +#define PyArg_Parse _PyArg_Parse_SizeT +#define PyArg_ParseTuple _PyArg_ParseTuple_SizeT +#define PyArg_ParseTupleAndKeywords _PyArg_ParseTupleAndKeywords_SizeT +#define PyArg_VaParse _PyArg_VaParse_SizeT +#define PyArg_VaParseTupleAndKeywords _PyArg_VaParseTupleAndKeywords_SizeT +#define Py_BuildValue _Py_BuildValue_SizeT +#define Py_VaBuildValue _Py_VaBuildValue_SizeT +#ifndef Py_LIMITED_API +#define _Py_VaBuildStack _Py_VaBuildStack_SizeT +#endif +#else +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list); +PyAPI_FUNC(PyObject **) _Py_VaBuildStack_SizeT( + PyObject **small_stack, + Py_ssize_t small_stack_len, + const char *format, + va_list va, + Py_ssize_t *p_nargs); +#endif /* !Py_LIMITED_API */ +#endif + +/* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */ +#if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...); +PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...); +PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *, + const char *, char **, ...); +PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list); +PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *, + const char *, char **, va_list); +#endif +PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *); +PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...); +PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...); +PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...); + + +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) _PyArg_UnpackStack( + PyObject *const *args, + Py_ssize_t nargs, + const char *name, + Py_ssize_t min, + Py_ssize_t max, + ...); + +PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kwargs); +PyAPI_FUNC(int) _PyArg_NoPositional(const char *funcname, PyObject *args); +#define _PyArg_NoKeywords(funcname, kwargs) \ + ((kwargs) == NULL || _PyArg_NoKeywords((funcname), (kwargs))) +#define _PyArg_NoPositional(funcname, args) \ + ((args) == NULL || _PyArg_NoPositional((funcname), (args))) + +PyAPI_FUNC(void) _PyArg_BadArgument(const char *, const char *, const char *, PyObject *); +PyAPI_FUNC(int) _PyArg_CheckPositional(const char *, Py_ssize_t, + Py_ssize_t, Py_ssize_t); +#define _PyArg_CheckPositional(funcname, nargs, min, max) \ + (((min) <= (nargs) && (nargs) <= (max)) \ + || _PyArg_CheckPositional((funcname), (nargs), (min), (max))) + +#endif + +PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject **) _Py_VaBuildStack( + PyObject **small_stack, + Py_ssize_t small_stack_len, + const char *format, + va_list va, + Py_ssize_t *p_nargs); +#endif + +#ifndef Py_LIMITED_API +typedef struct _PyArg_Parser { + const char *format; + const char * const *keywords; + const char *fname; + const char *custom_msg; + int pos; /* number of positional-only arguments */ + int min; /* minimal number of arguments */ + int max; /* maximal number of positional arguments */ + PyObject *kwtuple; /* tuple of keyword parameter names */ + struct _PyArg_Parser *next; +} _PyArg_Parser; +#ifdef PY_SSIZE_T_CLEAN +#define _PyArg_ParseTupleAndKeywordsFast _PyArg_ParseTupleAndKeywordsFast_SizeT +#define _PyArg_ParseStack _PyArg_ParseStack_SizeT +#define _PyArg_ParseStackAndKeywords _PyArg_ParseStackAndKeywords_SizeT +#define _PyArg_VaParseTupleAndKeywordsFast _PyArg_VaParseTupleAndKeywordsFast_SizeT +#endif +PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *, + struct _PyArg_Parser *, ...); +PyAPI_FUNC(int) _PyArg_ParseStack( + PyObject *const *args, + Py_ssize_t nargs, + const char *format, + ...); +PyAPI_FUNC(int) _PyArg_ParseStackAndKeywords( + PyObject *const *args, + Py_ssize_t nargs, + PyObject *kwnames, + struct _PyArg_Parser *, + ...); +PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *, + struct _PyArg_Parser *, va_list); +PyAPI_FUNC(PyObject * const *) _PyArg_UnpackKeywords( + PyObject *const *args, Py_ssize_t nargs, + PyObject *kwargs, PyObject *kwnames, + struct _PyArg_Parser *parser, + int minpos, int maxpos, int minkw, + PyObject **buf); +#define _PyArg_UnpackKeywords(args, nargs, kwargs, kwnames, parser, minpos, maxpos, minkw, buf) \ + (((minkw) == 0 && (kwargs) == NULL && (kwnames) == NULL && \ + (minpos) <= (nargs) && (nargs) <= (maxpos) && args != NULL) ? (args) : \ + _PyArg_UnpackKeywords((args), (nargs), (kwargs), (kwnames), (parser), \ + (minpos), (maxpos), (minkw), (buf))) + +void _PyArg_Fini(void); +#endif /* Py_LIMITED_API */ + +PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *); +PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long); +PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *); +#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c) +#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c) + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *); +PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *); +PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def); +#endif + +#define Py_CLEANUP_SUPPORTED 0x20000 + +#define PYTHON_API_VERSION 1013 +#define PYTHON_API_STRING "1013" +/* The API version is maintained (independently from the Python version) + so we can detect mismatches between the interpreter and dynamically + loaded modules. These are diagnosed by an error message but + the module is still loaded (because the mismatch can only be tested + after loading the module). The error message is intended to + explain the core dump a few seconds later. + + The symbol PYTHON_API_STRING defines the same value as a string + literal. *** PLEASE MAKE SURE THE DEFINITIONS MATCH. *** + + Please add a line or two to the top of this log for each API + version change: + + 22-Feb-2006 MvL 1013 PEP 353 - long indices for sequence lengths + + 19-Aug-2002 GvR 1012 Changes to string object struct for + interning changes, saving 3 bytes. + + 17-Jul-2001 GvR 1011 Descr-branch, just to be on the safe side + + 25-Jan-2001 FLD 1010 Parameters added to PyCode_New() and + PyFrame_New(); Python 2.1a2 + + 14-Mar-2000 GvR 1009 Unicode API added + + 3-Jan-1999 GvR 1007 Decided to change back! (Don't reuse 1008!) + + 3-Dec-1998 GvR 1008 Python 1.5.2b1 + + 18-Jan-1997 GvR 1007 string interning and other speedups + + 11-Oct-1996 GvR renamed Py_Ellipses to Py_Ellipsis :-( + + 30-Jul-1996 GvR Slice and ellipses syntax added + + 23-Jul-1996 GvR For 1.4 -- better safe than sorry this time :-) + + 7-Nov-1995 GvR Keyword arguments (should've been done at 1.3 :-( ) + + 10-Jan-1995 GvR Renamed globals to new naming scheme + + 9-Jan-1995 GvR Initial version (incompatible with older API) +*/ + +/* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of + Python 3, it will stay at the value of 3; changes to the limited API + must be performed in a strictly backwards-compatible manner. */ +#define PYTHON_ABI_VERSION 3 +#define PYTHON_ABI_STRING "3" + +#ifdef Py_TRACE_REFS + /* When we are tracing reference counts, rename module creation functions so + modules compiled with incompatible settings will generate a + link-time error. */ + #define PyModule_Create2 PyModule_Create2TraceRefs + #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs +#endif + +PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*, + int apiver); +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) _PyModule_CreateInitialized(struct PyModuleDef*, + int apiver); +#endif + +#ifdef Py_LIMITED_API +#define PyModule_Create(module) \ + PyModule_Create2(module, PYTHON_ABI_VERSION) +#else +#define PyModule_Create(module) \ + PyModule_Create2(module, PYTHON_API_VERSION) +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def, + PyObject *spec, + int module_api_version); + +#ifdef Py_LIMITED_API +#define PyModule_FromDefAndSpec(module, spec) \ + PyModule_FromDefAndSpec2(module, spec, PYTHON_ABI_VERSION) +#else +#define PyModule_FromDefAndSpec(module, spec) \ + PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION) +#endif /* Py_LIMITED_API */ +#endif /* New in 3.5 */ + +#ifndef Py_LIMITED_API +PyAPI_DATA(const char *) _Py_PackageContext; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MODSUPPORT_H */ diff --git a/client/3rd/include/frame/python/moduleobject.h b/client/3rd/include/frame/python/moduleobject.h new file mode 100755 index 0000000..e246fd2 --- /dev/null +++ b/client/3rd/include/frame/python/moduleobject.h @@ -0,0 +1,90 @@ + +/* Module object interface */ + +#ifndef Py_MODULEOBJECT_H +#define Py_MODULEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_DATA(PyTypeObject) PyModule_Type; + +#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) +#define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type) + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyModule_NewObject( + PyObject *name + ); +#endif +PyAPI_FUNC(PyObject *) PyModule_New( + const char *name /* UTF-8 encoded string */ + ); +PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); +#endif +PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); +Py_DEPRECATED(3.2) PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *); +PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); +#ifndef Py_LIMITED_API +PyAPI_FUNC(void) _PyModule_Clear(PyObject *); +PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *); +PyAPI_FUNC(int) _PyModuleSpec_IsInitializing(PyObject *); +#endif +PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*); +PyAPI_FUNC(void*) PyModule_GetState(PyObject*); + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*); +PyAPI_DATA(PyTypeObject) PyModuleDef_Type; +#endif + +typedef struct PyModuleDef_Base { + PyObject_HEAD + PyObject* (*m_init)(void); + Py_ssize_t m_index; + PyObject* m_copy; +} PyModuleDef_Base; + +#define PyModuleDef_HEAD_INIT { \ + PyObject_HEAD_INIT(NULL) \ + NULL, /* m_init */ \ + 0, /* m_index */ \ + NULL, /* m_copy */ \ + } + +struct PyModuleDef_Slot; +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +/* New in 3.5 */ +typedef struct PyModuleDef_Slot{ + int slot; + void *value; +} PyModuleDef_Slot; + +#define Py_mod_create 1 +#define Py_mod_exec 2 + +#ifndef Py_LIMITED_API +#define _Py_mod_LAST_SLOT 2 +#endif + +#endif /* New in 3.5 */ + +typedef struct PyModuleDef{ + PyModuleDef_Base m_base; + const char* m_name; + const char* m_doc; + Py_ssize_t m_size; + PyMethodDef *m_methods; + struct PyModuleDef_Slot* m_slots; + traverseproc m_traverse; + inquiry m_clear; + freefunc m_free; +} PyModuleDef; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_MODULEOBJECT_H */ diff --git a/client/3rd/include/frame/python/namespaceobject.h b/client/3rd/include/frame/python/namespaceobject.h new file mode 100755 index 0000000..0c8d95c --- /dev/null +++ b/client/3rd/include/frame/python/namespaceobject.h @@ -0,0 +1,19 @@ + +/* simple namespace object interface */ + +#ifndef NAMESPACEOBJECT_H +#define NAMESPACEOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API +PyAPI_DATA(PyTypeObject) _PyNamespace_Type; + +PyAPI_FUNC(PyObject *) _PyNamespace_New(PyObject *kwds); +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !NAMESPACEOBJECT_H */ diff --git a/client/3rd/include/frame/python/node.h b/client/3rd/include/frame/python/node.h new file mode 100755 index 0000000..2b39074 --- /dev/null +++ b/client/3rd/include/frame/python/node.h @@ -0,0 +1,48 @@ + +/* Parse tree node interface */ + +#ifndef Py_NODE_H +#define Py_NODE_H +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _node { + short n_type; + char *n_str; + int n_lineno; + int n_col_offset; + int n_nchildren; + struct _node *n_child; + int n_end_lineno; + int n_end_col_offset; +} node; + +PyAPI_FUNC(node *) PyNode_New(int type); +PyAPI_FUNC(int) PyNode_AddChild(node *n, int type, + char *str, int lineno, int col_offset, + int end_lineno, int end_col_offset); +PyAPI_FUNC(void) PyNode_Free(node *n); +#ifndef Py_LIMITED_API +PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n); +#endif + +/* Node access functions */ +#define NCH(n) ((n)->n_nchildren) + +#define CHILD(n, i) (&(n)->n_child[i]) +#define RCHILD(n, i) (CHILD(n, NCH(n) + i)) +#define TYPE(n) ((n)->n_type) +#define STR(n) ((n)->n_str) +#define LINENO(n) ((n)->n_lineno) + +/* Assert that the type of a node is what we expect */ +#define REQ(n, type) assert(TYPE(n) == (type)) + +PyAPI_FUNC(void) PyNode_ListTree(node *); +void _PyNode_FinalizeEndPos(node *n); // helper also used in parsetok.c + +#ifdef __cplusplus +} +#endif +#endif /* !Py_NODE_H */ diff --git a/client/3rd/include/frame/python/object.h b/client/3rd/include/frame/python/object.h new file mode 100755 index 0000000..f05ce46 --- /dev/null +++ b/client/3rd/include/frame/python/object.h @@ -0,0 +1,753 @@ +#ifndef Py_OBJECT_H +#define Py_OBJECT_H + +#include "pymem.h" /* _Py_tracemalloc_config */ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Object and type object interface */ + +/* +Objects are structures allocated on the heap. Special rules apply to +the use of objects to ensure they are properly garbage-collected. +Objects are never allocated statically or on the stack; they must be +accessed through special macros and functions only. (Type objects are +exceptions to the first rule; the standard types are represented by +statically initialized type objects, although work on type/class unification +for Python 2.2 made it possible to have heap-allocated type objects too). + +An object has a 'reference count' that is increased or decreased when a +pointer to the object is copied or deleted; when the reference count +reaches zero there are no references to the object left and it can be +removed from the heap. + +An object has a 'type' that determines what it represents and what kind +of data it contains. An object's type is fixed when it is created. +Types themselves are represented as objects; an object contains a +pointer to the corresponding type object. The type itself has a type +pointer pointing to the object representing the type 'type', which +contains a pointer to itself!. + +Objects do not float around in memory; once allocated an object keeps +the same size and address. Objects that must hold variable-size data +can contain pointers to variable-size parts of the object. Not all +objects of the same type have the same size; but the size cannot change +after allocation. (These restrictions are made so a reference to an +object can be simply a pointer -- moving an object would require +updating all the pointers, and changing an object's size would require +moving it if there was another object right next to it.) + +Objects are always accessed through pointers of the type 'PyObject *'. +The type 'PyObject' is a structure that only contains the reference count +and the type pointer. The actual memory allocated for an object +contains other data that can only be accessed after casting the pointer +to a pointer to a longer structure type. This longer type must start +with the reference count and type fields; the macro PyObject_HEAD should be +used for this (to accommodate for future changes). The implementation +of a particular object type can cast the object pointer to the proper +type and back. + +A standard interface exists for objects that contain an array of items +whose size is determined when the object is allocated. +*/ + +/* Py_DEBUG implies Py_REF_DEBUG. */ +#if defined(Py_DEBUG) && !defined(Py_REF_DEBUG) +//#define Py_REF_DEBUG +#endif + +#if defined(Py_LIMITED_API) && defined(Py_REF_DEBUG) +#error Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, and Py_REF_DEBUG +#endif + + +#ifdef Py_TRACE_REFS +/* Define pointers to support a doubly-linked list of all live heap objects. */ +#define _PyObject_HEAD_EXTRA \ + struct _object *_ob_next; \ + struct _object *_ob_prev; + +#define _PyObject_EXTRA_INIT 0, 0, + +#else +#define _PyObject_HEAD_EXTRA +#define _PyObject_EXTRA_INIT +#endif + +/* PyObject_HEAD defines the initial segment of every PyObject. */ +#define PyObject_HEAD PyObject ob_base; + +#define PyObject_HEAD_INIT(type) \ + { _PyObject_EXTRA_INIT \ + 1, type }, + +#define PyVarObject_HEAD_INIT(type, size) \ + { PyObject_HEAD_INIT(type) size }, + +/* PyObject_VAR_HEAD defines the initial segment of all variable-size + * container objects. These end with a declaration of an array with 1 + * element, but enough space is malloc'ed so that the array actually + * has room for ob_size elements. Note that ob_size is an element count, + * not necessarily a byte count. + */ +#define PyObject_VAR_HEAD PyVarObject ob_base; +#define Py_INVALID_SIZE (Py_ssize_t)-1 + +/* Nothing is actually declared to be a PyObject, but every pointer to + * a Python object can be cast to a PyObject*. This is inheritance built + * by hand. Similarly every pointer to a variable-size Python object can, + * in addition, be cast to PyVarObject*. + */ +typedef struct _object { + _PyObject_HEAD_EXTRA + Py_ssize_t ob_refcnt; + struct _typeobject *ob_type; +} PyObject; + +/* Cast argument to PyObject* type. */ +#define _PyObject_CAST(op) ((PyObject*)(op)) + +typedef struct { + PyObject ob_base; + Py_ssize_t ob_size; /* Number of items in variable part */ +} PyVarObject; + +/* Cast argument to PyVarObject* type. */ +#define _PyVarObject_CAST(op) ((PyVarObject*)(op)) + +#define Py_REFCNT(ob) (_PyObject_CAST(ob)->ob_refcnt) +#define Py_TYPE(ob) (_PyObject_CAST(ob)->ob_type) +#define Py_SIZE(ob) (_PyVarObject_CAST(ob)->ob_size) + +/* +Type objects contain a string containing the type name (to help somewhat +in debugging), the allocation parameters (see PyObject_New() and +PyObject_NewVar()), +and methods for accessing objects of the type. Methods are optional, a +nil pointer meaning that particular kind of access is not available for +this type. The Py_DECREF() macro uses the tp_dealloc method without +checking for a nil pointer; it should always be implemented except if +the implementation can guarantee that the reference count will never +reach zero (e.g., for statically allocated type objects). + +NB: the methods for certain type groups are now contained in separate +method blocks. +*/ + +typedef PyObject * (*unaryfunc)(PyObject *); +typedef PyObject * (*binaryfunc)(PyObject *, PyObject *); +typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *); +typedef int (*inquiry)(PyObject *); +typedef Py_ssize_t (*lenfunc)(PyObject *); +typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t); +typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t); +typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *); +typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); +typedef int(*objobjargproc)(PyObject *, PyObject *, PyObject *); + +typedef int (*objobjproc)(PyObject *, PyObject *); +typedef int (*visitproc)(PyObject *, void *); +typedef int (*traverseproc)(PyObject *, visitproc, void *); + + +typedef void (*freefunc)(void *); +typedef void (*destructor)(PyObject *); +typedef PyObject *(*getattrfunc)(PyObject *, char *); +typedef PyObject *(*getattrofunc)(PyObject *, PyObject *); +typedef int (*setattrfunc)(PyObject *, char *, PyObject *); +typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *); +typedef PyObject *(*reprfunc)(PyObject *); +typedef Py_hash_t (*hashfunc)(PyObject *); +typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int); +typedef PyObject *(*getiterfunc) (PyObject *); +typedef PyObject *(*iternextfunc) (PyObject *); +typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *); +typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *); +typedef int (*initproc)(PyObject *, PyObject *, PyObject *); +typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *); +typedef PyObject *(*allocfunc)(struct _typeobject *, Py_ssize_t); + +#ifdef Py_LIMITED_API +/* In Py_LIMITED_API, PyTypeObject is an opaque structure. */ +typedef struct _typeobject PyTypeObject; +#else +/* PyTypeObject is defined in cpython/object.h */ +#endif + +typedef struct{ + int slot; /* slot id, see below */ + void *pfunc; /* function pointer */ +} PyType_Slot; + +typedef struct{ + const char* name; + int basicsize; + int itemsize; + unsigned int flags; + PyType_Slot *slots; /* terminated by slot==0. */ +} PyType_Spec; + +PyAPI_FUNC(PyObject*) PyType_FromSpec(PyType_Spec*); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(PyObject*) PyType_FromSpecWithBases(PyType_Spec*, PyObject*); +#endif +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 +PyAPI_FUNC(void*) PyType_GetSlot(struct _typeobject*, int); +#endif + +/* Generic type check */ +PyAPI_FUNC(int) PyType_IsSubtype(struct _typeobject *, struct _typeobject *); +#define PyObject_TypeCheck(ob, tp) \ + (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp))) + +PyAPI_DATA(struct _typeobject) PyType_Type; /* built-in 'type' */ +PyAPI_DATA(struct _typeobject) PyBaseObject_Type; /* built-in 'object' */ +PyAPI_DATA(struct _typeobject) PySuper_Type; /* built-in 'super' */ + +PyAPI_FUNC(unsigned long) PyType_GetFlags(struct _typeobject*); + +#define PyType_Check(op) \ + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS) +#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type) + +PyAPI_FUNC(int) PyType_Ready(struct _typeobject *); +PyAPI_FUNC(PyObject *) PyType_GenericAlloc(struct _typeobject *, Py_ssize_t); +PyAPI_FUNC(PyObject *) PyType_GenericNew(struct _typeobject *, + PyObject *, PyObject *); +PyAPI_FUNC(unsigned int) PyType_ClearCache(void); +PyAPI_FUNC(void) PyType_Modified(struct _typeobject *); + +/* Generic operations on objects */ +PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_ASCII(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_Bytes(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_RichCompare(PyObject *, PyObject *, int); +PyAPI_FUNC(int) PyObject_RichCompareBool(PyObject *, PyObject *, int); +PyAPI_FUNC(PyObject *) PyObject_GetAttrString(PyObject *, const char *); +PyAPI_FUNC(int) PyObject_SetAttrString(PyObject *, const char *, PyObject *); +PyAPI_FUNC(int) PyObject_HasAttrString(PyObject *, const char *); +PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_HasAttr(PyObject *, PyObject *); +PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *); +PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *); +PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *, + PyObject *, PyObject *); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 +PyAPI_FUNC(int) PyObject_GenericSetDict(PyObject *, PyObject *, void *); +#endif +PyAPI_FUNC(Py_hash_t) PyObject_Hash(PyObject *); +PyAPI_FUNC(Py_hash_t) PyObject_HashNotImplemented(PyObject *); +PyAPI_FUNC(int) PyObject_IsTrue(PyObject *); +PyAPI_FUNC(int) PyObject_Not(PyObject *); +PyAPI_FUNC(int) PyCallable_Check(PyObject *); +PyAPI_FUNC(void) PyObject_ClearWeakRefs(PyObject *); + +/* PyObject_Dir(obj) acts like Python builtins.dir(obj), returning a + list of strings. PyObject_Dir(NULL) is like builtins.dir(), + returning the names of the current locals. In this case, if there are + no current locals, NULL is returned, and PyErr_Occurred() is false. +*/ +PyAPI_FUNC(PyObject *) PyObject_Dir(PyObject *); + + +/* Helpers for printing recursive container types */ +PyAPI_FUNC(int) Py_ReprEnter(PyObject *); +PyAPI_FUNC(void) Py_ReprLeave(PyObject *); + +/* Flag bits for printing: */ +#define Py_PRINT_RAW 1 /* No string quotes etc. */ + +/* +Type flags (tp_flags) + +These flags are used to change expected features and behavior for a +particular type. + +Arbitration of the flag bit positions will need to be coordinated among +all extension writers who publicly release their extensions (this will +be fewer than you might expect!). + +Most flags were removed as of Python 3.0 to make room for new flags. (Some +flags are not for backwards compatibility but to indicate the presence of an +optional feature; these flags remain of course.) + +Type definitions should use Py_TPFLAGS_DEFAULT for their tp_flags value. + +Code can use PyType_HasFeature(type_ob, flag_value) to test whether the +given type object has a specified feature. +*/ + +/* Set if the type object is dynamically allocated */ +#define Py_TPFLAGS_HEAPTYPE (1UL << 9) + +/* Set if the type allows subclassing */ +#define Py_TPFLAGS_BASETYPE (1UL << 10) + +/* Set if the type implements the vectorcall protocol (PEP 590) */ +#ifndef Py_LIMITED_API +#define _Py_TPFLAGS_HAVE_VECTORCALL (1UL << 11) +#endif + +/* Set if the type is 'ready' -- fully initialized */ +#define Py_TPFLAGS_READY (1UL << 12) + +/* Set while the type is being 'readied', to prevent recursive ready calls */ +#define Py_TPFLAGS_READYING (1UL << 13) + +/* Objects support garbage collection (see objimpl.h) */ +#define Py_TPFLAGS_HAVE_GC (1UL << 14) + +/* These two bits are preserved for Stackless Python, next after this is 17 */ +#ifdef STACKLESS +#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION (3UL << 15) +#else +#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0 +#endif + +/* Objects behave like an unbound method */ +#define Py_TPFLAGS_METHOD_DESCRIPTOR (1UL << 17) + +/* Objects support type attribute cache */ +#define Py_TPFLAGS_HAVE_VERSION_TAG (1UL << 18) +#define Py_TPFLAGS_VALID_VERSION_TAG (1UL << 19) + +/* Type is abstract and cannot be instantiated */ +#define Py_TPFLAGS_IS_ABSTRACT (1UL << 20) + +/* These flags are used to determine if a type is a subclass. */ +#define Py_TPFLAGS_LONG_SUBCLASS (1UL << 24) +#define Py_TPFLAGS_LIST_SUBCLASS (1UL << 25) +#define Py_TPFLAGS_TUPLE_SUBCLASS (1UL << 26) +#define Py_TPFLAGS_BYTES_SUBCLASS (1UL << 27) +#define Py_TPFLAGS_UNICODE_SUBCLASS (1UL << 28) +#define Py_TPFLAGS_DICT_SUBCLASS (1UL << 29) +#define Py_TPFLAGS_BASE_EXC_SUBCLASS (1UL << 30) +#define Py_TPFLAGS_TYPE_SUBCLASS (1UL << 31) + +#define Py_TPFLAGS_DEFAULT ( \ + Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \ + Py_TPFLAGS_HAVE_VERSION_TAG | \ + 0) + +/* NOTE: The following flags reuse lower bits (removed as part of the + * Python 3.0 transition). */ + +/* The following flag is kept for compatibility. Starting with 3.8, + * binary compatibility of C extensions accross feature releases of + * Python is not supported anymore, except when using the stable ABI. + */ + +/* Type structure has tp_finalize member (3.4) */ +#define Py_TPFLAGS_HAVE_FINALIZE (1UL << 0) + +#ifdef Py_LIMITED_API +# define PyType_HasFeature(t,f) ((PyType_GetFlags(t) & (f)) != 0) +#endif +#define PyType_FastSubclass(t,f) PyType_HasFeature(t,f) + + +/* +The macros Py_INCREF(op) and Py_DECREF(op) are used to increment or decrement +reference counts. Py_DECREF calls the object's deallocator function when +the refcount falls to 0; for +objects that don't contain references to other objects or heap memory +this can be the standard function free(). Both macros can be used +wherever a void expression is allowed. The argument must not be a +NULL pointer. If it may be NULL, use Py_XINCREF/Py_XDECREF instead. +The macro _Py_NewReference(op) initialize reference counts to 1, and +in special builds (Py_REF_DEBUG, Py_TRACE_REFS) performs additional +bookkeeping appropriate to the special build. + +We assume that the reference count field can never overflow; this can +be proven when the size of the field is the same as the pointer size, so +we ignore the possibility. Provided a C int is at least 32 bits (which +is implicitly assumed in many parts of this code), that's enough for +about 2**31 references to an object. + +XXX The following became out of date in Python 2.2, but I'm not sure +XXX what the full truth is now. Certainly, heap-allocated type objects +XXX can and should be deallocated. +Type objects should never be deallocated; the type pointer in an object +is not considered to be a reference to the type object, to save +complications in the deallocation function. (This is actually a +decision that's up to the implementer of each new type so if you want, +you can count such references to the type object.) +*/ + +/* First define a pile of simple helper macros, one set per special + * build symbol. These either expand to the obvious things, or to + * nothing at all when the special mode isn't in effect. The main + * macros can later be defined just once then, yet expand to different + * things depending on which special build options are and aren't in effect. + * Trust me : while painful, this is 20x easier to understand than, + * e.g, defining _Py_NewReference five different times in a maze of nested + * #ifdefs (we used to do that -- it was impenetrable). + */ +#ifdef Py_REF_DEBUG +PyAPI_DATA(Py_ssize_t) _Py_RefTotal; +PyAPI_FUNC(void) _Py_NegativeRefcount(const char *filename, int lineno, + PyObject *op); +PyAPI_FUNC(Py_ssize_t) _Py_GetRefTotal(void); +#define _Py_INC_REFTOTAL _Py_RefTotal++ +#define _Py_DEC_REFTOTAL _Py_RefTotal-- + +/* Py_REF_DEBUG also controls the display of refcounts and memory block + * allocations at the interactive prompt and at interpreter shutdown + */ +PyAPI_FUNC(void) _PyDebug_PrintTotalRefs(void); +#else +#define _Py_INC_REFTOTAL +#define _Py_DEC_REFTOTAL +#endif /* Py_REF_DEBUG */ + +#ifdef COUNT_ALLOCS +PyAPI_FUNC(void) _Py_inc_count(struct _typeobject *); +PyAPI_FUNC(void) _Py_dec_count(struct _typeobject *); +#define _Py_INC_TPALLOCS(OP) _Py_inc_count(Py_TYPE(OP)) +#define _Py_INC_TPFREES(OP) _Py_dec_count(Py_TYPE(OP)) +#define _Py_DEC_TPFREES(OP) Py_TYPE(OP)->tp_frees-- +#define _Py_COUNT_ALLOCS_COMMA , +#else +#define _Py_INC_TPALLOCS(OP) +#define _Py_INC_TPFREES(OP) +#define _Py_DEC_TPFREES(OP) +#define _Py_COUNT_ALLOCS_COMMA +#endif /* COUNT_ALLOCS */ + +/* Update the Python traceback of an object. This function must be called + when a memory block is reused from a free list. */ +PyAPI_FUNC(int) _PyTraceMalloc_NewReference(PyObject *op); + +#ifdef Py_TRACE_REFS +/* Py_TRACE_REFS is such major surgery that we call external routines. */ +PyAPI_FUNC(void) _Py_NewReference(PyObject *); +PyAPI_FUNC(void) _Py_ForgetReference(PyObject *); +PyAPI_FUNC(void) _Py_PrintReferences(FILE *); +PyAPI_FUNC(void) _Py_PrintReferenceAddresses(FILE *); +PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force); +#else +/* Without Py_TRACE_REFS, there's little enough to do that we expand code + inline. */ +static inline void _Py_NewReference(PyObject *op) +{ + if (_Py_tracemalloc_config.tracing) { + _PyTraceMalloc_NewReference(op); + } + _Py_INC_TPALLOCS(op); + _Py_INC_REFTOTAL; + Py_REFCNT(op) = 1; +} + +static inline void _Py_ForgetReference(PyObject *op) +{ + (void)op; /* may be unused, shut up -Wunused-parameter */ + _Py_INC_TPFREES(op); +} +#endif /* !Py_TRACE_REFS */ + + +PyAPI_FUNC(void) _Py_Dealloc(PyObject *); + +static inline void _Py_INCREF(PyObject *op) +{ + _Py_INC_REFTOTAL; + op->ob_refcnt++; +} + +#define Py_INCREF(op) _Py_INCREF(_PyObject_CAST(op)) + +static inline void _Py_DECREF(const char *filename, int lineno, + PyObject *op) +{ + (void)filename; /* may be unused, shut up -Wunused-parameter */ + (void)lineno; /* may be unused, shut up -Wunused-parameter */ + _Py_DEC_REFTOTAL; + if (--op->ob_refcnt != 0) { +#ifdef Py_REF_DEBUG + if (op->ob_refcnt < 0) { + _Py_NegativeRefcount(filename, lineno, op); + } +#endif + } + else { + _Py_Dealloc(op); + } +} + +#define Py_DECREF(op) _Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op)) + + +/* Safely decref `op` and set `op` to NULL, especially useful in tp_clear + * and tp_dealloc implementations. + * + * Note that "the obvious" code can be deadly: + * + * Py_XDECREF(op); + * op = NULL; + * + * Typically, `op` is something like self->containee, and `self` is done + * using its `containee` member. In the code sequence above, suppose + * `containee` is non-NULL with a refcount of 1. Its refcount falls to + * 0 on the first line, which can trigger an arbitrary amount of code, + * possibly including finalizers (like __del__ methods or weakref callbacks) + * coded in Python, which in turn can release the GIL and allow other threads + * to run, etc. Such code may even invoke methods of `self` again, or cause + * cyclic gc to trigger, but-- oops! --self->containee still points to the + * object being torn down, and it may be in an insane state while being torn + * down. This has in fact been a rich historic source of miserable (rare & + * hard-to-diagnose) segfaulting (and other) bugs. + * + * The safe way is: + * + * Py_CLEAR(op); + * + * That arranges to set `op` to NULL _before_ decref'ing, so that any code + * triggered as a side-effect of `op` getting torn down no longer believes + * `op` points to a valid object. + * + * There are cases where it's safe to use the naive code, but they're brittle. + * For example, if `op` points to a Python integer, you know that destroying + * one of those can't cause problems -- but in part that relies on that + * Python integers aren't currently weakly referencable. Best practice is + * to use Py_CLEAR() even if you can't think of a reason for why you need to. + */ +#define Py_CLEAR(op) \ + do { \ + PyObject *_py_tmp = _PyObject_CAST(op); \ + if (_py_tmp != NULL) { \ + (op) = NULL; \ + Py_DECREF(_py_tmp); \ + } \ + } while (0) + +/* Function to use in case the object pointer can be NULL: */ +static inline void _Py_XINCREF(PyObject *op) +{ + if (op != NULL) { + Py_INCREF(op); + } +} + +#define Py_XINCREF(op) _Py_XINCREF(_PyObject_CAST(op)) + +static inline void _Py_XDECREF(PyObject *op) +{ + if (op != NULL) { + Py_DECREF(op); + } +} + +#define Py_XDECREF(op) _Py_XDECREF(_PyObject_CAST(op)) + +/* +These are provided as conveniences to Python runtime embedders, so that +they can have object code that is not dependent on Python compilation flags. +*/ +PyAPI_FUNC(void) Py_IncRef(PyObject *); +PyAPI_FUNC(void) Py_DecRef(PyObject *); + +/* +_Py_NoneStruct is an object of undefined type which can be used in contexts +where NULL (nil) is not suitable (since NULL often means 'error'). + +Don't forget to apply Py_INCREF() when returning this value!!! +*/ +PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */ +#define Py_None (&_Py_NoneStruct) + +/* Macro for returning Py_None from a function */ +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None + +/* +Py_NotImplemented is a singleton used to signal that an operation is +not implemented for a given type combination. +*/ +PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */ +#define Py_NotImplemented (&_Py_NotImplementedStruct) + +/* Macro for returning Py_NotImplemented from a function */ +#define Py_RETURN_NOTIMPLEMENTED \ + return Py_INCREF(Py_NotImplemented), Py_NotImplemented + +/* Rich comparison opcodes */ +#define Py_LT 0 +#define Py_LE 1 +#define Py_EQ 2 +#define Py_NE 3 +#define Py_GT 4 +#define Py_GE 5 + +/* + * Macro for implementing rich comparisons + * + * Needs to be a macro because any C-comparable type can be used. + */ +#define Py_RETURN_RICHCOMPARE(val1, val2, op) \ + do { \ + switch (op) { \ + case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ + default: \ + Py_UNREACHABLE(); \ + } \ + } while (0) + + +/* +More conventions +================ + +Argument Checking +----------------- + +Functions that take objects as arguments normally don't check for nil +arguments, but they do check the type of the argument, and return an +error if the function doesn't apply to the type. + +Failure Modes +------------- + +Functions may fail for a variety of reasons, including running out of +memory. This is communicated to the caller in two ways: an error string +is set (see errors.h), and the function result differs: functions that +normally return a pointer return NULL for failure, functions returning +an integer return -1 (which could be a legal return value too!), and +other functions return 0 for success and -1 for failure. +Callers should always check for errors before using the result. If +an error was set, the caller must either explicitly clear it, or pass +the error on to its caller. + +Reference Counts +---------------- + +It takes a while to get used to the proper usage of reference counts. + +Functions that create an object set the reference count to 1; such new +objects must be stored somewhere or destroyed again with Py_DECREF(). +Some functions that 'store' objects, such as PyTuple_SetItem() and +PyList_SetItem(), +don't increment the reference count of the object, since the most +frequent use is to store a fresh object. Functions that 'retrieve' +objects, such as PyTuple_GetItem() and PyDict_GetItemString(), also +don't increment +the reference count, since most frequently the object is only looked at +quickly. Thus, to retrieve an object and store it again, the caller +must call Py_INCREF() explicitly. + +NOTE: functions that 'consume' a reference count, like +PyList_SetItem(), consume the reference even if the object wasn't +successfully stored, to simplify error handling. + +It seems attractive to make other functions that take an object as +argument consume a reference count; however, this may quickly get +confusing (even the current practice is already confusing). Consider +it carefully, it may save lots of calls to Py_INCREF() and Py_DECREF() at +times. +*/ + + +/* Trashcan mechanism, thanks to Christian Tismer. + +When deallocating a container object, it's possible to trigger an unbounded +chain of deallocations, as each Py_DECREF in turn drops the refcount on "the +next" object in the chain to 0. This can easily lead to stack overflows, +especially in threads (which typically have less stack space to work with). + +A container object can avoid this by bracketing the body of its tp_dealloc +function with a pair of macros: + +static void +mytype_dealloc(mytype *p) +{ + ... declarations go here ... + + PyObject_GC_UnTrack(p); // must untrack first + Py_TRASHCAN_BEGIN(p, mytype_dealloc) + ... The body of the deallocator goes here, including all calls ... + ... to Py_DECREF on contained objects. ... + Py_TRASHCAN_END // there should be no code after this +} + +CAUTION: Never return from the middle of the body! If the body needs to +"get out early", put a label immediately before the Py_TRASHCAN_END +call, and goto it. Else the call-depth counter (see below) will stay +above 0 forever, and the trashcan will never get emptied. + +How it works: The BEGIN macro increments a call-depth counter. So long +as this counter is small, the body of the deallocator is run directly without +further ado. But if the counter gets large, it instead adds p to a list of +objects to be deallocated later, skips the body of the deallocator, and +resumes execution after the END macro. The tp_dealloc routine then returns +without deallocating anything (and so unbounded call-stack depth is avoided). + +When the call stack finishes unwinding again, code generated by the END macro +notices this, and calls another routine to deallocate all the objects that +may have been added to the list of deferred deallocations. In effect, a +chain of N deallocations is broken into (N-1)/(PyTrash_UNWIND_LEVEL-1) pieces, +with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL. + +Since the tp_dealloc of a subclass typically calls the tp_dealloc of the base +class, we need to ensure that the trashcan is only triggered on the tp_dealloc +of the actual class being deallocated. Otherwise we might end up with a +partially-deallocated object. To check this, the tp_dealloc function must be +passed as second argument to Py_TRASHCAN_BEGIN(). +*/ + +/* The new thread-safe private API, invoked by the macros below. */ +PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*); +PyAPI_FUNC(void) _PyTrash_thread_destroy_chain(void); + +#define PyTrash_UNWIND_LEVEL 50 + +#define Py_TRASHCAN_BEGIN_CONDITION(op, cond) \ + do { \ + PyThreadState *_tstate = NULL; \ + /* If "cond" is false, then _tstate remains NULL and the deallocator \ + * is run normally without involving the trashcan */ \ + if (cond) { \ + _tstate = PyThreadState_GET(); \ + if (_tstate->trash_delete_nesting >= PyTrash_UNWIND_LEVEL) { \ + /* Store the object (to be deallocated later) and jump past \ + * Py_TRASHCAN_END, skipping the body of the deallocator */ \ + _PyTrash_thread_deposit_object(_PyObject_CAST(op)); \ + break; \ + } \ + ++_tstate->trash_delete_nesting; \ + } + /* The body of the deallocator is here. */ +#define Py_TRASHCAN_END \ + if (_tstate) { \ + --_tstate->trash_delete_nesting; \ + if (_tstate->trash_delete_later && _tstate->trash_delete_nesting <= 0) \ + _PyTrash_thread_destroy_chain(); \ + } \ + } while (0); + +#define Py_TRASHCAN_BEGIN(op, dealloc) Py_TRASHCAN_BEGIN_CONDITION(op, \ + Py_TYPE(op)->tp_dealloc == (destructor)(dealloc)) + +/* For backwards compatibility, these macros enable the trashcan + * unconditionally */ +#define Py_TRASHCAN_SAFE_BEGIN(op) Py_TRASHCAN_BEGIN_CONDITION(op, 1) +#define Py_TRASHCAN_SAFE_END(op) Py_TRASHCAN_END + + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_OBJECT_H +# include "cpython/object.h" +# undef Py_CPYTHON_OBJECT_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OBJECT_H */ diff --git a/client/3rd/include/frame/python/objimpl.h b/client/3rd/include/frame/python/objimpl.h new file mode 100755 index 0000000..2337d8a --- /dev/null +++ b/client/3rd/include/frame/python/objimpl.h @@ -0,0 +1,284 @@ +/* The PyObject_ memory family: high-level object memory interfaces. + See pymem.h for the low-level PyMem_ family. +*/ + +#ifndef Py_OBJIMPL_H +#define Py_OBJIMPL_H + +#include "pymem.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BEWARE: + + Each interface exports both functions and macros. Extension modules should + use the functions, to ensure binary compatibility across Python versions. + Because the Python implementation is free to change internal details, and + the macros may (or may not) expose details for speed, if you do use the + macros you must recompile your extensions with each Python release. + + Never mix calls to PyObject_ memory functions with calls to the platform + malloc/realloc/ calloc/free, or with calls to PyMem_. +*/ + +/* +Functions and macros for modules that implement new object types. + + - PyObject_New(type, typeobj) allocates memory for a new object of the given + type, and initializes part of it. 'type' must be the C structure type used + to represent the object, and 'typeobj' the address of the corresponding + type object. Reference count and type pointer are filled in; the rest of + the bytes of the object are *undefined*! The resulting expression type is + 'type *'. The size of the object is determined by the tp_basicsize field + of the type object. + + - PyObject_NewVar(type, typeobj, n) is similar but allocates a variable-size + object with room for n items. In addition to the refcount and type pointer + fields, this also fills in the ob_size field. + + - PyObject_Del(op) releases the memory allocated for an object. It does not + run a destructor -- it only frees the memory. PyObject_Free is identical. + + - PyObject_Init(op, typeobj) and PyObject_InitVar(op, typeobj, n) don't + allocate memory. Instead of a 'type' parameter, they take a pointer to a + new object (allocated by an arbitrary allocator), and initialize its object + header fields. + +Note that objects created with PyObject_{New, NewVar} are allocated using the +specialized Python allocator (implemented in obmalloc.c), if WITH_PYMALLOC is +enabled. In addition, a special debugging allocator is used if PYMALLOC_DEBUG +is also #defined. + +In case a specific form of memory management is needed (for example, if you +must use the platform malloc heap(s), or shared memory, or C++ local storage or +operator new), you must first allocate the object with your custom allocator, +then pass its pointer to PyObject_{Init, InitVar} for filling in its Python- +specific fields: reference count, type pointer, possibly others. You should +be aware that Python has no control over these objects because they don't +cooperate with the Python memory manager. Such objects may not be eligible +for automatic garbage collection and you have to make sure that they are +released accordingly whenever their destructor gets called (cf. the specific +form of memory management you're using). + +Unless you have specific memory management requirements, use +PyObject_{New, NewVar, Del}. +*/ + +/* + * Raw object memory interface + * =========================== + */ + +/* Functions to call the same malloc/realloc/free as used by Python's + object allocator. If WITH_PYMALLOC is enabled, these may differ from + the platform malloc/realloc/free. The Python object allocator is + designed for fast, cache-conscious allocation of many "small" objects, + and with low hidden memory overhead. + + PyObject_Malloc(0) returns a unique non-NULL pointer if possible. + + PyObject_Realloc(NULL, n) acts like PyObject_Malloc(n). + PyObject_Realloc(p != NULL, 0) does not return NULL, or free the memory + at p. + + Returned pointers must be checked for NULL explicitly; no action is + performed on failure other than to return NULL (no warning it printed, no + exception is set, etc). + + For allocating objects, use PyObject_{New, NewVar} instead whenever + possible. The PyObject_{Malloc, Realloc, Free} family is exposed + so that you can exploit Python's small-block allocator for non-object + uses. If you must use these routines to allocate object memory, make sure + the object gets initialized via PyObject_{Init, InitVar} after obtaining + the raw memory. +*/ +PyAPI_FUNC(void *) PyObject_Malloc(size_t size); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 +PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize); +#endif +PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size); +PyAPI_FUNC(void) PyObject_Free(void *ptr); + + +/* Macros */ +#define PyObject_MALLOC PyObject_Malloc +#define PyObject_REALLOC PyObject_Realloc +#define PyObject_FREE PyObject_Free +#define PyObject_Del PyObject_Free +#define PyObject_DEL PyObject_Free + + +/* + * Generic object allocator interface + * ================================== + */ + +/* Functions */ +PyAPI_FUNC(PyObject *) PyObject_Init(PyObject *, PyTypeObject *); +PyAPI_FUNC(PyVarObject *) PyObject_InitVar(PyVarObject *, + PyTypeObject *, Py_ssize_t); +PyAPI_FUNC(PyObject *) _PyObject_New(PyTypeObject *); +PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t); + +#define PyObject_New(type, typeobj) \ + ( (type *) _PyObject_New(typeobj) ) +#define PyObject_NewVar(type, typeobj, n) \ + ( (type *) _PyObject_NewVar((typeobj), (n)) ) + +/* Inline functions trading binary compatibility for speed: + PyObject_INIT() is the fast version of PyObject_Init(), and + PyObject_INIT_VAR() is the fast version of PyObject_InitVar. + See also pymem.h. + + These inline functions expect non-NULL object pointers. */ +static inline PyObject* +_PyObject_INIT(PyObject *op, PyTypeObject *typeobj) +{ + assert(op != NULL); + Py_TYPE(op) = typeobj; + if (PyType_GetFlags(typeobj) & Py_TPFLAGS_HEAPTYPE) { + Py_INCREF(typeobj); + } + _Py_NewReference(op); + return op; +} + +#define PyObject_INIT(op, typeobj) \ + _PyObject_INIT(_PyObject_CAST(op), (typeobj)) + +static inline PyVarObject* +_PyObject_INIT_VAR(PyVarObject *op, PyTypeObject *typeobj, Py_ssize_t size) +{ + assert(op != NULL); + Py_SIZE(op) = size; + PyObject_INIT((PyObject *)op, typeobj); + return op; +} + +#define PyObject_INIT_VAR(op, typeobj, size) \ + _PyObject_INIT_VAR(_PyVarObject_CAST(op), (typeobj), (size)) + +#define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize ) + +/* _PyObject_VAR_SIZE returns the number of bytes (as size_t) allocated for a + vrbl-size object with nitems items, exclusive of gc overhead (if any). The + value is rounded up to the closest multiple of sizeof(void *), in order to + ensure that pointer fields at the end of the object are correctly aligned + for the platform (this is of special importance for subclasses of, e.g., + str or int, so that pointers can be stored after the embedded data). + + Note that there's no memory wastage in doing this, as malloc has to + return (at worst) pointer-aligned memory anyway. +*/ +#if ((SIZEOF_VOID_P - 1) & SIZEOF_VOID_P) != 0 +# error "_PyObject_VAR_SIZE requires SIZEOF_VOID_P be a power of 2" +#endif + +#define _PyObject_VAR_SIZE(typeobj, nitems) \ + _Py_SIZE_ROUND_UP((typeobj)->tp_basicsize + \ + (nitems)*(typeobj)->tp_itemsize, \ + SIZEOF_VOID_P) + +#define PyObject_NEW(type, typeobj) \ +( (type *) PyObject_Init( \ + (PyObject *) PyObject_MALLOC( _PyObject_SIZE(typeobj) ), (typeobj)) ) + +#define PyObject_NEW_VAR(type, typeobj, n) \ +( (type *) PyObject_InitVar( \ + (PyVarObject *) PyObject_MALLOC(_PyObject_VAR_SIZE((typeobj),(n)) ),\ + (typeobj), (n)) ) + +/* This example code implements an object constructor with a custom + allocator, where PyObject_New is inlined, and shows the important + distinction between two steps (at least): + 1) the actual allocation of the object storage; + 2) the initialization of the Python specific fields + in this storage with PyObject_{Init, InitVar}. + + PyObject * + YourObject_New(...) + { + PyObject *op; + + op = (PyObject *) Your_Allocator(_PyObject_SIZE(YourTypeStruct)); + if (op == NULL) + return PyErr_NoMemory(); + + PyObject_Init(op, &YourTypeStruct); + + op->ob_field = value; + ... + return op; + } + + Note that in C++, the use of the new operator usually implies that + the 1st step is performed automatically for you, so in a C++ class + constructor you would start directly with PyObject_Init/InitVar +*/ + + + +/* + * Garbage Collection Support + * ========================== + */ + +/* C equivalent of gc.collect() which ignores the state of gc.enabled. */ +PyAPI_FUNC(Py_ssize_t) PyGC_Collect(void); + +/* Test if a type has a GC head */ +#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC) + +PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); +#define PyObject_GC_Resize(type, op, n) \ + ( (type *) _PyObject_GC_Resize(_PyVarObject_CAST(op), (n)) ) + + + +PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *); +PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t); + +/* Tell the GC to track this object. + * + * See also private _PyObject_GC_TRACK() macro. */ +PyAPI_FUNC(void) PyObject_GC_Track(void *); + +/* Tell the GC to stop tracking this object. + * + * See also private _PyObject_GC_UNTRACK() macro. */ +PyAPI_FUNC(void) PyObject_GC_UnTrack(void *); + +PyAPI_FUNC(void) PyObject_GC_Del(void *); + +#define PyObject_GC_New(type, typeobj) \ + ( (type *) _PyObject_GC_New(typeobj) ) +#define PyObject_GC_NewVar(type, typeobj, n) \ + ( (type *) _PyObject_GC_NewVar((typeobj), (n)) ) + + +/* Utility macro to help write tp_traverse functions. + * To use this macro, the tp_traverse function must name its arguments + * "visit" and "arg". This is intended to keep tp_traverse functions + * looking as much alike as possible. + */ +#define Py_VISIT(op) \ + do { \ + if (op) { \ + int vret = visit(_PyObject_CAST(op), arg); \ + if (vret) \ + return vret; \ + } \ + } while (0) + +#ifndef Py_LIMITED_API +# define Py_CPYTHON_OBJIMPL_H +# include "cpython/objimpl.h" +# undef Py_CPYTHON_OBJIMPL_H +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OBJIMPL_H */ diff --git a/client/3rd/include/frame/python/odictobject.h b/client/3rd/include/frame/python/odictobject.h new file mode 100755 index 0000000..35aff8a --- /dev/null +++ b/client/3rd/include/frame/python/odictobject.h @@ -0,0 +1,43 @@ +#ifndef Py_ODICTOBJECT_H +#define Py_ODICTOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* OrderedDict */ +/* This API is optional and mostly redundant. */ + +#ifndef Py_LIMITED_API + +typedef struct _odictobject PyODictObject; + +PyAPI_DATA(PyTypeObject) PyODict_Type; +PyAPI_DATA(PyTypeObject) PyODictIter_Type; +PyAPI_DATA(PyTypeObject) PyODictKeys_Type; +PyAPI_DATA(PyTypeObject) PyODictItems_Type; +PyAPI_DATA(PyTypeObject) PyODictValues_Type; + +#define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type) +#define PyODict_CheckExact(op) (Py_TYPE(op) == &PyODict_Type) +#define PyODict_SIZE(op) PyDict_GET_SIZE((op)) + +PyAPI_FUNC(PyObject *) PyODict_New(void); +PyAPI_FUNC(int) PyODict_SetItem(PyObject *od, PyObject *key, PyObject *item); +PyAPI_FUNC(int) PyODict_DelItem(PyObject *od, PyObject *key); + +/* wrappers around PyDict* functions */ +#define PyODict_GetItem(od, key) PyDict_GetItem(_PyObject_CAST(od), key) +#define PyODict_GetItemWithError(od, key) \ + PyDict_GetItemWithError(_PyObject_CAST(od), key) +#define PyODict_Contains(od, key) PyDict_Contains(_PyObject_CAST(od), key) +#define PyODict_Size(od) PyDict_Size(_PyObject_CAST(od)) +#define PyODict_GetItemString(od, key) \ + PyDict_GetItemString(_PyObject_CAST(od), key) + +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_ODICTOBJECT_H */ diff --git a/client/3rd/include/frame/python/opcode.h b/client/3rd/include/frame/python/opcode.h new file mode 100755 index 0000000..2a29e97 --- /dev/null +++ b/client/3rd/include/frame/python/opcode.h @@ -0,0 +1,148 @@ +/* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */ +#ifndef Py_OPCODE_H +#define Py_OPCODE_H +#ifdef __cplusplus +extern "C" { +#endif + + + /* Instruction opcodes for compiled code */ +#define POP_TOP 1 +#define ROT_TWO 2 +#define ROT_THREE 3 +#define DUP_TOP 4 +#define DUP_TOP_TWO 5 +#define ROT_FOUR 6 +#define NOP 9 +#define UNARY_POSITIVE 10 +#define UNARY_NEGATIVE 11 +#define UNARY_NOT 12 +#define UNARY_INVERT 15 +#define BINARY_MATRIX_MULTIPLY 16 +#define INPLACE_MATRIX_MULTIPLY 17 +#define BINARY_POWER 19 +#define BINARY_MULTIPLY 20 +#define BINARY_MODULO 22 +#define BINARY_ADD 23 +#define BINARY_SUBTRACT 24 +#define BINARY_SUBSCR 25 +#define BINARY_FLOOR_DIVIDE 26 +#define BINARY_TRUE_DIVIDE 27 +#define INPLACE_FLOOR_DIVIDE 28 +#define INPLACE_TRUE_DIVIDE 29 +#define GET_AITER 50 +#define GET_ANEXT 51 +#define BEFORE_ASYNC_WITH 52 +#define BEGIN_FINALLY 53 +#define END_ASYNC_FOR 54 +#define INPLACE_ADD 55 +#define INPLACE_SUBTRACT 56 +#define INPLACE_MULTIPLY 57 +#define INPLACE_MODULO 59 +#define STORE_SUBSCR 60 +#define DELETE_SUBSCR 61 +#define BINARY_LSHIFT 62 +#define BINARY_RSHIFT 63 +#define BINARY_AND 64 +#define BINARY_XOR 65 +#define BINARY_OR 66 +#define INPLACE_POWER 67 +#define GET_ITER 68 +#define GET_YIELD_FROM_ITER 69 +#define PRINT_EXPR 70 +#define LOAD_BUILD_CLASS 71 +#define YIELD_FROM 72 +#define GET_AWAITABLE 73 +#define INPLACE_LSHIFT 75 +#define INPLACE_RSHIFT 76 +#define INPLACE_AND 77 +#define INPLACE_XOR 78 +#define INPLACE_OR 79 +#define WITH_CLEANUP_START 81 +#define WITH_CLEANUP_FINISH 82 +#define RETURN_VALUE 83 +#define IMPORT_STAR 84 +#define SETUP_ANNOTATIONS 85 +#define YIELD_VALUE 86 +#define POP_BLOCK 87 +#define END_FINALLY 88 +#define POP_EXCEPT 89 +#define HAVE_ARGUMENT 90 +#define STORE_NAME 90 +#define DELETE_NAME 91 +#define UNPACK_SEQUENCE 92 +#define FOR_ITER 93 +#define UNPACK_EX 94 +#define STORE_ATTR 95 +#define DELETE_ATTR 96 +#define STORE_GLOBAL 97 +#define DELETE_GLOBAL 98 +#define LOAD_CONST 100 +#define LOAD_NAME 101 +#define BUILD_TUPLE 102 +#define BUILD_LIST 103 +#define BUILD_SET 104 +#define BUILD_MAP 105 +#define LOAD_ATTR 106 +#define COMPARE_OP 107 +#define IMPORT_NAME 108 +#define IMPORT_FROM 109 +#define JUMP_FORWARD 110 +#define JUMP_IF_FALSE_OR_POP 111 +#define JUMP_IF_TRUE_OR_POP 112 +#define JUMP_ABSOLUTE 113 +#define POP_JUMP_IF_FALSE 114 +#define POP_JUMP_IF_TRUE 115 +#define LOAD_GLOBAL 116 +#define SETUP_FINALLY 122 +#define LOAD_FAST 124 +#define STORE_FAST 125 +#define DELETE_FAST 126 +#define RAISE_VARARGS 130 +#define CALL_FUNCTION 131 +#define MAKE_FUNCTION 132 +#define BUILD_SLICE 133 +#define LOAD_CLOSURE 135 +#define LOAD_DEREF 136 +#define STORE_DEREF 137 +#define DELETE_DEREF 138 +#define CALL_FUNCTION_KW 141 +#define CALL_FUNCTION_EX 142 +#define SETUP_WITH 143 +#define EXTENDED_ARG 144 +#define LIST_APPEND 145 +#define SET_ADD 146 +#define MAP_ADD 147 +#define LOAD_CLASSDEREF 148 +#define BUILD_LIST_UNPACK 149 +#define BUILD_MAP_UNPACK 150 +#define BUILD_MAP_UNPACK_WITH_CALL 151 +#define BUILD_TUPLE_UNPACK 152 +#define BUILD_SET_UNPACK 153 +#define SETUP_ASYNC_WITH 154 +#define FORMAT_VALUE 155 +#define BUILD_CONST_KEY_MAP 156 +#define BUILD_STRING 157 +#define BUILD_TUPLE_UNPACK_WITH_CALL 158 +#define LOAD_METHOD 160 +#define CALL_METHOD 161 +#define CALL_FINALLY 162 +#define POP_FINALLY 163 + +/* EXCEPT_HANDLER is a special, implicit block type which is created when + entering an except handler. It is not an opcode but we define it here + as we want it to be available to both frameobject.c and ceval.c, while + remaining private.*/ +#define EXCEPT_HANDLER 257 + + +enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, + PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN, + PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD}; + +#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OPCODE_H */ diff --git a/client/3rd/include/frame/python/osdefs.h b/client/3rd/include/frame/python/osdefs.h new file mode 100755 index 0000000..3243944 --- /dev/null +++ b/client/3rd/include/frame/python/osdefs.h @@ -0,0 +1,51 @@ +#ifndef Py_OSDEFS_H +#define Py_OSDEFS_H +#ifdef __cplusplus +extern "C" { +#endif + + +/* Operating system dependencies */ + +#ifdef MS_WINDOWS +#define SEP L'\\' +#define ALTSEP L'/' +#define MAXPATHLEN 256 +#define DELIM L';' +#endif + +#ifdef __VXWORKS__ +#define DELIM L';' +#endif + +/* Filename separator */ +#ifndef SEP +#define SEP L'/' +#endif + +/* Max pathname length */ +#ifdef __hpux +#include +#include +#ifndef PATH_MAX +#define PATH_MAX MAXPATHLEN +#endif +#endif + +#ifndef MAXPATHLEN +#if defined(PATH_MAX) && PATH_MAX > 1024 +#define MAXPATHLEN PATH_MAX +#else +#define MAXPATHLEN 1024 +#endif +#endif + +/* Search path entry delimiter */ +#ifndef DELIM +#define DELIM L':' +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OSDEFS_H */ diff --git a/client/3rd/include/frame/python/osmodule.h b/client/3rd/include/frame/python/osmodule.h new file mode 100755 index 0000000..9095c2f --- /dev/null +++ b/client/3rd/include/frame/python/osmodule.h @@ -0,0 +1,17 @@ + +/* os module interface */ + +#ifndef Py_OSMODULE_H +#define Py_OSMODULE_H +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 +PyAPI_FUNC(PyObject *) PyOS_FSPath(PyObject *path); +#endif + +#ifdef __cplusplus +} +#endif +#endif /* !Py_OSMODULE_H */ diff --git a/client/3rd/include/frame/python/parsetok.h b/client/3rd/include/frame/python/parsetok.h new file mode 100755 index 0000000..935d733 --- /dev/null +++ b/client/3rd/include/frame/python/parsetok.h @@ -0,0 +1,110 @@ +/* Parser-tokenizer link interface */ + +#ifndef Py_LIMITED_API +#ifndef Py_PARSETOK_H +#define Py_PARSETOK_H +#ifdef __cplusplus +extern "C" { +#endif + +#include "grammar.h" /* grammar */ +#include "node.h" /* node */ + +typedef struct { + int error; + PyObject *filename; + int lineno; + int offset; + char *text; /* UTF-8-encoded string */ + int token; + int expected; +} perrdetail; + +#if 0 +#define PyPARSE_YIELD_IS_KEYWORD 0x0001 +#endif + +#define PyPARSE_DONT_IMPLY_DEDENT 0x0002 + +#if 0 +#define PyPARSE_WITH_IS_KEYWORD 0x0003 +#define PyPARSE_PRINT_IS_FUNCTION 0x0004 +#define PyPARSE_UNICODE_LITERALS 0x0008 +#endif + +#define PyPARSE_IGNORE_COOKIE 0x0010 +#define PyPARSE_BARRY_AS_BDFL 0x0020 +#define PyPARSE_TYPE_COMMENTS 0x0040 +#define PyPARSE_ASYNC_HACKS 0x0080 + +PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int, + perrdetail *); +PyAPI_FUNC(node *) PyParser_ParseFile (FILE *, const char *, grammar *, int, + const char *, const char *, + perrdetail *); + +PyAPI_FUNC(node *) PyParser_ParseStringFlags(const char *, grammar *, int, + perrdetail *, int); +PyAPI_FUNC(node *) PyParser_ParseFileFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int flags); +PyAPI_FUNC(node *) PyParser_ParseFileFlagsEx( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int *flags); +PyAPI_FUNC(node *) PyParser_ParseFileObject( + FILE *fp, + PyObject *filename, + const char *enc, + grammar *g, + int start, + const char *ps1, + const char *ps2, + perrdetail *err_ret, + int *flags); + +PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilename( + const char *s, + const char *filename, /* decoded from the filesystem encoding */ + grammar *g, + int start, + perrdetail *err_ret, + int flags); +PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilenameEx( + const char *s, + const char *filename, /* decoded from the filesystem encoding */ + grammar *g, + int start, + perrdetail *err_ret, + int *flags); +PyAPI_FUNC(node *) PyParser_ParseStringObject( + const char *s, + PyObject *filename, + grammar *g, + int start, + perrdetail *err_ret, + int *flags); + +/* Note that the following functions are defined in pythonrun.c, + not in parsetok.c */ +PyAPI_FUNC(void) PyParser_SetError(perrdetail *); +PyAPI_FUNC(void) PyParser_ClearError(perrdetail *); + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PARSETOK_H */ +#endif /* !Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/patchlevel.h b/client/3rd/include/frame/python/patchlevel.h new file mode 100755 index 0000000..fea7566 --- /dev/null +++ b/client/3rd/include/frame/python/patchlevel.h @@ -0,0 +1,35 @@ + +/* Python version identification scheme. + + When the major or minor version changes, the VERSION variable in + configure.ac must also be changed. + + There is also (independent) API version information in modsupport.h. +*/ + +/* Values for PY_RELEASE_LEVEL */ +#define PY_RELEASE_LEVEL_ALPHA 0xA +#define PY_RELEASE_LEVEL_BETA 0xB +#define PY_RELEASE_LEVEL_GAMMA 0xC /* For release candidates */ +#define PY_RELEASE_LEVEL_FINAL 0xF /* Serial should be 0 here */ + /* Higher for patch releases */ + +/* Version parsed out into numeric values */ +/*--start constants--*/ +#define PY_MAJOR_VERSION 3 +#define PY_MINOR_VERSION 8 +#define PY_MICRO_VERSION 20 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 + +/* Version as a string */ +#define PY_VERSION "3.8.20" +/*--end constants--*/ + +/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. + Use this for numeric comparisons, e.g. #if PY_VERSION_HEX >= ... */ +#define PY_VERSION_HEX ((PY_MAJOR_VERSION << 24) | \ + (PY_MINOR_VERSION << 16) | \ + (PY_MICRO_VERSION << 8) | \ + (PY_RELEASE_LEVEL << 4) | \ + (PY_RELEASE_SERIAL << 0)) diff --git a/client/3rd/include/frame/python/picklebufobject.h b/client/3rd/include/frame/python/picklebufobject.h new file mode 100755 index 0000000..f07e900 --- /dev/null +++ b/client/3rd/include/frame/python/picklebufobject.h @@ -0,0 +1,31 @@ +/* PickleBuffer object. This is built-in for ease of use from third-party + * C extensions. + */ + +#ifndef Py_PICKLEBUFOBJECT_H +#define Py_PICKLEBUFOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_LIMITED_API + +PyAPI_DATA(PyTypeObject) PyPickleBuffer_Type; + +#define PyPickleBuffer_Check(op) (Py_TYPE(op) == &PyPickleBuffer_Type) + +/* Create a PickleBuffer redirecting to the given buffer-enabled object */ +PyAPI_FUNC(PyObject *) PyPickleBuffer_FromObject(PyObject *); +/* Get the PickleBuffer's underlying view to the original object + * (NULL if released) + */ +PyAPI_FUNC(const Py_buffer *) PyPickleBuffer_GetBuffer(PyObject *); +/* Release the PickleBuffer. Returns 0 on success, -1 on error. */ +PyAPI_FUNC(int) PyPickleBuffer_Release(PyObject *); + +#endif /* !Py_LIMITED_API */ + +#ifdef __cplusplus +} +#endif +#endif /* !Py_PICKLEBUFOBJECT_H */ diff --git a/client/3rd/include/frame/python/py_curses.h b/client/3rd/include/frame/python/py_curses.h new file mode 100755 index 0000000..2702b37 --- /dev/null +++ b/client/3rd/include/frame/python/py_curses.h @@ -0,0 +1,100 @@ + +#ifndef Py_CURSES_H +#define Py_CURSES_H + +#ifdef __APPLE__ +/* +** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards +** against multiple definition of wchar_t. +*/ +#ifdef _BSD_WCHAR_T_DEFINED_ +#define _WCHAR_T +#endif +#endif /* __APPLE__ */ + +/* On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards + against multiple definition of wchar_t and wint_t. */ +#if defined(__FreeBSD__) && defined(_XOPEN_SOURCE_EXTENDED) +# ifndef __wchar_t +# define __wchar_t +# endif +# ifndef __wint_t +# define __wint_t +# endif +#endif + +#if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS) +/* The following definition is necessary for ncurses 5.7; without it, + some of [n]curses.h set NCURSES_OPAQUE to 1, and then Python + can't get at the WINDOW flags field. */ +#define NCURSES_OPAQUE 0 +#endif + +#ifdef HAVE_NCURSES_H +#include +#else +#include +#endif + +#ifdef HAVE_NCURSES_H +/* configure was checking , but we will + use , which has some or all these features. */ +#if !defined(WINDOW_HAS_FLAGS) && !(NCURSES_OPAQUE+0) +#define WINDOW_HAS_FLAGS 1 +#endif +#if !defined(HAVE_CURSES_IS_PAD) && NCURSES_VERSION_PATCH+0 >= 20090906 +#define HAVE_CURSES_IS_PAD 1 +#endif +#ifndef MVWDELCH_IS_EXPRESSION +#define MVWDELCH_IS_EXPRESSION 1 +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define PyCurses_API_pointers 4 + +/* Type declarations */ + +typedef struct { + PyObject_HEAD + WINDOW *win; + char *encoding; +} PyCursesWindowObject; + +#define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) + +#define PyCurses_CAPSULE_NAME "_curses._C_API" + + +#ifdef CURSES_MODULE +/* This section is used when compiling _cursesmodule.c */ + +#else +/* This section is used in modules that use the _cursesmodule API */ + +static void **PyCurses_API; + +#define PyCursesWindow_Type (*(PyTypeObject *) PyCurses_API[0]) +#define PyCursesSetupTermCalled {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;} +#define PyCursesInitialised {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;} +#define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;} + +#define import_curses() \ + PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1); + +#endif + +/* general error messages */ +static const char catchall_ERR[] = "curses function returned ERR"; +static const char catchall_NULL[] = "curses function returned NULL"; + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(Py_CURSES_H) */ + + diff --git a/client/3rd/include/frame/python/pyarena.h b/client/3rd/include/frame/python/pyarena.h new file mode 100755 index 0000000..db3ad01 --- /dev/null +++ b/client/3rd/include/frame/python/pyarena.h @@ -0,0 +1,64 @@ +/* An arena-like memory interface for the compiler. + */ + +#ifndef Py_LIMITED_API +#ifndef Py_PYARENA_H +#define Py_PYARENA_H + +#ifdef __cplusplus +extern "C" { +#endif + + typedef struct _arena PyArena; + + /* PyArena_New() and PyArena_Free() create a new arena and free it, + respectively. Once an arena has been created, it can be used + to allocate memory via PyArena_Malloc(). Pointers to PyObject can + also be registered with the arena via PyArena_AddPyObject(), and the + arena will ensure that the PyObjects stay alive at least until + PyArena_Free() is called. When an arena is freed, all the memory it + allocated is freed, the arena releases internal references to registered + PyObject*, and none of its pointers are valid. + XXX (tim) What does "none of its pointers are valid" mean? Does it + XXX mean that pointers previously obtained via PyArena_Malloc() are + XXX no longer valid? (That's clearly true, but not sure that's what + XXX the text is trying to say.) + + PyArena_New() returns an arena pointer. On error, it + returns a negative number and sets an exception. + XXX (tim): Not true. On error, PyArena_New() actually returns NULL, + XXX and looks like it may or may not set an exception (e.g., if the + XXX internal PyList_New(0) returns NULL, PyArena_New() passes that on + XXX and an exception is set; OTOH, if the internal + XXX block_new(DEFAULT_BLOCK_SIZE) returns NULL, that's passed on but + XXX an exception is not set in that case). + */ + PyAPI_FUNC(PyArena *) PyArena_New(void); + PyAPI_FUNC(void) PyArena_Free(PyArena *); + + /* Mostly like malloc(), return the address of a block of memory spanning + * `size` bytes, or return NULL (without setting an exception) if enough + * new memory can't be obtained. Unlike malloc(0), PyArena_Malloc() with + * size=0 does not guarantee to return a unique pointer (the pointer + * returned may equal one or more other pointers obtained from + * PyArena_Malloc()). + * Note that pointers obtained via PyArena_Malloc() must never be passed to + * the system free() or realloc(), or to any of Python's similar memory- + * management functions. PyArena_Malloc()-obtained pointers remain valid + * until PyArena_Free(ar) is called, at which point all pointers obtained + * from the arena `ar` become invalid simultaneously. + */ + PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t size); + + /* This routine isn't a proper arena allocation routine. It takes + * a PyObject* and records it so that it can be DECREFed when the + * arena is freed. + */ + PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *); + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_PYARENA_H */ +#endif /* Py_LIMITED_API */ diff --git a/client/3rd/include/frame/python/pybind11/attr.h b/client/3rd/include/frame/python/pybind11/attr.h new file mode 100755 index 0000000..1044db9 --- /dev/null +++ b/client/3rd/include/frame/python/pybind11/attr.h @@ -0,0 +1,690 @@ +/* + pybind11/attr.h: Infrastructure for processing custom + type and function attributes + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" +#include "cast.h" + +#include + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +/// \addtogroup annotations +/// @{ + +/// Annotation for methods +struct is_method { + handle class_; + explicit is_method(const handle &c) : class_(c) {} +}; + +/// Annotation for setters +struct is_setter {}; + +/// Annotation for operators +struct is_operator {}; + +/// Annotation for classes that cannot be subclassed +struct is_final {}; + +/// Annotation for parent scope +struct scope { + handle value; + explicit scope(const handle &s) : value(s) {} +}; + +/// Annotation for documentation +struct doc { + const char *value; + explicit doc(const char *value) : value(value) {} +}; + +/// Annotation for function names +struct name { + const char *value; + explicit name(const char *value) : value(value) {} +}; + +/// Annotation indicating that a function is an overload associated with a given "sibling" +struct sibling { + handle value; + explicit sibling(const handle &value) : value(value.ptr()) {} +}; + +/// Annotation indicating that a class derives from another given type +template +struct base { + + PYBIND11_DEPRECATED( + "base() was deprecated in favor of specifying 'T' as a template argument to class_") + base() = default; +}; + +/// Keep patient alive while nurse lives +template +struct keep_alive {}; + +/// Annotation indicating that a class is involved in a multiple inheritance relationship +struct multiple_inheritance {}; + +/// Annotation which enables dynamic attributes, i.e. adds `__dict__` to a class +struct dynamic_attr {}; + +/// Annotation which enables the buffer protocol for a type +struct buffer_protocol {}; + +/// Annotation which requests that a special metaclass is created for a type +struct metaclass { + handle value; + + PYBIND11_DEPRECATED("py::metaclass() is no longer required. It's turned on by default now.") + metaclass() = default; + + /// Override pybind11's default metaclass + explicit metaclass(handle value) : value(value) {} +}; + +/// Specifies a custom callback with signature `void (PyHeapTypeObject*)` that +/// may be used to customize the Python type. +/// +/// The callback is invoked immediately before `PyType_Ready`. +/// +/// Note: This is an advanced interface, and uses of it may require changes to +/// work with later versions of pybind11. You may wish to consult the +/// implementation of `make_new_python_type` in `detail/classes.h` to understand +/// the context in which the callback will be run. +struct custom_type_setup { + using callback = std::function; + + explicit custom_type_setup(callback value) : value(std::move(value)) {} + + callback value; +}; + +/// Annotation that marks a class as local to the module: +struct module_local { + const bool value; + constexpr explicit module_local(bool v = true) : value(v) {} +}; + +/// Annotation to mark enums as an arithmetic type +struct arithmetic {}; + +/// Mark a function for addition at the beginning of the existing overload chain instead of the end +struct prepend {}; + +/** \rst + A call policy which places one or more guard variables (``Ts...``) around the function call. + + For example, this definition: + + .. code-block:: cpp + + m.def("foo", foo, py::call_guard()); + + is equivalent to the following pseudocode: + + .. code-block:: cpp + + m.def("foo", [](args...) { + T scope_guard; + return foo(args...); // forwarded arguments + }); + \endrst */ +template +struct call_guard; + +template <> +struct call_guard<> { + using type = detail::void_type; +}; + +template +struct call_guard { + static_assert(std::is_default_constructible::value, + "The guard type must be default constructible"); + + using type = T; +}; + +template +struct call_guard { + struct type { + T guard{}; // Compose multiple guard types with left-to-right default-constructor order + typename call_guard::type next{}; + }; +}; + +/// @} annotations + +PYBIND11_NAMESPACE_BEGIN(detail) +/* Forward declarations */ +enum op_id : int; +enum op_type : int; +struct undefined_t; +template +struct op_; +void keep_alive_impl(size_t Nurse, size_t Patient, function_call &call, handle ret); + +/// Internal data structure which holds metadata about a keyword argument +struct argument_record { + const char *name; ///< Argument name + const char *descr; ///< Human-readable version of the argument value + handle value; ///< Associated Python object + bool convert : 1; ///< True if the argument is allowed to convert when loading + bool none : 1; ///< True if None is allowed when loading + + argument_record(const char *name, const char *descr, handle value, bool convert, bool none) + : name(name), descr(descr), value(value), convert(convert), none(none) {} +}; + +/// Internal data structure which holds metadata about a bound function (signature, overloads, +/// etc.) +struct function_record { + function_record() + : is_constructor(false), is_new_style_constructor(false), is_stateless(false), + is_operator(false), is_method(false), is_setter(false), has_args(false), + has_kwargs(false), prepend(false) {} + + /// Function name + char *name = nullptr; /* why no C++ strings? They generate heavier code.. */ + + // User-specified documentation string + char *doc = nullptr; + + /// Human-readable version of the function signature + char *signature = nullptr; + + /// List of registered keyword arguments + std::vector args; + + /// Pointer to lambda function which converts arguments and performs the actual call + handle (*impl)(function_call &) = nullptr; + + /// Storage for the wrapped function pointer and captured data, if any + void *data[3] = {}; + + /// Pointer to custom destructor for 'data' (if needed) + void (*free_data)(function_record *ptr) = nullptr; + + /// Return value policy associated with this function + return_value_policy policy = return_value_policy::automatic; + + /// True if name == '__init__' + bool is_constructor : 1; + + /// True if this is a new-style `__init__` defined in `detail/init.h` + bool is_new_style_constructor : 1; + + /// True if this is a stateless function pointer + bool is_stateless : 1; + + /// True if this is an operator (__add__), etc. + bool is_operator : 1; + + /// True if this is a method + bool is_method : 1; + + /// True if this is a setter + bool is_setter : 1; + + /// True if the function has a '*args' argument + bool has_args : 1; + + /// True if the function has a '**kwargs' argument + bool has_kwargs : 1; + + /// True if this function is to be inserted at the beginning of the overload resolution chain + bool prepend : 1; + + /// Number of arguments (including py::args and/or py::kwargs, if present) + std::uint16_t nargs; + + /// Number of leading positional arguments, which are terminated by a py::args or py::kwargs + /// argument or by a py::kw_only annotation. + std::uint16_t nargs_pos = 0; + + /// Number of leading arguments (counted in `nargs`) that are positional-only + std::uint16_t nargs_pos_only = 0; + + /// Python method object + PyMethodDef *def = nullptr; + + /// Python handle to the parent scope (a class or a module) + handle scope; + + /// Python handle to the sibling function representing an overload chain + handle sibling; + + /// Pointer to next overload + function_record *next = nullptr; +}; + +/// Special data structure which (temporarily) holds metadata about a bound class +struct type_record { + PYBIND11_NOINLINE type_record() + : multiple_inheritance(false), dynamic_attr(false), buffer_protocol(false), + default_holder(true), module_local(false), is_final(false) {} + + /// Handle to the parent scope + handle scope; + + /// Name of the class + const char *name = nullptr; + + // Pointer to RTTI type_info data structure + const std::type_info *type = nullptr; + + /// How large is the underlying C++ type? + size_t type_size = 0; + + /// What is the alignment of the underlying C++ type? + size_t type_align = 0; + + /// How large is the type's holder? + size_t holder_size = 0; + + /// The global operator new can be overridden with a class-specific variant + void *(*operator_new)(size_t) = nullptr; + + /// Function pointer to class_<..>::init_instance + void (*init_instance)(instance *, const void *) = nullptr; + + /// Function pointer to class_<..>::dealloc + void (*dealloc)(detail::value_and_holder &) = nullptr; + + /// List of base classes of the newly created type + list bases; + + /// Optional docstring + const char *doc = nullptr; + + /// Custom metaclass (optional) + handle metaclass; + + /// Custom type setup. + custom_type_setup::callback custom_type_setup_callback; + + /// Multiple inheritance marker + bool multiple_inheritance : 1; + + /// Does the class manage a __dict__? + bool dynamic_attr : 1; + + /// Does the class implement the buffer protocol? + bool buffer_protocol : 1; + + /// Is the default (unique_ptr) holder type used? + bool default_holder : 1; + + /// Is the class definition local to the module shared object? + bool module_local : 1; + + /// Is the class inheritable from python classes? + bool is_final : 1; + + PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *) ) { + auto *base_info = detail::get_type_info(base, false); + if (!base_info) { + std::string tname(base.name()); + detail::clean_type_id(tname); + pybind11_fail("generic_type: type \"" + std::string(name) + + "\" referenced unknown base type \"" + tname + "\""); + } + + if (default_holder != base_info->default_holder) { + std::string tname(base.name()); + detail::clean_type_id(tname); + pybind11_fail("generic_type: type \"" + std::string(name) + "\" " + + (default_holder ? "does not have" : "has") + + " a non-default holder type while its base \"" + tname + "\" " + + (base_info->default_holder ? "does not" : "does")); + } + + bases.append((PyObject *) base_info->type); + +#if PY_VERSION_HEX < 0x030B0000 + dynamic_attr |= base_info->type->tp_dictoffset != 0; +#else + dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0; +#endif + + if (caster) { + base_info->implicit_casts.emplace_back(type, caster); + } + } +}; + +inline function_call::function_call(const function_record &f, handle p) : func(f), parent(p) { + args.reserve(f.nargs); + args_convert.reserve(f.nargs); +} + +/// Tag for a new-style `__init__` defined in `detail/init.h` +struct is_new_style_constructor {}; + +/** + * Partial template specializations to process custom attributes provided to + * cpp_function_ and class_. These are either used to initialize the respective + * fields in the type_record and function_record data structures or executed at + * runtime to deal with custom call policies (e.g. keep_alive). + */ +template +struct process_attribute; + +template +struct process_attribute_default { + /// Default implementation: do nothing + static void init(const T &, function_record *) {} + static void init(const T &, type_record *) {} + static void precall(function_call &) {} + static void postcall(function_call &, handle) {} +}; + +/// Process an attribute specifying the function's name +template <> +struct process_attribute : process_attribute_default { + static void init(const name &n, function_record *r) { r->name = const_cast(n.value); } +}; + +/// Process an attribute specifying the function's docstring +template <> +struct process_attribute : process_attribute_default { + static void init(const doc &n, function_record *r) { r->doc = const_cast(n.value); } +}; + +/// Process an attribute specifying the function's docstring (provided as a C-style string) +template <> +struct process_attribute : process_attribute_default { + static void init(const char *d, function_record *r) { r->doc = const_cast(d); } + static void init(const char *d, type_record *r) { r->doc = d; } +}; +template <> +struct process_attribute : process_attribute {}; + +/// Process an attribute indicating the function's return value policy +template <> +struct process_attribute : process_attribute_default { + static void init(const return_value_policy &p, function_record *r) { r->policy = p; } +}; + +/// Process an attribute which indicates that this is an overloaded function associated with a +/// given sibling +template <> +struct process_attribute : process_attribute_default { + static void init(const sibling &s, function_record *r) { r->sibling = s.value; } +}; + +/// Process an attribute which indicates that this function is a method +template <> +struct process_attribute : process_attribute_default { + static void init(const is_method &s, function_record *r) { + r->is_method = true; + r->scope = s.class_; + } +}; + +/// Process an attribute which indicates that this function is a setter +template <> +struct process_attribute : process_attribute_default { + static void init(const is_setter &, function_record *r) { r->is_setter = true; } +}; + +/// Process an attribute which indicates the parent scope of a method +template <> +struct process_attribute : process_attribute_default { + static void init(const scope &s, function_record *r) { r->scope = s.value; } +}; + +/// Process an attribute which indicates that this function is an operator +template <> +struct process_attribute : process_attribute_default { + static void init(const is_operator &, function_record *r) { r->is_operator = true; } +}; + +template <> +struct process_attribute + : process_attribute_default { + static void init(const is_new_style_constructor &, function_record *r) { + r->is_new_style_constructor = true; + } +}; + +inline void check_kw_only_arg(const arg &a, function_record *r) { + if (r->args.size() > r->nargs_pos && (!a.name || a.name[0] == '\0')) { + pybind11_fail("arg(): cannot specify an unnamed argument after a kw_only() annotation or " + "args() argument"); + } +} + +inline void append_self_arg_if_needed(function_record *r) { + if (r->is_method && r->args.empty()) { + r->args.emplace_back("self", nullptr, handle(), /*convert=*/true, /*none=*/false); + } +} + +/// Process a keyword argument attribute (*without* a default value) +template <> +struct process_attribute : process_attribute_default { + static void init(const arg &a, function_record *r) { + append_self_arg_if_needed(r); + r->args.emplace_back(a.name, nullptr, handle(), !a.flag_noconvert, a.flag_none); + + check_kw_only_arg(a, r); + } +}; + +/// Process a keyword argument attribute (*with* a default value) +template <> +struct process_attribute : process_attribute_default { + static void init(const arg_v &a, function_record *r) { + if (r->is_method && r->args.empty()) { + r->args.emplace_back( + "self", /*descr=*/nullptr, /*parent=*/handle(), /*convert=*/true, /*none=*/false); + } + + if (!a.value) { +#if defined(PYBIND11_DETAILED_ERROR_MESSAGES) + std::string descr("'"); + if (a.name) { + descr += std::string(a.name) + ": "; + } + descr += a.type + "'"; + if (r->is_method) { + if (r->name) { + descr += " in method '" + (std::string) str(r->scope) + "." + + (std::string) r->name + "'"; + } else { + descr += " in method of '" + (std::string) str(r->scope) + "'"; + } + } else if (r->name) { + descr += " in function '" + (std::string) r->name + "'"; + } + pybind11_fail("arg(): could not convert default argument " + descr + + " into a Python object (type not registered yet?)"); +#else + pybind11_fail("arg(): could not convert default argument " + "into a Python object (type not registered yet?). " + "#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for " + "more information."); +#endif + } + r->args.emplace_back(a.name, a.descr, a.value.inc_ref(), !a.flag_noconvert, a.flag_none); + + check_kw_only_arg(a, r); + } +}; + +/// Process a keyword-only-arguments-follow pseudo argument +template <> +struct process_attribute : process_attribute_default { + static void init(const kw_only &, function_record *r) { + append_self_arg_if_needed(r); + if (r->has_args && r->nargs_pos != static_cast(r->args.size())) { + pybind11_fail("Mismatched args() and kw_only(): they must occur at the same relative " + "argument location (or omit kw_only() entirely)"); + } + r->nargs_pos = static_cast(r->args.size()); + } +}; + +/// Process a positional-only-argument maker +template <> +struct process_attribute : process_attribute_default { + static void init(const pos_only &, function_record *r) { + append_self_arg_if_needed(r); + r->nargs_pos_only = static_cast(r->args.size()); + if (r->nargs_pos_only > r->nargs_pos) { + pybind11_fail("pos_only(): cannot follow a py::args() argument"); + } + // It also can't follow a kw_only, but a static_assert in pybind11.h checks that + } +}; + +/// Process a parent class attribute. Single inheritance only (class_ itself already guarantees +/// that) +template +struct process_attribute::value>> + : process_attribute_default { + static void init(const handle &h, type_record *r) { r->bases.append(h); } +}; + +/// Process a parent class attribute (deprecated, does not support multiple inheritance) +template +struct process_attribute> : process_attribute_default> { + static void init(const base &, type_record *r) { r->add_base(typeid(T), nullptr); } +}; + +/// Process a multiple inheritance attribute +template <> +struct process_attribute : process_attribute_default { + static void init(const multiple_inheritance &, type_record *r) { + r->multiple_inheritance = true; + } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const dynamic_attr &, type_record *r) { r->dynamic_attr = true; } +}; + +template <> +struct process_attribute { + static void init(const custom_type_setup &value, type_record *r) { + r->custom_type_setup_callback = value.value; + } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const is_final &, type_record *r) { r->is_final = true; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const buffer_protocol &, type_record *r) { r->buffer_protocol = true; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const metaclass &m, type_record *r) { r->metaclass = m.value; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const module_local &l, type_record *r) { r->module_local = l.value; } +}; + +/// Process a 'prepend' attribute, putting this at the beginning of the overload chain +template <> +struct process_attribute : process_attribute_default { + static void init(const prepend &, function_record *r) { r->prepend = true; } +}; + +/// Process an 'arithmetic' attribute for enums (does nothing here) +template <> +struct process_attribute : process_attribute_default {}; + +template +struct process_attribute> : process_attribute_default> {}; + +/** + * Process a keep_alive call policy -- invokes keep_alive_impl during the + * pre-call handler if both Nurse, Patient != 0 and use the post-call handler + * otherwise + */ +template +struct process_attribute> + : public process_attribute_default> { + template = 0> + static void precall(function_call &call) { + keep_alive_impl(Nurse, Patient, call, handle()); + } + template = 0> + static void postcall(function_call &, handle) {} + template = 0> + static void precall(function_call &) {} + template = 0> + static void postcall(function_call &call, handle ret) { + keep_alive_impl(Nurse, Patient, call, ret); + } +}; + +/// Recursively iterate over variadic template arguments +template +struct process_attributes { + static void init(const Args &...args, function_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{ + 0, ((void) process_attribute::type>::init(args, r), 0)...}; + } + static void init(const Args &...args, type_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::init(args, r), 0)...}; + } + static void precall(function_call &call) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::precall(call), 0)...}; + } + static void postcall(function_call &call, handle fn_ret) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call, fn_ret); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(fn_ret); + using expander = int[]; + (void) expander{ + 0, (process_attribute::type>::postcall(call, fn_ret), 0)...}; + } +}; + +template +using is_call_guard = is_instantiation; + +/// Extract the ``type`` from the first `call_guard` in `Extras...` (or `void_type` if none found) +template +using extract_guard_t = typename exactly_one_t, Extra...>::type; + +/// Check the number of named arguments at compile time +template ::value...), + size_t self = constexpr_sum(std::is_same::value...)> +constexpr bool expected_num_args(size_t nargs, bool has_args, bool has_kwargs) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(nargs, has_args, has_kwargs); + return named == 0 || (self + named + size_t(has_args) + size_t(has_kwargs)) == nargs; +} + +PYBIND11_NAMESPACE_END(detail) +PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) diff --git a/client/3rd/include/frame/python/pybind11/buffer_info.h b/client/3rd/include/frame/python/pybind11/buffer_info.h new file mode 100755 index 0000000..75aec0b --- /dev/null +++ b/client/3rd/include/frame/python/pybind11/buffer_info.h @@ -0,0 +1,208 @@ +/* + pybind11/buffer_info.h: Python buffer object interface + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +PYBIND11_NAMESPACE_BEGIN(detail) + +// Default, C-style strides +inline std::vector c_strides(const std::vector &shape, ssize_t itemsize) { + auto ndim = shape.size(); + std::vector strides(ndim, itemsize); + if (ndim > 0) { + for (size_t i = ndim - 1; i > 0; --i) { + strides[i - 1] = strides[i] * shape[i]; + } + } + return strides; +} + +// F-style strides; default when constructing an array_t with `ExtraFlags & f_style` +inline std::vector f_strides(const std::vector &shape, ssize_t itemsize) { + auto ndim = shape.size(); + std::vector strides(ndim, itemsize); + for (size_t i = 1; i < ndim; ++i) { + strides[i] = strides[i - 1] * shape[i - 1]; + } + return strides; +} + +template +struct compare_buffer_info; + +PYBIND11_NAMESPACE_END(detail) + +/// Information record describing a Python buffer object +struct buffer_info { + void *ptr = nullptr; // Pointer to the underlying storage + ssize_t itemsize = 0; // Size of individual items in bytes + ssize_t size = 0; // Total number of entries + std::string format; // For homogeneous buffers, this should be set to + // format_descriptor::format() + ssize_t ndim = 0; // Number of dimensions + std::vector shape; // Shape of the tensor (1 entry per dimension) + std::vector strides; // Number of bytes between adjacent entries + // (for each per dimension) + bool readonly = false; // flag to indicate if the underlying storage may be written to + + buffer_info() = default; + + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : ptr(ptr), itemsize(itemsize), size(1), format(format), ndim(ndim), + shape(std::move(shape_in)), strides(std::move(strides_in)), readonly(readonly) { + if (ndim != (ssize_t) shape.size() || ndim != (ssize_t) strides.size()) { + pybind11_fail("buffer_info: ndim doesn't match shape and/or strides length"); + } + for (size_t i = 0; i < (size_t) ndim; ++i) { + size *= shape[i]; + } + } + + template + buffer_info(T *ptr, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : buffer_info(private_ctr_tag(), + ptr, + sizeof(T), + format_descriptor::format(), + static_cast(shape_in->size()), + std::move(shape_in), + std::move(strides_in), + readonly) {} + + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t size, + bool readonly = false) + : buffer_info(ptr, itemsize, format, 1, {size}, {itemsize}, readonly) {} + + template + buffer_info(T *ptr, ssize_t size, bool readonly = false) + : buffer_info(ptr, sizeof(T), format_descriptor::format(), size, readonly) {} + + template + buffer_info(const T *ptr, ssize_t size, bool readonly = true) + : buffer_info( + const_cast(ptr), sizeof(T), format_descriptor::format(), size, readonly) {} + + explicit buffer_info(Py_buffer *view, bool ownview = true) + : buffer_info( + view->buf, + view->itemsize, + view->format, + view->ndim, + {view->shape, view->shape + view->ndim}, + /* Though buffer::request() requests PyBUF_STRIDES, ctypes objects + * ignore this flag and return a view with NULL strides. + * When strides are NULL, build them manually. */ + view->strides + ? std::vector(view->strides, view->strides + view->ndim) + : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize), + (view->readonly != 0)) { + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) + this->m_view = view; + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) + this->ownview = ownview; + } + + buffer_info(const buffer_info &) = delete; + buffer_info &operator=(const buffer_info &) = delete; + + buffer_info(buffer_info &&other) noexcept { (*this) = std::move(other); } + + buffer_info &operator=(buffer_info &&rhs) noexcept { + ptr = rhs.ptr; + itemsize = rhs.itemsize; + size = rhs.size; + format = std::move(rhs.format); + ndim = rhs.ndim; + shape = std::move(rhs.shape); + strides = std::move(rhs.strides); + std::swap(m_view, rhs.m_view); + std::swap(ownview, rhs.ownview); + readonly = rhs.readonly; + return *this; + } + + ~buffer_info() { + if (m_view && ownview) { + PyBuffer_Release(m_view); + delete m_view; + } + } + + Py_buffer *view() const { return m_view; } + Py_buffer *&view() { return m_view; } + + /* True if the buffer item type is equivalent to `T`. */ + // To define "equivalent" by example: + // `buffer_info::item_type_is_equivalent_to(b)` and + // `buffer_info::item_type_is_equivalent_to(b)` may both be true + // on some platforms, but `int` and `unsigned` will never be equivalent. + // For the ground truth, please inspect `detail::compare_buffer_info<>`. + template + bool item_type_is_equivalent_to() const { + return detail::compare_buffer_info::compare(*this); + } + +private: + struct private_ctr_tag {}; + + buffer_info(private_ctr_tag, + void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container &&shape_in, + detail::any_container &&strides_in, + bool readonly) + : buffer_info( + ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) {} + + Py_buffer *m_view = nullptr; + bool ownview = false; +}; + +PYBIND11_NAMESPACE_BEGIN(detail) + +template +struct compare_buffer_info { + static bool compare(const buffer_info &b) { + // NOLINTNEXTLINE(bugprone-sizeof-expression) Needed for `PyObject *` + return b.format == format_descriptor::format() && b.itemsize == (ssize_t) sizeof(T); + } +}; + +template +struct compare_buffer_info::value>> { + static bool compare(const buffer_info &b) { + return (size_t) b.itemsize == sizeof(T) + && (b.format == format_descriptor::value + || ((sizeof(T) == sizeof(long)) + && b.format == (std::is_unsigned::value ? "L" : "l")) + || ((sizeof(T) == sizeof(size_t)) + && b.format == (std::is_unsigned::value ? "N" : "n"))); + } +}; + +PYBIND11_NAMESPACE_END(detail) +PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) diff --git a/client/3rd/include/frame/python/pybind11/cast.h b/client/3rd/include/frame/python/pybind11/cast.h new file mode 100755 index 0000000..624b8eb --- /dev/null +++ b/client/3rd/include/frame/python/pybind11/cast.h @@ -0,0 +1,1848 @@ +/* + pybind11/cast.h: Partial template specializations to cast between + C++ and Python types + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" +#include "detail/descr.h" +#include "detail/type_caster_base.h" +#include "detail/typeid.h" +#include "pytypes.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +PYBIND11_WARNING_DISABLE_MSVC(4127) + +PYBIND11_NAMESPACE_BEGIN(detail) + +template +class type_caster : public type_caster_base {}; +template +using make_caster = type_caster>; + +// Shortcut for calling a caster's `cast_op_type` cast operator for casting a type_caster to a T +template +typename make_caster::template cast_op_type cast_op(make_caster &caster) { + using result_t = typename make_caster::template cast_op_type; // See PR #4893 + return caster.operator result_t(); +} +template +typename make_caster::template cast_op_type::type> +cast_op(make_caster &&caster) { + using result_t = typename make_caster::template cast_op_type< + typename std::add_rvalue_reference::type>; // See PR #4893 + return std::move(caster).operator result_t(); +} + +template +class type_caster> { +private: + using caster_t = make_caster; + caster_t subcaster; + using reference_t = type &; + using subcaster_cast_op_type = typename caster_t::template cast_op_type; + + static_assert( + std::is_same::type &, subcaster_cast_op_type>::value + || std::is_same::value, + "std::reference_wrapper caster requires T to have a caster with an " + "`operator T &()` or `operator const T &()`"); + +public: + bool load(handle src, bool convert) { return subcaster.load(src, convert); } + static constexpr auto name = caster_t::name; + static handle + cast(const std::reference_wrapper &src, return_value_policy policy, handle parent) { + // It is definitely wrong to take ownership of this pointer, so mask that rvp + if (policy == return_value_policy::take_ownership + || policy == return_value_policy::automatic) { + policy = return_value_policy::automatic_reference; + } + return caster_t::cast(&src.get(), policy, parent); + } + template + using cast_op_type = std::reference_wrapper; + explicit operator std::reference_wrapper() { return cast_op(subcaster); } +}; + +#define PYBIND11_TYPE_CASTER(type, py_name) \ +protected: \ + type value; \ + \ +public: \ + static constexpr auto name = py_name; \ + template >::value, \ + int> \ + = 0> \ + static ::pybind11::handle cast( \ + T_ *src, ::pybind11::return_value_policy policy, ::pybind11::handle parent) { \ + if (!src) \ + return ::pybind11::none().release(); \ + if (policy == ::pybind11::return_value_policy::take_ownership) { \ + auto h = cast(std::move(*src), policy, parent); \ + delete src; \ + return h; \ + } \ + return cast(*src, policy, parent); \ + } \ + operator type *() { return &value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &() { return value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &&() && { return std::move(value); } /* NOLINT(bugprone-macro-parentheses) */ \ + template \ + using cast_op_type = ::pybind11::detail::movable_cast_op_type + +template +using is_std_char_type = any_of, /* std::string */ +#if defined(PYBIND11_HAS_U8STRING) + std::is_same, /* std::u8string */ +#endif + std::is_same, /* std::u16string */ + std::is_same, /* std::u32string */ + std::is_same /* std::wstring */ + >; + +template +struct type_caster::value && !is_std_char_type::value>> { + using _py_type_0 = conditional_t; + using _py_type_1 = conditional_t::value, + _py_type_0, + typename std::make_unsigned<_py_type_0>::type>; + using py_type = conditional_t::value, double, _py_type_1>; + +public: + bool load(handle src, bool convert) { + py_type py_value; + + if (!src) { + return false; + } + +#if !defined(PYPY_VERSION) + auto index_check = [](PyObject *o) { return PyIndex_Check(o); }; +#else + // In PyPy 7.3.3, `PyIndex_Check` is implemented by calling `__index__`, + // while CPython only considers the existence of `nb_index`/`__index__`. + auto index_check = [](PyObject *o) { return hasattr(o, "__index__"); }; +#endif + + if (std::is_floating_point::value) { + if (convert || PyFloat_Check(src.ptr())) { + py_value = (py_type) PyFloat_AsDouble(src.ptr()); + } else { + return false; + } + } else if (PyFloat_Check(src.ptr()) + || (!convert && !PYBIND11_LONG_CHECK(src.ptr()) && !index_check(src.ptr()))) { + return false; + } else { + handle src_or_index = src; + // PyPy: 7.3.7's 3.8 does not implement PyLong_*'s __index__ calls. +#if PY_VERSION_HEX < 0x03080000 || defined(PYPY_VERSION) + object index; + if (!PYBIND11_LONG_CHECK(src.ptr())) { // So: index_check(src.ptr()) + index = reinterpret_steal(PyNumber_Index(src.ptr())); + if (!index) { + PyErr_Clear(); + if (!convert) + return false; + } else { + src_or_index = index; + } + } +#endif + if (std::is_unsigned::value) { + py_value = as_unsigned(src_or_index.ptr()); + } else { // signed integer: + py_value = sizeof(T) <= sizeof(long) + ? (py_type) PyLong_AsLong(src_or_index.ptr()) + : (py_type) PYBIND11_LONG_AS_LONGLONG(src_or_index.ptr()); + } + } + + // Python API reported an error + bool py_err = py_value == (py_type) -1 && PyErr_Occurred(); + + // Check to see if the conversion is valid (integers should match exactly) + // Signed/unsigned checks happen elsewhere + if (py_err + || (std::is_integral::value && sizeof(py_type) != sizeof(T) + && py_value != (py_type) (T) py_value)) { + PyErr_Clear(); + if (py_err && convert && (PyNumber_Check(src.ptr()) != 0)) { + auto tmp = reinterpret_steal(std::is_floating_point::value + ? PyNumber_Float(src.ptr()) + : PyNumber_Long(src.ptr())); + PyErr_Clear(); + return load(tmp, false); + } + return false; + } + + value = (T) py_value; + return true; + } + + template + static typename std::enable_if::value, handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyFloat_FromDouble((double) src); + } + + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) <= sizeof(long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PYBIND11_LONG_FROM_SIGNED((long) src); + } + + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) <= sizeof(unsigned long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PYBIND11_LONG_FROM_UNSIGNED((unsigned long) src); + } + + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) > sizeof(long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyLong_FromLongLong((long long) src); + } + + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) > sizeof(unsigned long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyLong_FromUnsignedLongLong((unsigned long long) src); + } + + PYBIND11_TYPE_CASTER(T, const_name::value>("int", "float")); +}; + +template +struct void_caster { +public: + bool load(handle src, bool) { + if (src && src.is_none()) { + return true; + } + return false; + } + static handle cast(T, return_value_policy /* policy */, handle /* parent */) { + return none().release(); + } + PYBIND11_TYPE_CASTER(T, const_name("None")); +}; + +template <> +class type_caster : public void_caster {}; + +template <> +class type_caster : public type_caster { +public: + using type_caster::cast; + + bool load(handle h, bool) { + if (!h) { + return false; + } + if (h.is_none()) { + value = nullptr; + return true; + } + + /* Check if this is a capsule */ + if (isinstance(h)) { + value = reinterpret_borrow(h); + return true; + } + + /* Check if this is a C++ type */ + const auto &bases = all_type_info((PyTypeObject *) type::handle_of(h).ptr()); + if (bases.size() == 1) { // Only allowing loading from a single-value type + value = values_and_holders(reinterpret_cast(h.ptr())).begin()->value_ptr(); + return true; + } + + /* Fail */ + return false; + } + + static handle cast(const void *ptr, return_value_policy /* policy */, handle /* parent */) { + if (ptr) { + return capsule(ptr).release(); + } + return none().release(); + } + + template + using cast_op_type = void *&; + explicit operator void *&() { return value; } + static constexpr auto name = const_name("capsule"); + +private: + void *value = nullptr; +}; + +template <> +class type_caster : public void_caster {}; + +template <> +class type_caster { +public: + bool load(handle src, bool convert) { + if (!src) { + return false; + } + if (src.ptr() == Py_True) { + value = true; + return true; + } + if (src.ptr() == Py_False) { + value = false; + return true; + } + if (convert || is_numpy_bool(src)) { + // (allow non-implicit conversion for numpy booleans), use strncmp + // since NumPy 1.x had an additional trailing underscore. + + Py_ssize_t res = -1; + if (src.is_none()) { + res = 0; // None is implicitly converted to False + } +#if defined(PYPY_VERSION) + // On PyPy, check that "__bool__" attr exists + else if (hasattr(src, PYBIND11_BOOL_ATTR)) { + res = PyObject_IsTrue(src.ptr()); + } +#else + // Alternate approach for CPython: this does the same as the above, but optimized + // using the CPython API so as to avoid an unneeded attribute lookup. + else if (auto *tp_as_number = src.ptr()->ob_type->tp_as_number) { + if (PYBIND11_NB_BOOL(tp_as_number)) { + res = (*PYBIND11_NB_BOOL(tp_as_number))(src.ptr()); + } + } +#endif + if (res == 0 || res == 1) { + value = (res != 0); + return true; + } + PyErr_Clear(); + } + return false; + } + static handle cast(bool src, return_value_policy /* policy */, handle /* parent */) { + return handle(src ? Py_True : Py_False).inc_ref(); + } + PYBIND11_TYPE_CASTER(bool, const_name("bool")); + +private: + // Test if an object is a NumPy boolean (without fetching the type). + static inline bool is_numpy_bool(handle object) { + const char *type_name = Py_TYPE(object.ptr())->tp_name; + // Name changed to `numpy.bool` in NumPy 2, `numpy.bool_` is needed for 1.x support + return std::strcmp("numpy.bool", type_name) == 0 + || std::strcmp("numpy.bool_", type_name) == 0; + } +}; + +// Helper class for UTF-{8,16,32} C++ stl strings: +template +struct string_caster { + using CharT = typename StringType::value_type; + + // Simplify life by being able to assume standard char sizes (the standard only guarantees + // minimums, but Python requires exact sizes) + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char size != 1"); +#if defined(PYBIND11_HAS_U8STRING) + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char8_t size != 1"); +#endif + static_assert(!std::is_same::value || sizeof(CharT) == 2, + "Unsupported char16_t size != 2"); + static_assert(!std::is_same::value || sizeof(CharT) == 4, + "Unsupported char32_t size != 4"); + // wchar_t can be either 16 bits (Windows) or 32 (everywhere else) + static_assert(!std::is_same::value || sizeof(CharT) == 2 || sizeof(CharT) == 4, + "Unsupported wchar_t size != 2/4"); + static constexpr size_t UTF_N = 8 * sizeof(CharT); + + bool load(handle src, bool) { + handle load_src = src; + if (!src) { + return false; + } + if (!PyUnicode_Check(load_src.ptr())) { + return load_raw(load_src); + } + + // For UTF-8 we avoid the need for a temporary `bytes` object by using + // `PyUnicode_AsUTF8AndSize`. + if (UTF_N == 8) { + Py_ssize_t size = -1; + const auto *buffer + = reinterpret_cast(PyUnicode_AsUTF8AndSize(load_src.ptr(), &size)); + if (!buffer) { + PyErr_Clear(); + return false; + } + value = StringType(buffer, static_cast(size)); + return true; + } + + auto utfNbytes + = reinterpret_steal(PyUnicode_AsEncodedString(load_src.ptr(), + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr)); + if (!utfNbytes) { + PyErr_Clear(); + return false; + } + + const auto *buffer + = reinterpret_cast(PYBIND11_BYTES_AS_STRING(utfNbytes.ptr())); + size_t length = (size_t) PYBIND11_BYTES_SIZE(utfNbytes.ptr()) / sizeof(CharT); + // Skip BOM for UTF-16/32 + if (UTF_N > 8) { + buffer++; + length--; + } + value = StringType(buffer, length); + + // If we're loading a string_view we need to keep the encoded Python object alive: + if (IsView) { + loader_life_support::add_patient(utfNbytes); + } + + return true; + } + + static handle + cast(const StringType &src, return_value_policy /* policy */, handle /* parent */) { + const char *buffer = reinterpret_cast(src.data()); + auto nbytes = ssize_t(src.size() * sizeof(CharT)); + handle s = decode_utfN(buffer, nbytes); + if (!s) { + throw error_already_set(); + } + return s; + } + + PYBIND11_TYPE_CASTER(StringType, const_name(PYBIND11_STRING_NAME)); + +private: + static handle decode_utfN(const char *buffer, ssize_t nbytes) { +#if !defined(PYPY_VERSION) + return UTF_N == 8 ? PyUnicode_DecodeUTF8(buffer, nbytes, nullptr) + : UTF_N == 16 ? PyUnicode_DecodeUTF16(buffer, nbytes, nullptr, nullptr) + : PyUnicode_DecodeUTF32(buffer, nbytes, nullptr, nullptr); +#else + // PyPy segfaults when on PyUnicode_DecodeUTF16 (and possibly on PyUnicode_DecodeUTF32 as + // well), so bypass the whole thing by just passing the encoding as a string value, which + // works properly: + return PyUnicode_Decode(buffer, + nbytes, + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr); +#endif + } + + // When loading into a std::string or char*, accept a bytes/bytearray object as-is (i.e. + // without any encoding/decoding attempt). For other C++ char sizes this is a no-op. + // which supports loading a unicode from a str, doesn't take this path. + template + bool load_raw(enable_if_t::value, handle> src) { + if (PYBIND11_BYTES_CHECK(src.ptr())) { + // We were passed raw bytes; accept it into a std::string or char* + // without any encoding attempt. + const char *bytes = PYBIND11_BYTES_AS_STRING(src.ptr()); + if (!bytes) { + pybind11_fail("Unexpected PYBIND11_BYTES_AS_STRING() failure."); + } + value = StringType(bytes, (size_t) PYBIND11_BYTES_SIZE(src.ptr())); + return true; + } + if (PyByteArray_Check(src.ptr())) { + // We were passed a bytearray; accept it into a std::string or char* + // without any encoding attempt. + const char *bytearray = PyByteArray_AsString(src.ptr()); + if (!bytearray) { + pybind11_fail("Unexpected PyByteArray_AsString() failure."); + } + value = StringType(bytearray, (size_t) PyByteArray_Size(src.ptr())); + return true; + } + + return false; + } + + template + bool load_raw(enable_if_t::value, handle>) { + return false; + } +}; + +template +struct type_caster, + enable_if_t::value>> + : string_caster> {}; + +#ifdef PYBIND11_HAS_STRING_VIEW +template +struct type_caster, + enable_if_t::value>> + : string_caster, true> {}; +#endif + +// Type caster for C-style strings. We basically use a std::string type caster, but also add the +// ability to use None as a nullptr char* (which the string caster doesn't allow). +template +struct type_caster::value>> { + using StringType = std::basic_string; + using StringCaster = make_caster; + StringCaster str_caster; + bool none = false; + CharT one_char = 0; + +public: + bool load(handle src, bool convert) { + if (!src) { + return false; + } + if (src.is_none()) { + // Defer accepting None to other overloads (if we aren't in convert mode): + if (!convert) { + return false; + } + none = true; + return true; + } + return str_caster.load(src, convert); + } + + static handle cast(const CharT *src, return_value_policy policy, handle parent) { + if (src == nullptr) { + return pybind11::none().release(); + } + return StringCaster::cast(StringType(src), policy, parent); + } + + static handle cast(CharT src, return_value_policy policy, handle parent) { + if (std::is_same::value) { + handle s = PyUnicode_DecodeLatin1((const char *) &src, 1, nullptr); + if (!s) { + throw error_already_set(); + } + return s; + } + return StringCaster::cast(StringType(1, src), policy, parent); + } + + explicit operator CharT *() { + return none ? nullptr : const_cast(static_cast(str_caster).c_str()); + } + explicit operator CharT &() { + if (none) { + throw value_error("Cannot convert None to a character"); + } + + auto &value = static_cast(str_caster); + size_t str_len = value.size(); + if (str_len == 0) { + throw value_error("Cannot convert empty string to a character"); + } + + // If we're in UTF-8 mode, we have two possible failures: one for a unicode character that + // is too high, and one for multiple unicode characters (caught later), so we need to + // figure out how long the first encoded character is in bytes to distinguish between these + // two errors. We also allow want to allow unicode characters U+0080 through U+00FF, as + // those can fit into a single char value. + if (StringCaster::UTF_N == 8 && str_len > 1 && str_len <= 4) { + auto v0 = static_cast(value[0]); + // low bits only: 0-127 + // 0b110xxxxx - start of 2-byte sequence + // 0b1110xxxx - start of 3-byte sequence + // 0b11110xxx - start of 4-byte sequence + size_t char0_bytes = (v0 & 0x80) == 0 ? 1 + : (v0 & 0xE0) == 0xC0 ? 2 + : (v0 & 0xF0) == 0xE0 ? 3 + : 4; + + if (char0_bytes == str_len) { + // If we have a 128-255 value, we can decode it into a single char: + if (char0_bytes == 2 && (v0 & 0xFC) == 0xC0) { // 0x110000xx 0x10xxxxxx + one_char = static_cast(((v0 & 3) << 6) + + (static_cast(value[1]) & 0x3F)); + return one_char; + } + // Otherwise we have a single character, but it's > U+00FF + throw value_error("Character code point not in range(0x100)"); + } + } + + // UTF-16 is much easier: we can only have a surrogate pair for values above U+FFFF, thus a + // surrogate pair with total length 2 instantly indicates a range error (but not a "your + // string was too long" error). + else if (StringCaster::UTF_N == 16 && str_len == 2) { + one_char = static_cast(value[0]); + if (one_char >= 0xD800 && one_char < 0xE000) { + throw value_error("Character code point not in range(0x10000)"); + } + } + + if (str_len != 1) { + throw value_error("Expected a character, but multi-character string found"); + } + + one_char = value[0]; + return one_char; + } + + static constexpr auto name = const_name(PYBIND11_STRING_NAME); + template + using cast_op_type = pybind11::detail::cast_op_type<_T>; +}; + +// Base implementation for std::tuple and std::pair +template