From 6a00f21848141a5c7d8cea03828a62045fdad48c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Tue, 15 Jan 2019 20:14:19 +0100 Subject: [PATCH 1/9] Save kwargs given to exceptions constructor Fix unpickling bug when exception class expect keyword arguments --- Doc/library/exceptions.rst | 4 + Include/cpython/pyerrors.h | 2 +- Lib/test/test_exceptions.py | 48 ++ Lib/test/test_sys.py | 8 +- .../2019-01-16-15-07-10.bpo-27015.UOjO5h.rst | 3 + Objects/exceptions.c | 185 ++++- Python/importlib.h | 586 +++++++------- Python/importlib_external.h | 756 +++++++++--------- 8 files changed, 902 insertions(+), 690 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 57ed2914581621..d4785d52cb2d69 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -87,6 +87,10 @@ The following exceptions are used mostly as base classes for other exceptions. assign a special meaning to the elements of this tuple, while others are usually called only with a single string giving an error message. + .. attribute:: kwargs + + The dictionnary of keyword arguments given to the exception constructor. + .. method:: with_traceback(tb) This method sets *tb* as the new traceback for the exception and returns diff --git a/Include/cpython/pyerrors.h b/Include/cpython/pyerrors.h index 0b43d7528b9759..050c999b2fd0cb 100644 --- a/Include/cpython/pyerrors.h +++ b/Include/cpython/pyerrors.h @@ -10,7 +10,7 @@ extern "C" { /* PyException_HEAD defines the initial segment of every exception class. */ #define PyException_HEAD PyObject_HEAD PyObject *dict;\ - PyObject *args; PyObject *traceback;\ + PyObject *args; PyObject *kwargs; PyObject *traceback;\ PyObject *context; PyObject *cause;\ char suppress_context; diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 6ef529e2b015be..ee595b52f001f6 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1299,6 +1299,43 @@ def g(): next(i) next(i) + def test_get_kwargs(self): + self.assertEqual(BaseException().kwargs, {}) + self.assertEqual(NaiveException(x=1).kwargs, {'x': 1}) + + def test_set_kwargs(self): + b = BaseException() + b.kwargs = {'x': 1} + self.assertEqual(b.kwargs, {'x': 1}) + + b = NaiveException(x=1) + b.kwargs = {'x': 2} + self.assertEqual(b.kwargs, {'x': 2}) + + def test_del_args_kwargs(self): + b = BaseException() + + with self.assertRaisesRegex(TypeError, "args may not be deleted"): + del b.args + + with self.assertRaisesRegex(TypeError, "kwargs may not be deleted"): + del b.kwargs + + def test_repr(self): + class MixedArgsKwargs(Exception): + def __init__(*args, **kwargs): + pass + + self.assertEqual(repr(BaseException()), "BaseException()") + self.assertEqual(repr(BaseException(1)), "BaseException(1)") + self.assertEqual(repr(NaiveException(1)), "NaiveException(1)") + self.assertEqual(repr(NaiveException(x=1)), "NaiveException(x=1)") + self.assertEqual(repr(MixedArgsKwargs(1, b=2)), "MixedArgsKwargs(1, b=2)") + + class NoKwargs(Exception): + def __init__(self, foo,): + self.args = (foo,) + class ImportErrorTests(unittest.TestCase): @@ -1376,6 +1413,17 @@ def test_copy_pickle(self): self.assertEqual(exc.name, orig.name) self.assertEqual(exc.path, orig.path) + def test_pickle_overriden_init(self): + # Issue #27015 + from subprocess import CalledProcessError + + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + orig = CalledProcessError(returncode=2, cmd='foo') + exc = pickle.loads(pickle.dumps(orig, proto)) + self.assertEqual(orig.cmd, exc.cmd) + self.assertEqual(orig.returncode, exc.returncode) + + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 92aefd8d7af44b..1b78e6fb3fc84e 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1004,13 +1004,13 @@ def inner(): class C(object): pass check(C.__dict__, size('P')) # BaseException - check(BaseException(), size('5Pb')) + check(BaseException(), size('6Pb')) # UnicodeEncodeError - check(UnicodeEncodeError("", "", 0, 0, ""), size('5Pb 2P2nP')) + check(UnicodeEncodeError("", "", 0, 0, ""), size('6Pb 2P2nP')) # UnicodeDecodeError - check(UnicodeDecodeError("", b"", 0, 0, ""), size('5Pb 2P2nP')) + check(UnicodeDecodeError("", b"", 0, 0, ""), size('6Pb 2P2nP')) # UnicodeTranslateError - check(UnicodeTranslateError("", 0, 1, ""), size('5Pb 2P2nP')) + check(UnicodeTranslateError("", 0, 1, ""), size('6Pb 2P2nP')) # ellipses check(Ellipsis, size('')) # EncodingMap diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst b/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst new file mode 100644 index 00000000000000..56ce25d561be90 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst @@ -0,0 +1,3 @@ +Exceptions now save the keyword arguments given to their constructorin their +`kwargs` attribute. Exceptions with overridden __init__ and using keyword +arguments are now picklable. Patch contributed by Rémi Lapeyre. diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 002a602373d732..099430798594e4 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -41,19 +41,30 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return NULL; /* the dict is created on the fly in PyObject_GenericSetAttr */ self->dict = NULL; + self->kwargs = NULL; self->traceback = self->cause = self->context = NULL; self->suppress_context = 0; if (args) { self->args = args; Py_INCREF(args); - return (PyObject *)self; + } else { + self->args = PyTuple_New(2); + if (!self->args) { + Py_DECREF(self); + return NULL; + } } - self->args = PyTuple_New(0); - if (!self->args) { - Py_DECREF(self); - return NULL; + if (kwds) { + self->kwargs = kwds; + Py_INCREF(kwds); + } else { + self->kwargs = PyDict_New(); + if (!self->kwargs) { + Py_DECREF(self); + return NULL; + } } return (PyObject *)self; @@ -76,6 +87,7 @@ BaseException_clear(PyBaseExceptionObject *self) { Py_CLEAR(self->dict); Py_CLEAR(self->args); + Py_CLEAR(self->kwargs); Py_CLEAR(self->traceback); Py_CLEAR(self->cause); Py_CLEAR(self->context); @@ -95,6 +107,7 @@ BaseException_traverse(PyBaseExceptionObject *self, visitproc visit, void *arg) { Py_VISIT(self->dict); Py_VISIT(self->args); + Py_VISIT(self->kwargs); Py_VISIT(self->traceback); Py_VISIT(self->cause); Py_VISIT(self->context); @@ -118,21 +131,144 @@ static PyObject * BaseException_repr(PyBaseExceptionObject *self) { const char *name = _PyType_Name(Py_TYPE(self)); - if (PyTuple_GET_SIZE(self->args) == 1) - return PyUnicode_FromFormat("%s(%R)", name, - PyTuple_GET_ITEM(self->args, 0)); - else - return PyUnicode_FromFormat("%s%R", name, self->args); + PyObject *separator = NULL; + PyObject *args = NULL; + PyObject *kwargs = NULL; + PyObject *seq = NULL; + PyObject *repr = NULL; + PyObject *item = NULL; + PyObject *items = NULL; + PyObject *it = NULL; + PyObject *key = NULL; + PyObject *value = NULL; + PyObject *result = NULL; + + separator = PyUnicode_FromString(", "); + + if (PyTuple_Check(self->args)) { + const Py_ssize_t len = PyTuple_Size(self->args); + seq = PyTuple_New(len); + if (seq == NULL) { + goto fail; + } + for (Py_ssize_t i=0; i < len; i++) { + repr = PyObject_Repr(PyTuple_GET_ITEM(self->args, i)); + if (repr == NULL) { + goto fail; + } + PyTuple_SET_ITEM(seq, i, repr); + } + args = PyUnicode_Join(separator, seq); + Py_DECREF(seq); + } + + if (PyMapping_Check(self->kwargs)) { + const Py_ssize_t len = PyMapping_Length(self->kwargs); + if (len == -1) { + goto fail; + } + seq = PyTuple_New(len); + items = PyMapping_Items(self->kwargs); + if (seq == NULL || items == NULL) { + goto fail; + } + it = PyObject_GetIter(items); + if (it == NULL) { + goto fail; + } + Py_ssize_t i = 0; + while ((item = PyIter_Next(it)) != NULL) { + if (!PyTuple_Check(item) || PyTuple_GET_SIZE(item) != 2) { + PyErr_SetString(PyExc_ValueError, "items must return 2-tuples"); + goto fail; + } + key = PyTuple_GET_ITEM(item, 0); + value = PyTuple_GET_ITEM(item, 1); + PyTuple_SET_ITEM(seq, i, PyUnicode_FromFormat("%S=%R", key, value)); + i++; + Py_DECREF(item); + } + kwargs = PyUnicode_Join(separator, seq); + Py_DECREF(seq); + Py_DECREF(items); + Py_DECREF(it); + } + Py_DECREF(separator); + + if (args == NULL && kwargs == NULL) { + result = PyUnicode_FromFormat("%s()", name, kwargs); + } else if (kwargs == NULL || PyUnicode_GET_LENGTH(kwargs) == 0) { + result = PyUnicode_FromFormat("%s(%S)", name, args); + } else if (args == NULL || PyUnicode_GET_LENGTH(args) == 0) { + result = PyUnicode_FromFormat("%s(%S)", name, kwargs); + } else { + result = PyUnicode_FromFormat("%s(%S, %S)", name, args, kwargs); + } + Py_XDECREF(args); + Py_XDECREF(kwargs); + return result; + +fail: + Py_XDECREF(separator); + Py_XDECREF(args); + Py_XDECREF(kwargs); + Py_XDECREF(seq); + Py_XDECREF(repr); + Py_XDECREF(item); + Py_XDECREF(items); + Py_XDECREF(it); + Py_XDECREF(key); + Py_XDECREF(value); + return NULL; } /* Pickling support */ static PyObject * BaseException_reduce(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) { - if (self->args && self->dict) - return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict); - else - return PyTuple_Pack(2, Py_TYPE(self), self->args); + PyObject *functools; + PyObject *partial; + PyObject *constructor; + PyObject *args; + PyObject *result; + PyObject **newargs; + + _Py_IDENTIFIER(partial); + functools = PyImport_ImportModule("functools"); + if (!functools) + return NULL; + partial = _PyObject_GetAttrId(functools, &PyId_partial); + Py_DECREF(functools); + if (!partial) + return NULL; + + Py_ssize_t len = 1; + if (PyTuple_Check(self->args)) { + len += PyTuple_GET_SIZE(self->args); + } + newargs = PyMem_RawMalloc(len*sizeof(PyObject*)); + newargs[0] = (PyObject *)Py_TYPE(self); + + for (Py_ssize_t i=1; i < len; i++) { + newargs[i] = PyTuple_GetItem(self->args, i-1); + } + constructor = _PyObject_FastCallDict(partial, newargs, len, self->kwargs); + PyMem_RawFree(newargs); + + Py_DECREF(partial); + + args = PyTuple_New(0); + if (!args) { + return NULL; + } + if (self->args && self->dict){ + result = PyTuple_Pack(3, constructor, args, self->dict); + } else { + result = PyTuple_Pack(2, constructor, args); + } + Py_DECREF(constructor); + Py_DECREF(args); + return result; } /* @@ -206,6 +342,26 @@ BaseException_set_args(PyBaseExceptionObject *self, PyObject *val, void *Py_UNUS return 0; } +static PyObject * +BaseException_get_kwargs(PyBaseExceptionObject *self, void *Py_UNUSED(ignored)) { + if (self->kwargs == NULL) { + Py_RETURN_NONE; + } + Py_INCREF(self->kwargs); + return self->kwargs; +} + +static int +BaseException_set_kwargs(PyBaseExceptionObject *self, PyObject *val, void *Py_UNUSED(ignored)) { + if (val == NULL) { + PyErr_SetString(PyExc_TypeError, "kwargs may not be deleted"); + return -1; + } + Py_INCREF(val); + self->kwargs = val; + return 0; +} + static PyObject * BaseException_get_tb(PyBaseExceptionObject *self, void *Py_UNUSED(ignored)) { @@ -296,6 +452,7 @@ BaseException_set_cause(PyObject *self, PyObject *arg, void *Py_UNUSED(ignored)) static PyGetSetDef BaseException_getset[] = { {"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict}, {"args", (getter)BaseException_get_args, (setter)BaseException_set_args}, + {"kwargs", (getter)BaseException_get_kwargs, (setter)BaseException_set_kwargs}, {"__traceback__", (getter)BaseException_get_tb, (setter)BaseException_set_tb}, {"__context__", BaseException_get_context, BaseException_set_context, PyDoc_STR("exception context")}, diff --git a/Python/importlib.h b/Python/importlib.h index 5c38196c7c859a..e68b9a280ba090 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -284,14 +284,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,3,0,0,0,2,0,0,0,79,0,0,0,115,14, 0,0,0,124,0,106,0,160,1,161,0,1,0,100,0,83, 0,114,13,0,0,0,41,2,114,52,0,0,0,114,39,0, - 0,0,41,3,114,30,0,0,0,218,4,97,114,103,115,90, + 0,0,41,3,114,30,0,0,0,218,4,97,114,103,115,218, 6,107,119,97,114,103,115,114,10,0,0,0,114,10,0,0, 0,114,11,0,0,0,218,8,95,95,101,120,105,116,95,95, 151,0,0,0,115,2,0,0,0,0,1,122,27,95,77,111, 100,117,108,101,76,111,99,107,77,97,110,97,103,101,114,46, 95,95,101,120,105,116,95,95,78,41,6,114,1,0,0,0, 114,0,0,0,0,114,2,0,0,0,114,31,0,0,0,114, - 54,0,0,0,114,56,0,0,0,114,10,0,0,0,114,10, + 54,0,0,0,114,57,0,0,0,114,10,0,0,0,114,10, 0,0,0,114,10,0,0,0,114,11,0,0,0,114,50,0, 0,0,141,0,0,0,115,6,0,0,0,8,2,8,4,8, 4,114,50,0,0,0,99,1,0,0,0,0,0,0,0,3, @@ -326,12 +326,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 11,0,0,0,218,2,99,98,176,0,0,0,115,10,0,0, 0,0,1,8,1,2,4,14,1,10,2,122,28,95,103,101, 116,95,109,111,100,117,108,101,95,108,111,99,107,46,60,108, - 111,99,97,108,115,62,46,99,98,41,10,114,57,0,0,0, - 114,58,0,0,0,114,59,0,0,0,218,8,75,101,121,69, + 111,99,97,108,115,62,46,99,98,41,10,114,58,0,0,0, + 114,59,0,0,0,114,60,0,0,0,218,8,75,101,121,69, 114,114,111,114,114,23,0,0,0,114,49,0,0,0,114,20, - 0,0,0,218,8,95,119,101,97,107,114,101,102,114,61,0, - 0,0,114,60,0,0,0,41,3,114,17,0,0,0,114,24, - 0,0,0,114,62,0,0,0,114,10,0,0,0,114,10,0, + 0,0,0,218,8,95,119,101,97,107,114,101,102,114,62,0, + 0,0,114,61,0,0,0,41,3,114,17,0,0,0,114,24, + 0,0,0,114,63,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,114,53,0,0,0,157,0,0,0, 115,28,0,0,0,0,6,8,1,2,1,2,1,14,1,14, 1,10,2,8,1,8,1,10,2,8,2,12,11,20,2,10, @@ -358,7 +358,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 10,0,0,0,114,11,0,0,0,218,19,95,108,111,99,107, 95,117,110,108,111,99,107,95,109,111,100,117,108,101,194,0, 0,0,115,12,0,0,0,0,6,8,1,2,1,12,1,14, - 3,6,2,114,65,0,0,0,99,1,0,0,0,0,0,0, + 3,6,2,114,66,0,0,0,99,1,0,0,0,0,0,0, 0,3,0,0,0,3,0,0,0,79,0,0,0,115,10,0, 0,0,124,0,124,1,124,2,142,1,83,0,41,1,97,46, 1,0,0,114,101,109,111,118,101,95,105,109,112,111,114,116, @@ -384,7 +384,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 90,4,107,119,100,115,114,10,0,0,0,114,10,0,0,0, 114,11,0,0,0,218,25,95,99,97,108,108,95,119,105,116, 104,95,102,114,97,109,101,115,95,114,101,109,111,118,101,100, - 211,0,0,0,115,2,0,0,0,0,8,114,67,0,0,0, + 211,0,0,0,115,2,0,0,0,0,8,114,68,0,0,0, 114,37,0,0,0,41,1,218,9,118,101,114,98,111,115,105, 116,121,99,1,0,0,0,1,0,0,0,3,0,0,0,4, 0,0,0,71,0,0,0,115,54,0,0,0,116,0,106,1, @@ -401,10 +401,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 114,98,111,115,101,218,10,115,116,97,114,116,115,119,105,116, 104,218,5,112,114,105,110,116,114,45,0,0,0,218,6,115, 116,100,101,114,114,41,3,218,7,109,101,115,115,97,103,101, - 114,68,0,0,0,114,55,0,0,0,114,10,0,0,0,114, + 114,69,0,0,0,114,55,0,0,0,114,10,0,0,0,114, 10,0,0,0,114,11,0,0,0,218,16,95,118,101,114,98, 111,115,101,95,109,101,115,115,97,103,101,222,0,0,0,115, - 8,0,0,0,0,2,12,1,10,1,8,1,114,76,0,0, + 8,0,0,0,0,2,12,1,10,1,8,1,114,77,0,0, 0,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0, 0,0,3,0,0,0,115,26,0,0,0,135,0,102,1,100, 1,100,2,132,8,125,1,116,0,124,1,136,0,131,2,1, @@ -430,10 +430,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,105,110,46,60,108,111,99,97,108,115,62,46,95,114,101, 113,117,105,114,101,115,95,98,117,105,108,116,105,110,95,119, 114,97,112,112,101,114,169,1,114,12,0,0,0,41,2,114, - 83,0,0,0,114,84,0,0,0,114,10,0,0,0,114,82, + 84,0,0,0,114,85,0,0,0,114,10,0,0,0,114,83, 0,0,0,114,11,0,0,0,218,17,95,114,101,113,117,105, 114,101,115,95,98,117,105,108,116,105,110,230,0,0,0,115, - 6,0,0,0,0,2,12,5,10,1,114,86,0,0,0,99, + 6,0,0,0,0,2,12,5,10,1,114,87,0,0,0,99, 1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, 3,0,0,0,115,26,0,0,0,135,0,102,1,100,1,100, 2,132,8,125,1,116,0,124,1,136,0,131,2,1,0,124, @@ -446,20 +446,20 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 124,1,161,1,124,1,100,2,141,2,130,1,136,0,124,0, 124,1,131,2,83,0,169,3,78,122,27,123,33,114,125,32, 105,115,32,110,111,116,32,97,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,114,16,0,0,0,41,4,114,57,0, - 0,0,218,9,105,115,95,102,114,111,122,101,110,114,79,0, - 0,0,114,45,0,0,0,114,80,0,0,0,114,82,0,0, + 109,111,100,117,108,101,114,16,0,0,0,41,4,114,58,0, + 0,0,218,9,105,115,95,102,114,111,122,101,110,114,80,0, + 0,0,114,45,0,0,0,114,81,0,0,0,114,83,0,0, 0,114,10,0,0,0,114,11,0,0,0,218,24,95,114,101, 113,117,105,114,101,115,95,102,114,111,122,101,110,95,119,114, 97,112,112,101,114,243,0,0,0,115,10,0,0,0,0,1, 10,1,10,1,2,255,6,2,122,50,95,114,101,113,117,105, 114,101,115,95,102,114,111,122,101,110,46,60,108,111,99,97, 108,115,62,46,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,95,119,114,97,112,112,101,114,114,85,0,0, - 0,41,2,114,83,0,0,0,114,89,0,0,0,114,10,0, - 0,0,114,82,0,0,0,114,11,0,0,0,218,16,95,114, + 111,122,101,110,95,119,114,97,112,112,101,114,114,86,0,0, + 0,41,2,114,84,0,0,0,114,90,0,0,0,114,10,0, + 0,0,114,83,0,0,0,114,11,0,0,0,218,16,95,114, 101,113,117,105,114,101,115,95,102,114,111,122,101,110,241,0, - 0,0,115,6,0,0,0,0,2,12,5,10,1,114,90,0, + 0,0,115,6,0,0,0,0,2,12,5,10,1,114,91,0, 0,0,99,2,0,0,0,0,0,0,0,4,0,0,0,3, 0,0,0,67,0,0,0,115,62,0,0,0,116,0,124,1, 124,0,131,2,125,2,124,1,116,1,106,2,107,6,114,50, @@ -477,12 +477,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 5,218,16,115,112,101,99,95,102,114,111,109,95,108,111,97, 100,101,114,114,15,0,0,0,218,7,109,111,100,117,108,101, 115,218,5,95,101,120,101,99,218,5,95,108,111,97,100,41, - 4,114,30,0,0,0,114,81,0,0,0,218,4,115,112,101, + 4,114,30,0,0,0,114,82,0,0,0,218,4,115,112,101, 99,218,6,109,111,100,117,108,101,114,10,0,0,0,114,10, 0,0,0,114,11,0,0,0,218,17,95,108,111,97,100,95, 109,111,100,117,108,101,95,115,104,105,109,253,0,0,0,115, 12,0,0,0,0,6,10,1,10,1,10,1,10,1,10,2, - 114,97,0,0,0,99,1,0,0,0,0,0,0,0,5,0, + 114,98,0,0,0,99,1,0,0,0,0,0,0,0,5,0, 0,0,8,0,0,0,67,0,0,0,115,226,0,0,0,116, 0,124,0,100,1,100,0,131,3,125,1,116,1,124,1,100, 2,131,2,114,56,122,12,124,1,160,2,124,0,161,1,87, @@ -504,20 +504,20 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123, 33,114,125,41,62,250,23,60,109,111,100,117,108,101,32,123, 33,114,125,32,102,114,111,109,32,123,33,114,125,62,41,10, - 114,6,0,0,0,114,4,0,0,0,114,99,0,0,0,218, + 114,6,0,0,0,114,4,0,0,0,114,100,0,0,0,218, 9,69,120,99,101,112,116,105,111,110,218,8,95,95,115,112, 101,99,95,95,218,14,65,116,116,114,105,98,117,116,101,69, 114,114,111,114,218,22,95,109,111,100,117,108,101,95,114,101, 112,114,95,102,114,111,109,95,115,112,101,99,114,1,0,0, 0,218,8,95,95,102,105,108,101,95,95,114,45,0,0,0, - 41,5,114,96,0,0,0,218,6,108,111,97,100,101,114,114, - 95,0,0,0,114,17,0,0,0,218,8,102,105,108,101,110, + 41,5,114,97,0,0,0,218,6,108,111,97,100,101,114,114, + 96,0,0,0,114,17,0,0,0,218,8,102,105,108,101,110, 97,109,101,114,10,0,0,0,114,10,0,0,0,114,11,0, 0,0,218,12,95,109,111,100,117,108,101,95,114,101,112,114, 13,1,0,0,115,46,0,0,0,0,2,12,1,10,4,2, 1,12,1,14,1,6,1,2,1,10,1,14,1,6,2,8, 1,8,4,2,1,10,1,14,1,10,1,2,1,10,1,14, - 1,8,1,14,2,22,2,114,111,0,0,0,99,0,0,0, + 1,8,1,14,2,22,2,114,112,0,0,0,99,0,0,0, 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, @@ -628,13 +628,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 124,2,124,0,95,1,124,3,124,0,95,2,124,4,124,0, 95,3,124,5,114,32,103,0,110,2,100,0,124,0,95,4, 100,1,124,0,95,5,100,0,124,0,95,6,100,0,83,0, - 169,2,78,70,41,7,114,17,0,0,0,114,109,0,0,0, - 114,113,0,0,0,114,114,0,0,0,218,26,115,117,98,109, + 169,2,78,70,41,7,114,17,0,0,0,114,110,0,0,0, + 114,114,0,0,0,114,115,0,0,0,218,26,115,117,98,109, 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99, 97,116,105,111,110,115,218,13,95,115,101,116,95,102,105,108, 101,97,116,116,114,218,7,95,99,97,99,104,101,100,41,6, - 114,30,0,0,0,114,17,0,0,0,114,109,0,0,0,114, - 113,0,0,0,114,114,0,0,0,114,115,0,0,0,114,10, + 114,30,0,0,0,114,17,0,0,0,114,110,0,0,0,114, + 114,0,0,0,114,115,0,0,0,114,116,0,0,0,114,10, 0,0,0,114,10,0,0,0,114,11,0,0,0,114,31,0, 0,0,86,1,0,0,115,14,0,0,0,0,2,6,1,6, 1,6,1,6,1,14,3,6,1,122,19,77,111,100,117,108, @@ -652,9 +652,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 110,61,123,33,114,125,122,29,115,117,98,109,111,100,117,108, 101,95,115,101,97,114,99,104,95,108,111,99,97,116,105,111, 110,115,61,123,125,122,6,123,125,40,123,125,41,122,2,44, - 32,41,9,114,45,0,0,0,114,17,0,0,0,114,109,0, - 0,0,114,113,0,0,0,218,6,97,112,112,101,110,100,114, - 117,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, + 32,41,9,114,45,0,0,0,114,17,0,0,0,114,110,0, + 0,0,114,114,0,0,0,218,6,97,112,112,101,110,100,114, + 118,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, 1,0,0,0,218,4,106,111,105,110,41,2,114,30,0,0, 0,114,55,0,0,0,114,10,0,0,0,114,10,0,0,0, 114,11,0,0,0,114,48,0,0,0,98,1,0,0,115,20, @@ -669,10 +669,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, 107,2,87,0,83,0,87,0,110,26,4,0,116,6,107,10, 114,108,1,0,1,0,1,0,89,0,100,1,83,0,89,0, - 110,2,88,0,100,0,83,0,114,116,0,0,0,41,7,114, - 117,0,0,0,114,17,0,0,0,114,109,0,0,0,114,113, + 110,2,88,0,100,0,83,0,114,117,0,0,0,41,7,114, + 118,0,0,0,114,17,0,0,0,114,110,0,0,0,114,114, 0,0,0,218,6,99,97,99,104,101,100,218,12,104,97,115, - 95,108,111,99,97,116,105,111,110,114,106,0,0,0,41,3, + 95,108,111,99,97,116,105,111,110,114,107,0,0,0,41,3, 114,30,0,0,0,90,5,111,116,104,101,114,90,4,115,109, 115,108,114,10,0,0,0,114,10,0,0,0,114,11,0,0, 0,218,6,95,95,101,113,95,95,108,1,0,0,115,30,0, @@ -684,28 +684,28 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,100,0,107,8,114,52,124,0,106,1,100,0,107,9,114, 52,124,0,106,2,114,52,116,3,100,0,107,8,114,38,116, 4,130,1,116,3,160,5,124,0,106,1,161,1,124,0,95, - 0,124,0,106,0,83,0,114,13,0,0,0,41,6,114,119, - 0,0,0,114,113,0,0,0,114,118,0,0,0,218,19,95, + 0,124,0,106,0,83,0,114,13,0,0,0,41,6,114,120, + 0,0,0,114,114,0,0,0,114,119,0,0,0,218,19,95, 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, 97,108,218,19,78,111,116,73,109,112,108,101,109,101,110,116, 101,100,69,114,114,111,114,90,11,95,103,101,116,95,99,97, 99,104,101,100,114,47,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,123,0,0,0,120,1,0, + 0,0,0,114,11,0,0,0,114,124,0,0,0,120,1,0, 0,115,12,0,0,0,0,2,10,1,16,1,8,1,4,1, 14,1,122,17,77,111,100,117,108,101,83,112,101,99,46,99, 97,99,104,101,100,99,2,0,0,0,0,0,0,0,2,0, 0,0,2,0,0,0,67,0,0,0,115,10,0,0,0,124, 1,124,0,95,0,100,0,83,0,114,13,0,0,0,41,1, - 114,119,0,0,0,41,2,114,30,0,0,0,114,123,0,0, + 114,120,0,0,0,41,2,114,30,0,0,0,114,124,0,0, 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,123,0,0,0,129,1,0,0,115,2,0,0,0,0,2, + 114,124,0,0,0,129,1,0,0,115,2,0,0,0,0,2, 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, 0,67,0,0,0,115,36,0,0,0,124,0,106,0,100,1, 107,8,114,26,124,0,106,1,160,2,100,2,161,1,100,3, 25,0,83,0,124,0,106,1,83,0,100,1,83,0,41,4, 122,32,84,104,101,32,110,97,109,101,32,111,102,32,116,104, 101,32,109,111,100,117,108,101,39,115,32,112,97,114,101,110, - 116,46,78,218,1,46,114,22,0,0,0,41,3,114,117,0, + 116,46,78,218,1,46,114,22,0,0,0,41,3,114,118,0, 0,0,114,17,0,0,0,218,10,114,112,97,114,116,105,116, 105,111,110,114,47,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,218,6,112,97,114,101,110,116,133, @@ -713,27 +713,27 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,110, 116,99,1,0,0,0,0,0,0,0,1,0,0,0,1,0, 0,0,67,0,0,0,115,6,0,0,0,124,0,106,0,83, - 0,114,13,0,0,0,41,1,114,118,0,0,0,114,47,0, + 0,114,13,0,0,0,41,1,114,119,0,0,0,114,47,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,124,0,0,0,141,1,0,0,115,2,0,0,0,0, + 0,114,125,0,0,0,141,1,0,0,115,2,0,0,0,0, 2,122,23,77,111,100,117,108,101,83,112,101,99,46,104,97, 115,95,108,111,99,97,116,105,111,110,99,2,0,0,0,0, 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, 14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,0, 83,0,114,13,0,0,0,41,2,218,4,98,111,111,108,114, - 118,0,0,0,41,2,114,30,0,0,0,218,5,118,97,108, + 119,0,0,0,41,2,114,30,0,0,0,218,5,118,97,108, 117,101,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,124,0,0,0,145,1,0,0,115,2,0,0,0,0, + 0,114,125,0,0,0,145,1,0,0,115,2,0,0,0,0, 2,41,12,114,1,0,0,0,114,0,0,0,0,114,2,0, 0,0,114,3,0,0,0,114,31,0,0,0,114,48,0,0, - 0,114,125,0,0,0,218,8,112,114,111,112,101,114,116,121, - 114,123,0,0,0,218,6,115,101,116,116,101,114,114,130,0, - 0,0,114,124,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,112,0,0,0, + 0,114,126,0,0,0,218,8,112,114,111,112,101,114,116,121, + 114,124,0,0,0,218,6,115,101,116,116,101,114,114,131,0, + 0,0,114,125,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,113,0,0,0, 49,1,0,0,115,32,0,0,0,8,35,4,2,4,1,2, 255,12,12,8,10,8,12,2,1,10,8,4,1,10,3,2, - 1,10,7,2,1,10,3,4,1,114,112,0,0,0,169,2, - 114,113,0,0,0,114,115,0,0,0,99,2,0,0,0,2, + 1,10,7,2,1,10,3,4,1,114,113,0,0,0,169,2, + 114,114,0,0,0,114,116,0,0,0,99,2,0,0,0,2, 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, 154,0,0,0,116,0,124,1,100,1,131,2,114,74,116,1, 100,2,107,8,114,22,116,2,130,1,116,1,106,3,125,4, @@ -749,19 +749,19 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,32,115,112,101,99,32,98,97,115,101,100,32,111,110,32, 118,97,114,105,111,117,115,32,108,111,97,100,101,114,32,109, 101,116,104,111,100,115,46,90,12,103,101,116,95,102,105,108, - 101,110,97,109,101,78,41,1,114,109,0,0,0,41,2,114, - 109,0,0,0,114,117,0,0,0,114,115,0,0,0,70,114, - 135,0,0,0,41,7,114,4,0,0,0,114,126,0,0,0, - 114,127,0,0,0,218,23,115,112,101,99,95,102,114,111,109, - 95,102,105,108,101,95,108,111,99,97,116,105,111,110,114,115, - 0,0,0,114,79,0,0,0,114,112,0,0,0,41,6,114, - 17,0,0,0,114,109,0,0,0,114,113,0,0,0,114,115, - 0,0,0,114,136,0,0,0,90,6,115,101,97,114,99,104, + 101,110,97,109,101,78,41,1,114,110,0,0,0,41,2,114, + 110,0,0,0,114,118,0,0,0,114,116,0,0,0,70,114, + 136,0,0,0,41,7,114,4,0,0,0,114,127,0,0,0, + 114,128,0,0,0,218,23,115,112,101,99,95,102,114,111,109, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,114,116, + 0,0,0,114,80,0,0,0,114,113,0,0,0,41,6,114, + 17,0,0,0,114,110,0,0,0,114,114,0,0,0,114,116, + 0,0,0,114,137,0,0,0,90,6,115,101,97,114,99,104, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 91,0,0,0,150,1,0,0,115,36,0,0,0,0,2,10, + 92,0,0,0,150,1,0,0,115,36,0,0,0,0,2,10, 1,8,1,4,1,6,2,8,1,12,1,12,1,6,1,2, 255,6,3,8,1,10,1,2,1,14,1,14,1,12,3,4, - 2,114,91,0,0,0,99,3,0,0,0,0,0,0,0,8, + 2,114,92,0,0,0,99,3,0,0,0,0,0,0,0,8, 0,0,0,8,0,0,0,67,0,0,0,115,56,1,0,0, 122,10,124,0,106,0,125,3,87,0,110,20,4,0,116,1, 107,10,114,30,1,0,1,0,1,0,89,0,110,14,88,0, @@ -782,23 +782,23 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 89,0,110,2,88,0,116,9,124,4,124,1,124,2,100,1, 141,3,125,3,124,5,100,0,107,8,144,1,114,34,100,2, 110,2,100,3,124,3,95,10,124,6,124,3,95,11,124,7, - 124,3,95,12,124,3,83,0,41,4,78,169,1,114,113,0, - 0,0,70,84,41,13,114,105,0,0,0,114,106,0,0,0, - 114,1,0,0,0,114,98,0,0,0,114,108,0,0,0,90, + 124,3,95,12,124,3,83,0,41,4,78,169,1,114,114,0, + 0,0,70,84,41,13,114,106,0,0,0,114,107,0,0,0, + 114,1,0,0,0,114,99,0,0,0,114,109,0,0,0,90, 7,95,79,82,73,71,73,78,218,10,95,95,99,97,99,104, 101,100,95,95,218,4,108,105,115,116,218,8,95,95,112,97, - 116,104,95,95,114,112,0,0,0,114,118,0,0,0,114,123, - 0,0,0,114,117,0,0,0,41,8,114,96,0,0,0,114, - 109,0,0,0,114,113,0,0,0,114,95,0,0,0,114,17, - 0,0,0,90,8,108,111,99,97,116,105,111,110,114,123,0, - 0,0,114,117,0,0,0,114,10,0,0,0,114,10,0,0, + 116,104,95,95,114,113,0,0,0,114,119,0,0,0,114,124, + 0,0,0,114,118,0,0,0,41,8,114,97,0,0,0,114, + 110,0,0,0,114,114,0,0,0,114,96,0,0,0,114,17, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,124,0, + 0,0,114,118,0,0,0,114,10,0,0,0,114,10,0,0, 0,114,11,0,0,0,218,17,95,115,112,101,99,95,102,114, 111,109,95,109,111,100,117,108,101,176,1,0,0,115,72,0, 0,0,0,2,2,1,10,1,14,1,6,2,8,1,4,2, 6,1,8,1,2,1,10,1,14,2,6,1,2,1,10,1, 14,1,10,1,8,1,8,1,2,1,10,1,14,1,12,2, 4,1,2,1,10,1,14,1,10,1,2,1,14,1,16,1, - 10,2,14,1,20,1,6,1,6,1,114,141,0,0,0,70, + 10,2,14,1,20,1,6,1,6,1,114,142,0,0,0,70, 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, 0,1,0,0,0,5,0,0,0,8,0,0,0,67,0,0, 0,115,226,1,0,0,124,2,115,20,116,0,124,1,100,1, @@ -832,18 +832,18 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 122,12,124,0,106,19,124,1,95,20,87,0,110,22,4,0, 116,3,107,10,144,1,114,220,1,0,1,0,1,0,89,0, 110,2,88,0,124,1,83,0,41,7,78,114,1,0,0,0, - 114,98,0,0,0,218,11,95,95,112,97,99,107,97,103,101, - 95,95,114,140,0,0,0,114,108,0,0,0,114,138,0,0, + 114,99,0,0,0,218,11,95,95,112,97,99,107,97,103,101, + 95,95,114,141,0,0,0,114,109,0,0,0,114,139,0,0, 0,41,21,114,6,0,0,0,114,17,0,0,0,114,1,0, - 0,0,114,106,0,0,0,114,109,0,0,0,114,117,0,0, - 0,114,126,0,0,0,114,127,0,0,0,218,16,95,78,97, + 0,0,114,107,0,0,0,114,110,0,0,0,114,118,0,0, + 0,114,127,0,0,0,114,128,0,0,0,218,16,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,218,7,95, - 95,110,101,119,95,95,90,5,95,112,97,116,104,114,108,0, - 0,0,114,98,0,0,0,114,130,0,0,0,114,144,0,0, - 0,114,105,0,0,0,114,140,0,0,0,114,124,0,0,0, - 114,113,0,0,0,114,123,0,0,0,114,138,0,0,0,41, - 5,114,95,0,0,0,114,96,0,0,0,114,143,0,0,0, - 114,109,0,0,0,114,145,0,0,0,114,10,0,0,0,114, + 95,110,101,119,95,95,90,5,95,112,97,116,104,114,109,0, + 0,0,114,99,0,0,0,114,131,0,0,0,114,145,0,0, + 0,114,106,0,0,0,114,141,0,0,0,114,125,0,0,0, + 114,114,0,0,0,114,124,0,0,0,114,139,0,0,0,41, + 5,114,96,0,0,0,114,97,0,0,0,114,144,0,0,0, + 114,110,0,0,0,114,146,0,0,0,114,10,0,0,0,114, 10,0,0,0,114,11,0,0,0,218,18,95,105,110,105,116, 95,109,111,100,117,108,101,95,97,116,116,114,115,221,1,0, 0,115,96,0,0,0,0,4,20,1,2,1,12,1,14,1, @@ -852,7 +852,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 20,1,2,1,12,1,14,1,6,2,2,1,10,1,16,1, 6,2,24,1,12,1,2,1,12,1,16,1,6,2,8,1, 24,1,2,1,12,1,16,1,6,2,24,1,12,1,2,1, - 12,1,16,1,6,1,114,147,0,0,0,99,1,0,0,0, + 12,1,16,1,6,1,114,148,0,0,0,99,1,0,0,0, 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, 115,82,0,0,0,100,1,125,1,116,0,124,0,106,1,100, 2,131,2,114,30,124,0,106,1,160,2,124,0,161,1,125, @@ -868,14 +868,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,32,100,101,102,105,110,101,32,101,120,101,99,95,109,111, 100,117,108,101,40,41,32,109,117,115,116,32,97,108,115,111, 32,100,101,102,105,110,101,32,99,114,101,97,116,101,95,109, - 111,100,117,108,101,40,41,41,7,114,4,0,0,0,114,109, - 0,0,0,114,148,0,0,0,114,79,0,0,0,114,18,0, - 0,0,114,17,0,0,0,114,147,0,0,0,169,2,114,95, - 0,0,0,114,96,0,0,0,114,10,0,0,0,114,10,0, + 111,100,117,108,101,40,41,41,7,114,4,0,0,0,114,110, + 0,0,0,114,149,0,0,0,114,80,0,0,0,114,18,0, + 0,0,114,17,0,0,0,114,148,0,0,0,169,2,114,96, + 0,0,0,114,97,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,218,16,109,111,100,117,108,101,95, 102,114,111,109,95,115,112,101,99,37,2,0,0,115,18,0, 0,0,0,3,4,1,12,3,14,1,12,1,8,2,8,1, - 10,1,10,1,114,151,0,0,0,99,1,0,0,0,0,0, + 10,1,10,1,114,152,0,0,0,99,1,0,0,0,0,0, 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,106, 0,0,0,124,0,106,0,100,1,107,8,114,14,100,2,110, 4,124,0,106,0,125,1,124,0,106,1,100,1,107,8,114, @@ -886,15 +886,15 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,124,0,106,1,161,2,83,0,100,1,83,0,41,7,122, 38,82,101,116,117,114,110,32,116,104,101,32,114,101,112,114, 32,116,111,32,117,115,101,32,102,111,114,32,116,104,101,32, - 109,111,100,117,108,101,46,78,114,100,0,0,0,114,101,0, - 0,0,114,102,0,0,0,114,103,0,0,0,122,18,60,109, + 109,111,100,117,108,101,46,78,114,101,0,0,0,114,102,0, + 0,0,114,103,0,0,0,114,104,0,0,0,122,18,60,109, 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, - 41,5,114,17,0,0,0,114,113,0,0,0,114,109,0,0, - 0,114,45,0,0,0,114,124,0,0,0,41,2,114,95,0, + 41,5,114,17,0,0,0,114,114,0,0,0,114,110,0,0, + 0,114,45,0,0,0,114,125,0,0,0,41,2,114,96,0, 0,0,114,17,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,107,0,0,0,54,2,0,0,115, + 0,114,11,0,0,0,114,108,0,0,0,54,2,0,0,115, 16,0,0,0,0,3,20,1,10,1,10,1,10,2,16,2, - 6,1,14,2,114,107,0,0,0,99,2,0,0,0,0,0, + 6,1,14,2,114,108,0,0,0,99,2,0,0,0,0,0, 0,0,4,0,0,0,10,0,0,0,67,0,0,0,115,204, 0,0,0,124,0,106,0,125,2,116,1,124,2,131,1,143, 180,1,0,116,2,106,3,160,4,124,2,161,1,124,1,107, @@ -917,18 +917,18 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,32,123,33,114,125,32,110,111,116,32,105,110,32,115,121, 115,46,109,111,100,117,108,101,115,114,16,0,0,0,78,250, 14,109,105,115,115,105,110,103,32,108,111,97,100,101,114,84, - 114,142,0,0,0,114,149,0,0,0,41,14,114,17,0,0, - 0,114,50,0,0,0,114,15,0,0,0,114,92,0,0,0, - 114,34,0,0,0,114,45,0,0,0,114,79,0,0,0,114, - 109,0,0,0,114,117,0,0,0,114,147,0,0,0,114,4, + 114,143,0,0,0,114,150,0,0,0,41,14,114,17,0,0, + 0,114,50,0,0,0,114,15,0,0,0,114,93,0,0,0, + 114,34,0,0,0,114,45,0,0,0,114,80,0,0,0,114, + 110,0,0,0,114,118,0,0,0,114,148,0,0,0,114,4, 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, - 114,149,0,0,0,218,3,112,111,112,41,4,114,95,0,0, - 0,114,96,0,0,0,114,17,0,0,0,218,3,109,115,103, + 114,150,0,0,0,218,3,112,111,112,41,4,114,96,0,0, + 0,114,97,0,0,0,114,17,0,0,0,218,3,109,115,103, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 93,0,0,0,71,2,0,0,115,34,0,0,0,0,2,6, + 94,0,0,0,71,2,0,0,115,34,0,0,0,0,2,6, 1,10,1,16,1,10,1,12,1,2,1,10,1,10,1,14, 2,16,2,14,1,12,4,14,2,16,4,14,1,24,1,114, - 93,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0, + 94,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0, 0,8,0,0,0,67,0,0,0,115,26,1,0,0,122,18, 124,0,106,0,160,1,124,0,106,2,161,1,1,0,87,0, 110,52,1,0,1,0,1,0,124,0,106,2,116,3,106,4, @@ -947,21 +947,21 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,6,124,1,100,6,100,0,131,3,100,0,107,8,144,1, 114,22,122,10,124,0,124,1,95,13,87,0,110,22,4,0, 116,8,107,10,144,1,114,20,1,0,1,0,1,0,89,0, - 110,2,88,0,124,1,83,0,41,7,78,114,98,0,0,0, - 114,144,0,0,0,114,140,0,0,0,114,128,0,0,0,114, - 22,0,0,0,114,105,0,0,0,41,14,114,109,0,0,0, - 114,153,0,0,0,114,17,0,0,0,114,15,0,0,0,114, - 92,0,0,0,114,154,0,0,0,114,6,0,0,0,114,98, - 0,0,0,114,106,0,0,0,114,1,0,0,0,114,144,0, - 0,0,114,4,0,0,0,114,129,0,0,0,114,105,0,0, - 0,114,150,0,0,0,114,10,0,0,0,114,10,0,0,0, + 110,2,88,0,124,1,83,0,41,7,78,114,99,0,0,0, + 114,145,0,0,0,114,141,0,0,0,114,129,0,0,0,114, + 22,0,0,0,114,106,0,0,0,41,14,114,110,0,0,0, + 114,154,0,0,0,114,17,0,0,0,114,15,0,0,0,114, + 93,0,0,0,114,155,0,0,0,114,6,0,0,0,114,99, + 0,0,0,114,107,0,0,0,114,1,0,0,0,114,145,0, + 0,0,114,4,0,0,0,114,130,0,0,0,114,106,0,0, + 0,114,151,0,0,0,114,10,0,0,0,114,10,0,0,0, 114,11,0,0,0,218,25,95,108,111,97,100,95,98,97,99, 107,119,97,114,100,95,99,111,109,112,97,116,105,98,108,101, 101,2,0,0,115,54,0,0,0,0,4,2,1,18,1,6, 1,12,1,14,1,12,1,8,3,14,1,12,1,16,1,2, 1,12,1,14,1,6,1,16,1,2,4,8,1,10,1,22, 1,14,1,6,1,18,1,2,1,10,1,16,1,6,1,114, - 156,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0, + 157,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0, 0,11,0,0,0,67,0,0,0,115,220,0,0,0,124,0, 106,0,100,0,107,9,114,30,116,1,124,0,106,0,100,1, 131,2,115,30,116,2,124,0,131,1,83,0,116,3,124,0, @@ -976,21 +976,21 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,5,106,6,160,12,124,0,106,7,161,1,125,1,124,1, 116,5,106,6,124,0,106,7,60,0,116,13,100,5,124,0, 106,7,124,0,106,0,131,3,1,0,87,0,53,0,100,6, - 124,0,95,4,88,0,124,1,83,0,41,7,78,114,149,0, - 0,0,84,114,152,0,0,0,114,16,0,0,0,122,18,105, + 124,0,95,4,88,0,124,1,83,0,41,7,78,114,150,0, + 0,0,84,114,153,0,0,0,114,16,0,0,0,122,18,105, 109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,114, - 125,70,41,14,114,109,0,0,0,114,4,0,0,0,114,156, - 0,0,0,114,151,0,0,0,90,13,95,105,110,105,116,105, - 97,108,105,122,105,110,103,114,15,0,0,0,114,92,0,0, - 0,114,17,0,0,0,114,117,0,0,0,114,79,0,0,0, - 114,149,0,0,0,114,63,0,0,0,114,154,0,0,0,114, - 76,0,0,0,114,150,0,0,0,114,10,0,0,0,114,10, + 125,70,41,14,114,110,0,0,0,114,4,0,0,0,114,157, + 0,0,0,114,152,0,0,0,90,13,95,105,110,105,116,105, + 97,108,105,122,105,110,103,114,15,0,0,0,114,93,0,0, + 0,114,17,0,0,0,114,118,0,0,0,114,80,0,0,0, + 114,150,0,0,0,114,64,0,0,0,114,155,0,0,0,114, + 77,0,0,0,114,151,0,0,0,114,10,0,0,0,114,10, 0,0,0,114,11,0,0,0,218,14,95,108,111,97,100,95, 117,110,108,111,99,107,101,100,138,2,0,0,115,46,0,0, 0,0,2,10,2,12,1,8,2,8,5,6,1,2,1,12, 1,2,1,10,1,10,1,16,3,16,1,6,1,2,1,14, 1,14,1,6,1,8,5,14,1,12,1,20,2,8,2,114, - 157,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0, + 158,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0, 0,10,0,0,0,67,0,0,0,115,42,0,0,0,116,0, 124,0,106,1,131,1,143,22,1,0,116,2,124,0,131,1, 87,0,2,0,53,0,81,0,82,0,163,0,83,0,81,0, @@ -1007,10 +1007,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,32,101,120,105,115,116,105,110,103,32,109,111,100,117,108, 101,32,103,101,116,115,10,32,32,32,32,99,108,111,98,98, 101,114,101,100,46,10,10,32,32,32,32,78,41,3,114,50, - 0,0,0,114,17,0,0,0,114,157,0,0,0,41,1,114, - 95,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,94,0,0,0,180,2,0,0,115,4,0,0, - 0,0,9,12,1,114,94,0,0,0,99,0,0,0,0,0, + 0,0,0,114,17,0,0,0,114,158,0,0,0,41,1,114, + 96,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,95,0,0,0,180,2,0,0,115,4,0,0, + 0,0,9,12,1,114,95,0,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, 136,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, 101,4,100,2,100,3,132,0,131,1,90,5,101,6,100,19, @@ -1043,8 +1043,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,108,102,46,10,10,32,32,32,32,32,32,32,32,122,24, 60,109,111,100,117,108,101,32,123,33,114,125,32,40,98,117, 105,108,116,45,105,110,41,62,169,2,114,45,0,0,0,114, - 1,0,0,0,41,1,114,96,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,99,0,0,0,204, + 1,0,0,0,41,1,114,97,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,100,0,0,0,204, 2,0,0,115,2,0,0,0,0,7,122,27,66,117,105,108, 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, @@ -1052,10 +1052,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,124,2,100,0,107,9,114,12,100,0,83,0,116,0, 160,1,124,1,161,1,114,36,116,2,124,1,124,0,100,1, 100,2,141,3,83,0,100,0,83,0,100,0,83,0,41,3, - 78,122,8,98,117,105,108,116,45,105,110,114,137,0,0,0, - 41,3,114,57,0,0,0,90,10,105,115,95,98,117,105,108, - 116,105,110,114,91,0,0,0,169,4,218,3,99,108,115,114, - 81,0,0,0,218,4,112,97,116,104,218,6,116,97,114,103, + 78,122,8,98,117,105,108,116,45,105,110,114,138,0,0,0, + 41,3,114,58,0,0,0,90,10,105,115,95,98,117,105,108, + 116,105,110,114,92,0,0,0,169,4,218,3,99,108,115,114, + 82,0,0,0,218,4,112,97,116,104,218,6,116,97,114,103, 101,116,114,10,0,0,0,114,10,0,0,0,114,11,0,0, 0,218,9,102,105,110,100,95,115,112,101,99,213,2,0,0, 115,10,0,0,0,0,2,8,1,4,1,10,1,14,2,122, @@ -1075,9 +1075,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,78,41,2,114,165,0,0,0,114,109,0, - 0,0,41,4,114,162,0,0,0,114,81,0,0,0,114,163, - 0,0,0,114,95,0,0,0,114,10,0,0,0,114,10,0, + 32,32,32,32,32,78,41,2,114,166,0,0,0,114,110,0, + 0,0,41,4,114,163,0,0,0,114,82,0,0,0,114,164, + 0,0,0,114,96,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,218,11,102,105,110,100,95,109,111, 100,117,108,101,222,2,0,0,115,4,0,0,0,0,9,12, 1,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, @@ -1088,12 +1088,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 124,1,106,0,100,2,141,2,130,1,116,5,116,6,106,7, 124,1,131,2,83,0,41,3,122,24,67,114,101,97,116,101, 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,77,0,0,0,114,16,0,0,0,41,8,114,17, - 0,0,0,114,15,0,0,0,114,78,0,0,0,114,79,0, - 0,0,114,45,0,0,0,114,67,0,0,0,114,57,0,0, + 108,101,114,78,0,0,0,114,16,0,0,0,41,8,114,17, + 0,0,0,114,15,0,0,0,114,79,0,0,0,114,80,0, + 0,0,114,45,0,0,0,114,68,0,0,0,114,58,0,0, 0,90,14,99,114,101,97,116,101,95,98,117,105,108,116,105, - 110,41,2,114,30,0,0,0,114,95,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,148,0,0, + 110,41,2,114,30,0,0,0,114,96,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,149,0,0, 0,234,2,0,0,115,10,0,0,0,0,3,12,1,12,1, 4,255,6,2,122,29,66,117,105,108,116,105,110,73,109,112, 111,114,116,101,114,46,99,114,101,97,116,101,95,109,111,100, @@ -1101,10 +1101,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, 1,106,2,124,1,131,2,1,0,100,1,83,0,41,2,122, 22,69,120,101,99,32,97,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,78,41,3,114,67,0,0,0,114, - 57,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, - 105,110,41,2,114,30,0,0,0,114,96,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,149,0, + 32,109,111,100,117,108,101,78,41,3,114,68,0,0,0,114, + 58,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, + 105,110,41,2,114,30,0,0,0,114,97,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,150,0, 0,0,242,2,0,0,115,2,0,0,0,0,3,122,27,66, 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,101, 120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0, @@ -1113,8 +1113,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 114,110,32,78,111,110,101,32,97,115,32,98,117,105,108,116, 45,105,110,32,109,111,100,117,108,101,115,32,100,111,32,110, 111,116,32,104,97,118,101,32,99,111,100,101,32,111,98,106, - 101,99,116,115,46,78,114,10,0,0,0,169,2,114,162,0, - 0,0,114,81,0,0,0,114,10,0,0,0,114,10,0,0, + 101,99,116,115,46,78,114,10,0,0,0,169,2,114,163,0, + 0,0,114,82,0,0,0,114,10,0,0,0,114,10,0,0, 0,114,11,0,0,0,218,8,103,101,116,95,99,111,100,101, 247,2,0,0,115,2,0,0,0,0,4,122,24,66,117,105, 108,116,105,110,73,109,112,111,114,116,101,114,46,103,101,116, @@ -1124,7 +1124,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 110,101,32,97,115,32,98,117,105,108,116,45,105,110,32,109, 111,100,117,108,101,115,32,100,111,32,110,111,116,32,104,97, 118,101,32,115,111,117,114,99,101,32,99,111,100,101,46,78, - 114,10,0,0,0,114,167,0,0,0,114,10,0,0,0,114, + 114,10,0,0,0,114,168,0,0,0,114,10,0,0,0,114, 10,0,0,0,114,11,0,0,0,218,10,103,101,116,95,115, 111,117,114,99,101,253,2,0,0,115,2,0,0,0,0,4, 122,26,66,117,105,108,116,105,110,73,109,112,111,114,116,101, @@ -1134,23 +1134,23 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,117,114,110,32,70,97,108,115,101,32,97,115,32,98,117, 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, 114,101,32,110,101,118,101,114,32,112,97,99,107,97,103,101, - 115,46,70,114,10,0,0,0,114,167,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,115,0,0, + 115,46,70,114,10,0,0,0,114,168,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,116,0,0, 0,3,3,0,0,115,2,0,0,0,0,4,122,26,66,117, 105,108,116,105,110,73,109,112,111,114,116,101,114,46,105,115, 95,112,97,99,107,97,103,101,41,2,78,78,41,1,78,41, 17,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0, 114,3,0,0,0,218,12,115,116,97,116,105,99,109,101,116, - 104,111,100,114,99,0,0,0,218,11,99,108,97,115,115,109, - 101,116,104,111,100,114,165,0,0,0,114,166,0,0,0,114, - 148,0,0,0,114,149,0,0,0,114,86,0,0,0,114,168, - 0,0,0,114,169,0,0,0,114,115,0,0,0,114,97,0, - 0,0,114,153,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,158,0,0,0, + 104,111,100,114,100,0,0,0,218,11,99,108,97,115,115,109, + 101,116,104,111,100,114,166,0,0,0,114,167,0,0,0,114, + 149,0,0,0,114,150,0,0,0,114,87,0,0,0,114,169, + 0,0,0,114,170,0,0,0,114,116,0,0,0,114,98,0, + 0,0,114,154,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,159,0,0,0, 195,2,0,0,115,42,0,0,0,8,7,4,2,2,1,10, 8,2,1,12,8,2,1,12,11,2,1,10,7,2,1,10, 4,2,1,2,1,12,4,2,1,2,1,12,4,2,1,2, - 1,12,4,114,158,0,0,0,99,0,0,0,0,0,0,0, + 1,12,4,114,159,0,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,4,0,0,0,64,0,0,0,115,140,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,101,4, 100,2,100,3,132,0,131,1,90,5,101,6,100,21,100,5, @@ -1173,10 +1173,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, 0,67,0,0,0,115,12,0,0,0,100,1,160,0,124,0, - 106,1,161,1,83,0,41,2,114,159,0,0,0,122,22,60, + 106,1,161,1,83,0,41,2,114,160,0,0,0,122,22,60, 109,111,100,117,108,101,32,123,33,114,125,32,40,102,114,111, - 122,101,110,41,62,114,160,0,0,0,41,1,218,1,109,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,99, + 122,101,110,41,62,114,161,0,0,0,41,1,218,1,109,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,100, 0,0,0,21,3,0,0,115,2,0,0,0,0,7,122,26, 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,109, 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0, @@ -1184,9 +1184,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 115,32,0,0,0,116,0,160,1,124,1,161,1,114,24,116, 2,124,1,124,0,100,1,100,2,141,3,83,0,100,0,83, 0,100,0,83,0,41,3,78,90,6,102,114,111,122,101,110, - 114,137,0,0,0,41,3,114,57,0,0,0,114,88,0,0, - 0,114,91,0,0,0,114,161,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,165,0,0,0,30, + 114,138,0,0,0,41,3,114,58,0,0,0,114,89,0,0, + 0,114,92,0,0,0,114,162,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,166,0,0,0,30, 3,0,0,115,6,0,0,0,0,2,10,1,14,2,122,24, 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,102, 105,110,100,95,115,112,101,99,99,3,0,0,0,0,0,0, @@ -1198,10 +1198,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,78,41,2,114,57,0,0,0,114,88,0, - 0,0,41,3,114,162,0,0,0,114,81,0,0,0,114,163, + 32,32,32,32,32,78,41,2,114,58,0,0,0,114,89,0, + 0,0,41,3,114,163,0,0,0,114,82,0,0,0,114,164, 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,166,0,0,0,37,3,0,0,115,2,0,0,0, + 0,0,114,167,0,0,0,37,3,0,0,115,2,0,0,0, 0,7,122,26,70,114,111,122,101,110,73,109,112,111,114,116, 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,2, 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, @@ -1209,8 +1209,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 85,115,101,32,100,101,102,97,117,108,116,32,115,101,109,97, 110,116,105,99,115,32,102,111,114,32,109,111,100,117,108,101, 32,99,114,101,97,116,105,111,110,46,78,114,10,0,0,0, - 41,2,114,162,0,0,0,114,95,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,148,0,0,0, + 41,2,114,163,0,0,0,114,96,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,149,0,0,0, 46,3,0,0,115,2,0,0,0,0,2,122,28,70,114,111, 122,101,110,73,109,112,111,114,116,101,114,46,99,114,101,97, 116,101,95,109,111,100,117,108,101,99,1,0,0,0,0,0, @@ -1219,13 +1219,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,161,1,115,36,116,4,100,1,160,5,124,1,161,1,124, 1,100,2,141,2,130,1,116,6,116,2,106,7,124,1,131, 2,125,2,116,8,124,2,124,0,106,9,131,2,1,0,100, - 0,83,0,114,87,0,0,0,41,10,114,105,0,0,0,114, - 17,0,0,0,114,57,0,0,0,114,88,0,0,0,114,79, - 0,0,0,114,45,0,0,0,114,67,0,0,0,218,17,103, + 0,83,0,114,88,0,0,0,41,10,114,106,0,0,0,114, + 17,0,0,0,114,58,0,0,0,114,89,0,0,0,114,80, + 0,0,0,114,45,0,0,0,114,68,0,0,0,218,17,103, 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116, - 218,4,101,120,101,99,114,7,0,0,0,41,3,114,96,0, + 218,4,101,120,101,99,114,7,0,0,0,41,3,114,97,0, 0,0,114,17,0,0,0,218,4,99,111,100,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,149,0,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,150,0,0, 0,50,3,0,0,115,14,0,0,0,0,2,8,1,10,1, 10,1,2,255,6,2,12,1,122,26,70,114,111,122,101,110, 73,109,112,111,114,116,101,114,46,101,120,101,99,95,109,111, @@ -1237,9 +1237,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, 97,116,101,100,46,32,32,85,115,101,32,101,120,101,99,95, 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, - 46,10,10,32,32,32,32,32,32,32,32,41,1,114,97,0, - 0,0,114,167,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,153,0,0,0,59,3,0,0,115, + 46,10,10,32,32,32,32,32,32,32,32,41,1,114,98,0, + 0,0,114,168,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,154,0,0,0,59,3,0,0,115, 2,0,0,0,0,7,122,26,70,114,111,122,101,110,73,109, 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,3, @@ -1247,9 +1247,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 124,1,161,1,83,0,41,1,122,45,82,101,116,117,114,110, 32,116,104,101,32,99,111,100,101,32,111,98,106,101,99,116, 32,102,111,114,32,116,104,101,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,46,41,2,114,57,0,0,0,114,174, - 0,0,0,114,167,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,168,0,0,0,68,3,0,0, + 109,111,100,117,108,101,46,41,2,114,58,0,0,0,114,175, + 0,0,0,114,168,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,169,0,0,0,68,3,0,0, 115,2,0,0,0,0,4,122,23,70,114,111,122,101,110,73, 109,112,111,114,116,101,114,46,103,101,116,95,99,111,100,101, 99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0, @@ -1257,9 +1257,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 122,54,82,101,116,117,114,110,32,78,111,110,101,32,97,115, 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,32, 100,111,32,110,111,116,32,104,97,118,101,32,115,111,117,114, - 99,101,32,99,111,100,101,46,78,114,10,0,0,0,114,167, + 99,101,32,99,111,100,101,46,78,114,10,0,0,0,114,168, 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,169,0,0,0,74,3,0,0,115,2,0,0,0, + 0,0,114,170,0,0,0,74,3,0,0,115,2,0,0,0, 0,4,122,25,70,114,111,122,101,110,73,109,112,111,114,116, 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, @@ -1267,23 +1267,23 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,41,1,122,46,82,101,116,117,114,110,32,84,114,117,101, 32,105,102,32,116,104,101,32,102,114,111,122,101,110,32,109, 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, - 103,101,46,41,2,114,57,0,0,0,90,17,105,115,95,102, - 114,111,122,101,110,95,112,97,99,107,97,103,101,114,167,0, + 103,101,46,41,2,114,58,0,0,0,90,17,105,115,95,102, + 114,111,122,101,110,95,112,97,99,107,97,103,101,114,168,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,115,0,0,0,80,3,0,0,115,2,0,0,0,0, + 0,114,116,0,0,0,80,3,0,0,115,2,0,0,0,0, 4,122,25,70,114,111,122,101,110,73,109,112,111,114,116,101, 114,46,105,115,95,112,97,99,107,97,103,101,41,2,78,78, 41,1,78,41,16,114,1,0,0,0,114,0,0,0,0,114, - 2,0,0,0,114,3,0,0,0,114,170,0,0,0,114,99, - 0,0,0,114,171,0,0,0,114,165,0,0,0,114,166,0, - 0,0,114,148,0,0,0,114,149,0,0,0,114,153,0,0, - 0,114,90,0,0,0,114,168,0,0,0,114,169,0,0,0, - 114,115,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,172,0,0,0,12,3, + 2,0,0,0,114,3,0,0,0,114,171,0,0,0,114,100, + 0,0,0,114,172,0,0,0,114,166,0,0,0,114,167,0, + 0,0,114,149,0,0,0,114,150,0,0,0,114,154,0,0, + 0,114,91,0,0,0,114,169,0,0,0,114,170,0,0,0, + 114,116,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,173,0,0,0,12,3, 0,0,115,44,0,0,0,8,7,4,2,2,1,10,8,2, 1,12,6,2,1,12,8,2,1,10,3,2,1,10,8,2, 1,10,8,2,1,2,1,12,4,2,1,2,1,12,4,2, - 1,2,1,114,172,0,0,0,99,0,0,0,0,0,0,0, + 1,2,1,114,173,0,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,2,0,0,0,64,0,0,0,115,32,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, @@ -1295,7 +1295,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,115,12,0,0,0,116,0,160,1,161,0,1,0, 100,1,83,0,41,2,122,24,65,99,113,117,105,114,101,32, 116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,46, - 78,41,2,114,57,0,0,0,114,58,0,0,0,114,47,0, + 78,41,2,114,58,0,0,0,114,59,0,0,0,114,47,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, 0,114,54,0,0,0,93,3,0,0,115,2,0,0,0,0, 2,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, @@ -1306,19 +1306,19 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, 32,114,101,103,97,114,100,108,101,115,115,32,111,102,32,97, 110,121,32,114,97,105,115,101,100,32,101,120,99,101,112,116, - 105,111,110,115,46,78,41,2,114,57,0,0,0,114,60,0, + 105,111,110,115,46,78,41,2,114,58,0,0,0,114,61,0, 0,0,41,4,114,30,0,0,0,90,8,101,120,99,95,116, 121,112,101,90,9,101,120,99,95,118,97,108,117,101,90,13, 101,120,99,95,116,114,97,99,101,98,97,99,107,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,56,0,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,57,0,0, 0,97,3,0,0,115,2,0,0,0,0,2,122,27,95,73, 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, 46,95,95,101,120,105,116,95,95,78,41,6,114,1,0,0, 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, - 114,54,0,0,0,114,56,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,177, + 114,54,0,0,0,114,57,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,178, 0,0,0,89,3,0,0,115,6,0,0,0,8,2,4,2, - 8,4,114,177,0,0,0,99,3,0,0,0,0,0,0,0, + 8,4,114,178,0,0,0,99,3,0,0,0,0,0,0,0, 5,0,0,0,5,0,0,0,67,0,0,0,115,64,0,0, 0,124,1,160,0,100,1,124,2,100,2,24,0,161,2,125, 3,116,1,124,3,131,1,124,2,107,0,114,36,116,2,100, @@ -1327,7 +1327,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,41,6,122,50,82,101,115,111,108,118,101,32,97,32,114, 101,108,97,116,105,118,101,32,109,111,100,117,108,101,32,110, 97,109,101,32,116,111,32,97,110,32,97,98,115,111,108,117, - 116,101,32,111,110,101,46,114,128,0,0,0,114,37,0,0, + 116,101,32,111,110,101,46,114,129,0,0,0,114,37,0,0, 0,122,50,97,116,116,101,109,112,116,101,100,32,114,101,108, 97,116,105,118,101,32,105,109,112,111,114,116,32,98,101,121, 111,110,100,32,116,111,112,45,108,101,118,101,108,32,112,97, @@ -1339,17 +1339,17 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 98,97,115,101,114,10,0,0,0,114,10,0,0,0,114,11, 0,0,0,218,13,95,114,101,115,111,108,118,101,95,110,97, 109,101,102,3,0,0,115,10,0,0,0,0,2,16,1,12, - 1,8,1,8,1,114,184,0,0,0,99,3,0,0,0,0, + 1,8,1,8,1,114,185,0,0,0,99,3,0,0,0,0, 0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115, 34,0,0,0,124,0,160,0,124,1,124,2,161,2,125,3, 124,3,100,0,107,8,114,24,100,0,83,0,116,1,124,1, - 124,3,131,2,83,0,114,13,0,0,0,41,2,114,166,0, - 0,0,114,91,0,0,0,41,4,218,6,102,105,110,100,101, - 114,114,17,0,0,0,114,163,0,0,0,114,109,0,0,0, + 124,3,131,2,83,0,114,13,0,0,0,41,2,114,167,0, + 0,0,114,92,0,0,0,41,4,218,6,102,105,110,100,101, + 114,114,17,0,0,0,114,164,0,0,0,114,110,0,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, 99,121,111,3,0,0,115,8,0,0,0,0,3,12,1,8, - 1,4,1,114,186,0,0,0,99,3,0,0,0,0,0,0, + 1,4,1,114,187,0,0,0,99,3,0,0,0,0,0,0, 0,10,0,0,0,10,0,0,0,67,0,0,0,115,12,1, 0,0,116,0,106,1,125,3,124,3,100,1,107,8,114,22, 116,2,100,2,131,1,130,1,124,3,115,38,116,3,160,4, @@ -1375,21 +1375,21 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122, 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, 115,32,101,109,112,116,121,41,12,114,15,0,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,79,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,80,0,0,0,218,9, 95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218, - 13,73,109,112,111,114,116,87,97,114,110,105,110,103,114,92, - 0,0,0,114,177,0,0,0,114,165,0,0,0,114,106,0, - 0,0,114,186,0,0,0,114,105,0,0,0,41,10,114,17, - 0,0,0,114,163,0,0,0,114,164,0,0,0,114,187,0, - 0,0,90,9,105,115,95,114,101,108,111,97,100,114,185,0, - 0,0,114,165,0,0,0,114,95,0,0,0,114,96,0,0, - 0,114,105,0,0,0,114,10,0,0,0,114,10,0,0,0, + 13,73,109,112,111,114,116,87,97,114,110,105,110,103,114,93, + 0,0,0,114,178,0,0,0,114,166,0,0,0,114,107,0, + 0,0,114,187,0,0,0,114,106,0,0,0,41,10,114,17, + 0,0,0,114,164,0,0,0,114,165,0,0,0,114,188,0, + 0,0,90,9,105,115,95,114,101,108,111,97,100,114,186,0, + 0,0,114,166,0,0,0,114,96,0,0,0,114,97,0,0, + 0,114,106,0,0,0,114,10,0,0,0,114,10,0,0,0, 114,11,0,0,0,218,10,95,102,105,110,100,95,115,112,101, 99,120,3,0,0,115,54,0,0,0,0,2,6,1,8,2, 8,3,4,1,12,5,10,1,8,1,8,1,2,1,10,1, 14,1,12,1,8,1,20,2,22,1,8,2,18,1,10,1, 2,1,10,1,14,4,14,2,8,1,8,2,10,2,10,2, - 114,191,0,0,0,99,3,0,0,0,0,0,0,0,3,0, + 114,192,0,0,0,99,3,0,0,0,0,0,0,0,3,0, 0,0,5,0,0,0,67,0,0,0,115,108,0,0,0,116, 0,124,0,116,1,131,2,115,28,116,2,100,1,160,3,116, 4,124,0,131,1,161,1,131,1,130,1,124,2,100,2,107, @@ -1412,13 +1412,13 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 69,109,112,116,121,32,109,111,100,117,108,101,32,110,97,109, 101,78,41,7,218,10,105,115,105,110,115,116,97,110,99,101, 218,3,115,116,114,218,9,84,121,112,101,69,114,114,111,114, - 114,45,0,0,0,114,14,0,0,0,114,181,0,0,0,114, - 79,0,0,0,169,3,114,17,0,0,0,114,182,0,0,0, - 114,183,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 114,45,0,0,0,114,14,0,0,0,114,182,0,0,0,114, + 80,0,0,0,169,3,114,17,0,0,0,114,183,0,0,0, + 114,184,0,0,0,114,10,0,0,0,114,10,0,0,0,114, 11,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104, 101,99,107,167,3,0,0,115,22,0,0,0,0,2,10,1, 18,1,8,1,8,1,8,1,10,1,10,1,4,1,8,2, - 12,1,114,196,0,0,0,122,16,78,111,32,109,111,100,117, + 12,1,114,197,0,0,0,122,16,78,111,32,109,111,100,117, 108,101,32,110,97,109,101,100,32,122,4,123,33,114,125,99, 2,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0, 67,0,0,0,115,220,0,0,0,100,0,125,2,124,0,160, @@ -1435,24 +1435,24 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,130,1,110,8,116,10,124,6,131,1,125,7,124,3,114, 216,116,1,106,2,124,3,25,0,125,4,116,11,124,4,124, 0,160,0,100,1,161,1,100,5,25,0,124,7,131,3,1, - 0,124,7,83,0,41,6,78,114,128,0,0,0,114,22,0, + 0,124,7,83,0,41,6,78,114,129,0,0,0,114,22,0, 0,0,122,23,59,32,123,33,114,125,32,105,115,32,110,111, 116,32,97,32,112,97,99,107,97,103,101,114,16,0,0,0, - 233,2,0,0,0,41,12,114,129,0,0,0,114,15,0,0, - 0,114,92,0,0,0,114,67,0,0,0,114,140,0,0,0, - 114,106,0,0,0,218,8,95,69,82,82,95,77,83,71,114, + 233,2,0,0,0,41,12,114,130,0,0,0,114,15,0,0, + 0,114,93,0,0,0,114,68,0,0,0,114,141,0,0,0, + 114,107,0,0,0,218,8,95,69,82,82,95,77,83,71,114, 45,0,0,0,218,19,77,111,100,117,108,101,78,111,116,70, - 111,117,110,100,69,114,114,111,114,114,191,0,0,0,114,157, + 111,117,110,100,69,114,114,111,114,114,192,0,0,0,114,158, 0,0,0,114,5,0,0,0,41,8,114,17,0,0,0,218, - 7,105,109,112,111,114,116,95,114,163,0,0,0,114,130,0, + 7,105,109,112,111,114,116,95,114,164,0,0,0,114,131,0, 0,0,90,13,112,97,114,101,110,116,95,109,111,100,117,108, - 101,114,155,0,0,0,114,95,0,0,0,114,96,0,0,0, + 101,114,156,0,0,0,114,96,0,0,0,114,97,0,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, 23,95,102,105,110,100,95,97,110,100,95,108,111,97,100,95, 117,110,108,111,99,107,101,100,186,3,0,0,115,42,0,0, 0,0,1,4,1,14,1,4,1,10,1,10,2,10,1,10, 1,10,1,2,1,10,1,14,1,16,1,20,1,10,1,8, - 1,20,2,8,1,4,2,10,1,22,1,114,201,0,0,0, + 1,20,2,8,1,4,2,10,1,22,1,114,202,0,0,0, 99,2,0,0,0,0,0,0,0,4,0,0,0,10,0,0, 0,67,0,0,0,115,106,0,0,0,116,0,124,0,131,1, 143,50,1,0,116,1,106,2,160,3,124,0,116,4,161,2, @@ -1466,16 +1466,16 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 46,78,122,40,105,109,112,111,114,116,32,111,102,32,123,125, 32,104,97,108,116,101,100,59,32,78,111,110,101,32,105,110, 32,115,121,115,46,109,111,100,117,108,101,115,114,16,0,0, - 0,41,9,114,50,0,0,0,114,15,0,0,0,114,92,0, + 0,41,9,114,50,0,0,0,114,15,0,0,0,114,93,0, 0,0,114,34,0,0,0,218,14,95,78,69,69,68,83,95, - 76,79,65,68,73,78,71,114,201,0,0,0,114,45,0,0, - 0,114,199,0,0,0,114,65,0,0,0,41,4,114,17,0, - 0,0,114,200,0,0,0,114,96,0,0,0,114,75,0,0, + 76,79,65,68,73,78,71,114,202,0,0,0,114,45,0,0, + 0,114,200,0,0,0,114,66,0,0,0,41,4,114,17,0, + 0,0,114,201,0,0,0,114,97,0,0,0,114,76,0,0, 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100, 216,3,0,0,115,22,0,0,0,0,2,10,1,14,1,8, 1,32,2,8,1,4,1,2,255,4,2,12,2,8,1,114, - 203,0,0,0,114,22,0,0,0,99,3,0,0,0,0,0, + 204,0,0,0,114,22,0,0,0,99,3,0,0,0,0,0, 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,42, 0,0,0,116,0,124,0,124,1,124,2,131,3,1,0,124, 2,100,1,107,4,114,32,116,1,124,0,124,1,124,2,131, @@ -1499,12 +1499,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 115,32,115,101,116,116,105,110,103,32,95,95,112,97,99,107, 97,103,101,95,95,32,105,102,10,32,32,32,32,116,104,101, 32,108,111,97,100,101,114,32,100,105,100,32,110,111,116,46, - 10,10,32,32,32,32,114,22,0,0,0,41,4,114,196,0, - 0,0,114,184,0,0,0,114,203,0,0,0,218,11,95,103, - 99,100,95,105,109,112,111,114,116,114,195,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,204,0, + 10,10,32,32,32,32,114,22,0,0,0,41,4,114,197,0, + 0,0,114,185,0,0,0,114,204,0,0,0,218,11,95,103, + 99,100,95,105,109,112,111,114,116,114,196,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,205,0, 0,0,232,3,0,0,115,8,0,0,0,0,9,12,1,8, - 1,12,1,114,204,0,0,0,169,1,218,9,114,101,99,117, + 1,12,1,114,205,0,0,0,169,1,218,9,114,101,99,117, 114,115,105,118,101,99,3,0,0,0,1,0,0,0,8,0, 0,0,11,0,0,0,67,0,0,0,115,226,0,0,0,124, 1,68,0,93,216,125,4,116,0,124,4,116,1,131,2,115, @@ -1540,22 +1540,22 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 96,102,114,111,109,32,108,105,115,116,39,39,122,8,73,116, 101,109,32,105,110,32,122,18,32,109,117,115,116,32,98,101, 32,115,116,114,44,32,110,111,116,32,250,1,42,218,7,95, - 95,97,108,108,95,95,84,114,205,0,0,0,114,178,0,0, - 0,78,41,16,114,192,0,0,0,114,193,0,0,0,114,1, - 0,0,0,114,194,0,0,0,114,14,0,0,0,114,4,0, + 95,97,108,108,95,95,84,114,206,0,0,0,114,179,0,0, + 0,78,41,16,114,193,0,0,0,114,194,0,0,0,114,1, + 0,0,0,114,195,0,0,0,114,14,0,0,0,114,4,0, 0,0,218,16,95,104,97,110,100,108,101,95,102,114,111,109, - 108,105,115,116,114,208,0,0,0,114,45,0,0,0,114,67, - 0,0,0,114,199,0,0,0,114,17,0,0,0,114,15,0, - 0,0,114,92,0,0,0,114,34,0,0,0,114,202,0,0, - 0,41,8,114,96,0,0,0,218,8,102,114,111,109,108,105, - 115,116,114,200,0,0,0,114,206,0,0,0,218,1,120,90, + 108,105,115,116,114,209,0,0,0,114,45,0,0,0,114,68, + 0,0,0,114,200,0,0,0,114,17,0,0,0,114,15,0, + 0,0,114,93,0,0,0,114,34,0,0,0,114,203,0,0, + 0,41,8,114,97,0,0,0,218,8,102,114,111,109,108,105, + 115,116,114,201,0,0,0,114,207,0,0,0,218,1,120,90, 5,119,104,101,114,101,90,9,102,114,111,109,95,110,97,109, 101,90,3,101,120,99,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,209,0,0,0,247,3,0,0,115,44, + 114,11,0,0,0,114,210,0,0,0,247,3,0,0,115,44, 0,0,0,0,10,8,1,10,1,4,1,12,2,4,1,28, 2,8,1,14,1,10,1,2,255,8,2,10,1,14,1,2, 1,14,1,16,4,10,1,16,255,2,2,8,1,22,1,114, - 209,0,0,0,99,1,0,0,0,0,0,0,0,3,0,0, + 210,0,0,0,99,1,0,0,0,0,0,0,0,3,0,0, 0,6,0,0,0,67,0,0,0,115,146,0,0,0,124,0, 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, 125,2,124,1,100,3,107,9,114,82,124,2,100,3,107,9, @@ -1576,8 +1576,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115, 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111, 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107, - 110,111,119,110,46,10,10,32,32,32,32,114,144,0,0,0, - 114,105,0,0,0,78,122,32,95,95,112,97,99,107,97,103, + 110,111,119,110,46,10,10,32,32,32,32,114,145,0,0,0, + 114,106,0,0,0,78,122,32,95,95,112,97,99,107,97,103, 101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46, 112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1, 41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108, @@ -1587,16 +1587,16 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 97,99,107,97,103,101,95,95,44,32,102,97,108,108,105,110, 103,32,98,97,99,107,32,111,110,32,95,95,110,97,109,101, 95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,114, - 1,0,0,0,114,140,0,0,0,114,128,0,0,0,114,22, - 0,0,0,41,6,114,34,0,0,0,114,130,0,0,0,114, - 188,0,0,0,114,189,0,0,0,114,190,0,0,0,114,129, - 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,182, - 0,0,0,114,95,0,0,0,114,10,0,0,0,114,10,0, + 1,0,0,0,114,141,0,0,0,114,129,0,0,0,114,22, + 0,0,0,41,6,114,34,0,0,0,114,131,0,0,0,114, + 189,0,0,0,114,190,0,0,0,114,191,0,0,0,114,130, + 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,183, + 0,0,0,114,96,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,218,17,95,99,97,108,99,95,95, 95,112,97,99,107,97,103,101,95,95,28,4,0,0,115,38, 0,0,0,0,7,10,1,10,1,8,1,18,1,22,2,2, 0,2,254,6,3,4,1,8,1,6,2,6,2,2,0,2, - 254,6,3,8,1,8,1,14,1,114,215,0,0,0,114,10, + 254,6,3,8,1,8,1,14,1,114,216,0,0,0,114,10, 0,0,0,99,5,0,0,0,0,0,0,0,9,0,0,0, 5,0,0,0,67,0,0,0,115,180,0,0,0,124,4,100, 1,107,2,114,18,116,0,124,0,131,1,125,5,110,36,124, @@ -1640,30 +1640,30 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 32,105,109,112,111,114,116,32,109,111,100,96,96,32,119,111, 117,108,100,32,104,97,118,101,32,97,32,39,108,101,118,101, 108,39,32,111,102,32,50,41,46,10,10,32,32,32,32,114, - 22,0,0,0,78,114,128,0,0,0,114,140,0,0,0,41, - 9,114,204,0,0,0,114,215,0,0,0,218,9,112,97,114, - 116,105,116,105,111,110,114,180,0,0,0,114,15,0,0,0, - 114,92,0,0,0,114,1,0,0,0,114,4,0,0,0,114, - 209,0,0,0,41,9,114,17,0,0,0,114,214,0,0,0, - 218,6,108,111,99,97,108,115,114,210,0,0,0,114,183,0, - 0,0,114,96,0,0,0,90,8,103,108,111,98,97,108,115, - 95,114,182,0,0,0,90,7,99,117,116,95,111,102,102,114, + 22,0,0,0,78,114,129,0,0,0,114,141,0,0,0,41, + 9,114,205,0,0,0,114,216,0,0,0,218,9,112,97,114, + 116,105,116,105,111,110,114,181,0,0,0,114,15,0,0,0, + 114,93,0,0,0,114,1,0,0,0,114,4,0,0,0,114, + 210,0,0,0,41,9,114,17,0,0,0,114,215,0,0,0, + 218,6,108,111,99,97,108,115,114,211,0,0,0,114,184,0, + 0,0,114,97,0,0,0,90,8,103,108,111,98,97,108,115, + 95,114,183,0,0,0,90,7,99,117,116,95,111,102,102,114, 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,10, 95,95,105,109,112,111,114,116,95,95,55,4,0,0,115,30, 0,0,0,0,11,8,1,10,2,16,1,8,1,12,1,4, 3,8,1,18,1,4,1,4,4,26,3,32,1,10,1,12, - 2,114,218,0,0,0,99,1,0,0,0,0,0,0,0,2, + 2,114,219,0,0,0,99,1,0,0,0,0,0,0,0,2, 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, 116,0,160,1,124,0,161,1,125,1,124,1,100,0,107,8, 114,30,116,2,100,1,124,0,23,0,131,1,130,1,116,3, 124,1,131,1,83,0,41,2,78,122,25,110,111,32,98,117, 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97, - 109,101,100,32,41,4,114,158,0,0,0,114,165,0,0,0, - 114,79,0,0,0,114,157,0,0,0,41,2,114,17,0,0, - 0,114,95,0,0,0,114,10,0,0,0,114,10,0,0,0, + 109,101,100,32,41,4,114,159,0,0,0,114,166,0,0,0, + 114,80,0,0,0,114,158,0,0,0,41,2,114,17,0,0, + 0,114,96,0,0,0,114,10,0,0,0,114,10,0,0,0, 114,11,0,0,0,218,18,95,98,117,105,108,116,105,110,95, 102,114,111,109,95,110,97,109,101,92,4,0,0,115,8,0, - 0,0,0,1,10,1,8,1,12,1,114,219,0,0,0,99, + 0,0,0,1,10,1,8,1,12,1,114,220,0,0,0,99, 2,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, 67,0,0,0,115,166,0,0,0,124,1,97,0,124,0,97, 1,116,2,116,1,131,1,125,2,116,1,106,3,160,4,161, @@ -1692,23 +1692,23 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,32,109,111,100,117,108,101,115,32,109,117,115,116,32,98, 101,32,101,120,112,108,105,99,105,116,108,121,32,112,97,115, 115,101,100,32,105,110,46,10,10,32,32,32,32,41,3,114, - 23,0,0,0,114,188,0,0,0,114,64,0,0,0,78,41, - 15,114,57,0,0,0,114,15,0,0,0,114,14,0,0,0, - 114,92,0,0,0,218,5,105,116,101,109,115,114,192,0,0, - 0,114,78,0,0,0,114,158,0,0,0,114,88,0,0,0, - 114,172,0,0,0,114,141,0,0,0,114,147,0,0,0,114, - 1,0,0,0,114,219,0,0,0,114,5,0,0,0,41,10, + 23,0,0,0,114,189,0,0,0,114,65,0,0,0,78,41, + 15,114,58,0,0,0,114,15,0,0,0,114,14,0,0,0, + 114,93,0,0,0,218,5,105,116,101,109,115,114,193,0,0, + 0,114,79,0,0,0,114,159,0,0,0,114,89,0,0,0, + 114,173,0,0,0,114,142,0,0,0,114,148,0,0,0,114, + 1,0,0,0,114,220,0,0,0,114,5,0,0,0,41,10, 218,10,115,121,115,95,109,111,100,117,108,101,218,11,95,105, 109,112,95,109,111,100,117,108,101,90,11,109,111,100,117,108, - 101,95,116,121,112,101,114,17,0,0,0,114,96,0,0,0, - 114,109,0,0,0,114,95,0,0,0,90,11,115,101,108,102, + 101,95,116,121,112,101,114,17,0,0,0,114,97,0,0,0, + 114,110,0,0,0,114,96,0,0,0,90,11,115,101,108,102, 95,109,111,100,117,108,101,90,12,98,117,105,108,116,105,110, 95,110,97,109,101,90,14,98,117,105,108,116,105,110,95,109, 111,100,117,108,101,114,10,0,0,0,114,10,0,0,0,114, 11,0,0,0,218,6,95,115,101,116,117,112,99,4,0,0, 115,36,0,0,0,0,9,4,1,4,3,8,1,18,1,10, 1,10,1,6,1,10,1,6,2,2,1,10,1,12,3,10, - 1,8,1,10,1,10,2,10,1,114,223,0,0,0,99,2, + 1,8,1,10,1,10,2,10,1,114,224,0,0,0,99,2, 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, 0,0,0,115,38,0,0,0,116,0,124,0,124,1,131,2, 1,0,116,1,106,2,160,3,116,4,161,1,1,0,116,1, @@ -1716,12 +1716,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 122,48,73,110,115,116,97,108,108,32,105,109,112,111,114,116, 101,114,115,32,102,111,114,32,98,117,105,108,116,105,110,32, 97,110,100,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,115,78,41,6,114,223,0,0,0,114,15,0,0,0,114, - 187,0,0,0,114,120,0,0,0,114,158,0,0,0,114,172, - 0,0,0,41,2,114,221,0,0,0,114,222,0,0,0,114, + 101,115,78,41,6,114,224,0,0,0,114,15,0,0,0,114, + 188,0,0,0,114,121,0,0,0,114,159,0,0,0,114,173, + 0,0,0,41,2,114,222,0,0,0,114,223,0,0,0,114, 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8, 95,105,110,115,116,97,108,108,134,4,0,0,115,6,0,0, - 0,0,2,10,2,12,1,114,224,0,0,0,99,0,0,0, + 0,0,2,10,2,12,1,114,225,0,0,0,99,0,0,0, 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, 0,115,32,0,0,0,100,1,100,2,108,0,125,0,124,0, 97,1,124,0,160,2,116,3,106,4,116,5,25,0,161,1, @@ -1731,31 +1731,31 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,32,102,105,108,101,115,121,115,116,101,109,32,97,99,99, 101,115,115,114,22,0,0,0,78,41,6,218,26,95,102,114, 111,122,101,110,95,105,109,112,111,114,116,108,105,98,95,101, - 120,116,101,114,110,97,108,114,126,0,0,0,114,224,0,0, - 0,114,15,0,0,0,114,92,0,0,0,114,1,0,0,0, - 41,1,114,225,0,0,0,114,10,0,0,0,114,10,0,0, + 120,116,101,114,110,97,108,114,127,0,0,0,114,225,0,0, + 0,114,15,0,0,0,114,93,0,0,0,114,1,0,0,0, + 41,1,114,226,0,0,0,114,10,0,0,0,114,10,0,0, 0,114,11,0,0,0,218,27,95,105,110,115,116,97,108,108, 95,101,120,116,101,114,110,97,108,95,105,109,112,111,114,116, 101,114,115,142,4,0,0,115,6,0,0,0,0,3,8,1, - 4,1,114,226,0,0,0,41,2,78,78,41,1,78,41,2, + 4,1,114,227,0,0,0,41,2,78,78,41,1,78,41,2, 78,114,22,0,0,0,41,4,78,78,114,10,0,0,0,114, - 22,0,0,0,41,50,114,3,0,0,0,114,126,0,0,0, - 114,12,0,0,0,114,18,0,0,0,114,59,0,0,0,114, + 22,0,0,0,41,50,114,3,0,0,0,114,127,0,0,0, + 114,12,0,0,0,114,18,0,0,0,114,60,0,0,0,114, 33,0,0,0,114,42,0,0,0,114,19,0,0,0,114,20, 0,0,0,114,49,0,0,0,114,50,0,0,0,114,53,0, - 0,0,114,65,0,0,0,114,67,0,0,0,114,76,0,0, - 0,114,86,0,0,0,114,90,0,0,0,114,97,0,0,0, - 114,111,0,0,0,114,112,0,0,0,114,91,0,0,0,114, - 141,0,0,0,114,147,0,0,0,114,151,0,0,0,114,107, - 0,0,0,114,93,0,0,0,114,156,0,0,0,114,157,0, - 0,0,114,94,0,0,0,114,158,0,0,0,114,172,0,0, - 0,114,177,0,0,0,114,184,0,0,0,114,186,0,0,0, - 114,191,0,0,0,114,196,0,0,0,90,15,95,69,82,82, - 95,77,83,71,95,80,82,69,70,73,88,114,198,0,0,0, - 114,201,0,0,0,218,6,111,98,106,101,99,116,114,202,0, - 0,0,114,203,0,0,0,114,204,0,0,0,114,209,0,0, - 0,114,215,0,0,0,114,218,0,0,0,114,219,0,0,0, - 114,223,0,0,0,114,224,0,0,0,114,226,0,0,0,114, + 0,0,114,66,0,0,0,114,68,0,0,0,114,77,0,0, + 0,114,87,0,0,0,114,91,0,0,0,114,98,0,0,0, + 114,112,0,0,0,114,113,0,0,0,114,92,0,0,0,114, + 142,0,0,0,114,148,0,0,0,114,152,0,0,0,114,108, + 0,0,0,114,94,0,0,0,114,157,0,0,0,114,158,0, + 0,0,114,95,0,0,0,114,159,0,0,0,114,173,0,0, + 0,114,178,0,0,0,114,185,0,0,0,114,187,0,0,0, + 114,192,0,0,0,114,197,0,0,0,90,15,95,69,82,82, + 95,77,83,71,95,80,82,69,70,73,88,114,199,0,0,0, + 114,202,0,0,0,218,6,111,98,106,101,99,116,114,203,0, + 0,0,114,204,0,0,0,114,205,0,0,0,114,210,0,0, + 0,114,216,0,0,0,114,219,0,0,0,114,220,0,0,0, + 114,224,0,0,0,114,225,0,0,0,114,227,0,0,0,114, 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, 0,0,0,218,8,60,109,111,100,117,108,101,62,8,0,0, 0,115,94,0,0,0,4,17,4,2,8,8,8,8,4,2, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 791bfc41322122..502efa990c1fec 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -567,7 +567,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 37,115,169,1,218,4,110,97,109,101,41,2,114,117,0,0, 0,218,11,73,109,112,111,114,116,69,114,114,111,114,41,4, 218,4,115,101,108,102,114,117,0,0,0,218,4,97,114,103, - 115,90,6,107,119,97,114,103,115,169,1,218,6,109,101,116, + 115,218,6,107,119,97,114,103,115,169,1,218,6,109,101,116, 104,111,100,114,3,0,0,0,114,6,0,0,0,218,19,95, 99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112, 101,114,194,1,0,0,115,18,0,0,0,0,1,8,1,8, @@ -592,12 +592,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 20,1,122,26,95,99,104,101,99,107,95,110,97,109,101,46, 60,108,111,99,97,108,115,62,46,95,119,114,97,112,41,1, 78,41,3,218,10,95,98,111,111,116,115,116,114,97,112,114, - 133,0,0,0,218,9,78,97,109,101,69,114,114,111,114,41, - 3,114,122,0,0,0,114,123,0,0,0,114,133,0,0,0, - 114,3,0,0,0,114,121,0,0,0,114,6,0,0,0,218, + 134,0,0,0,218,9,78,97,109,101,69,114,114,111,114,41, + 3,114,123,0,0,0,114,124,0,0,0,114,134,0,0,0, + 114,3,0,0,0,114,122,0,0,0,114,6,0,0,0,218, 11,95,99,104,101,99,107,95,110,97,109,101,186,1,0,0, 115,14,0,0,0,0,8,14,7,2,1,10,1,14,2,14, - 5,10,1,114,136,0,0,0,99,2,0,0,0,0,0,0, + 5,10,1,114,137,0,0,0,99,2,0,0,0,0,0,0, 0,5,0,0,0,6,0,0,0,67,0,0,0,115,60,0, 0,0,124,0,160,0,124,1,161,1,92,2,125,2,125,3, 124,2,100,1,107,8,114,56,116,1,124,3,131,1,114,56, @@ -625,7 +625,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,3,0,0,0,114,6,0,0,0,218,17,95,102,105,110, 100,95,109,111,100,117,108,101,95,115,104,105,109,214,1,0, 0,115,10,0,0,0,0,10,14,1,16,1,4,1,22,1, - 114,143,0,0,0,99,3,0,0,0,0,0,0,0,6,0, + 114,144,0,0,0,99,3,0,0,0,0,0,0,0,6,0, 0,0,4,0,0,0,67,0,0,0,115,158,0,0,0,124, 0,100,1,100,2,133,2,25,0,125,3,124,3,116,0,107, 3,114,60,100,3,124,1,155,2,100,4,124,3,155,2,157, @@ -682,7 +682,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,104,101,97,100,101,114,32,111,102,32,233,8,0,0,0, 233,252,255,255,255,122,14,105,110,118,97,108,105,100,32,102, 108,97,103,115,32,122,4,32,105,110,32,41,7,218,12,77, - 65,71,73,67,95,78,85,77,66,69,82,114,134,0,0,0, + 65,71,73,67,95,78,85,77,66,69,82,114,135,0,0,0, 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, 103,101,114,118,0,0,0,114,22,0,0,0,218,8,69,79, 70,69,114,114,111,114,114,27,0,0,0,41,6,114,26,0, @@ -692,7 +692,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,0,0,0,218,13,95,99,108,97,115,115,105,102,121,95, 112,121,99,231,1,0,0,115,28,0,0,0,0,16,12,1, 8,1,16,1,12,1,12,1,12,1,10,1,12,1,8,1, - 16,2,8,1,16,1,12,1,114,152,0,0,0,99,5,0, + 16,2,8,1,16,1,12,1,114,153,0,0,0,99,5,0, 0,0,0,0,0,0,6,0,0,0,4,0,0,0,67,0, 0,0,115,112,0,0,0,116,0,124,0,100,1,100,2,133, 2,25,0,131,1,124,1,100,3,64,0,107,3,114,58,100, @@ -734,19 +734,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, 97,105,115,101,100,32,105,102,32,116,104,101,32,98,121,116, 101,99,111,100,101,32,105,115,32,115,116,97,108,101,46,10, - 10,32,32,32,32,114,146,0,0,0,233,12,0,0,0,114, + 10,32,32,32,32,114,147,0,0,0,233,12,0,0,0,114, 14,0,0,0,122,22,98,121,116,101,99,111,100,101,32,105, - 115,32,115,116,97,108,101,32,102,111,114,32,114,144,0,0, - 0,78,114,145,0,0,0,41,4,114,27,0,0,0,114,134, - 0,0,0,114,149,0,0,0,114,118,0,0,0,41,6,114, + 115,32,115,116,97,108,101,32,102,111,114,32,114,145,0,0, + 0,78,114,146,0,0,0,41,4,114,27,0,0,0,114,135, + 0,0,0,114,150,0,0,0,114,118,0,0,0,41,6,114, 26,0,0,0,218,12,115,111,117,114,99,101,95,109,116,105, 109,101,218,11,115,111,117,114,99,101,95,115,105,122,101,114, - 117,0,0,0,114,151,0,0,0,114,93,0,0,0,114,3, + 117,0,0,0,114,152,0,0,0,114,93,0,0,0,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,23,95, 118,97,108,105,100,97,116,101,95,116,105,109,101,115,116,97, 109,112,95,112,121,99,8,2,0,0,115,16,0,0,0,0, 19,24,1,10,1,12,1,12,1,8,1,22,255,2,2,114, - 156,0,0,0,99,4,0,0,0,0,0,0,0,4,0,0, + 157,0,0,0,99,4,0,0,0,0,0,0,0,4,0,0, 0,3,0,0,0,67,0,0,0,115,38,0,0,0,124,0, 100,1,100,2,133,2,25,0,124,1,107,3,114,34,116,0, 100,3,124,2,155,2,157,2,102,1,124,3,142,1,130,1, @@ -781,17 +781,17 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,10,32,32,32,32,65,110,32,73,109,112,111,114,116,69, 114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,105, 102,32,116,104,101,32,98,121,116,101,99,111,100,101,32,105, - 115,32,115,116,97,108,101,46,10,10,32,32,32,32,114,146, - 0,0,0,114,145,0,0,0,122,46,104,97,115,104,32,105, + 115,32,115,116,97,108,101,46,10,10,32,32,32,32,114,147, + 0,0,0,114,146,0,0,0,122,46,104,97,115,104,32,105, 110,32,98,121,116,101,99,111,100,101,32,100,111,101,115,110, 39,116,32,109,97,116,99,104,32,104,97,115,104,32,111,102, 32,115,111,117,114,99,101,32,78,41,1,114,118,0,0,0, 41,4,114,26,0,0,0,218,11,115,111,117,114,99,101,95, - 104,97,115,104,114,117,0,0,0,114,151,0,0,0,114,3, + 104,97,115,104,114,117,0,0,0,114,152,0,0,0,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,18,95, 118,97,108,105,100,97,116,101,95,104,97,115,104,95,112,121, 99,36,2,0,0,115,12,0,0,0,0,17,16,1,2,1, - 8,255,2,2,2,254,114,158,0,0,0,99,4,0,0,0, + 8,255,2,2,2,254,114,159,0,0,0,99,4,0,0,0, 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, 115,82,0,0,0,116,0,160,1,124,0,161,1,125,4,116, 2,124,4,116,3,131,2,114,58,116,4,160,5,100,1,124, @@ -807,7 +807,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,114,117,0,0,0,114,44,0,0,0,41,10,218,7,109, 97,114,115,104,97,108,90,5,108,111,97,100,115,218,10,105, 115,105,110,115,116,97,110,99,101,218,10,95,99,111,100,101, - 95,116,121,112,101,114,134,0,0,0,114,149,0,0,0,218, + 95,116,121,112,101,114,135,0,0,0,114,150,0,0,0,218, 4,95,105,109,112,90,16,95,102,105,120,95,99,111,95,102, 105,108,101,110,97,109,101,114,118,0,0,0,114,62,0,0, 0,41,5,114,26,0,0,0,114,117,0,0,0,114,107,0, @@ -815,7 +815,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,3,0,0,0,114,6,0,0,0,218,17,95,99, 111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,60, 2,0,0,115,20,0,0,0,0,2,10,1,10,1,12,1, - 8,1,12,1,6,2,10,1,2,0,2,255,114,165,0,0, + 8,1,12,1,6,2,10,1,2,0,2,255,114,166,0,0, 0,114,73,0,0,0,99,3,0,0,0,0,0,0,0,4, 0,0,0,5,0,0,0,67,0,0,0,115,70,0,0,0, 116,0,116,1,131,1,125,3,124,3,160,2,116,3,100,1, @@ -826,14 +826,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,32,116,104,101,32,100,97,116,97,32,102,111,114,32,97, 32,116,105,109,101,115,116,97,109,112,45,98,97,115,101,100, 32,112,121,99,46,114,73,0,0,0,41,6,218,9,98,121, - 116,101,97,114,114,97,121,114,148,0,0,0,218,6,101,120, - 116,101,110,100,114,20,0,0,0,114,160,0,0,0,218,5, - 100,117,109,112,115,41,4,114,164,0,0,0,218,5,109,116, - 105,109,101,114,155,0,0,0,114,26,0,0,0,114,3,0, + 116,101,97,114,114,97,121,114,149,0,0,0,218,6,101,120, + 116,101,110,100,114,20,0,0,0,114,161,0,0,0,218,5, + 100,117,109,112,115,41,4,114,165,0,0,0,218,5,109,116, + 105,109,101,114,156,0,0,0,114,26,0,0,0,114,3,0, 0,0,114,3,0,0,0,114,6,0,0,0,218,22,95,99, 111,100,101,95,116,111,95,116,105,109,101,115,116,97,109,112, 95,112,121,99,73,2,0,0,115,12,0,0,0,0,2,8, - 1,14,1,14,1,14,1,16,1,114,170,0,0,0,84,99, + 1,14,1,14,1,14,1,16,1,114,171,0,0,0,84,99, 3,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0, 67,0,0,0,115,80,0,0,0,116,0,116,1,131,1,125, 3,100,1,124,2,100,1,62,0,66,0,125,4,124,3,160, @@ -843,16 +843,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,161,1,1,0,124,3,83,0,41,3,122,38,80,114,111, 100,117,99,101,32,116,104,101,32,100,97,116,97,32,102,111, 114,32,97,32,104,97,115,104,45,98,97,115,101,100,32,112, - 121,99,46,114,39,0,0,0,114,146,0,0,0,41,8,114, - 166,0,0,0,114,148,0,0,0,114,167,0,0,0,114,20, - 0,0,0,114,22,0,0,0,114,23,0,0,0,114,160,0, - 0,0,114,168,0,0,0,41,5,114,164,0,0,0,114,157, + 121,99,46,114,39,0,0,0,114,147,0,0,0,41,8,114, + 167,0,0,0,114,149,0,0,0,114,168,0,0,0,114,20, + 0,0,0,114,22,0,0,0,114,23,0,0,0,114,161,0, + 0,0,114,169,0,0,0,41,5,114,165,0,0,0,114,158, 0,0,0,90,7,99,104,101,99,107,101,100,114,26,0,0, 0,114,83,0,0,0,114,3,0,0,0,114,3,0,0,0, 114,6,0,0,0,218,17,95,99,111,100,101,95,116,111,95, 104,97,115,104,95,112,121,99,83,2,0,0,115,14,0,0, 0,0,2,8,1,12,1,14,1,16,1,10,1,16,1,114, - 171,0,0,0,99,1,0,0,0,0,0,0,0,5,0,0, + 172,0,0,0,99,1,0,0,0,0,0,0,0,5,0,0, 0,6,0,0,0,67,0,0,0,115,62,0,0,0,100,1, 100,2,108,0,125,1,116,1,160,2,124,0,161,1,106,3, 125,2,124,1,160,4,124,2,161,1,125,3,116,1,160,5, @@ -872,14 +872,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,100,105,110,103,90,25,73,110,99,114,101,109,101,110,116, 97,108,78,101,119,108,105,110,101,68,101,99,111,100,101,114, 218,6,100,101,99,111,100,101,41,5,218,12,115,111,117,114, - 99,101,95,98,121,116,101,115,114,172,0,0,0,90,21,115, + 99,101,95,98,121,116,101,115,114,173,0,0,0,90,21,115, 111,117,114,99,101,95,98,121,116,101,115,95,114,101,97,100, 108,105,110,101,218,8,101,110,99,111,100,105,110,103,90,15, 110,101,119,108,105,110,101,95,100,101,99,111,100,101,114,114, 3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,13, 100,101,99,111,100,101,95,115,111,117,114,99,101,94,2,0, 0,115,10,0,0,0,0,5,8,1,12,1,10,1,12,1, - 114,176,0,0,0,169,2,114,140,0,0,0,218,26,115,117, + 114,177,0,0,0,169,2,114,141,0,0,0,218,26,115,117, 98,109,111,100,117,108,101,95,115,101,97,114,99,104,95,108, 111,99,97,116,105,111,110,115,99,2,0,0,0,2,0,0, 0,9,0,0,0,8,0,0,0,67,0,0,0,115,16,1, @@ -923,19 +923,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,10,32,32,32,32,78,122,9,60,117,110,107,110,111,119, 110,62,218,12,103,101,116,95,102,105,108,101,110,97,109,101, 169,1,218,6,111,114,105,103,105,110,84,218,10,105,115,95, - 112,97,99,107,97,103,101,114,73,0,0,0,41,17,114,128, - 0,0,0,114,179,0,0,0,114,118,0,0,0,114,2,0, - 0,0,114,79,0,0,0,114,134,0,0,0,218,10,77,111, + 112,97,99,107,97,103,101,114,73,0,0,0,41,17,114,129, + 0,0,0,114,180,0,0,0,114,118,0,0,0,114,2,0, + 0,0,114,79,0,0,0,114,135,0,0,0,218,10,77,111, 100,117,108,101,83,112,101,99,90,13,95,115,101,116,95,102, 105,108,101,97,116,116,114,218,27,95,103,101,116,95,115,117, 112,112,111,114,116,101,100,95,102,105,108,101,95,108,111,97, - 100,101,114,115,114,111,0,0,0,114,112,0,0,0,114,140, - 0,0,0,218,9,95,80,79,80,85,76,65,84,69,114,182, - 0,0,0,114,178,0,0,0,114,47,0,0,0,218,6,97, + 100,101,114,115,114,111,0,0,0,114,112,0,0,0,114,141, + 0,0,0,218,9,95,80,79,80,85,76,65,84,69,114,183, + 0,0,0,114,179,0,0,0,114,47,0,0,0,218,6,97, 112,112,101,110,100,41,9,114,117,0,0,0,90,8,108,111, - 99,97,116,105,111,110,114,140,0,0,0,114,178,0,0,0, + 99,97,116,105,111,110,114,141,0,0,0,114,179,0,0,0, 218,4,115,112,101,99,218,12,108,111,97,100,101,114,95,99, - 108,97,115,115,218,8,115,117,102,102,105,120,101,115,114,182, + 108,97,115,115,218,8,115,117,102,102,105,120,101,115,114,183, 0,0,0,90,7,100,105,114,110,97,109,101,114,3,0,0, 0,114,3,0,0,0,114,6,0,0,0,218,23,115,112,101, 99,95,102,114,111,109,95,102,105,108,101,95,108,111,99,97, @@ -943,7 +943,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,4,1,10,2,2,1,14,1,14,1,8,2,10,8,16, 1,6,3,8,1,14,1,14,1,10,1,6,1,6,2,4, 3,8,2,10,1,2,1,14,1,14,1,6,2,4,1,8, - 2,6,1,12,1,6,1,12,1,12,2,114,190,0,0,0, + 2,6,1,12,1,6,1,12,1,12,2,114,191,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, 0,64,0,0,0,115,86,0,0,0,101,0,90,1,100,0, 90,2,100,1,90,3,100,2,90,4,100,3,90,5,100,4, @@ -990,15 +990,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,87,0,110,26,4,0,116,9,107,10,114,112,1,0,1, 0,1,0,89,0,100,0,83,0,89,0,110,2,88,0,124, 5,83,0,41,5,78,122,5,37,100,46,37,100,114,28,0, - 0,0,41,2,114,139,0,0,0,90,11,115,121,115,95,118, + 0,0,41,2,114,140,0,0,0,90,11,115,121,115,95,118, 101,114,115,105,111,110,114,40,0,0,0,41,10,218,11,68, 69,66,85,71,95,66,85,73,76,68,218,18,82,69,71,73, 83,84,82,89,95,75,69,89,95,68,69,66,85,71,218,12, 82,69,71,73,83,84,82,89,95,75,69,89,114,62,0,0, 0,114,8,0,0,0,218,12,118,101,114,115,105,111,110,95, - 105,110,102,111,114,194,0,0,0,114,192,0,0,0,90,10, + 105,110,102,111,114,195,0,0,0,114,193,0,0,0,90,10, 81,117,101,114,121,86,97,108,117,101,114,50,0,0,0,41, - 6,114,193,0,0,0,114,139,0,0,0,90,12,114,101,103, + 6,114,194,0,0,0,114,140,0,0,0,90,12,114,101,103, 105,115,116,114,121,95,107,101,121,114,5,0,0,0,90,4, 104,107,101,121,218,8,102,105,108,101,112,97,116,104,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,16,95, @@ -1017,13 +1017,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,124,6,131,1,161,1,114,64,116,6,106,7,124,1,124, 5,124,1,124,4,131,2,124,4,100,1,141,3,125,7,124, 7,2,0,1,0,83,0,113,64,100,0,83,0,41,2,78, - 114,180,0,0,0,41,8,114,200,0,0,0,114,49,0,0, - 0,114,50,0,0,0,114,184,0,0,0,114,111,0,0,0, - 114,112,0,0,0,114,134,0,0,0,218,16,115,112,101,99, - 95,102,114,111,109,95,108,111,97,100,101,114,41,8,114,193, - 0,0,0,114,139,0,0,0,114,44,0,0,0,218,6,116, - 97,114,103,101,116,114,199,0,0,0,114,140,0,0,0,114, - 189,0,0,0,114,187,0,0,0,114,3,0,0,0,114,3, + 114,181,0,0,0,41,8,114,201,0,0,0,114,49,0,0, + 0,114,50,0,0,0,114,185,0,0,0,114,111,0,0,0, + 114,112,0,0,0,114,135,0,0,0,218,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,41,8,114,194, + 0,0,0,114,140,0,0,0,114,44,0,0,0,218,6,116, + 97,114,103,101,116,114,200,0,0,0,114,141,0,0,0,114, + 190,0,0,0,114,188,0,0,0,114,3,0,0,0,114,3, 0,0,0,114,6,0,0,0,218,9,102,105,110,100,95,115, 112,101,99,213,2,0,0,115,28,0,0,0,0,2,10,1, 8,1,4,1,2,1,12,1,14,1,8,1,14,1,14,1, @@ -1040,22 +1040,22 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, 32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,101, 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,78,169,2,114,203,0,0,0,114,140,0, - 0,0,169,4,114,193,0,0,0,114,139,0,0,0,114,44, - 0,0,0,114,187,0,0,0,114,3,0,0,0,114,3,0, + 32,32,32,32,32,78,169,2,114,204,0,0,0,114,141,0, + 0,0,169,4,114,194,0,0,0,114,140,0,0,0,114,44, + 0,0,0,114,188,0,0,0,114,3,0,0,0,114,3,0, 0,0,114,6,0,0,0,218,11,102,105,110,100,95,109,111, 100,117,108,101,229,2,0,0,115,8,0,0,0,0,7,12, 1,8,1,6,2,122,33,87,105,110,100,111,119,115,82,101, 103,105,115,116,114,121,70,105,110,100,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,41,12,114,125,0,0,0,114, - 124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,197, - 0,0,0,114,196,0,0,0,114,195,0,0,0,218,11,99, - 108,97,115,115,109,101,116,104,111,100,114,194,0,0,0,114, - 200,0,0,0,114,203,0,0,0,114,206,0,0,0,114,3, + 100,95,109,111,100,117,108,101,41,12,114,126,0,0,0,114, + 125,0,0,0,114,127,0,0,0,114,128,0,0,0,114,198, + 0,0,0,114,197,0,0,0,114,196,0,0,0,218,11,99, + 108,97,115,115,109,101,116,104,111,100,114,195,0,0,0,114, + 201,0,0,0,114,204,0,0,0,114,207,0,0,0,114,3, 0,0,0,114,3,0,0,0,114,3,0,0,0,114,6,0, - 0,0,114,191,0,0,0,179,2,0,0,115,28,0,0,0, + 0,0,114,192,0,0,0,179,2,0,0,115,28,0,0,0, 8,2,4,3,2,255,2,4,2,255,2,3,4,2,2,1, - 10,6,2,1,10,14,2,1,16,15,2,1,114,191,0,0, + 10,6,2,1,10,14,2,1,16,15,2,1,114,192,0,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,64,0,0,0,115,48,0,0,0,101,0,90,1,100, 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, @@ -1084,11 +1084,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,105,110,105,116,95,95,46,112,121,39,46,114,39,0,0, 0,114,71,0,0,0,114,73,0,0,0,114,28,0,0,0, 218,8,95,95,105,110,105,116,95,95,41,4,114,47,0,0, - 0,114,179,0,0,0,114,43,0,0,0,114,41,0,0,0, - 41,5,114,119,0,0,0,114,139,0,0,0,114,97,0,0, + 0,114,180,0,0,0,114,43,0,0,0,114,41,0,0,0, + 41,5,114,119,0,0,0,114,140,0,0,0,114,97,0,0, 0,90,13,102,105,108,101,110,97,109,101,95,98,97,115,101, 90,9,116,97,105,108,95,110,97,109,101,114,3,0,0,0, - 114,3,0,0,0,114,6,0,0,0,114,182,0,0,0,248, + 114,3,0,0,0,114,6,0,0,0,114,183,0,0,0,248, 2,0,0,115,8,0,0,0,0,3,18,1,16,1,14,1, 122,24,95,76,111,97,100,101,114,66,97,115,105,99,115,46, 105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,0, @@ -1097,7 +1097,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,102,97,117,108,116,32,115,101,109,97,110,116,105,99, 115,32,102,111,114,32,109,111,100,117,108,101,32,99,114,101, 97,116,105,111,110,46,78,114,3,0,0,0,169,2,114,119, - 0,0,0,114,187,0,0,0,114,3,0,0,0,114,3,0, + 0,0,0,114,188,0,0,0,114,3,0,0,0,114,3,0, 0,0,114,6,0,0,0,218,13,99,114,101,97,116,101,95, 109,111,100,117,108,101,0,3,0,0,115,2,0,0,0,0, 1,122,27,95,76,111,97,100,101,114,66,97,115,105,99,115, @@ -1112,12 +1112,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,108,111,97,100,32,109,111,100,117,108,101,32,123,33,114, 125,32,119,104,101,110,32,103,101,116,95,99,111,100,101,40, 41,32,114,101,116,117,114,110,115,32,78,111,110,101,41,8, - 218,8,103,101,116,95,99,111,100,101,114,125,0,0,0,114, - 118,0,0,0,114,62,0,0,0,114,134,0,0,0,218,25, + 218,8,103,101,116,95,99,111,100,101,114,126,0,0,0,114, + 118,0,0,0,114,62,0,0,0,114,135,0,0,0,218,25, 95,99,97,108,108,95,119,105,116,104,95,102,114,97,109,101, 115,95,114,101,109,111,118,101,100,218,4,101,120,101,99,114, - 131,0,0,0,41,3,114,119,0,0,0,218,6,109,111,100, - 117,108,101,114,164,0,0,0,114,3,0,0,0,114,3,0, + 132,0,0,0,41,3,114,119,0,0,0,218,6,109,111,100, + 117,108,101,114,165,0,0,0,114,3,0,0,0,114,3,0, 0,0,114,6,0,0,0,218,11,101,120,101,99,95,109,111, 100,117,108,101,3,3,0,0,115,12,0,0,0,0,2,12, 1,8,1,6,1,4,255,6,2,122,25,95,76,111,97,100, @@ -1126,19 +1126,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,4,0,0,0,67,0,0,0,115,12,0,0,0,116,0, 160,1,124,0,124,1,161,2,83,0,41,1,122,26,84,104, 105,115,32,109,111,100,117,108,101,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,46,41,2,114,134,0,0,0,218, + 114,101,99,97,116,101,100,46,41,2,114,135,0,0,0,218, 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104, - 105,109,169,2,114,119,0,0,0,114,139,0,0,0,114,3, + 105,109,169,2,114,119,0,0,0,114,140,0,0,0,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,11,108, 111,97,100,95,109,111,100,117,108,101,11,3,0,0,115,2, 0,0,0,0,2,122,25,95,76,111,97,100,101,114,66,97, 115,105,99,115,46,108,111,97,100,95,109,111,100,117,108,101, - 78,41,8,114,125,0,0,0,114,124,0,0,0,114,126,0, - 0,0,114,127,0,0,0,114,182,0,0,0,114,212,0,0, - 0,114,217,0,0,0,114,220,0,0,0,114,3,0,0,0, + 78,41,8,114,126,0,0,0,114,125,0,0,0,114,127,0, + 0,0,114,128,0,0,0,114,183,0,0,0,114,213,0,0, + 0,114,218,0,0,0,114,221,0,0,0,114,3,0,0,0, 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,114, - 208,0,0,0,243,2,0,0,115,10,0,0,0,8,3,4, - 2,8,8,8,3,8,8,114,208,0,0,0,99,0,0,0, + 209,0,0,0,243,2,0,0,115,10,0,0,0,8,3,4, + 2,8,8,8,3,8,8,114,209,0,0,0,99,0,0,0, 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, 0,115,74,0,0,0,101,0,90,1,100,0,90,2,100,1, 100,2,132,0,90,3,100,3,100,4,132,0,90,4,100,5, @@ -1192,8 +1192,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,82,97,105,115,101,115,32,79,83,69,114,114,111, 114,32,119,104,101,110,32,116,104,101,32,112,97,116,104,32, 99,97,110,110,111,116,32,98,101,32,104,97,110,100,108,101, - 100,46,10,32,32,32,32,32,32,32,32,114,169,0,0,0, - 41,1,114,223,0,0,0,114,222,0,0,0,114,3,0,0, + 100,46,10,32,32,32,32,32,32,32,32,114,170,0,0,0, + 41,1,114,224,0,0,0,114,223,0,0,0,114,3,0,0, 0,114,3,0,0,0,114,6,0,0,0,218,10,112,97,116, 104,95,115,116,97,116,115,26,3,0,0,115,2,0,0,0, 0,12,122,23,83,111,117,114,99,101,76,111,97,100,101,114, @@ -1235,7 +1235,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32, 32,32,32,78,114,3,0,0,0,41,3,114,119,0,0,0, 114,44,0,0,0,114,26,0,0,0,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,225,0,0,0,50,3, + 3,0,0,0,114,6,0,0,0,114,226,0,0,0,50,3, 0,0,115,2,0,0,0,0,4,122,21,83,111,117,114,99, 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, 99,2,0,0,0,0,0,0,0,5,0,0,0,10,0,0, @@ -1251,10 +1251,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,99,101,46,122,39,115,111,117,114,99,101,32,110,111,116, 32,97,118,97,105,108,97,98,108,101,32,116,104,114,111,117, 103,104,32,103,101,116,95,100,97,116,97,40,41,114,116,0, - 0,0,78,41,5,114,179,0,0,0,218,8,103,101,116,95, - 100,97,116,97,114,50,0,0,0,114,118,0,0,0,114,176, - 0,0,0,41,5,114,119,0,0,0,114,139,0,0,0,114, - 44,0,0,0,114,174,0,0,0,218,3,101,120,99,114,3, + 0,0,78,41,5,114,180,0,0,0,218,8,103,101,116,95, + 100,97,116,97,114,50,0,0,0,114,118,0,0,0,114,177, + 0,0,0,41,5,114,119,0,0,0,114,140,0,0,0,114, + 44,0,0,0,114,175,0,0,0,218,3,101,120,99,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,10,103, 101,116,95,115,111,117,114,99,101,57,3,0,0,115,20,0, 0,0,0,2,10,1,2,1,14,1,16,1,4,1,2,255, @@ -1272,11 +1272,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,110,32,98,101,32,97,110,121,32,111,98,106,101,99,116, 32,116,121,112,101,32,116,104,97,116,32,99,111,109,112,105, 108,101,40,41,32,115,117,112,112,111,114,116,115,46,10,32, - 32,32,32,32,32,32,32,114,215,0,0,0,84,41,2,218, + 32,32,32,32,32,32,32,114,216,0,0,0,84,41,2,218, 12,100,111,110,116,95,105,110,104,101,114,105,116,114,84,0, - 0,0,41,3,114,134,0,0,0,114,214,0,0,0,218,7, + 0,0,41,3,114,135,0,0,0,114,215,0,0,0,218,7, 99,111,109,112,105,108,101,41,4,114,119,0,0,0,114,26, - 0,0,0,114,44,0,0,0,114,230,0,0,0,114,3,0, + 0,0,0,114,44,0,0,0,114,231,0,0,0,114,3,0, 0,0,114,3,0,0,0,114,6,0,0,0,218,14,115,111, 117,114,99,101,95,116,111,95,99,111,100,101,67,3,0,0, 115,8,0,0,0,0,5,12,1,2,0,2,255,122,27,83, @@ -1329,33 +1329,33 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,98,121,116,101,99,111,100,101,44,32,115,101,116,95, 100,97,116,97,32,109,117,115,116,32,97,108,115,111,32,98, 101,32,105,109,112,108,101,109,101,110,116,101,100,46,10,10, - 32,32,32,32,32,32,32,32,78,70,84,114,169,0,0,0, - 114,159,0,0,0,114,145,0,0,0,114,39,0,0,0,114, + 32,32,32,32,32,32,32,32,78,70,84,114,170,0,0,0, + 114,160,0,0,0,114,146,0,0,0,114,39,0,0,0,114, 73,0,0,0,114,28,0,0,0,90,5,110,101,118,101,114, 90,6,97,108,119,97,121,115,218,4,115,105,122,101,122,13, 123,125,32,109,97,116,99,104,101,115,32,123,125,41,3,114, 117,0,0,0,114,107,0,0,0,114,108,0,0,0,122,19, 99,111,100,101,32,111,98,106,101,99,116,32,102,114,111,109, - 32,123,125,41,27,114,179,0,0,0,114,98,0,0,0,114, - 82,0,0,0,114,224,0,0,0,114,50,0,0,0,114,17, - 0,0,0,114,227,0,0,0,114,152,0,0,0,218,10,109, - 101,109,111,114,121,118,105,101,119,114,163,0,0,0,90,21, + 32,123,125,41,27,114,180,0,0,0,114,98,0,0,0,114, + 82,0,0,0,114,225,0,0,0,114,50,0,0,0,114,17, + 0,0,0,114,228,0,0,0,114,153,0,0,0,218,10,109, + 101,109,111,114,121,118,105,101,119,114,164,0,0,0,90,21, 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, - 95,112,121,99,115,114,157,0,0,0,218,17,95,82,65,87, - 95,77,65,71,73,67,95,78,85,77,66,69,82,114,158,0, - 0,0,114,156,0,0,0,114,118,0,0,0,114,150,0,0, - 0,114,134,0,0,0,114,149,0,0,0,114,165,0,0,0, - 114,233,0,0,0,114,8,0,0,0,218,19,100,111,110,116, + 95,112,121,99,115,114,158,0,0,0,218,17,95,82,65,87, + 95,77,65,71,73,67,95,78,85,77,66,69,82,114,159,0, + 0,0,114,157,0,0,0,114,118,0,0,0,114,151,0,0, + 0,114,135,0,0,0,114,150,0,0,0,114,166,0,0,0, + 114,234,0,0,0,114,8,0,0,0,218,19,100,111,110,116, 95,119,114,105,116,101,95,98,121,116,101,99,111,100,101,114, - 171,0,0,0,114,170,0,0,0,114,22,0,0,0,114,226, - 0,0,0,41,15,114,119,0,0,0,114,139,0,0,0,114, - 108,0,0,0,114,154,0,0,0,114,174,0,0,0,114,157, + 172,0,0,0,114,171,0,0,0,114,22,0,0,0,114,227, + 0,0,0,41,15,114,119,0,0,0,114,140,0,0,0,114, + 108,0,0,0,114,155,0,0,0,114,175,0,0,0,114,158, 0,0,0,90,10,104,97,115,104,95,98,97,115,101,100,90, 12,99,104,101,99,107,95,115,111,117,114,99,101,114,107,0, - 0,0,218,2,115,116,114,26,0,0,0,114,151,0,0,0, + 0,0,218,2,115,116,114,26,0,0,0,114,152,0,0,0, 114,83,0,0,0,90,10,98,121,116,101,115,95,100,97,116, 97,90,11,99,111,100,101,95,111,98,106,101,99,116,114,3, - 0,0,0,114,3,0,0,0,114,6,0,0,0,114,213,0, + 0,0,0,114,3,0,0,0,114,6,0,0,0,114,214,0, 0,0,75,3,0,0,115,152,0,0,0,0,7,10,1,4, 1,4,1,4,1,4,1,4,1,2,1,12,1,14,1,12, 2,2,1,14,1,14,1,8,2,12,1,2,1,14,1,14, @@ -1367,14 +1367,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,10,1,12,1,12,1,18,1,6,255,4,2,6,1,10, 1,10,1,14,2,6,1,6,255,4,2,2,1,18,1,16, 1,6,1,122,21,83,111,117,114,99,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,78,41,10,114,125,0, - 0,0,114,124,0,0,0,114,126,0,0,0,114,223,0,0, - 0,114,224,0,0,0,114,226,0,0,0,114,225,0,0,0, - 114,229,0,0,0,114,233,0,0,0,114,213,0,0,0,114, + 114,46,103,101,116,95,99,111,100,101,78,41,10,114,126,0, + 0,0,114,125,0,0,0,114,127,0,0,0,114,224,0,0, + 0,114,225,0,0,0,114,227,0,0,0,114,226,0,0,0, + 114,230,0,0,0,114,234,0,0,0,114,214,0,0,0,114, 3,0,0,0,114,3,0,0,0,114,3,0,0,0,114,6, - 0,0,0,114,221,0,0,0,16,3,0,0,115,14,0,0, + 0,0,0,114,222,0,0,0,16,3,0,0,115,14,0,0, 0,8,2,8,8,8,14,8,10,8,7,8,10,14,8,114, - 221,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 222,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, 0,4,0,0,0,0,0,0,0,115,124,0,0,0,101,0, 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, 90,4,100,4,100,5,132,0,90,5,100,6,100,7,132,0, @@ -1398,16 +1398,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,97,109,101,32,97,110,100,32,116,104,101,32,112,97,116, 104,32,116,111,32,116,104,101,32,102,105,108,101,32,102,111, 117,110,100,32,98,121,32,116,104,101,10,32,32,32,32,32, - 32,32,32,102,105,110,100,101,114,46,78,114,159,0,0,0, - 41,3,114,119,0,0,0,114,139,0,0,0,114,44,0,0, + 32,32,32,102,105,110,100,101,114,46,78,114,160,0,0,0, + 41,3,114,119,0,0,0,114,140,0,0,0,114,44,0,0, 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, - 114,209,0,0,0,165,3,0,0,115,4,0,0,0,0,3, + 114,210,0,0,0,165,3,0,0,115,4,0,0,0,0,3, 6,1,122,19,70,105,108,101,76,111,97,100,101,114,46,95, 95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0, 2,0,0,0,2,0,0,0,67,0,0,0,115,24,0,0, 0,124,0,106,0,124,1,106,0,107,2,111,22,124,0,106, 1,124,1,106,1,107,2,83,0,114,110,0,0,0,169,2, - 218,9,95,95,99,108,97,115,115,95,95,114,131,0,0,0, + 218,9,95,95,99,108,97,115,115,95,95,114,132,0,0,0, 169,2,114,119,0,0,0,90,5,111,116,104,101,114,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,6,95, 95,101,113,95,95,171,3,0,0,115,6,0,0,0,0,1, @@ -1430,9 +1430,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,101,99,97,116,101,100,46,32,32,85,115,101,32,101,120, 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, 101,97,100,46,10,10,32,32,32,32,32,32,32,32,41,3, - 218,5,115,117,112,101,114,114,239,0,0,0,114,220,0,0, - 0,114,219,0,0,0,169,1,114,241,0,0,0,114,3,0, - 0,0,114,6,0,0,0,114,220,0,0,0,178,3,0,0, + 218,5,115,117,112,101,114,114,240,0,0,0,114,221,0,0, + 0,114,220,0,0,0,169,1,114,242,0,0,0,114,3,0, + 0,0,114,6,0,0,0,114,221,0,0,0,178,3,0,0, 115,2,0,0,0,0,10,122,22,70,105,108,101,76,111,97, 100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,99, 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, @@ -1441,8 +1441,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,101, 32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,98, 121,32,116,104,101,32,102,105,110,100,101,114,46,114,48,0, - 0,0,114,219,0,0,0,114,3,0,0,0,114,3,0,0, - 0,114,6,0,0,0,114,179,0,0,0,190,3,0,0,115, + 0,0,114,220,0,0,0,114,3,0,0,0,114,3,0,0, + 0,114,6,0,0,0,114,180,0,0,0,190,3,0,0,115, 2,0,0,0,0,3,122,23,70,105,108,101,76,111,97,100, 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,99, 2,0,0,0,0,0,0,0,3,0,0,0,10,0,0,0, @@ -1455,13 +1455,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,1,114,78,41,3,114,64,0,0,0,114,65,0,0,0, 90,4,114,101,97,100,41,3,114,119,0,0,0,114,44,0, 0,0,114,68,0,0,0,114,3,0,0,0,114,3,0,0, - 0,114,6,0,0,0,114,227,0,0,0,195,3,0,0,115, + 0,114,6,0,0,0,114,228,0,0,0,195,3,0,0,115, 4,0,0,0,0,2,14,1,122,19,70,105,108,101,76,111, 97,100,101,114,46,103,101,116,95,100,97,116,97,99,2,0, 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, 0,0,115,18,0,0,0,124,0,160,0,124,1,161,1,114, 14,124,0,83,0,100,0,83,0,114,110,0,0,0,41,1, - 114,182,0,0,0,169,2,114,119,0,0,0,114,216,0,0, + 114,183,0,0,0,169,2,114,119,0,0,0,114,217,0,0, 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, 218,19,103,101,116,95,114,101,115,111,117,114,99,101,95,114, 101,97,100,101,114,202,3,0,0,115,6,0,0,0,0,2, @@ -1471,7 +1471,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,4,0,0,0,67,0,0,0,115,32,0,0,0,116,0, 116,1,124,0,106,2,131,1,100,1,25,0,124,1,131,2, 125,2,116,3,160,4,124,2,100,2,161,2,83,0,41,3, - 78,114,73,0,0,0,114,251,0,0,0,41,5,114,38,0, + 78,114,73,0,0,0,114,252,0,0,0,41,5,114,38,0, 0,0,114,47,0,0,0,114,44,0,0,0,114,64,0,0, 0,114,65,0,0,0,169,3,114,119,0,0,0,90,8,114, 101,115,111,117,114,99,101,114,44,0,0,0,114,3,0,0, @@ -1486,7 +1486,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,169,2,78,114,73,0,0,0,41,5,218,11,105,115,95, 114,101,115,111,117,114,99,101,218,17,70,105,108,101,78,111, 116,70,111,117,110,100,69,114,114,111,114,114,38,0,0,0, - 114,47,0,0,0,114,44,0,0,0,114,254,0,0,0,114, + 114,47,0,0,0,114,44,0,0,0,114,255,0,0,0,114, 3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,13, 114,101,115,111,117,114,99,101,95,112,97,116,104,212,3,0, 0,115,8,0,0,0,0,1,10,1,4,1,20,1,122,24, @@ -1499,30 +1499,30 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,41,5,114,35,0,0,0,114,38,0,0,0,114, 47,0,0,0,114,44,0,0,0,114,54,0,0,0,169,3, 114,119,0,0,0,114,117,0,0,0,114,44,0,0,0,114, - 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,1, + 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,2, 1,0,0,218,3,0,0,115,8,0,0,0,0,1,8,1, 4,1,20,1,122,22,70,105,108,101,76,111,97,100,101,114, 46,105,115,95,114,101,115,111,117,114,99,101,99,1,0,0, 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, 0,115,24,0,0,0,116,0,116,1,160,2,116,3,124,0, - 106,4,131,1,100,1,25,0,161,1,131,1,83,0,114,0, + 106,4,131,1,100,1,25,0,161,1,131,1,83,0,114,1, 1,0,0,41,5,218,4,105,116,101,114,114,2,0,0,0, 218,7,108,105,115,116,100,105,114,114,47,0,0,0,114,44, - 0,0,0,114,246,0,0,0,114,3,0,0,0,114,3,0, + 0,0,0,114,247,0,0,0,114,3,0,0,0,114,3,0, 0,0,114,6,0,0,0,218,8,99,111,110,116,101,110,116, 115,224,3,0,0,115,2,0,0,0,0,1,122,19,70,105, 108,101,76,111,97,100,101,114,46,99,111,110,116,101,110,116, - 115,41,17,114,125,0,0,0,114,124,0,0,0,114,126,0, - 0,0,114,127,0,0,0,114,209,0,0,0,114,243,0,0, - 0,114,247,0,0,0,114,136,0,0,0,114,220,0,0,0, - 114,179,0,0,0,114,227,0,0,0,114,253,0,0,0,114, - 255,0,0,0,114,3,1,0,0,114,1,1,0,0,114,7, + 115,41,17,114,126,0,0,0,114,125,0,0,0,114,127,0, + 0,0,114,128,0,0,0,114,210,0,0,0,114,244,0,0, + 0,114,248,0,0,0,114,137,0,0,0,114,221,0,0,0, + 114,180,0,0,0,114,228,0,0,0,114,254,0,0,0,114, + 0,1,0,0,114,4,1,0,0,114,2,1,0,0,114,8, 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, - 95,95,114,3,0,0,0,114,3,0,0,0,114,249,0,0, - 0,114,6,0,0,0,114,239,0,0,0,160,3,0,0,115, + 95,95,114,3,0,0,0,114,3,0,0,0,114,250,0,0, + 0,114,6,0,0,0,114,240,0,0,0,160,3,0,0,115, 30,0,0,0,8,3,4,2,8,6,8,4,8,3,2,1, 14,11,2,1,10,4,8,7,2,1,10,5,8,4,8,6, - 8,6,114,239,0,0,0,99,0,0,0,0,0,0,0,0, + 8,6,114,240,0,0,0,99,0,0,0,0,0,0,0,0, 0,0,0,0,3,0,0,0,64,0,0,0,115,46,0,0, 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, @@ -1537,11 +1537,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,131,1,125,2,124,2,106,1,124,2,106,2,100,1,156, 2,83,0,41,2,122,33,82,101,116,117,114,110,32,116,104, 101,32,109,101,116,97,100,97,116,97,32,102,111,114,32,116, - 104,101,32,112,97,116,104,46,41,2,114,169,0,0,0,114, - 234,0,0,0,41,3,114,49,0,0,0,218,8,115,116,95, + 104,101,32,112,97,116,104,46,41,2,114,170,0,0,0,114, + 235,0,0,0,41,3,114,49,0,0,0,218,8,115,116,95, 109,116,105,109,101,90,7,115,116,95,115,105,122,101,41,3, - 114,119,0,0,0,114,44,0,0,0,114,238,0,0,0,114, - 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,224, + 114,119,0,0,0,114,44,0,0,0,114,239,0,0,0,114, + 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,225, 0,0,0,232,3,0,0,115,4,0,0,0,0,2,8,1, 122,27,83,111,117,114,99,101,70,105,108,101,76,111,97,100, 101,114,46,112,97,116,104,95,115,116,97,116,115,99,4,0, @@ -1549,13 +1549,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,115,24,0,0,0,116,0,124,1,131,1,125,4,124, 0,106,1,124,2,124,3,124,4,100,1,141,3,83,0,41, 2,78,169,1,218,5,95,109,111,100,101,41,2,114,115,0, - 0,0,114,225,0,0,0,41,5,114,119,0,0,0,114,108, + 0,0,114,226,0,0,0,41,5,114,119,0,0,0,114,108, 0,0,0,114,107,0,0,0,114,26,0,0,0,114,52,0, 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0, - 0,114,226,0,0,0,237,3,0,0,115,4,0,0,0,0, + 0,114,227,0,0,0,237,3,0,0,115,4,0,0,0,0, 2,8,1,122,32,83,111,117,114,99,101,70,105,108,101,76, 111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,116, - 101,99,111,100,101,114,60,0,0,0,114,10,1,0,0,99, + 101,99,111,100,101,114,60,0,0,0,114,11,1,0,0,99, 3,0,0,0,1,0,0,0,9,0,0,0,11,0,0,0, 67,0,0,0,115,0,1,0,0,116,0,124,1,131,1,92, 2,125,4,125,5,103,0,125,6,124,4,114,52,116,1,124, @@ -1579,25 +1579,25 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,111,116,32,99,114,101,97,116,101,32,123,33,114,125,58, 32,123,33,114,125,78,122,12,99,114,101,97,116,101,100,32, 123,33,114,125,41,12,114,47,0,0,0,114,56,0,0,0, - 114,186,0,0,0,114,42,0,0,0,114,38,0,0,0,114, + 114,187,0,0,0,114,42,0,0,0,114,38,0,0,0,114, 2,0,0,0,90,5,109,107,100,105,114,218,15,70,105,108, 101,69,120,105,115,116,115,69,114,114,111,114,114,50,0,0, - 0,114,134,0,0,0,114,149,0,0,0,114,69,0,0,0, + 0,114,135,0,0,0,114,150,0,0,0,114,69,0,0,0, 41,9,114,119,0,0,0,114,44,0,0,0,114,26,0,0, - 0,114,11,1,0,0,218,6,112,97,114,101,110,116,114,97, - 0,0,0,114,37,0,0,0,114,33,0,0,0,114,228,0, + 0,114,12,1,0,0,218,6,112,97,114,101,110,116,114,97, + 0,0,0,114,37,0,0,0,114,33,0,0,0,114,229,0, 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0, - 0,114,225,0,0,0,242,3,0,0,115,48,0,0,0,0, + 0,114,226,0,0,0,242,3,0,0,115,48,0,0,0,0, 2,12,1,4,2,12,1,12,1,12,2,12,1,10,1,2, 1,14,1,14,2,8,1,16,3,6,1,2,0,2,255,4, 2,32,1,2,1,12,1,16,1,16,2,8,1,2,255,122, 25,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101, - 114,46,115,101,116,95,100,97,116,97,78,41,7,114,125,0, - 0,0,114,124,0,0,0,114,126,0,0,0,114,127,0,0, - 0,114,224,0,0,0,114,226,0,0,0,114,225,0,0,0, + 114,46,115,101,116,95,100,97,116,97,78,41,7,114,126,0, + 0,0,114,125,0,0,0,114,127,0,0,0,114,128,0,0, + 0,114,225,0,0,0,114,227,0,0,0,114,226,0,0,0, 114,3,0,0,0,114,3,0,0,0,114,3,0,0,0,114, - 6,0,0,0,114,8,1,0,0,228,3,0,0,115,8,0, - 0,0,8,2,4,2,8,5,8,5,114,8,1,0,0,99, + 6,0,0,0,114,9,1,0,0,228,3,0,0,115,8,0, + 0,0,8,2,4,2,8,5,8,5,114,9,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, 64,0,0,0,115,32,0,0,0,101,0,90,1,100,0,90, 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, @@ -1612,12 +1612,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,2,100,1,156,2,125,4,116,2,124,3,124,1,124,4, 131,3,1,0,116,3,116,4,124,3,131,1,100,2,100,0, 133,2,25,0,124,1,124,2,100,3,141,3,83,0,41,4, - 78,114,159,0,0,0,114,145,0,0,0,41,2,114,117,0, - 0,0,114,107,0,0,0,41,5,114,179,0,0,0,114,227, - 0,0,0,114,152,0,0,0,114,165,0,0,0,114,235,0, - 0,0,41,5,114,119,0,0,0,114,139,0,0,0,114,44, - 0,0,0,114,26,0,0,0,114,151,0,0,0,114,3,0, - 0,0,114,3,0,0,0,114,6,0,0,0,114,213,0,0, + 78,114,160,0,0,0,114,146,0,0,0,41,2,114,117,0, + 0,0,114,107,0,0,0,41,5,114,180,0,0,0,114,228, + 0,0,0,114,153,0,0,0,114,166,0,0,0,114,236,0, + 0,0,41,5,114,119,0,0,0,114,140,0,0,0,114,44, + 0,0,0,114,26,0,0,0,114,152,0,0,0,114,3,0, + 0,0,114,3,0,0,0,114,6,0,0,0,114,214,0,0, 0,21,4,0,0,115,22,0,0,0,0,1,10,1,10,4, 2,1,2,254,6,4,12,1,2,1,14,1,2,1,2,253, 122,29,83,111,117,114,99,101,108,101,115,115,70,105,108,101, @@ -1626,16 +1626,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, 39,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, 116,104,101,114,101,32,105,115,32,110,111,32,115,111,117,114, - 99,101,32,99,111,100,101,46,78,114,3,0,0,0,114,219, + 99,101,32,99,111,100,101,46,78,114,3,0,0,0,114,220, 0,0,0,114,3,0,0,0,114,3,0,0,0,114,6,0, - 0,0,114,229,0,0,0,37,4,0,0,115,2,0,0,0, + 0,0,114,230,0,0,0,37,4,0,0,115,2,0,0,0, 0,2,122,31,83,111,117,114,99,101,108,101,115,115,70,105, 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, - 114,99,101,78,41,6,114,125,0,0,0,114,124,0,0,0, - 114,126,0,0,0,114,127,0,0,0,114,213,0,0,0,114, - 229,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,14,1,0,0,17,4,0, - 0,115,6,0,0,0,8,2,4,2,8,16,114,14,1,0, + 114,99,101,78,41,6,114,126,0,0,0,114,125,0,0,0, + 114,127,0,0,0,114,128,0,0,0,114,214,0,0,0,114, + 230,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,15,1,0,0,17,4,0, + 0,115,6,0,0,0,8,2,4,2,8,16,114,15,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, 0,0,64,0,0,0,115,92,0,0,0,101,0,90,1,100, 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, @@ -1653,25 +1653,25 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 70,105,110,100,101,114,46,10,10,32,32,32,32,99,3,0, 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, 0,0,115,16,0,0,0,124,1,124,0,95,0,124,2,124, - 0,95,1,100,0,83,0,114,110,0,0,0,114,159,0,0, - 0,114,4,1,0,0,114,3,0,0,0,114,3,0,0,0, - 114,6,0,0,0,114,209,0,0,0,54,4,0,0,115,4, + 0,95,1,100,0,83,0,114,110,0,0,0,114,160,0,0, + 0,114,5,1,0,0,114,3,0,0,0,114,3,0,0,0, + 114,6,0,0,0,114,210,0,0,0,54,4,0,0,115,4, 0,0,0,0,1,6,1,122,28,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,105, 110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,0, 0,0,2,0,0,0,67,0,0,0,115,24,0,0,0,124, 0,106,0,124,1,106,0,107,2,111,22,124,0,106,1,124, - 1,106,1,107,2,83,0,114,110,0,0,0,114,240,0,0, - 0,114,242,0,0,0,114,3,0,0,0,114,3,0,0,0, - 114,6,0,0,0,114,243,0,0,0,58,4,0,0,115,6, + 1,106,1,107,2,83,0,114,110,0,0,0,114,241,0,0, + 0,114,243,0,0,0,114,3,0,0,0,114,3,0,0,0, + 114,6,0,0,0,114,244,0,0,0,58,4,0,0,115,6, 0,0,0,0,1,12,1,10,255,122,26,69,120,116,101,110, 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95, 95,101,113,95,95,99,1,0,0,0,0,0,0,0,1,0, 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, 0,124,0,106,1,131,1,116,0,124,0,106,2,131,1,65, - 0,83,0,114,110,0,0,0,114,244,0,0,0,114,246,0, + 0,83,0,114,110,0,0,0,114,245,0,0,0,114,247,0, 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0, - 0,114,247,0,0,0,62,4,0,0,115,2,0,0,0,0, + 0,114,248,0,0,0,62,4,0,0,115,2,0,0,0,0, 1,122,28,69,120,116,101,110,115,105,111,110,70,105,108,101, 76,111,97,100,101,114,46,95,95,104,97,115,104,95,95,99, 2,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0, @@ -1683,12 +1683,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,109,111,100,117,108,101,122,38,101,120,116,101,110,115,105, 111,110,32,109,111,100,117,108,101,32,123,33,114,125,32,108, 111,97,100,101,100,32,102,114,111,109,32,123,33,114,125,41, - 7,114,134,0,0,0,114,214,0,0,0,114,163,0,0,0, + 7,114,135,0,0,0,114,215,0,0,0,114,164,0,0,0, 90,14,99,114,101,97,116,101,95,100,121,110,97,109,105,99, - 114,149,0,0,0,114,117,0,0,0,114,44,0,0,0,41, - 3,114,119,0,0,0,114,187,0,0,0,114,216,0,0,0, + 114,150,0,0,0,114,117,0,0,0,114,44,0,0,0,41, + 3,114,119,0,0,0,114,188,0,0,0,114,217,0,0,0, 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,114, - 212,0,0,0,65,4,0,0,115,18,0,0,0,0,2,4, + 213,0,0,0,65,4,0,0,115,18,0,0,0,0,2,4, 1,4,0,2,255,4,2,6,1,4,0,4,255,4,2,122, 33,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, 97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117, @@ -1701,11 +1701,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,122,40,101,120,116,101,110,115,105,111,110,32,109,111, 100,117,108,101,32,123,33,114,125,32,101,120,101,99,117,116, 101,100,32,102,114,111,109,32,123,33,114,125,78,41,7,114, - 134,0,0,0,114,214,0,0,0,114,163,0,0,0,90,12, - 101,120,101,99,95,100,121,110,97,109,105,99,114,149,0,0, - 0,114,117,0,0,0,114,44,0,0,0,114,252,0,0,0, + 135,0,0,0,114,215,0,0,0,114,164,0,0,0,90,12, + 101,120,101,99,95,100,121,110,97,109,105,99,114,150,0,0, + 0,114,117,0,0,0,114,44,0,0,0,114,253,0,0,0, 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,114, - 217,0,0,0,73,4,0,0,115,10,0,0,0,0,2,14, + 218,0,0,0,73,4,0,0,115,10,0,0,0,0,2,14, 1,6,1,4,0,4,255,122,31,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,101,120,101, 99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, @@ -1719,7 +1719,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0, 0,51,0,0,0,115,26,0,0,0,124,0,93,18,125,1, 136,0,100,0,124,1,23,0,107,2,86,0,1,0,113,2, - 100,1,83,0,41,2,114,209,0,0,0,78,114,3,0,0, + 100,1,83,0,41,2,114,210,0,0,0,78,114,3,0,0, 0,169,2,114,32,0,0,0,218,6,115,117,102,102,105,120, 169,1,90,9,102,105,108,101,95,110,97,109,101,114,3,0, 0,0,114,6,0,0,0,218,9,60,103,101,110,101,120,112, @@ -1729,8 +1729,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, 114,62,41,4,114,47,0,0,0,114,44,0,0,0,218,3, 97,110,121,218,18,69,88,84,69,78,83,73,79,78,95,83, - 85,70,70,73,88,69,83,114,219,0,0,0,114,3,0,0, - 0,114,18,1,0,0,114,6,0,0,0,114,182,0,0,0, + 85,70,70,73,88,69,83,114,220,0,0,0,114,3,0,0, + 0,114,19,1,0,0,114,6,0,0,0,114,183,0,0,0, 79,4,0,0,115,8,0,0,0,0,2,14,1,12,1,2, 255,122,30,69,120,116,101,110,115,105,111,110,70,105,108,101, 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, @@ -1740,8 +1740,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,32,97,110,32,101,120,116,101,110,115,105,111,110,32,109, 111,100,117,108,101,32,99,97,110,110,111,116,32,99,114,101, 97,116,101,32,97,32,99,111,100,101,32,111,98,106,101,99, - 116,46,78,114,3,0,0,0,114,219,0,0,0,114,3,0, - 0,0,114,3,0,0,0,114,6,0,0,0,114,213,0,0, + 116,46,78,114,3,0,0,0,114,220,0,0,0,114,3,0, + 0,0,114,3,0,0,0,114,6,0,0,0,114,214,0,0, 0,85,4,0,0,115,2,0,0,0,0,2,122,28,69,120, 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, 114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,0, @@ -1750,26 +1750,26 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,110,32,78,111,110,101,32,97,115,32,101,120,116,101,110, 115,105,111,110,32,109,111,100,117,108,101,115,32,104,97,118, 101,32,110,111,32,115,111,117,114,99,101,32,99,111,100,101, - 46,78,114,3,0,0,0,114,219,0,0,0,114,3,0,0, - 0,114,3,0,0,0,114,6,0,0,0,114,229,0,0,0, + 46,78,114,3,0,0,0,114,220,0,0,0,114,3,0,0, + 0,114,3,0,0,0,114,6,0,0,0,114,230,0,0,0, 89,4,0,0,115,2,0,0,0,0,2,122,30,69,120,116, 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,6,0,0,0,124,0,106,0,83,0,114,250,0,0,0, - 114,48,0,0,0,114,219,0,0,0,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,179,0,0,0,93,4, + 115,6,0,0,0,124,0,106,0,83,0,114,251,0,0,0, + 114,48,0,0,0,114,220,0,0,0,114,3,0,0,0,114, + 3,0,0,0,114,6,0,0,0,114,180,0,0,0,93,4, 0,0,115,2,0,0,0,0,3,122,32,69,120,116,101,110, 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103, - 101,116,95,102,105,108,101,110,97,109,101,78,41,14,114,125, - 0,0,0,114,124,0,0,0,114,126,0,0,0,114,127,0, - 0,0,114,209,0,0,0,114,243,0,0,0,114,247,0,0, - 0,114,212,0,0,0,114,217,0,0,0,114,182,0,0,0, - 114,213,0,0,0,114,229,0,0,0,114,136,0,0,0,114, - 179,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,15,1,0,0,46,4,0, + 101,116,95,102,105,108,101,110,97,109,101,78,41,14,114,126, + 0,0,0,114,125,0,0,0,114,127,0,0,0,114,128,0, + 0,0,114,210,0,0,0,114,244,0,0,0,114,248,0,0, + 0,114,213,0,0,0,114,218,0,0,0,114,183,0,0,0, + 114,214,0,0,0,114,230,0,0,0,114,137,0,0,0,114, + 180,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,16,1,0,0,46,4,0, 0,115,22,0,0,0,8,6,4,2,8,4,8,4,8,3, - 8,8,8,6,8,6,8,4,8,4,2,1,114,15,1,0, + 8,8,8,6,8,6,8,4,8,4,2,1,114,16,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,64,0,0,0,115,96,0,0,0,101,0,90,1,100, 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, @@ -1809,7 +1809,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,114,169,4,114,119,0,0,0,114,117,0,0,0,114, 44,0,0,0,90,11,112,97,116,104,95,102,105,110,100,101, 114,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, - 114,209,0,0,0,106,4,0,0,115,8,0,0,0,0,1, + 114,210,0,0,0,106,4,0,0,115,8,0,0,0,0,1, 6,1,6,1,14,1,122,23,95,78,97,109,101,115,112,97, 99,101,80,97,116,104,46,95,95,105,110,105,116,95,95,99, 1,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, @@ -1822,8 +1822,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,45,112,97,116,104,45,97,116,116,114,45,110,97,109,101, 41,114,71,0,0,0,114,40,0,0,0,41,2,114,8,0, 0,0,114,44,0,0,0,90,8,95,95,112,97,116,104,95, - 95,41,2,114,23,1,0,0,114,41,0,0,0,41,4,114, - 119,0,0,0,114,13,1,0,0,218,3,100,111,116,90,2, + 95,41,2,114,24,1,0,0,114,41,0,0,0,41,4,114, + 119,0,0,0,114,14,1,0,0,218,3,100,111,116,90,2, 109,101,114,3,0,0,0,114,3,0,0,0,114,6,0,0, 0,218,23,95,102,105,110,100,95,112,97,114,101,110,116,95, 112,97,116,104,95,110,97,109,101,115,112,4,0,0,115,8, @@ -1834,12 +1834,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,0,0,0,67,0,0,0,115,28,0,0,0,124,0,160, 0,161,0,92,2,125,1,125,2,116,1,116,2,106,3,124, 1,25,0,124,2,131,2,83,0,114,110,0,0,0,41,4, - 114,30,1,0,0,114,130,0,0,0,114,8,0,0,0,218, + 114,31,1,0,0,114,131,0,0,0,114,8,0,0,0,218, 7,109,111,100,117,108,101,115,41,3,114,119,0,0,0,90, 18,112,97,114,101,110,116,95,109,111,100,117,108,101,95,110, 97,109,101,90,14,112,97,116,104,95,97,116,116,114,95,110, 97,109,101,114,3,0,0,0,114,3,0,0,0,114,6,0, - 0,0,114,25,1,0,0,122,4,0,0,115,4,0,0,0, + 0,0,114,26,1,0,0,122,4,0,0,115,4,0,0,0, 0,1,12,1,122,31,95,78,97,109,101,115,112,97,99,101, 80,97,116,104,46,95,103,101,116,95,112,97,114,101,110,116, 95,112,97,116,104,99,1,0,0,0,0,0,0,0,3,0, @@ -1849,11 +1849,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,125,2,124,2,100,0,107,9,114,68,124,2,106,5,100, 0,107,8,114,68,124,2,106,6,114,68,124,2,106,6,124, 0,95,7,124,1,124,0,95,2,124,0,106,7,83,0,114, - 110,0,0,0,41,8,114,112,0,0,0,114,25,1,0,0, - 114,26,1,0,0,114,27,1,0,0,114,23,1,0,0,114, - 140,0,0,0,114,178,0,0,0,114,24,1,0,0,41,3, + 110,0,0,0,41,8,114,112,0,0,0,114,26,1,0,0, + 114,27,1,0,0,114,28,1,0,0,114,24,1,0,0,114, + 141,0,0,0,114,179,0,0,0,114,25,1,0,0,41,3, 114,119,0,0,0,90,11,112,97,114,101,110,116,95,112,97, - 116,104,114,187,0,0,0,114,3,0,0,0,114,3,0,0, + 116,104,114,188,0,0,0,114,3,0,0,0,114,3,0,0, 0,114,6,0,0,0,218,12,95,114,101,99,97,108,99,117, 108,97,116,101,126,4,0,0,115,16,0,0,0,0,2,12, 1,10,1,14,3,18,1,6,1,8,1,6,1,122,27,95, @@ -1861,15 +1861,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,99,97,108,99,117,108,97,116,101,99,1,0,0,0,0, 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, 12,0,0,0,116,0,124,0,160,1,161,0,131,1,83,0, - 114,110,0,0,0,41,2,114,5,1,0,0,114,32,1,0, - 0,114,246,0,0,0,114,3,0,0,0,114,3,0,0,0, + 114,110,0,0,0,41,2,114,6,1,0,0,114,33,1,0, + 0,114,247,0,0,0,114,3,0,0,0,114,3,0,0,0, 114,6,0,0,0,218,8,95,95,105,116,101,114,95,95,139, 4,0,0,115,2,0,0,0,0,1,122,23,95,78,97,109, 101,115,112,97,99,101,80,97,116,104,46,95,95,105,116,101, 114,95,95,99,3,0,0,0,0,0,0,0,3,0,0,0, 3,0,0,0,67,0,0,0,115,14,0,0,0,124,2,124, 0,106,0,124,1,60,0,100,0,83,0,114,110,0,0,0, - 41,1,114,24,1,0,0,41,3,114,119,0,0,0,218,5, + 41,1,114,25,1,0,0,41,3,114,119,0,0,0,218,5, 105,110,100,101,120,114,44,0,0,0,114,3,0,0,0,114, 3,0,0,0,114,6,0,0,0,218,11,95,95,115,101,116, 105,116,101,109,95,95,142,4,0,0,115,2,0,0,0,0, @@ -1878,7 +1878,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, 0,0,115,12,0,0,0,116,0,124,0,160,1,161,0,131, 1,83,0,114,110,0,0,0,41,2,114,22,0,0,0,114, - 32,1,0,0,114,246,0,0,0,114,3,0,0,0,114,3, + 33,1,0,0,114,247,0,0,0,114,3,0,0,0,114,3, 0,0,0,114,6,0,0,0,218,7,95,95,108,101,110,95, 95,145,4,0,0,115,2,0,0,0,0,1,122,22,95,78, 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,108, @@ -1886,14 +1886,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,3,0,0,0,67,0,0,0,115,12,0,0,0,100,1, 160,0,124,0,106,1,161,1,83,0,41,2,78,122,20,95, 78,97,109,101,115,112,97,99,101,80,97,116,104,40,123,33, - 114,125,41,41,2,114,62,0,0,0,114,24,1,0,0,114, - 246,0,0,0,114,3,0,0,0,114,3,0,0,0,114,6, + 114,125,41,41,2,114,62,0,0,0,114,25,1,0,0,114, + 247,0,0,0,114,3,0,0,0,114,3,0,0,0,114,6, 0,0,0,218,8,95,95,114,101,112,114,95,95,148,4,0, 0,115,2,0,0,0,0,1,122,23,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,95,114,101,112,114,95, 95,99,2,0,0,0,0,0,0,0,2,0,0,0,3,0, 0,0,67,0,0,0,115,12,0,0,0,124,1,124,0,160, - 0,161,0,107,6,83,0,114,110,0,0,0,41,1,114,32, + 0,161,0,107,6,83,0,114,110,0,0,0,41,1,114,33, 1,0,0,169,2,114,119,0,0,0,218,4,105,116,101,109, 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,218, 12,95,95,99,111,110,116,97,105,110,115,95,95,151,4,0, @@ -1902,19 +1902,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,110,115,95,95,99,2,0,0,0,0,0,0,0,2,0, 0,0,3,0,0,0,67,0,0,0,115,16,0,0,0,124, 0,106,0,160,1,124,1,161,1,1,0,100,0,83,0,114, - 110,0,0,0,41,2,114,24,1,0,0,114,186,0,0,0, - 114,38,1,0,0,114,3,0,0,0,114,3,0,0,0,114, - 6,0,0,0,114,186,0,0,0,154,4,0,0,115,2,0, + 110,0,0,0,41,2,114,25,1,0,0,114,187,0,0,0, + 114,39,1,0,0,114,3,0,0,0,114,3,0,0,0,114, + 6,0,0,0,114,187,0,0,0,154,4,0,0,115,2,0, 0,0,0,1,122,21,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,46,97,112,112,101,110,100,78,41,14,114,125, - 0,0,0,114,124,0,0,0,114,126,0,0,0,114,127,0, - 0,0,114,209,0,0,0,114,30,1,0,0,114,25,1,0, - 0,114,32,1,0,0,114,33,1,0,0,114,35,1,0,0, - 114,36,1,0,0,114,37,1,0,0,114,40,1,0,0,114, - 186,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,22,1,0,0,99,4,0, + 80,97,116,104,46,97,112,112,101,110,100,78,41,14,114,126, + 0,0,0,114,125,0,0,0,114,127,0,0,0,114,128,0, + 0,0,114,210,0,0,0,114,31,1,0,0,114,26,1,0, + 0,114,33,1,0,0,114,34,1,0,0,114,36,1,0,0, + 114,37,1,0,0,114,38,1,0,0,114,41,1,0,0,114, + 187,0,0,0,114,3,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,23,1,0,0,99,4,0, 0,115,22,0,0,0,8,5,4,2,8,6,8,10,8,4, - 8,13,8,3,8,3,8,3,8,3,8,3,114,22,1,0, + 8,13,8,3,8,3,8,3,8,3,8,3,114,23,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, 0,0,64,0,0,0,115,80,0,0,0,101,0,90,1,100, 0,90,2,100,1,100,2,132,0,90,3,101,4,100,3,100, @@ -1926,9 +1926,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, 67,0,0,0,115,18,0,0,0,116,0,124,1,124,2,124, 3,131,3,124,0,95,1,100,0,83,0,114,110,0,0,0, - 41,2,114,22,1,0,0,114,24,1,0,0,114,28,1,0, + 41,2,114,23,1,0,0,114,25,1,0,0,114,29,1,0, 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, - 114,209,0,0,0,160,4,0,0,115,2,0,0,0,0,1, + 114,210,0,0,0,160,4,0,0,115,2,0,0,0,0,1, 122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100, 101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0, 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, @@ -1942,45 +1942,45 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,101,32,106,111,98,32,105,116,115,101,108,102,46,10,10, 32,32,32,32,32,32,32,32,122,25,60,109,111,100,117,108, 101,32,123,33,114,125,32,40,110,97,109,101,115,112,97,99, - 101,41,62,41,2,114,62,0,0,0,114,125,0,0,0,41, - 2,114,193,0,0,0,114,216,0,0,0,114,3,0,0,0, + 101,41,62,41,2,114,62,0,0,0,114,126,0,0,0,41, + 2,114,194,0,0,0,114,217,0,0,0,114,3,0,0,0, 114,3,0,0,0,114,6,0,0,0,218,11,109,111,100,117, 108,101,95,114,101,112,114,163,4,0,0,115,2,0,0,0, 0,7,122,28,95,78,97,109,101,115,112,97,99,101,76,111, 97,100,101,114,46,109,111,100,117,108,101,95,114,101,112,114, 99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0, 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, - 78,84,114,3,0,0,0,114,219,0,0,0,114,3,0,0, - 0,114,3,0,0,0,114,6,0,0,0,114,182,0,0,0, + 78,84,114,3,0,0,0,114,220,0,0,0,114,3,0,0, + 0,114,3,0,0,0,114,6,0,0,0,114,183,0,0,0, 172,4,0,0,115,2,0,0,0,0,1,122,27,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,115, 95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,0, 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, 0,0,100,1,83,0,41,2,78,114,40,0,0,0,114,3, - 0,0,0,114,219,0,0,0,114,3,0,0,0,114,3,0, - 0,0,114,6,0,0,0,114,229,0,0,0,175,4,0,0, + 0,0,0,114,220,0,0,0,114,3,0,0,0,114,3,0, + 0,0,114,6,0,0,0,114,230,0,0,0,175,4,0,0, 115,2,0,0,0,0,1,122,27,95,78,97,109,101,115,112, 97,99,101,76,111,97,100,101,114,46,103,101,116,95,115,111, 117,114,99,101,99,2,0,0,0,0,0,0,0,2,0,0, 0,6,0,0,0,67,0,0,0,115,16,0,0,0,116,0, 100,1,100,2,100,3,100,4,100,5,141,4,83,0,41,6, 78,114,40,0,0,0,122,8,60,115,116,114,105,110,103,62, - 114,215,0,0,0,84,41,1,114,231,0,0,0,41,1,114, - 232,0,0,0,114,219,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,213,0,0,0,178,4,0, + 114,216,0,0,0,84,41,1,114,232,0,0,0,41,1,114, + 233,0,0,0,114,220,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,214,0,0,0,178,4,0, 0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,115, 112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,99, 111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,0, 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, - 0,114,210,0,0,0,114,3,0,0,0,114,211,0,0,0, + 0,114,211,0,0,0,114,3,0,0,0,114,212,0,0,0, 114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,114, - 212,0,0,0,181,4,0,0,115,2,0,0,0,0,1,122, + 213,0,0,0,181,4,0,0,115,2,0,0,0,0,1,122, 30,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, 67,0,0,0,115,4,0,0,0,100,0,83,0,114,110,0, - 0,0,114,3,0,0,0,114,252,0,0,0,114,3,0,0, - 0,114,3,0,0,0,114,6,0,0,0,114,217,0,0,0, + 0,0,114,3,0,0,0,114,253,0,0,0,114,3,0,0, + 0,114,3,0,0,0,114,6,0,0,0,114,218,0,0,0, 184,4,0,0,115,2,0,0,0,0,1,122,28,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,120, 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, @@ -1995,20 +1995,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, 32,32,32,122,38,110,97,109,101,115,112,97,99,101,32,109, 111,100,117,108,101,32,108,111,97,100,101,100,32,119,105,116, - 104,32,112,97,116,104,32,123,33,114,125,41,4,114,134,0, - 0,0,114,149,0,0,0,114,24,1,0,0,114,218,0,0, - 0,114,219,0,0,0,114,3,0,0,0,114,3,0,0,0, - 114,6,0,0,0,114,220,0,0,0,187,4,0,0,115,8, + 104,32,112,97,116,104,32,123,33,114,125,41,4,114,135,0, + 0,0,114,150,0,0,0,114,25,1,0,0,114,219,0,0, + 0,114,220,0,0,0,114,3,0,0,0,114,3,0,0,0, + 114,6,0,0,0,114,221,0,0,0,187,4,0,0,115,8, 0,0,0,0,7,6,1,4,255,4,2,122,28,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,78,41,12,114,125,0,0, - 0,114,124,0,0,0,114,126,0,0,0,114,209,0,0,0, - 114,207,0,0,0,114,42,1,0,0,114,182,0,0,0,114, - 229,0,0,0,114,213,0,0,0,114,212,0,0,0,114,217, - 0,0,0,114,220,0,0,0,114,3,0,0,0,114,3,0, - 0,0,114,3,0,0,0,114,6,0,0,0,114,41,1,0, + 97,100,95,109,111,100,117,108,101,78,41,12,114,126,0,0, + 0,114,125,0,0,0,114,127,0,0,0,114,210,0,0,0, + 114,208,0,0,0,114,43,1,0,0,114,183,0,0,0,114, + 230,0,0,0,114,214,0,0,0,114,213,0,0,0,114,218, + 0,0,0,114,221,0,0,0,114,3,0,0,0,114,3,0, + 0,0,114,3,0,0,0,114,6,0,0,0,114,42,1,0, 0,159,4,0,0,115,18,0,0,0,8,1,8,3,2,1, - 10,8,8,3,8,3,8,3,8,3,8,3,114,41,1,0, + 10,8,8,3,8,3,8,3,8,3,8,3,114,42,1,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0, 0,0,64,0,0,0,115,106,0,0,0,101,0,90,1,100, 0,90,2,100,1,90,3,101,4,100,2,100,3,132,0,131, @@ -2039,10 +2039,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, 101,115,41,6,218,4,108,105,115,116,114,8,0,0,0,218, 19,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, - 97,99,104,101,218,5,105,116,101,109,115,114,128,0,0,0, - 114,44,1,0,0,41,3,114,193,0,0,0,114,117,0,0, + 97,99,104,101,218,5,105,116,101,109,115,114,129,0,0,0, + 114,45,1,0,0,41,3,114,194,0,0,0,114,117,0,0, 0,218,6,102,105,110,100,101,114,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,44,1,0,0,205,4,0, + 0,0,0,114,6,0,0,0,114,45,1,0,0,205,4,0, 0,115,10,0,0,0,0,4,22,1,8,1,10,1,10,1, 122,28,80,97,116,104,70,105,110,100,101,114,46,105,110,118, 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2, @@ -2059,8 +2059,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 23,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, 105,115,32,101,109,112,116,121,41,6,114,8,0,0,0,218, 10,112,97,116,104,95,104,111,111,107,115,114,75,0,0,0, - 114,76,0,0,0,114,138,0,0,0,114,118,0,0,0,41, - 3,114,193,0,0,0,114,44,0,0,0,90,4,104,111,111, + 114,76,0,0,0,114,139,0,0,0,114,118,0,0,0,41, + 3,114,194,0,0,0,114,44,0,0,0,90,4,104,111,111, 107,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, 218,11,95,112,97,116,104,95,104,111,111,107,115,215,4,0, 0,115,16,0,0,0,0,3,16,1,12,1,10,1,2,1, @@ -2088,10 +2088,10 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,114,32,105,115,32,97,118,97,105,108,97,98,108,101,44, 32,115,116,111,114,101,32,78,111,110,101,46,10,10,32,32, 32,32,32,32,32,32,114,40,0,0,0,78,41,7,114,2, - 0,0,0,114,55,0,0,0,114,2,1,0,0,114,8,0, - 0,0,114,46,1,0,0,218,8,75,101,121,69,114,114,111, - 114,114,50,1,0,0,41,3,114,193,0,0,0,114,44,0, - 0,0,114,48,1,0,0,114,3,0,0,0,114,3,0,0, + 0,0,0,114,55,0,0,0,114,3,1,0,0,114,8,0, + 0,0,114,47,1,0,0,218,8,75,101,121,69,114,114,111, + 114,114,51,1,0,0,41,3,114,194,0,0,0,114,44,0, + 0,0,114,49,1,0,0,114,3,0,0,0,114,3,0,0, 0,114,6,0,0,0,218,20,95,112,97,116,104,95,105,109, 112,111,114,116,101,114,95,99,97,99,104,101,228,4,0,0, 115,22,0,0,0,0,8,8,1,2,1,12,1,14,3,8, @@ -2104,12 +2104,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,2,160,2,124,1,161,1,125,3,103,0,125,4,124,3, 100,0,107,9,114,60,116,3,160,4,124,1,124,3,161,2, 83,0,116,3,160,5,124,1,100,0,161,2,125,5,124,4, - 124,5,95,6,124,5,83,0,41,2,78,114,137,0,0,0, - 41,7,114,128,0,0,0,114,137,0,0,0,114,206,0,0, - 0,114,134,0,0,0,114,201,0,0,0,114,183,0,0,0, - 114,178,0,0,0,41,6,114,193,0,0,0,114,139,0,0, - 0,114,48,1,0,0,114,140,0,0,0,114,141,0,0,0, - 114,187,0,0,0,114,3,0,0,0,114,3,0,0,0,114, + 124,5,95,6,124,5,83,0,41,2,78,114,138,0,0,0, + 41,7,114,129,0,0,0,114,138,0,0,0,114,207,0,0, + 0,114,135,0,0,0,114,202,0,0,0,114,184,0,0,0, + 114,179,0,0,0,41,6,114,194,0,0,0,114,140,0,0, + 0,114,49,1,0,0,114,141,0,0,0,114,142,0,0,0, + 114,188,0,0,0,114,3,0,0,0,114,3,0,0,0,114, 6,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, 116,95,115,112,101,99,250,4,0,0,115,18,0,0,0,0, 4,10,1,16,2,10,1,4,1,8,1,12,1,12,1,6, @@ -2131,16 +2131,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,114,32,111,114,32,110,97,109,101,115,112,97,99,101,95, 112,97,116,104,32,102,111,114,32,116,104,105,115,32,109,111, 100,117,108,101,47,112,97,99,107,97,103,101,32,110,97,109, - 101,46,78,114,203,0,0,0,122,19,115,112,101,99,32,109, + 101,46,78,114,204,0,0,0,122,19,115,112,101,99,32,109, 105,115,115,105,110,103,32,108,111,97,100,101,114,41,13,114, - 161,0,0,0,114,85,0,0,0,218,5,98,121,116,101,115, - 114,52,1,0,0,114,128,0,0,0,114,203,0,0,0,114, - 53,1,0,0,114,140,0,0,0,114,178,0,0,0,114,118, - 0,0,0,114,167,0,0,0,114,134,0,0,0,114,183,0, - 0,0,41,9,114,193,0,0,0,114,139,0,0,0,114,44, - 0,0,0,114,202,0,0,0,218,14,110,97,109,101,115,112, + 162,0,0,0,114,85,0,0,0,218,5,98,121,116,101,115, + 114,53,1,0,0,114,129,0,0,0,114,204,0,0,0,114, + 54,1,0,0,114,141,0,0,0,114,179,0,0,0,114,118, + 0,0,0,114,168,0,0,0,114,135,0,0,0,114,184,0, + 0,0,41,9,114,194,0,0,0,114,140,0,0,0,114,44, + 0,0,0,114,203,0,0,0,218,14,110,97,109,101,115,112, 97,99,101,95,112,97,116,104,90,5,101,110,116,114,121,114, - 48,1,0,0,114,187,0,0,0,114,141,0,0,0,114,3, + 49,1,0,0,114,188,0,0,0,114,142,0,0,0,114,3, 0,0,0,114,3,0,0,0,114,6,0,0,0,218,9,95, 103,101,116,95,115,112,101,99,9,5,0,0,115,40,0,0, 0,0,5,4,1,8,1,14,1,2,1,10,1,8,1,10, @@ -2164,12 +2164,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,95,104,111,111,107,115,32,97,110,100,32,115,121,115, 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, 97,99,104,101,46,10,32,32,32,32,32,32,32,32,78,41, - 7,114,8,0,0,0,114,44,0,0,0,114,56,1,0,0, - 114,140,0,0,0,114,178,0,0,0,114,181,0,0,0,114, - 22,1,0,0,41,6,114,193,0,0,0,114,139,0,0,0, - 114,44,0,0,0,114,202,0,0,0,114,187,0,0,0,114, - 55,1,0,0,114,3,0,0,0,114,3,0,0,0,114,6, - 0,0,0,114,203,0,0,0,41,5,0,0,115,26,0,0, + 7,114,8,0,0,0,114,44,0,0,0,114,57,1,0,0, + 114,141,0,0,0,114,179,0,0,0,114,182,0,0,0,114, + 23,1,0,0,41,6,114,194,0,0,0,114,140,0,0,0, + 114,44,0,0,0,114,203,0,0,0,114,188,0,0,0,114, + 56,1,0,0,114,3,0,0,0,114,3,0,0,0,114,6, + 0,0,0,114,204,0,0,0,41,5,0,0,115,26,0,0, 0,0,6,8,1,6,1,14,1,8,1,4,1,10,1,6, 1,4,3,6,1,16,1,4,2,6,2,122,20,80,97,116, 104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,101, @@ -2187,20 +2187,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, 101,100,46,32,32,85,115,101,32,102,105,110,100,95,115,112, 101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,32, - 32,32,32,32,32,32,32,78,114,204,0,0,0,114,205,0, + 32,32,32,32,32,32,32,78,114,205,0,0,0,114,206,0, 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0, - 0,114,206,0,0,0,65,5,0,0,115,8,0,0,0,0, + 0,114,207,0,0,0,65,5,0,0,115,8,0,0,0,0, 8,12,1,8,1,4,1,122,22,80,97,116,104,70,105,110, 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,41, - 1,78,41,2,78,78,41,1,78,41,12,114,125,0,0,0, - 114,124,0,0,0,114,126,0,0,0,114,127,0,0,0,114, - 207,0,0,0,114,44,1,0,0,114,50,1,0,0,114,52, - 1,0,0,114,53,1,0,0,114,56,1,0,0,114,203,0, - 0,0,114,206,0,0,0,114,3,0,0,0,114,3,0,0, - 0,114,3,0,0,0,114,6,0,0,0,114,43,1,0,0, + 1,78,41,2,78,78,41,1,78,41,12,114,126,0,0,0, + 114,125,0,0,0,114,127,0,0,0,114,128,0,0,0,114, + 208,0,0,0,114,45,1,0,0,114,51,1,0,0,114,53, + 1,0,0,114,54,1,0,0,114,57,1,0,0,114,204,0, + 0,0,114,207,0,0,0,114,3,0,0,0,114,3,0,0, + 0,114,3,0,0,0,114,6,0,0,0,114,44,1,0,0, 201,4,0,0,115,30,0,0,0,8,2,4,2,2,1,10, 9,2,1,10,12,2,1,10,21,2,1,10,14,2,1,12, - 31,2,1,12,23,2,1,114,43,1,0,0,99,0,0,0, + 31,2,1,12,23,2,1,114,44,1,0,0,99,0,0,0, 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, 0,115,90,0,0,0,101,0,90,1,100,0,90,2,100,1, 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, @@ -2240,21 +2240,21 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,2,0,0,0,3,0,0,0,51,0,0,0,115,22,0, 0,0,124,0,93,14,125,1,124,1,136,0,102,2,86,0, 1,0,113,2,100,0,83,0,114,110,0,0,0,114,3,0, - 0,0,114,16,1,0,0,169,1,114,140,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,19,1,0,0,94,5,0, + 0,0,114,17,1,0,0,169,1,114,141,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,20,1,0,0,94,5,0, 0,115,4,0,0,0,4,0,2,0,122,38,70,105,108,101, 70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,46, 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, 114,62,114,71,0,0,0,114,105,0,0,0,78,41,7,114, - 167,0,0,0,218,8,95,108,111,97,100,101,114,115,114,44, + 168,0,0,0,218,8,95,108,111,97,100,101,114,115,114,44, 0,0,0,218,11,95,112,97,116,104,95,109,116,105,109,101, 218,3,115,101,116,218,11,95,112,97,116,104,95,99,97,99, 104,101,218,19,95,114,101,108,97,120,101,100,95,112,97,116, 104,95,99,97,99,104,101,41,5,114,119,0,0,0,114,44, 0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,97, - 105,108,115,90,7,108,111,97,100,101,114,115,114,189,0,0, - 0,114,3,0,0,0,114,58,1,0,0,114,6,0,0,0, - 114,209,0,0,0,88,5,0,0,115,16,0,0,0,0,4, + 105,108,115,90,7,108,111,97,100,101,114,115,114,190,0,0, + 0,114,3,0,0,0,114,59,1,0,0,114,6,0,0,0, + 114,210,0,0,0,88,5,0,0,115,16,0,0,0,0,4, 4,1,12,1,26,1,6,2,10,1,6,1,8,1,122,19, 70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0, @@ -2262,8 +2262,8 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,95,0,100,2,83,0,41,3,122,31,73,110,118,97,108, 105,100,97,116,101,32,116,104,101,32,100,105,114,101,99,116, 111,114,121,32,109,116,105,109,101,46,114,105,0,0,0,78, - 41,1,114,60,1,0,0,114,246,0,0,0,114,3,0,0, - 0,114,3,0,0,0,114,6,0,0,0,114,44,1,0,0, + 41,1,114,61,1,0,0,114,247,0,0,0,114,3,0,0, + 0,114,3,0,0,0,114,6,0,0,0,114,45,1,0,0, 102,5,0,0,115,2,0,0,0,0,2,122,28,70,105,108, 101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97, 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0, @@ -2283,20 +2283,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, - 32,32,32,32,32,32,78,41,3,114,203,0,0,0,114,140, - 0,0,0,114,178,0,0,0,41,3,114,119,0,0,0,114, - 139,0,0,0,114,187,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,137,0,0,0,108,5,0, + 32,32,32,32,32,32,78,41,3,114,204,0,0,0,114,141, + 0,0,0,114,179,0,0,0,41,3,114,119,0,0,0,114, + 140,0,0,0,114,188,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,138,0,0,0,108,5,0, 0,115,8,0,0,0,0,7,10,1,8,1,8,1,122,22, 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, 108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,7, 0,0,0,6,0,0,0,67,0,0,0,115,26,0,0,0, 124,1,124,2,124,3,131,2,125,6,116,0,124,2,124,3, - 124,6,124,4,100,1,141,4,83,0,41,2,78,114,177,0, - 0,0,41,1,114,190,0,0,0,41,7,114,119,0,0,0, - 114,188,0,0,0,114,139,0,0,0,114,44,0,0,0,90, - 4,115,109,115,108,114,202,0,0,0,114,140,0,0,0,114, - 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,56, + 124,6,124,4,100,1,141,4,83,0,41,2,78,114,178,0, + 0,0,41,1,114,191,0,0,0,41,7,114,119,0,0,0, + 114,189,0,0,0,114,140,0,0,0,114,44,0,0,0,90, + 4,115,109,115,108,114,203,0,0,0,114,141,0,0,0,114, + 3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,57, 1,0,0,120,5,0,0,115,8,0,0,0,0,1,10,1, 8,1,2,255,122,20,70,105,108,101,70,105,110,100,101,114, 46,95,103,101,116,95,115,112,101,99,78,99,3,0,0,0, @@ -2331,27 +2331,27 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,109,97,116,99,104,105,110,103,32,115,112,101,99,44,32, 111,114,32,78,111,110,101,32,105,102,32,110,111,116,32,102, 111,117,110,100,46,10,32,32,32,32,32,32,32,32,70,114, - 71,0,0,0,114,28,0,0,0,114,105,0,0,0,114,209, + 71,0,0,0,114,28,0,0,0,114,105,0,0,0,114,210, 0,0,0,122,9,116,114,121,105,110,103,32,123,125,41,1, 90,9,118,101,114,98,111,115,105,116,121,78,122,25,112,111, 115,115,105,98,108,101,32,110,97,109,101,115,112,97,99,101, 32,102,111,114,32,123,125,41,22,114,41,0,0,0,114,49, 0,0,0,114,44,0,0,0,114,2,0,0,0,114,55,0, - 0,0,114,9,1,0,0,114,50,0,0,0,114,60,1,0, + 0,0,114,10,1,0,0,114,50,0,0,0,114,61,1,0, 0,218,11,95,102,105,108,108,95,99,97,99,104,101,114,7, - 0,0,0,114,63,1,0,0,114,106,0,0,0,114,62,1, - 0,0,114,38,0,0,0,114,59,1,0,0,114,54,0,0, - 0,114,56,1,0,0,114,56,0,0,0,114,134,0,0,0, - 114,149,0,0,0,114,183,0,0,0,114,178,0,0,0,41, - 14,114,119,0,0,0,114,139,0,0,0,114,202,0,0,0, + 0,0,0,114,64,1,0,0,114,106,0,0,0,114,63,1, + 0,0,114,38,0,0,0,114,60,1,0,0,114,54,0,0, + 0,114,57,1,0,0,114,56,0,0,0,114,135,0,0,0, + 114,150,0,0,0,114,184,0,0,0,114,179,0,0,0,41, + 14,114,119,0,0,0,114,140,0,0,0,114,203,0,0,0, 90,12,105,115,95,110,97,109,101,115,112,97,99,101,90,11, - 116,97,105,108,95,109,111,100,117,108,101,114,169,0,0,0, + 116,97,105,108,95,109,111,100,117,108,101,114,170,0,0,0, 90,5,99,97,99,104,101,90,12,99,97,99,104,101,95,109, 111,100,117,108,101,90,9,98,97,115,101,95,112,97,116,104, - 114,17,1,0,0,114,188,0,0,0,90,13,105,110,105,116, + 114,18,1,0,0,114,189,0,0,0,90,13,105,110,105,116, 95,102,105,108,101,110,97,109,101,90,9,102,117,108,108,95, - 112,97,116,104,114,187,0,0,0,114,3,0,0,0,114,3, - 0,0,0,114,6,0,0,0,114,203,0,0,0,125,5,0, + 112,97,116,104,114,188,0,0,0,114,3,0,0,0,114,3, + 0,0,0,114,6,0,0,0,114,204,0,0,0,125,5,0, 0,115,74,0,0,0,0,5,4,1,14,1,2,1,24,1, 14,1,10,1,10,1,8,1,6,2,6,1,6,1,10,2, 6,1,4,2,8,1,12,1,14,1,8,1,10,1,8,1, @@ -2387,19 +2387,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,122,41,70,105,108,101,70,105,110,100,101,114,46,95,102, 105,108,108,95,99,97,99,104,101,46,60,108,111,99,97,108, 115,62,46,60,115,101,116,99,111,109,112,62,78,41,18,114, - 44,0,0,0,114,2,0,0,0,114,6,1,0,0,114,55, - 0,0,0,114,2,1,0,0,218,15,80,101,114,109,105,115, + 44,0,0,0,114,2,0,0,0,114,7,1,0,0,114,55, + 0,0,0,114,3,1,0,0,218,15,80,101,114,109,105,115, 115,105,111,110,69,114,114,111,114,218,18,78,111,116,65,68, 105,114,101,99,116,111,114,121,69,114,114,111,114,114,8,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,61,1,0, - 0,114,62,1,0,0,114,101,0,0,0,114,62,0,0,0, + 0,0,114,9,0,0,0,114,10,0,0,0,114,62,1,0, + 0,114,63,1,0,0,114,101,0,0,0,114,62,0,0,0, 114,106,0,0,0,218,3,97,100,100,114,11,0,0,0,114, - 63,1,0,0,41,9,114,119,0,0,0,114,44,0,0,0, - 114,7,1,0,0,90,21,108,111,119,101,114,95,115,117,102, - 102,105,120,95,99,111,110,116,101,110,116,115,114,39,1,0, - 0,114,117,0,0,0,114,29,1,0,0,114,17,1,0,0, + 64,1,0,0,41,9,114,119,0,0,0,114,44,0,0,0, + 114,8,1,0,0,90,21,108,111,119,101,114,95,115,117,102, + 102,105,120,95,99,111,110,116,101,110,116,115,114,40,1,0, + 0,114,117,0,0,0,114,30,1,0,0,114,18,1,0,0, 90,8,110,101,119,95,110,97,109,101,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,65,1,0,0,173,5, + 3,0,0,0,114,6,0,0,0,114,66,1,0,0,173,5, 0,0,115,34,0,0,0,0,2,6,1,2,1,22,1,20, 3,10,3,12,1,12,7,6,1,8,1,16,1,4,1,18, 2,4,1,12,1,6,1,12,1,122,22,70,105,108,101,70, @@ -2434,16 +2434,16 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,100,101,114,46,122,30,111,110,108,121,32,100,105,114,101, 99,116,111,114,105,101,115,32,97,114,101,32,115,117,112,112, 111,114,116,101,100,114,48,0,0,0,41,2,114,56,0,0, - 0,114,118,0,0,0,114,48,0,0,0,169,2,114,193,0, - 0,0,114,64,1,0,0,114,3,0,0,0,114,6,0,0, + 0,114,118,0,0,0,114,48,0,0,0,169,2,114,194,0, + 0,0,114,65,1,0,0,114,3,0,0,0,114,6,0,0, 0,218,24,112,97,116,104,95,104,111,111,107,95,102,111,114, 95,70,105,108,101,70,105,110,100,101,114,214,5,0,0,115, 6,0,0,0,0,2,8,1,12,1,122,54,70,105,108,101, 70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,107, 46,60,108,111,99,97,108,115,62,46,112,97,116,104,95,104, 111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,100, - 101,114,114,3,0,0,0,41,3,114,193,0,0,0,114,64, - 1,0,0,114,71,1,0,0,114,3,0,0,0,114,70,1, + 101,114,114,3,0,0,0,41,3,114,194,0,0,0,114,65, + 1,0,0,114,72,1,0,0,114,3,0,0,0,114,71,1, 0,0,114,6,0,0,0,218,9,112,97,116,104,95,104,111, 111,107,204,5,0,0,115,4,0,0,0,0,10,14,6,122, 20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, @@ -2451,19 +2451,19 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,100, 1,160,0,124,0,106,1,161,1,83,0,41,2,78,122,16, 70,105,108,101,70,105,110,100,101,114,40,123,33,114,125,41, - 41,2,114,62,0,0,0,114,44,0,0,0,114,246,0,0, + 41,2,114,62,0,0,0,114,44,0,0,0,114,247,0,0, 0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0, - 114,37,1,0,0,222,5,0,0,115,2,0,0,0,0,1, + 114,38,1,0,0,222,5,0,0,115,2,0,0,0,0,1, 122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,114, - 101,112,114,95,95,41,1,78,41,15,114,125,0,0,0,114, - 124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,209, - 0,0,0,114,44,1,0,0,114,143,0,0,0,114,206,0, - 0,0,114,137,0,0,0,114,56,1,0,0,114,203,0,0, - 0,114,65,1,0,0,114,207,0,0,0,114,72,1,0,0, - 114,37,1,0,0,114,3,0,0,0,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,57,1,0,0,79,5, + 101,112,114,95,95,41,1,78,41,15,114,126,0,0,0,114, + 125,0,0,0,114,127,0,0,0,114,128,0,0,0,114,210, + 0,0,0,114,45,1,0,0,114,144,0,0,0,114,207,0, + 0,0,114,138,0,0,0,114,57,1,0,0,114,204,0,0, + 0,114,66,1,0,0,114,208,0,0,0,114,73,1,0,0, + 114,38,1,0,0,114,3,0,0,0,114,3,0,0,0,114, + 3,0,0,0,114,6,0,0,0,114,58,1,0,0,79,5, 0,0,115,22,0,0,0,8,7,4,2,8,14,8,4,4, - 2,8,12,8,5,10,48,8,31,2,1,10,17,114,57,1, + 2,8,12,8,5,10,48,8,31,2,1,10,17,114,58,1, 0,0,99,4,0,0,0,0,0,0,0,6,0,0,0,8, 0,0,0,67,0,0,0,115,146,0,0,0,124,0,160,0, 100,1,161,1,125,4,124,0,160,0,100,2,161,1,125,5, @@ -2476,18 +2476,18 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 60,0,87,0,110,20,4,0,116,5,107,10,114,140,1,0, 1,0,1,0,89,0,110,2,88,0,100,0,83,0,41,6, 78,218,10,95,95,108,111,97,100,101,114,95,95,218,8,95, - 95,115,112,101,99,95,95,114,58,1,0,0,90,8,95,95, + 95,115,112,101,99,95,95,114,59,1,0,0,90,8,95,95, 102,105,108,101,95,95,90,10,95,95,99,97,99,104,101,100, - 95,95,41,6,218,3,103,101,116,114,140,0,0,0,114,14, - 1,0,0,114,8,1,0,0,114,190,0,0,0,218,9,69, + 95,95,41,6,218,3,103,101,116,114,141,0,0,0,114,15, + 1,0,0,114,9,1,0,0,114,191,0,0,0,218,9,69, 120,99,101,112,116,105,111,110,41,6,90,2,110,115,114,117, 0,0,0,90,8,112,97,116,104,110,97,109,101,90,9,99, - 112,97,116,104,110,97,109,101,114,140,0,0,0,114,187,0, + 112,97,116,104,110,97,109,101,114,141,0,0,0,114,188,0, 0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0, 0,218,14,95,102,105,120,95,117,112,95,109,111,100,117,108, 101,228,5,0,0,115,34,0,0,0,0,2,10,1,10,1, 4,1,4,1,8,1,8,1,12,2,10,1,4,1,14,1, - 2,1,8,1,8,1,8,1,12,1,14,2,114,77,1,0, + 2,1,8,1,8,1,8,1,12,1,14,2,114,78,1,0, 0,99,0,0,0,0,0,0,0,0,3,0,0,0,3,0, 0,0,67,0,0,0,115,38,0,0,0,116,0,116,1,160, 2,161,0,102,2,125,0,116,3,116,4,102,2,125,1,116, @@ -2498,14 +2498,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 46,10,10,32,32,32,32,69,97,99,104,32,105,116,101,109, 32,105,115,32,97,32,116,117,112,108,101,32,40,108,111,97, 100,101,114,44,32,115,117,102,102,105,120,101,115,41,46,10, - 32,32,32,32,41,7,114,15,1,0,0,114,163,0,0,0, + 32,32,32,32,41,7,114,16,1,0,0,114,164,0,0,0, 218,18,101,120,116,101,110,115,105,111,110,95,115,117,102,102, - 105,120,101,115,114,8,1,0,0,114,102,0,0,0,114,14, + 105,120,101,115,114,9,1,0,0,114,102,0,0,0,114,15, 1,0,0,114,89,0,0,0,41,3,90,10,101,120,116,101, 110,115,105,111,110,115,90,6,115,111,117,114,99,101,90,8, 98,121,116,101,99,111,100,101,114,3,0,0,0,114,3,0, - 0,0,114,6,0,0,0,114,184,0,0,0,251,5,0,0, - 115,8,0,0,0,0,5,12,1,8,1,8,1,114,184,0, + 0,0,114,6,0,0,0,114,185,0,0,0,251,5,0,0, + 115,8,0,0,0,0,5,12,1,8,1,8,1,114,185,0, 0,0,99,1,0,0,0,0,0,0,0,12,0,0,0,9, 0,0,0,67,0,0,0,115,178,1,0,0,124,0,97,0, 116,0,106,1,97,1,116,0,106,2,97,2,116,1,106,3, @@ -2549,14 +2549,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 104,101,32,99,111,114,101,32,98,111,111,116,115,116,114,97, 112,32,109,111,100,117,108,101,46,10,10,32,32,32,32,41, 4,114,64,0,0,0,114,75,0,0,0,218,8,98,117,105, - 108,116,105,110,115,114,160,0,0,0,90,5,112,111,115,105, + 108,116,105,110,115,114,161,0,0,0,90,5,112,111,115,105, 120,250,1,47,90,2,110,116,250,1,92,99,1,0,0,0, 0,0,0,0,2,0,0,0,3,0,0,0,115,0,0,0, 115,26,0,0,0,124,0,93,18,125,1,116,0,124,1,131, 1,100,0,107,2,86,0,1,0,113,2,100,1,83,0,41, 2,114,39,0,0,0,78,41,1,114,22,0,0,0,41,2, 114,32,0,0,0,114,95,0,0,0,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,19,1,0,0,31,6, + 3,0,0,0,114,6,0,0,0,114,20,1,0,0,31,6, 0,0,115,4,0,0,0,4,0,2,0,122,25,95,115,101, 116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,101, 110,101,120,112,114,62,114,73,0,0,0,122,30,105,109,112, @@ -2568,20 +2568,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,93,14,125,1,100,0,124,1,155,0,157,2,146,2, 113,4,83,0,41,1,114,74,0,0,0,114,3,0,0,0, 41,2,114,32,0,0,0,218,1,115,114,3,0,0,0,114, - 3,0,0,0,114,6,0,0,0,114,66,1,0,0,47,6, + 3,0,0,0,114,6,0,0,0,114,67,1,0,0,47,6, 0,0,115,4,0,0,0,6,0,2,0,122,25,95,115,101, 116,117,112,46,60,108,111,99,97,108,115,62,46,60,115,101, 116,99,111,109,112,62,90,7,95,116,104,114,101,97,100,90, 8,95,119,101,97,107,114,101,102,90,6,119,105,110,114,101, - 103,114,192,0,0,0,114,7,0,0,0,122,4,46,112,121, - 119,122,6,95,100,46,112,121,100,84,78,41,19,114,134,0, - 0,0,114,8,0,0,0,114,163,0,0,0,114,31,1,0, - 0,114,125,0,0,0,90,18,95,98,117,105,108,116,105,110, - 95,102,114,111,109,95,110,97,109,101,114,129,0,0,0,218, + 103,114,193,0,0,0,114,7,0,0,0,122,4,46,112,121, + 119,122,6,95,100,46,112,121,100,84,78,41,19,114,135,0, + 0,0,114,8,0,0,0,114,164,0,0,0,114,32,1,0, + 0,114,126,0,0,0,90,18,95,98,117,105,108,116,105,110, + 95,102,114,111,109,95,110,97,109,101,114,130,0,0,0,218, 3,97,108,108,114,23,0,0,0,114,118,0,0,0,114,36, - 0,0,0,114,13,0,0,0,114,21,1,0,0,114,167,0, - 0,0,114,78,1,0,0,114,102,0,0,0,114,186,0,0, - 0,114,191,0,0,0,114,195,0,0,0,41,12,218,17,95, + 0,0,0,114,13,0,0,0,114,22,1,0,0,114,168,0, + 0,0,114,79,1,0,0,114,102,0,0,0,114,187,0,0, + 0,114,192,0,0,0,114,196,0,0,0,41,12,218,17,95, 98,111,111,116,115,116,114,97,112,95,109,111,100,117,108,101, 90,11,115,101,108,102,95,109,111,100,117,108,101,90,12,98, 117,105,108,116,105,110,95,110,97,109,101,90,14,98,117,105, @@ -2598,7 +2598,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 8,1,10,1,10,1,6,2,2,1,10,1,10,1,14,1, 12,2,8,1,12,1,12,1,18,1,22,3,10,1,12,3, 10,1,12,3,10,1,10,1,12,3,14,1,14,1,10,1, - 10,1,10,1,114,85,1,0,0,99,1,0,0,0,0,0, + 10,1,10,1,114,86,1,0,0,99,1,0,0,0,0,0, 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,50, 0,0,0,116,0,124,0,131,1,1,0,116,1,131,0,125, 1,116,2,106,3,160,4,116,5,106,6,124,1,142,0,103, @@ -2606,15 +2606,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,100,1,83,0,41,2,122,41,73,110,115,116,97,108,108, 32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32, 105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116, - 115,46,78,41,10,114,85,1,0,0,114,184,0,0,0,114, - 8,0,0,0,114,49,1,0,0,114,167,0,0,0,114,57, - 1,0,0,114,72,1,0,0,218,9,109,101,116,97,95,112, - 97,116,104,114,186,0,0,0,114,43,1,0,0,41,2,114, - 84,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95, + 115,46,78,41,10,114,86,1,0,0,114,185,0,0,0,114, + 8,0,0,0,114,50,1,0,0,114,168,0,0,0,114,58, + 1,0,0,114,73,1,0,0,218,9,109,101,116,97,95,112, + 97,116,104,114,187,0,0,0,114,44,1,0,0,41,2,114, + 85,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95, 108,111,97,100,101,114,115,114,3,0,0,0,114,3,0,0, 0,114,6,0,0,0,218,8,95,105,110,115,116,97,108,108, 71,6,0,0,115,8,0,0,0,0,2,8,1,6,1,20, - 1,114,87,1,0,0,41,63,114,127,0,0,0,114,12,0, + 1,114,88,1,0,0,41,63,114,128,0,0,0,114,12,0, 0,0,90,37,95,67,65,83,69,95,73,78,83,69,78,83, 73,84,73,86,69,95,80,76,65,84,70,79,82,77,83,95, 66,89,84,69,83,95,75,69,89,114,11,0,0,0,114,13, @@ -2622,24 +2622,24 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,38,0,0,0,114,47,0,0,0,114,49,0,0, 0,114,53,0,0,0,114,54,0,0,0,114,56,0,0,0, 114,59,0,0,0,114,69,0,0,0,218,4,116,121,112,101, - 218,8,95,95,99,111,100,101,95,95,114,162,0,0,0,114, - 18,0,0,0,114,148,0,0,0,114,17,0,0,0,114,24, - 0,0,0,114,236,0,0,0,114,92,0,0,0,114,88,0, + 218,8,95,95,99,111,100,101,95,95,114,163,0,0,0,114, + 18,0,0,0,114,149,0,0,0,114,17,0,0,0,114,24, + 0,0,0,114,237,0,0,0,114,92,0,0,0,114,88,0, 0,0,114,102,0,0,0,114,89,0,0,0,90,23,68,69, 66,85,71,95,66,89,84,69,67,79,68,69,95,83,85,70, 70,73,88,69,83,90,27,79,80,84,73,77,73,90,69,68, 95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, 69,83,114,98,0,0,0,114,103,0,0,0,114,109,0,0, - 0,114,113,0,0,0,114,115,0,0,0,114,136,0,0,0, - 114,143,0,0,0,114,152,0,0,0,114,156,0,0,0,114, - 158,0,0,0,114,165,0,0,0,114,170,0,0,0,114,171, - 0,0,0,114,176,0,0,0,218,6,111,98,106,101,99,116, - 114,185,0,0,0,114,190,0,0,0,114,191,0,0,0,114, - 208,0,0,0,114,221,0,0,0,114,239,0,0,0,114,8, - 1,0,0,114,14,1,0,0,114,21,1,0,0,114,15,1, - 0,0,114,22,1,0,0,114,41,1,0,0,114,43,1,0, - 0,114,57,1,0,0,114,77,1,0,0,114,184,0,0,0, - 114,85,1,0,0,114,87,1,0,0,114,3,0,0,0,114, + 0,114,113,0,0,0,114,115,0,0,0,114,137,0,0,0, + 114,144,0,0,0,114,153,0,0,0,114,157,0,0,0,114, + 159,0,0,0,114,166,0,0,0,114,171,0,0,0,114,172, + 0,0,0,114,177,0,0,0,218,6,111,98,106,101,99,116, + 114,186,0,0,0,114,191,0,0,0,114,192,0,0,0,114, + 209,0,0,0,114,222,0,0,0,114,240,0,0,0,114,9, + 1,0,0,114,15,1,0,0,114,22,1,0,0,114,16,1, + 0,0,114,23,1,0,0,114,42,1,0,0,114,44,1,0, + 0,114,58,1,0,0,114,78,1,0,0,114,185,0,0,0, + 114,86,1,0,0,114,88,1,0,0,114,3,0,0,0,114, 3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,8, 60,109,111,100,117,108,101,62,8,0,0,0,115,126,0,0, 0,4,15,4,1,4,1,2,1,2,255,4,4,8,17,8, From 12dc91227e1ebfd8d103ddad764ae28f8f464249 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Wed, 16 Jan 2019 09:41:13 -0800 Subject: [PATCH 2/9] fix NEWS entry typo and formatting --- .../2019-01-16-15-07-10.bpo-27015.UOjO5h.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst b/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst index 56ce25d561be90..a40650abd5cfd9 100644 --- a/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst +++ b/Misc/NEWS.d/next/Core and Builtins/2019-01-16-15-07-10.bpo-27015.UOjO5h.rst @@ -1,3 +1,3 @@ -Exceptions now save the keyword arguments given to their constructorin their -`kwargs` attribute. Exceptions with overridden __init__ and using keyword -arguments are now picklable. Patch contributed by Rémi Lapeyre. +Exceptions now save the keyword arguments given to their constructor in their +``kwargs`` attribute. Exceptions with overridden ``__init__`` and using keyword +arguments are now picklable. Contributed by Rémi Lapeyre. From 1d12d28ffa2dfb7c41ba5cd3d8e98838e9bdbb44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Thu, 17 Jan 2019 00:27:20 +0100 Subject: [PATCH 3/9] Move CalledProcessError pickling test to test_subprocess --- Lib/test/test_exceptions.py | 8 ++------ Lib/test/test_subprocess.py | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index ee595b52f001f6..2a56a80354864f 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1415,14 +1415,10 @@ def test_copy_pickle(self): def test_pickle_overriden_init(self): # Issue #27015 - from subprocess import CalledProcessError - for proto in range(pickle.HIGHEST_PROTOCOL + 1): - orig = CalledProcessError(returncode=2, cmd='foo') + orig = NaiveException(x='foo') exc = pickle.loads(pickle.dumps(orig, proto)) - self.assertEqual(orig.cmd, exc.cmd) - self.assertEqual(orig.returncode, exc.returncode) - + self.assertEqual(orig.x, exc.x) if __name__ == '__main__': diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index b0b6b06e92759e..15e20d754aed7c 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -18,6 +18,7 @@ import threading import gc import textwrap +import pickle from test.support import FakePath try: @@ -1690,6 +1691,14 @@ def test_CalledProcessError_str_non_zero(self): error_string = str(err) self.assertIn("non-zero exit status 2.", error_string) + def test_CalledProcessError_picklable(self): + # Issue #27015 + err = subprocess.CalledProcessError(returncode=2, cmd='foo') + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + new = pickle.loads(pickle.dumps(err, proto)) + self.assertEqual(err.returncode, new.returncode) + self.assertEqual(err.cmd, new.cmd) + def test_preexec(self): # DISCLAIMER: Setting environment variables is *not* a good use # of a preexec_fn. This is merely a test. From 88ba13e5d2162be5b4cb43881313f4049cfbbf86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Thu, 17 Jan 2019 00:27:55 +0100 Subject: [PATCH 4/9] Fix tuple size --- Objects/exceptions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 099430798594e4..a763bb8c88b762 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -49,7 +49,7 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self->args = args; Py_INCREF(args); } else { - self->args = PyTuple_New(2); + self->args = PyTuple_New(0); if (!self->args) { Py_DECREF(self); return NULL; From 9986e8622bc24d51b5f40ff40856d2498572f813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Thu, 17 Jan 2019 00:28:19 +0100 Subject: [PATCH 5/9] Create self.kwargs only if accessed --- Objects/exceptions.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index a763bb8c88b762..dc3fbec1824b0e 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -56,16 +56,8 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } } - if (kwds) { - self->kwargs = kwds; - Py_INCREF(kwds); - } else { - self->kwargs = PyDict_New(); - if (!self->kwargs) { - Py_DECREF(self); - return NULL; - } - } + self->kwargs = kwds; + Py_XINCREF(kwds); return (PyObject *)self; } @@ -345,9 +337,9 @@ BaseException_set_args(PyBaseExceptionObject *self, PyObject *val, void *Py_UNUS static PyObject * BaseException_get_kwargs(PyBaseExceptionObject *self, void *Py_UNUSED(ignored)) { if (self->kwargs == NULL) { - Py_RETURN_NONE; + self->kwargs = PyDict_New(); } - Py_INCREF(self->kwargs); + Py_XINCREF(self->kwargs); return self->kwargs; } From 7794862518703546a1f73cc9df889ba08845b91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Mon, 28 Jan 2019 01:17:11 +0100 Subject: [PATCH 6/9] Fix coding style issues and use Python memory allocator --- Objects/exceptions.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index dc3fbec1824b0e..75a694c9539c49 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -176,7 +176,11 @@ BaseException_repr(PyBaseExceptionObject *self) } key = PyTuple_GET_ITEM(item, 0); value = PyTuple_GET_ITEM(item, 1); - PyTuple_SET_ITEM(seq, i, PyUnicode_FromFormat("%S=%R", key, value)); + repr = PyUnicode_FromFormat("%S=%R", key, value); + if (repr == NULL) { + goto fail; + } + PyTuple_SET_ITEM(seq, i, repr); i++; Py_DECREF(item); } @@ -221,36 +225,41 @@ BaseException_reduce(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) PyObject *functools; PyObject *partial; PyObject *constructor; - PyObject *args; PyObject *result; PyObject **newargs; _Py_IDENTIFIER(partial); functools = PyImport_ImportModule("functools"); - if (!functools) + if (functools == NULL) { return NULL; + } partial = _PyObject_GetAttrId(functools, &PyId_partial); Py_DECREF(functools); - if (!partial) + if (partial == NULL) { return NULL; + } Py_ssize_t len = 1; if (PyTuple_Check(self->args)) { len += PyTuple_GET_SIZE(self->args); } - newargs = PyMem_RawMalloc(len*sizeof(PyObject*)); + newargs = PyMem_New(PyObject *, len); + if (newargs == NULL) { + PyErr_NoMemory(); + return NULL; + } newargs[0] = (PyObject *)Py_TYPE(self); for (Py_ssize_t i=1; i < len; i++) { newargs[i] = PyTuple_GetItem(self->args, i-1); } constructor = _PyObject_FastCallDict(partial, newargs, len, self->kwargs); - PyMem_RawFree(newargs); + PyMem_Free(newargs); Py_DECREF(partial); - args = PyTuple_New(0); - if (!args) { + PyObject *args = PyTuple_New(0); + if (args == NULL) { return NULL; } if (self->args && self->dict){ From 6c906daa98a3ac9daa97c4902635fe3db6915226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Wed, 20 Feb 2019 01:32:18 +0100 Subject: [PATCH 7/9] Implement BaseException.__getnewargs_ex__ --- Objects/exceptions.c | 56 +++++++++++--------------------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 75a694c9539c49..e1af431c398152 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -222,54 +222,25 @@ BaseException_repr(PyBaseExceptionObject *self) static PyObject * BaseException_reduce(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) { - PyObject *functools; - PyObject *partial; - PyObject *constructor; - PyObject *result; - PyObject **newargs; - - _Py_IDENTIFIER(partial); - functools = PyImport_ImportModule("functools"); - if (functools == NULL) { - return NULL; - } - partial = _PyObject_GetAttrId(functools, &PyId_partial); - Py_DECREF(functools); - if (partial == NULL) { - return NULL; - } - - Py_ssize_t len = 1; - if (PyTuple_Check(self->args)) { - len += PyTuple_GET_SIZE(self->args); - } - newargs = PyMem_New(PyObject *, len); - if (newargs == NULL) { - PyErr_NoMemory(); - return NULL; + if (self->args && self->dict) { + return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict); } - newargs[0] = (PyObject *)Py_TYPE(self); - - for (Py_ssize_t i=1; i < len; i++) { - newargs[i] = PyTuple_GetItem(self->args, i-1); + else { + return PyTuple_Pack(2, Py_TYPE(self), self->args); } - constructor = _PyObject_FastCallDict(partial, newargs, len, self->kwargs); - PyMem_Free(newargs); +} - Py_DECREF(partial); +static PyObject * +BaseException_getnewargs_ex(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) +{ + PyObject *args = PyObject_GetAttrString((PyObject *) self, "args"); + PyObject *kwargs = PyObject_GetAttrString((PyObject *) self, "kwargs"); - PyObject *args = PyTuple_New(0); - if (args == NULL) { + if (args == NULL || kwargs == NULL) { return NULL; } - if (self->args && self->dict){ - result = PyTuple_Pack(3, constructor, args, self->dict); - } else { - result = PyTuple_Pack(2, constructor, args); - } - Py_DECREF(constructor); - Py_DECREF(args); - return result; + + return Py_BuildValue("(OO)", args, kwargs); } /* @@ -312,6 +283,7 @@ PyDoc_STRVAR(with_traceback_doc, static PyMethodDef BaseException_methods[] = { {"__reduce__", (PyCFunction)BaseException_reduce, METH_NOARGS }, + {"__getnewargs_ex__", (PyCFunction)BaseException_getnewargs_ex, METH_NOARGS }, {"__setstate__", (PyCFunction)BaseException_setstate, METH_O }, {"with_traceback", (PyCFunction)BaseException_with_traceback, METH_O, with_traceback_doc}, From 4657d7e06a334e7ceb9cffbd7139e1b403d3871a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Thu, 21 Feb 2019 00:16:59 +0100 Subject: [PATCH 8/9] Use __reduce_ex__ and __getnewargs_ex__ --- Lib/test/test_exceptions.py | 29 +-- Objects/exceptions.c | 376 +++++++++++++++++++++++++++++++++--- 2 files changed, 369 insertions(+), 36 deletions(-) diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 2a56a80354864f..c5349e0eb581d6 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -439,16 +439,15 @@ def testAttributes(self): value, expected[checkArgName])) # test for pickling support - for p in [pickle]: - for protocol in range(p.HIGHEST_PROTOCOL + 1): - s = p.dumps(e, protocol) - new = p.loads(s) - for checkArgName in expected: - got = repr(getattr(new, checkArgName)) - want = repr(expected[checkArgName]) - self.assertEqual(got, want, - 'pickled "%r", attribute "%s' % - (e, checkArgName)) + for protocol in range(pickle.HIGHEST_PROTOCOL + 1): + s = pickle.dumps(e, protocol) + new = pickle.loads(s) + for checkArgName in expected: + got = repr(getattr(new, checkArgName)) + want = repr(expected[checkArgName]) + self.assertEqual(got, want, + 'pickled "%r", attribute "%s"' % + (e, checkArgName)) def testWithTraceback(self): try: @@ -1417,8 +1416,14 @@ def test_pickle_overriden_init(self): # Issue #27015 for proto in range(pickle.HIGHEST_PROTOCOL + 1): orig = NaiveException(x='foo') - exc = pickle.loads(pickle.dumps(orig, proto)) - self.assertEqual(orig.x, exc.x) + if proto in (0, 1): + # Pickling excpetions keyword arguments is not supported for + # protocol 0 and 1 + with self.assertRaises(TypeError): + pickle.loads(pickle.dumps(orig, proto)) + else: + exc = pickle.loads(pickle.dumps(orig, proto)) + self.assertEqual(orig.x, exc.x) if __name__ == '__main__': diff --git a/Objects/exceptions.c b/Objects/exceptions.c index e1af431c398152..5855360cb86b95 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -220,14 +220,36 @@ BaseException_repr(PyBaseExceptionObject *self) /* Pickling support */ static PyObject * -BaseException_reduce(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) +BaseException_reduce_ex(PyBaseExceptionObject *self, PyObject *arg) { - if (self->args && self->dict) { - return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict); + int proto = _PyLong_AsInt(arg); + if (proto == -1 && PyErr_Occurred()) { + return NULL; } - else { - return PyTuple_Pack(2, Py_TYPE(self), self->args); + + _Py_IDENTIFIER(__reduce_ex__); + PyObject *objreduce_ex = _PyDict_GetItemId(PyBaseObject_Type.tp_dict, + &PyId___reduce_ex__); + if (objreduce_ex == NULL) { + return NULL; } + + if (proto < 2) { + if (self->args && self->dict) { + return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict); + } + else { + return PyTuple_Pack(2, Py_TYPE(self), self->args); + } + } + + PyObject *args = PyTuple_Pack(2, self, arg); + if (args == NULL) { + return NULL; + } + PyObject *result = PyObject_Call(objreduce_ex, args, NULL); + Py_DECREF(args); + return result; } static PyObject * @@ -243,6 +265,60 @@ BaseException_getnewargs_ex(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ign return Py_BuildValue("(OO)", args, kwargs); } +static PyObject * +BaseException_getstate(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ignored)) +{ + _Py_IDENTIFIER(__dict__); + _Py_IDENTIFIER(__slots__); + PyObject *dict = _PyObject_GetAttrId((PyObject *)self, &PyId___dict__); + if (dict == NULL) { + return NULL; + } + + PyObject *result = PyDict_Copy(dict); + Py_DECREF(dict); + if (result == NULL) { + return NULL; + } + + PyObject *slots = _PyObject_GetAttrId((PyObject *)self, &PyId___slots__); + + if (slots == NULL) { + if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + return result; + } + else { + Py_DECREF(result); + return NULL; + } + } + + PyObject *iter = PyObject_GetIter(slots); + Py_DECREF(slots); + if (iter == NULL) { + Py_DECREF(result); + return NULL; + } + PyObject *name; + while ((name = PyIter_Next(iter))) { + PyObject *value = PyObject_GetAttr((PyObject *)self, name); + if (value != NULL) { + if (PyDict_SetItem(result, name, value) < 0) { + Py_DECREF(name); + Py_DECREF(value); + Py_DECREF(result); + Py_DECREF(iter); + return NULL; + } + } + Py_DECREF(name); + Py_DECREF(value); + } + Py_DECREF(iter); + return result; +} + /* * Needed for backward compatibility, since exceptions used to store * all their attributes in the __dict__. Code is taken from cPickle's @@ -282,8 +358,9 @@ PyDoc_STRVAR(with_traceback_doc, static PyMethodDef BaseException_methods[] = { - {"__reduce__", (PyCFunction)BaseException_reduce, METH_NOARGS }, + {"__reduce_ex__", (PyCFunction)BaseException_reduce_ex, METH_O }, {"__getnewargs_ex__", (PyCFunction)BaseException_getnewargs_ex, METH_NOARGS }, + {"__getstate__", (PyCFunction)BaseException_getstate, METH_NOARGS }, {"__setstate__", (PyCFunction)BaseException_setstate, METH_O }, {"with_traceback", (PyCFunction)BaseException_with_traceback, METH_O, with_traceback_doc}, @@ -330,8 +407,8 @@ BaseException_set_kwargs(PyBaseExceptionObject *self, PyObject *val, void *Py_UN PyErr_SetString(PyExc_TypeError, "kwargs may not be deleted"); return -1; } + Py_XSETREF(self->kwargs, val); Py_INCREF(val); - self->kwargs = val; return 0; } @@ -728,14 +805,77 @@ SystemExit_traverse(PySystemExitObject *self, visitproc visit, void *arg) return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg); } + +/* Pickling support */ +static PyObject * +SystemExit_getstate(PySystemExitObject *self) +{ + PyObject *dict = ((PyBaseExceptionObject *)self)->dict; + if (self->code) { + _Py_IDENTIFIER(code); + if (dict == NULL) { + dict = PyDict_New(); + } + else { + dict = PyDict_Copy(dict); + } + if (dict == NULL) { + return NULL; + } + if (_PyDict_SetItemId(dict, &PyId_code, self->code) < 0) { + Py_DECREF(dict); + return NULL; + } + return dict; + } + else if (dict != NULL) { + Py_INCREF(dict); + return dict; + } + else { + Py_RETURN_NONE; + } +} + +static PyObject * +SystemExit_reduce_ex(PySystemExitObject *self, PyObject *protocol) +{ + PyObject *res; + PyObject *state = SystemExit_getstate(self); + if (state == NULL) { + return NULL; + } + PyObject *reduce = BaseException_reduce_ex((PyBaseExceptionObject *) self, protocol); + if (reduce == NULL) { + Py_DECREF(state); + return NULL; + } + if (state == Py_None) { + return reduce; + } + else { + PyObject *func = PyTuple_GetItem(reduce, 0); + PyObject *args = PyTuple_GetItem(reduce, 1); + res = PyTuple_Pack(3, func, args, state); + } + Py_DECREF(state); + Py_DECREF(reduce); + return res; +} + static PyMemberDef SystemExit_members[] = { {"code", T_OBJECT, offsetof(PySystemExitObject, code), 0, PyDoc_STR("exception code")}, {NULL} /* Sentinel */ }; +static PyMethodDef SystemExit_methods[] = { + {"__reduce_ex__", (PyCFunction)SystemExit_reduce_ex, METH_O}, + {NULL} +}; + ComplexExtendsException(PyExc_BaseException, SystemExit, SystemExit, - 0, 0, SystemExit_members, 0, 0, + 0, SystemExit_methods, SystemExit_members, 0, 0, "Request to exit from the interpreter."); /* @@ -828,12 +968,17 @@ static PyObject * ImportError_getstate(PyImportErrorObject *self) { PyObject *dict = ((PyBaseExceptionObject *)self)->dict; - if (self->name || self->path) { + if (self->msg || self->name || self->path) { + _Py_IDENTIFIER(msg); _Py_IDENTIFIER(name); _Py_IDENTIFIER(path); dict = dict ? PyDict_Copy(dict) : PyDict_New(); if (dict == NULL) return NULL; + if (self->msg && _PyDict_SetItemId(dict, &PyId_msg, self->msg) < 0) { + Py_DECREF(dict); + return NULL; + } if (self->name && _PyDict_SetItemId(dict, &PyId_name, self->name) < 0) { Py_DECREF(dict); return NULL; @@ -855,19 +1000,28 @@ ImportError_getstate(PyImportErrorObject *self) /* Pickling support */ static PyObject * -ImportError_reduce(PyImportErrorObject *self, PyObject *Py_UNUSED(ignored)) +ImportError_reduce_ex(PyImportErrorObject *self, PyObject *protocol) { PyObject *res; - PyObject *args; PyObject *state = ImportError_getstate(self); - if (state == NULL) + if (state == NULL) { return NULL; - args = ((PyBaseExceptionObject *)self)->args; - if (state == Py_None) - res = PyTuple_Pack(2, Py_TYPE(self), args); - else - res = PyTuple_Pack(3, Py_TYPE(self), args, state); + } + PyObject *reduce = BaseException_reduce_ex((PyBaseExceptionObject *) self, protocol); + if (reduce == NULL) { + Py_DECREF(state); + return NULL; + } + if (state == Py_None) { + return reduce; + } + else { + PyObject *func = PyTuple_GetItem(reduce, 0); + PyObject *args = PyTuple_GetItem(reduce, 1); + res = PyTuple_Pack(3, func, args, state); + } Py_DECREF(state); + Py_DECREF(reduce); return res; } @@ -882,7 +1036,7 @@ static PyMemberDef ImportError_members[] = { }; static PyMethodDef ImportError_methods[] = { - {"__reduce__", (PyCFunction)ImportError_reduce, METH_NOARGS}, + {"__reduce_ex__", (PyCFunction)ImportError_reduce_ex, METH_O}, {NULL} }; @@ -1265,7 +1419,7 @@ OSError_str(PyOSErrorObject *self) } static PyObject * -OSError_reduce(PyOSErrorObject *self, PyObject *Py_UNUSED(ignored)) +OSError_reduce_ex(PyOSErrorObject *self, PyObject *Py_UNUSED(ignored)) { PyObject *args = self->args; PyObject *res = NULL, *tmp; @@ -1359,7 +1513,7 @@ static PyMemberDef OSError_members[] = { }; static PyMethodDef OSError_methods[] = { - {"__reduce__", (PyCFunction)OSError_reduce, METH_NOARGS}, + {"__reduce_ex__", (PyCFunction)OSError_reduce_ex, METH_VARARGS}, {NULL} }; @@ -1621,6 +1775,89 @@ SyntaxError_str(PySyntaxErrorObject *self) return result; } +/* Pickling support */ +static PyObject * +SyntaxError_getstate(PySyntaxErrorObject *self) +{ + PyObject *dict = ((PyBaseExceptionObject *)self)->dict; + if (self->msg || self->filename || self->lineno || + self->offset || self->text || self->print_file_and_line) { + _Py_IDENTIFIER(msg); + _Py_IDENTIFIER(filename); + _Py_IDENTIFIER(lineno); + _Py_IDENTIFIER(offset); + _Py_IDENTIFIER(text); + _Py_IDENTIFIER(print_file_and_line); + if (dict == NULL) { + dict = PyDict_New(); + } + else { + dict = PyDict_Copy(dict); + } + if (dict == NULL) { + return NULL; + } + if (self->msg && _PyDict_SetItemId(dict, &PyId_msg, self->msg) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->filename && _PyDict_SetItemId(dict, &PyId_filename, self->filename) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->lineno && _PyDict_SetItemId(dict, &PyId_lineno, self->lineno) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->offset && _PyDict_SetItemId(dict, &PyId_offset, self->offset) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->text && _PyDict_SetItemId(dict, &PyId_text, self->text) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->print_file_and_line && _PyDict_SetItemId(dict, &PyId_print_file_and_line, self->print_file_and_line) < 0) { + Py_DECREF(dict); + return NULL; + } + return dict; + } + else if (dict != NULL) { + Py_INCREF(dict); + return dict; + } + else { + Py_RETURN_NONE; + } +} + +static PyObject * +SyntaxError_reduce_ex(PySyntaxErrorObject *self, PyObject *protocol) +{ + PyObject *res; + PyObject *state = SyntaxError_getstate(self); + if (state == NULL) { + return NULL; + } + PyObject *reduce = BaseException_reduce_ex((PyBaseExceptionObject *) self, protocol); + if (reduce == NULL) { + Py_DECREF(state); + return NULL; + } + if (state == Py_None) { + return reduce; + } + else { + PyObject *func = PyTuple_GetItem(reduce, 0); + PyObject *args = PyTuple_GetItem(reduce, 1); + res = PyTuple_Pack(3, func, args, state); + } + Py_DECREF(state); + Py_DECREF(reduce); + return res; +} + static PyMemberDef SyntaxError_members[] = { {"msg", T_OBJECT, offsetof(PySyntaxErrorObject, msg), 0, PyDoc_STR("exception msg")}, @@ -1638,8 +1875,13 @@ static PyMemberDef SyntaxError_members[] = { {NULL} /* Sentinel */ }; +static PyMethodDef SyntaxError_methods[] = { + {"__reduce_ex__", (PyCFunction)SyntaxError_reduce_ex, METH_O}, + {NULL} +}; + ComplexExtendsException(PyExc_Exception, SyntaxError, SyntaxError, - 0, 0, SyntaxError_members, 0, + 0, SyntaxError_methods, SyntaxError_members, 0, SyntaxError_str, "Invalid syntax."); @@ -1988,6 +2230,88 @@ UnicodeError_traverse(PyUnicodeErrorObject *self, visitproc visit, void *arg) return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg); } +/* Pickling support */ +static PyObject * +UnicodeError_getstate(PyUnicodeErrorObject *self) +{ + PyObject *dict = ((PyBaseExceptionObject *)self)->dict; + if (self->encoding || self->object || self->start || + self->end || self->reason) { + _Py_IDENTIFIER(encoding); + _Py_IDENTIFIER(object); + _Py_IDENTIFIER(start); + _Py_IDENTIFIER(end); + _Py_IDENTIFIER(reason); + if (dict == NULL) { + dict = PyDict_New(); + } + else { + dict = PyDict_Copy(dict); + } + if (dict == NULL) { + return NULL; + } + if (self->encoding && _PyDict_SetItemId(dict, &PyId_encoding, self->encoding) < 0) { + Py_DECREF(dict); + return NULL; + } + if (self->object && _PyDict_SetItemId(dict, &PyId_object, self->object) < 0) { + Py_DECREF(dict); + return NULL; + } + PyObject *start = PyLong_FromSsize_t(self->start); + if (start == NULL || _PyDict_SetItemId(dict, &PyId_start, start) < 0) { + Py_DECREF(dict); + return NULL; + } + Py_DECREF(start); + PyObject *end = PyLong_FromSsize_t(self->end); + if (end == NULL || _PyDict_SetItemId(dict, &PyId_end, end) < 0) { + Py_DECREF(dict); + return NULL; + } + Py_DECREF(end); + if (self->reason && _PyDict_SetItemId(dict, &PyId_reason, self->reason) < 0) { + Py_DECREF(dict); + return NULL; + } + return dict; + } + else if (dict != NULL) { + Py_INCREF(dict); + return dict; + } + else { + Py_RETURN_NONE; + } +} + +static PyObject * +UnicodeError_reduce_ex(PyUnicodeErrorObject *self, PyObject *protocol) +{ + PyObject *res; + PyObject *state = UnicodeError_getstate(self); + if (state == NULL) { + return NULL; + } + PyObject *reduce = BaseException_reduce_ex((PyBaseExceptionObject *) self, protocol); + if (reduce == NULL) { + Py_DECREF(state); + return NULL; + } + if (state == Py_None) { + return reduce; + } + else { + PyObject *func = PyTuple_GetItem(reduce, 0); + PyObject *args = PyTuple_GetItem(reduce, 1); + res = PyTuple_Pack(3, func, args, state); + } + Py_DECREF(state); + Py_DECREF(reduce); + return res; +} + static PyMemberDef UnicodeError_members[] = { {"encoding", T_OBJECT, offsetof(PyUnicodeErrorObject, encoding), 0, PyDoc_STR("exception encoding")}, @@ -2002,6 +2326,10 @@ static PyMemberDef UnicodeError_members[] = { {NULL} /* Sentinel */ }; +static PyMethodDef UnicodeError_methods[] = { + {"__reduce_ex__", (PyCFunction)UnicodeError_reduce_ex, METH_O}, + {NULL} +}; /* * UnicodeEncodeError extends UnicodeError @@ -2094,7 +2422,7 @@ static PyTypeObject _PyExc_UnicodeEncodeError = { (reprfunc)UnicodeEncodeError_str, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, PyDoc_STR("Unicode encoding error."), (traverseproc)UnicodeError_traverse, - (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members, + (inquiry)UnicodeError_clear, 0, 0, 0, 0, UnicodeError_methods, UnicodeError_members, 0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict), (initproc)UnicodeEncodeError_init, 0, BaseException_new, }; @@ -2210,7 +2538,7 @@ static PyTypeObject _PyExc_UnicodeDecodeError = { (reprfunc)UnicodeDecodeError_str, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, PyDoc_STR("Unicode decoding error."), (traverseproc)UnicodeError_traverse, - (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members, + (inquiry)UnicodeError_clear, 0, 0, 0, 0, UnicodeError_methods, UnicodeError_members, 0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict), (initproc)UnicodeDecodeError_init, 0, BaseException_new, }; @@ -2307,7 +2635,7 @@ static PyTypeObject _PyExc_UnicodeTranslateError = { (reprfunc)UnicodeTranslateError_str, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, PyDoc_STR("Unicode translation error."), (traverseproc)UnicodeError_traverse, - (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members, + (inquiry)UnicodeError_clear, 0, 0, 0, 0, UnicodeError_methods, UnicodeError_members, 0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict), (initproc)UnicodeTranslateError_init, 0, BaseException_new, }; From 2fc3366ce864ebef33a9e0a99f2e2b30be3f381a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Lapeyre?= Date: Thu, 21 Feb 2019 16:21:30 +0100 Subject: [PATCH 9/9] Remove some Refleaks --- Objects/exceptions.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 5855360cb86b95..cca04e1c887282 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -259,10 +259,15 @@ BaseException_getnewargs_ex(PyBaseExceptionObject *self, PyObject *Py_UNUSED(ign PyObject *kwargs = PyObject_GetAttrString((PyObject *) self, "kwargs"); if (args == NULL || kwargs == NULL) { + Py_XDECREF(args); + Py_XDECREF(kwargs); return NULL; } - return Py_BuildValue("(OO)", args, kwargs); + PyObject *res = Py_BuildValue("(OO)", args, kwargs); + Py_DECREF(args); + Py_DECREF(kwargs); + return res; } static PyObject * pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy