From webhook-mailer at python.org Tue Dec 1 02:58:50 2020 From: webhook-mailer at python.org (JulienPalard) Date: Tue, 01 Dec 2020 07:58:50 -0000 Subject: [Python-checkins] [3.9] [doc] Fix smtplib and xml.dom.minidom mark-up (GH-22769) (GH-23380) Message-ID: https://github.com/python/cpython/commit/7e80c0f40e0458fd1b2c879c031594388fc6dea6 commit: 7e80c0f40e0458fd1b2c879c031594388fc6dea6 branch: 3.9 author: Julien Palard committer: JulienPalard date: 2020-12-01T08:58:36+01:00 summary: [3.9] [doc] Fix smtplib and xml.dom.minidom mark-up (GH-22769) (GH-23380) files: M Doc/library/smtplib.rst M Doc/library/xml.dom.minidom.rst diff --git a/Doc/library/smtplib.rst b/Doc/library/smtplib.rst index a88e358eae5fd..c1a20fee6cf02 100644 --- a/Doc/library/smtplib.rst +++ b/Doc/library/smtplib.rst @@ -115,7 +115,7 @@ Protocol) and :rfc:`1869` (SMTP Service Extensions). If the *timeout* parameter is set to be zero, it will raise a :class:`ValueError` to prevent the creation of a non-blocking socket -.. class:: LMTP(host='', port=LMTP_PORT, local_hostname=None, +.. class:: LMTP(host='', port=LMTP_PORT, local_hostname=None, \ source_address=None[, timeout]) The LMTP protocol, which is very similar to ESMTP, is heavily based on the diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index 2c78cd939243a..bf72c46561b7c 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -132,7 +132,7 @@ module documentation. This section lists the differences between the API and ... # Work with dom. -.. method:: Node.writexml(writer, indent="", addindent="", newl="", +.. method:: Node.writexml(writer, indent="", addindent="", newl="", \ encoding=None, standalone=None) Write XML to the writer object. The writer receives texts but not bytes as input, @@ -174,7 +174,7 @@ module documentation. This section lists the differences between the API and The :meth:`toxml` method now preserves the attribute order specified by the user. -.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, +.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, \ standalone=None) Return a pretty-printed version of the document. *indent* specifies the From webhook-mailer at python.org Tue Dec 1 03:20:58 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Dec 2020 08:20:58 -0000 Subject: [Python-checkins] bpo-31904: Fix fifo test cases for VxWorks (GH-20254) Message-ID: https://github.com/python/cpython/commit/b2d0c66e881301ed8908da3cb41bbf253c449b0c commit: b2d0c66e881301ed8908da3cb41bbf253c449b0c branch: master author: pxinwr committer: vstinner date: 2020-12-01T09:20:50+01:00 summary: bpo-31904: Fix fifo test cases for VxWorks (GH-20254) files: A Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst M Lib/test/test_posix.py M Lib/test/test_stat.py diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index a522717751ac1..18afbef082bff 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -642,12 +642,17 @@ def test_stat(self): @unittest.skipUnless(hasattr(posix, 'mkfifo'), "don't have mkfifo()") def test_mkfifo(self): - os_helper.unlink(os_helper.TESTFN) + if sys.platform == "vxworks": + fifo_path = os.path.join("/fifos/", os_helper.TESTFN) + else: + fifo_path = os_helper.TESTFN + os_helper.unlink(fifo_path) + self.addCleanup(os_helper.unlink, fifo_path) try: - posix.mkfifo(os_helper.TESTFN, stat.S_IRUSR | stat.S_IWUSR) + posix.mkfifo(fifo_path, stat.S_IRUSR | stat.S_IWUSR) except PermissionError as e: self.skipTest('posix.mkfifo(): %s' % e) - self.assertTrue(stat.S_ISFIFO(posix.stat(os_helper.TESTFN).st_mode)) + self.assertTrue(stat.S_ISFIFO(posix.stat(fifo_path).st_mode)) @unittest.skipUnless(hasattr(posix, 'mknod') and hasattr(stat, 'S_IFIFO'), "don't have mknod()/S_IFIFO") @@ -1929,7 +1934,7 @@ def test_posix_spawnp(self): class TestPosixWeaklinking(unittest.TestCase): # These test cases verify that weak linking support on macOS works # as expected. These cases only test new behaviour introduced by weak linking, - # regular behaviour is tested by the normal test cases. + # regular behaviour is tested by the normal test cases. # # See the section on Weak Linking in Mac/README.txt for more information. def setUp(self): diff --git a/Lib/test/test_stat.py b/Lib/test/test_stat.py index 83d09e17f93c5..2e1e2c349c8d0 100644 --- a/Lib/test/test_stat.py +++ b/Lib/test/test_stat.py @@ -2,6 +2,7 @@ import os import socket import sys +from test.support import os_helper from test.support import socket_helper from test.support.import_helper import import_fresh_module from test.support.os_helper import TESTFN @@ -173,11 +174,16 @@ def test_link(self): @unittest.skipUnless(hasattr(os, 'mkfifo'), 'os.mkfifo not available') def test_fifo(self): + if sys.platform == "vxworks": + fifo_path = os.path.join("/fifos/", TESTFN) + else: + fifo_path = TESTFN + self.addCleanup(os_helper.unlink, fifo_path) try: - os.mkfifo(TESTFN, 0o700) + os.mkfifo(fifo_path, 0o700) except PermissionError as e: self.skipTest('os.mkfifo(): %s' % e) - st_mode, modestr = self.get_mode() + st_mode, modestr = self.get_mode(fifo_path) self.assertEqual(modestr, 'prwx------') self.assertS_IS("FIFO", st_mode) diff --git a/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst b/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst new file mode 100644 index 0000000000000..40caa88d689a2 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst @@ -0,0 +1 @@ +Fix fifo test cases for VxWorks RTOS. From webhook-mailer at python.org Tue Dec 1 03:57:03 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Dec 2020 08:57:03 -0000 Subject: [Python-checkins] bpo-42519: Replace PyMem_MALLOC() with PyMem_Malloc() (GH-23586) Message-ID: https://github.com/python/cpython/commit/00d7abd7ef588fc4ff0571c8579ab4aba8ada1c0 commit: 00d7abd7ef588fc4ff0571c8579ab4aba8ada1c0 branch: master author: Victor Stinner committer: vstinner date: 2020-12-01T09:56:42+01:00 summary: bpo-42519: Replace PyMem_MALLOC() with PyMem_Malloc() (GH-23586) No longer use deprecated aliases to functions: * Replace PyMem_MALLOC() with PyMem_Malloc() * Replace PyMem_REALLOC() with PyMem_Realloc() * Replace PyMem_FREE() with PyMem_Free() * Replace PyMem_Del() with PyMem_Free() * Replace PyMem_DEL() with PyMem_Free() Modify also the PyMem_DEL() macro to use directly PyMem_Free(). files: M Include/objimpl.h M Include/pymem.h M Modules/_localemodule.c M Modules/_pickle.c M Modules/_sre.c M Modules/_ssl.c M Modules/_struct.c M Modules/_testcapimodule.c M Modules/_threadmodule.c M Modules/_tkinter.c M Modules/arraymodule.c M Modules/cjkcodecs/multibytecodec.c M Modules/posixmodule.c M Modules/selectmodule.c M Objects/capsule.c M Objects/codeobject.c M Objects/dictobject.c M Objects/listobject.c M Objects/moduleobject.c M Objects/odictobject.c M Objects/setobject.c M Objects/stringlib/join.h M Objects/structseq.c M Objects/typeobject.c M Objects/unicodeobject.c M PC/winreg.c M Parser/string_parser.c M Parser/tokenizer.c M Python/bltinmodule.c M Python/getargs.c M Python/marshal.c M Python/pystrtod.c M Python/traceback.c diff --git a/Include/objimpl.h b/Include/objimpl.h index af537175bfed8..464b1bf93ba2c 100644 --- a/Include/objimpl.h +++ b/Include/objimpl.h @@ -102,7 +102,7 @@ PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size); PyAPI_FUNC(void) PyObject_Free(void *ptr); -/* Macros */ +// Deprecated aliases only kept for backward compatibility. #define PyObject_MALLOC PyObject_Malloc #define PyObject_REALLOC PyObject_Realloc #define PyObject_FREE PyObject_Free @@ -138,8 +138,8 @@ PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t); #define PyObject_NewVar(type, typeobj, n) \ ( (type *) _PyObject_NewVar((typeobj), (n)) ) -// Alias to PyObject_New(). In Python 3.8, PyObject_NEW() called directly -// PyObject_MALLOC() with _PyObject_VAR_SIZE(). +// Alias to PyObject_NewVar(). In Python 3.8, PyObject_NEW_VAR() called +// directly PyObject_MALLOC() with _PyObject_VAR_SIZE(). #define PyObject_NEW_VAR(type, typeobj, n) PyObject_NewVar(type, typeobj, n) diff --git a/Include/pymem.h b/Include/pymem.h index 607feb9484f24..5b9dd4219948a 100644 --- a/Include/pymem.h +++ b/Include/pymem.h @@ -53,18 +53,6 @@ PyAPI_FUNC(void *) PyMem_Malloc(size_t size); PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size); PyAPI_FUNC(void) PyMem_Free(void *ptr); -/* Macros. */ - -/* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL - for malloc(0), which would be treated as an error. Some platforms - would return a pointer with no memory behind it, which would break - pymalloc. To solve these problems, allocate an extra byte. */ -/* Returns NULL to indicate error if a negative size or size larger than - Py_ssize_t can represent is supplied. Helps prevents security holes. */ -#define PyMem_MALLOC(n) PyMem_Malloc(n) -#define PyMem_REALLOC(p, n) PyMem_Realloc(p, n) -#define PyMem_FREE(p) PyMem_Free(p) - /* * Type-oriented memory interface * ============================== @@ -78,9 +66,6 @@ PyAPI_FUNC(void) PyMem_Free(void *ptr); #define PyMem_New(type, n) \ ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ ( (type *) PyMem_Malloc((n) * sizeof(type)) ) ) -#define PyMem_NEW(type, n) \ - ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ - ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) ) /* * The value of (p) is always clobbered by this macro regardless of success. @@ -91,15 +76,16 @@ PyAPI_FUNC(void) PyMem_Free(void *ptr); #define PyMem_Resize(p, type, n) \ ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ (type *) PyMem_Realloc((p), (n) * sizeof(type)) ) -#define PyMem_RESIZE(p, type, n) \ - ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL : \ - (type *) PyMem_REALLOC((p), (n) * sizeof(type)) ) -/* PyMem{Del,DEL} are left over from ancient days, and shouldn't be used - * anymore. They're just confusing aliases for PyMem_{Free,FREE} now. - */ -#define PyMem_Del PyMem_Free -#define PyMem_DEL PyMem_FREE + +// Deprecated aliases only kept for backward compatibility. +#define PyMem_MALLOC(n) PyMem_Malloc(n) +#define PyMem_NEW(type, n) PyMem_New(type, n) +#define PyMem_REALLOC(p, n) PyMem_Realloc(p, n) +#define PyMem_RESIZE(p, type, n) PyMem_Resize(p, type, n) +#define PyMem_FREE(p) PyMem_Free(p) +#define PyMem_Del(p) PyMem_Free(p) +#define PyMem_DEL(p) PyMem_Free(p) #ifndef Py_LIMITED_API diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 869e3f80f3f9e..564f5598edcc6 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -370,8 +370,8 @@ _locale_strcoll_impl(PyObject *module, PyObject *os1, PyObject *os2) result = PyLong_FromLong(wcscoll(ws1, ws2)); done: /* Deallocate everything. */ - if (ws1) PyMem_FREE(ws1); - if (ws2) PyMem_FREE(ws2); + if (ws1) PyMem_Free(ws1); + if (ws2) PyMem_Free(ws2); return result; } #endif diff --git a/Modules/_pickle.c b/Modules/_pickle.c index ed8afefe4c74c..7ecaeea18c611 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -442,7 +442,7 @@ Pdata_dealloc(Pdata *self) while (--i >= 0) { Py_DECREF(self->data[i]); } - PyMem_FREE(self->data); + PyMem_Free(self->data); PyObject_Del(self); } @@ -465,7 +465,7 @@ Pdata_New(void) self->mark_set = 0; self->fence = 0; self->allocated = 8; - self->data = PyMem_MALLOC(self->allocated * sizeof(PyObject *)); + self->data = PyMem_Malloc(self->allocated * sizeof(PyObject *)); if (self->data) return (PyObject *)self; Py_DECREF(self); @@ -726,7 +726,7 @@ static PyTypeObject Unpickler_Type; static PyMemoTable * PyMemoTable_New(void) { - PyMemoTable *memo = PyMem_MALLOC(sizeof(PyMemoTable)); + PyMemoTable *memo = PyMem_Malloc(sizeof(PyMemoTable)); if (memo == NULL) { PyErr_NoMemory(); return NULL; @@ -735,9 +735,9 @@ PyMemoTable_New(void) memo->mt_used = 0; memo->mt_allocated = MT_MINSIZE; memo->mt_mask = MT_MINSIZE - 1; - memo->mt_table = PyMem_MALLOC(MT_MINSIZE * sizeof(PyMemoEntry)); + memo->mt_table = PyMem_Malloc(MT_MINSIZE * sizeof(PyMemoEntry)); if (memo->mt_table == NULL) { - PyMem_FREE(memo); + PyMem_Free(memo); PyErr_NoMemory(); return NULL; } @@ -758,10 +758,10 @@ PyMemoTable_Copy(PyMemoTable *self) new->mt_mask = self->mt_mask; /* The table we get from _New() is probably smaller than we wanted. Free it and allocate one that's the right size. */ - PyMem_FREE(new->mt_table); + PyMem_Free(new->mt_table); new->mt_table = PyMem_NEW(PyMemoEntry, self->mt_allocated); if (new->mt_table == NULL) { - PyMem_FREE(new); + PyMem_Free(new); PyErr_NoMemory(); return NULL; } @@ -800,8 +800,8 @@ PyMemoTable_Del(PyMemoTable *self) return; PyMemoTable_Clear(self); - PyMem_FREE(self->mt_table); - PyMem_FREE(self); + PyMem_Free(self->mt_table); + PyMem_Free(self); } /* Since entries cannot be deleted from this hashtable, _PyMemoTable_Lookup() @@ -880,7 +880,7 @@ _PyMemoTable_ResizeTable(PyMemoTable *self, size_t min_size) } /* Deallocate the old table. */ - PyMem_FREE(oldtable); + PyMem_Free(oldtable); return 0; } @@ -1582,7 +1582,7 @@ _Unpickler_MemoCleanup(UnpicklerObject *self) while (--i >= 0) { Py_XDECREF(memo[i]); } - PyMem_FREE(memo); + PyMem_Free(memo); } static UnpicklerObject * @@ -7544,7 +7544,7 @@ Unpickler_set_memo(UnpicklerObject *self, PyObject *obj, void *Py_UNUSED(ignored for (size_t i = new_memo_size - 1; i != SIZE_MAX; i--) { Py_XDECREF(new_memo[i]); } - PyMem_FREE(new_memo); + PyMem_Free(new_memo); } return -1; } diff --git a/Modules/_sre.c b/Modules/_sre.c index 0a5ca60097af3..c67f38d75b809 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -197,7 +197,7 @@ static void data_stack_dealloc(SRE_STATE* state) { if (state->data_stack) { - PyMem_FREE(state->data_stack); + PyMem_Free(state->data_stack); state->data_stack = NULL; } state->data_stack_size = state->data_stack_base = 0; @@ -213,7 +213,7 @@ data_stack_grow(SRE_STATE* state, Py_ssize_t size) void* stack; cursize = minsize+minsize/4+1024; TRACE(("allocate/grow stack %zd\n", cursize)); - stack = PyMem_REALLOC(state->data_stack, cursize); + stack = PyMem_Realloc(state->data_stack, cursize); if (!stack) { data_stack_dealloc(state); return SRE_ERROR_MEMORY; @@ -472,7 +472,7 @@ state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string, /* We add an explicit cast here because MSVC has a bug when compiling C code where it believes that `const void**` cannot be safely casted to `void*`, see bpo-39943 for details. */ - PyMem_Del((void*) state->mark); + PyMem_Free((void*) state->mark); state->mark = NULL; if (state->buffer.buf) PyBuffer_Release(&state->buffer); @@ -487,7 +487,7 @@ state_fini(SRE_STATE* state) Py_XDECREF(state->string); data_stack_dealloc(state); /* See above PyMem_Del for why we explicitly cast here. */ - PyMem_Del((void*) state->mark); + PyMem_Free((void*) state->mark); state->mark = NULL; } diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 6f799ee661852..87fe3a16078fa 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -3306,10 +3306,10 @@ context_dealloc(PySSLContext *self) context_clear(self); SSL_CTX_free(self->ctx); #if HAVE_NPN - PyMem_FREE(self->npn_protocols); + PyMem_Free(self->npn_protocols); #endif #if HAVE_ALPN - PyMem_FREE(self->alpn_protocols); + PyMem_Free(self->alpn_protocols); #endif Py_TYPE(self)->tp_free(self); Py_DECREF(tp); @@ -3510,7 +3510,7 @@ _ssl__SSLContext__set_alpn_protocols_impl(PySSLContext *self, return NULL; } - PyMem_FREE(self->alpn_protocols); + PyMem_Free(self->alpn_protocols); self->alpn_protocols = PyMem_Malloc(protos->len); if (!self->alpn_protocols) return PyErr_NoMemory(); diff --git a/Modules/_struct.c b/Modules/_struct.c index eeccc17965468..c95c76f8ae039 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1373,14 +1373,14 @@ prepare_s(PyStructObject *self) self->s_size = size; self->s_len = len; - codes = PyMem_MALLOC((ncodes + 1) * sizeof(formatcode)); + codes = PyMem_Malloc((ncodes + 1) * sizeof(formatcode)); if (codes == NULL) { PyErr_NoMemory(); return -1; } /* Free any s_codes value left over from a previous initialization. */ if (self->s_codes != NULL) - PyMem_FREE(self->s_codes); + PyMem_Free(self->s_codes); self->s_codes = codes; s = fmt; @@ -1502,7 +1502,7 @@ s_dealloc(PyStructObject *s) if (s->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *)s); if (s->s_codes != NULL) { - PyMem_FREE(s->s_codes); + PyMem_Free(s->s_codes); } Py_XDECREF(s->s_format); freefunc free_func = PyType_GetSlot(Py_TYPE(s), Py_tp_free); diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index a1d4c929b0205..916d10a1e413b 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1988,12 +1988,12 @@ unicode_asucs4(PyObject *self, PyObject *args) buffer[str_len] = 0xffffU; if (!PyUnicode_AsUCS4(unicode, buffer, buf_len, copy_null)) { - PyMem_FREE(buffer); + PyMem_Free(buffer); return NULL; } result = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, buffer, buf_len); - PyMem_FREE(buffer); + PyMem_Free(buffer); return result; } diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 56ed8a2e2d3f1..dcefa8dbaa91b 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -1056,7 +1056,7 @@ t_bootstrap(void *boot_raw) Py_DECREF(boot->func); Py_DECREF(boot->args); Py_XDECREF(boot->keyw); - PyMem_DEL(boot_raw); + PyMem_Free(boot_raw); tstate->interp->num_threads--; PyThreadState_Clear(tstate); _PyThreadState_DeleteCurrent(tstate); @@ -1107,7 +1107,7 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs) boot->tstate = _PyThreadState_Prealloc(boot->interp); boot->runtime = runtime; if (boot->tstate == NULL) { - PyMem_DEL(boot); + PyMem_Free(boot); return PyErr_NoMemory(); } Py_INCREF(func); @@ -1121,7 +1121,7 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs) Py_DECREF(args); Py_XDECREF(keyw); PyThreadState_Clear(boot->tstate); - PyMem_DEL(boot); + PyMem_Free(boot); return NULL; } return PyLong_FromUnsignedLong(ident); diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index b30141d4497bd..24aeb3da94c70 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -2472,7 +2472,7 @@ PythonCmdDelete(ClientData clientData) ENTER_PYTHON Py_XDECREF(data->self); Py_XDECREF(data->func); - PyMem_DEL(data); + PyMem_Free(data); LEAVE_PYTHON } @@ -2545,7 +2545,7 @@ _tkinter_tkapp_createcommand_impl(TkappObject *self, const char *name, CommandEvent *ev = (CommandEvent*)attemptckalloc(sizeof(CommandEvent)); if (ev == NULL) { PyErr_NoMemory(); - PyMem_DEL(data); + PyMem_Free(data); return NULL; } ev->ev.proc = (Tcl_EventProc*)Tkapp_CommandProc; @@ -2568,7 +2568,7 @@ _tkinter_tkapp_createcommand_impl(TkappObject *self, const char *name, } if (err) { PyErr_SetString(Tkinter_TclError, "can't create Tcl command"); - PyMem_DEL(data); + PyMem_Free(data); return NULL; } @@ -2666,7 +2666,7 @@ DeleteFHCD(int id) *pp = p->next; Py_XDECREF(p->func); Py_XDECREF(p->file); - PyMem_DEL(p); + PyMem_Free(p); } else pp = &p->next; diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 2ba2ff43aa8b8..6583e66611959 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -133,7 +133,7 @@ array_resize(arrayobject *self, Py_ssize_t newsize) } if (newsize == 0) { - PyMem_FREE(self->ob_item); + PyMem_Free(self->ob_item); self->ob_item = NULL; Py_SET_SIZE(self, 0); self->allocated = 0; @@ -652,7 +652,7 @@ array_dealloc(arrayobject *op) if (op->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *) op); if (op->ob_item != NULL) - PyMem_DEL(op->ob_item); + PyMem_Free(op->ob_item); Py_TYPE(op)->tp_free((PyObject *)op); } diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 86402768b6ee6..37a80a781da6f 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -1191,13 +1191,13 @@ _multibytecodec_MultibyteIncrementalDecoder_decode_impl(MultibyteIncrementalDeco goto errorexit; if (wdata != data) - PyMem_Del(wdata); + PyMem_Free(wdata); Py_XDECREF(buf.excobj); return res; errorexit: if (wdata != NULL && wdata != data) - PyMem_Del(wdata); + PyMem_Free(wdata); Py_XDECREF(buf.excobj); _PyUnicodeWriter_Dealloc(&buf.writer); return NULL; diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index efa96531d49c1..3e6e6585b880c 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -5480,7 +5480,7 @@ free_string_array(EXECV_CHAR **array, Py_ssize_t count) Py_ssize_t i; for (i = 0; i < count; i++) PyMem_Free(array[i]); - PyMem_DEL(array); + PyMem_Free(array); } static int @@ -6510,9 +6510,10 @@ os_spawnve_impl(PyObject *module, int mode, path_t *path, PyObject *argv, res = Py_BuildValue(_Py_PARSE_INTPTR, spawnval); fail_2: - while (--envc >= 0) - PyMem_DEL(envlist[envc]); - PyMem_DEL(envlist); + while (--envc >= 0) { + PyMem_Free(envlist[envc]); + } + PyMem_Free(envlist); fail_1: free_string_array(argvlist, lastarg); fail_0: @@ -7444,7 +7445,7 @@ os_getgrouplist_impl(PyObject *module, const char *user, gid_t basegid) list = PyList_New(ngroups); if (list == NULL) { - PyMem_Del(groups); + PyMem_Free(groups); return NULL; } @@ -7456,13 +7457,13 @@ os_getgrouplist_impl(PyObject *module, const char *user, gid_t basegid) #endif if (o == NULL) { Py_DECREF(list); - PyMem_Del(groups); + PyMem_Free(groups); return NULL; } PyList_SET_ITEM(list, i, o); } - PyMem_Del(groups); + PyMem_Free(groups); return list; } @@ -9407,7 +9408,7 @@ iov_setup(struct iovec **iov, Py_buffer **buf, PyObject *seq, Py_ssize_t cnt, in *buf = PyMem_New(Py_buffer, cnt); if (*buf == NULL) { - PyMem_Del(*iov); + PyMem_Free(*iov); PyErr_NoMemory(); return -1; } @@ -9427,11 +9428,11 @@ iov_setup(struct iovec **iov, Py_buffer **buf, PyObject *seq, Py_ssize_t cnt, in return 0; fail: - PyMem_Del(*iov); + PyMem_Free(*iov); for (j = 0; j < i; j++) { PyBuffer_Release(&(*buf)[j]); } - PyMem_Del(*buf); + PyMem_Free(*buf); return -1; } @@ -9439,11 +9440,11 @@ static void iov_cleanup(struct iovec *iov, Py_buffer *buf, int cnt) { int i; - PyMem_Del(iov); + PyMem_Free(iov); for (i = 0; i < cnt; i++) { PyBuffer_Release(&buf[i]); } - PyMem_Del(buf); + PyMem_Free(buf); } #endif @@ -12815,7 +12816,7 @@ os_listxattr_impl(PyObject *module, path_t *path, int follow_symlinks) path_error(path); break; } - buffer = PyMem_MALLOC(buffer_size); + buffer = PyMem_Malloc(buffer_size); if (!buffer) { PyErr_NoMemory(); break; @@ -12832,7 +12833,7 @@ os_listxattr_impl(PyObject *module, path_t *path, int follow_symlinks) if (length < 0) { if (errno == ERANGE) { - PyMem_FREE(buffer); + PyMem_Free(buffer); buffer = NULL; continue; } @@ -12870,7 +12871,7 @@ os_listxattr_impl(PyObject *module, path_t *path, int follow_symlinks) } exit: if (buffer) - PyMem_FREE(buffer); + PyMem_Free(buffer); return result; } #endif /* USE_XATTRS */ diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 693a833caea77..0b9f20d6bbd9d 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -294,9 +294,9 @@ select_select_impl(PyObject *module, PyObject *rlist, PyObject *wlist, wfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1); efd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1); if (rfd2obj == NULL || wfd2obj == NULL || efd2obj == NULL) { - if (rfd2obj) PyMem_DEL(rfd2obj); - if (wfd2obj) PyMem_DEL(wfd2obj); - if (efd2obj) PyMem_DEL(efd2obj); + if (rfd2obj) PyMem_Free(rfd2obj); + if (wfd2obj) PyMem_Free(wfd2obj); + if (efd2obj) PyMem_Free(efd2obj); return PyErr_NoMemory(); } #endif /* SELECT_USES_HEAP */ @@ -381,9 +381,9 @@ select_select_impl(PyObject *module, PyObject *rlist, PyObject *wlist, reap_obj(wfd2obj); reap_obj(efd2obj); #ifdef SELECT_USES_HEAP - PyMem_DEL(rfd2obj); - PyMem_DEL(wfd2obj); - PyMem_DEL(efd2obj); + PyMem_Free(rfd2obj); + PyMem_Free(wfd2obj); + PyMem_Free(efd2obj); #endif /* SELECT_USES_HEAP */ return ret; } @@ -740,7 +740,7 @@ poll_dealloc(pollObject *self) { PyObject* type = (PyObject *)Py_TYPE(self); if (self->ufds != NULL) - PyMem_DEL(self->ufds); + PyMem_Free(self->ufds); Py_XDECREF(self->dict); PyObject_Del(self); Py_DECREF(type); @@ -1106,7 +1106,7 @@ newDevPollObject(PyObject *module) self = PyObject_New(devpollObject, get_select_state(module)->devpoll_Type); if (self == NULL) { close(fd_devpoll); - PyMem_DEL(fds); + PyMem_Free(fds); return NULL; } self->fd_devpoll = fd_devpoll; @@ -1129,7 +1129,7 @@ devpoll_dealloc(devpollObject *self) { PyObject *type = (PyObject *)Py_TYPE(self); (void)devpoll_internal_close(self); - PyMem_DEL(self->fds); + PyMem_Free(self->fds); PyObject_Del(self); Py_DECREF(type); } diff --git a/Objects/capsule.c b/Objects/capsule.c index ed24cc1d6a2eb..a2ff642526cd0 100644 --- a/Objects/capsule.c +++ b/Objects/capsule.c @@ -198,7 +198,7 @@ PyCapsule_Import(const char *name, int no_block) void *return_value = NULL; char *trace; size_t name_length = (strlen(name) + 1) * sizeof(char); - char *name_dup = (char *)PyMem_MALLOC(name_length); + char *name_dup = (char *)PyMem_Malloc(name_length); if (!name_dup) { return PyErr_NoMemory(); @@ -247,7 +247,7 @@ PyCapsule_Import(const char *name, int no_block) EXIT: Py_XDECREF(object); if (name_dup) { - PyMem_FREE(name_dup); + PyMem_Free(name_dup); } return return_value; } diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 7b224cc145e47..0257295f1e996 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -213,7 +213,7 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, PyObject *arg = PyTuple_GET_ITEM(varnames, j); int cmp = PyUnicode_Compare(cell, arg); if (cmp == -1 && PyErr_Occurred()) { - PyMem_FREE(cell2arg); + PyMem_Free(cell2arg); return NULL; } if (cmp == 0) { @@ -224,14 +224,14 @@ PyCode_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, } } if (!used_cell2arg) { - PyMem_FREE(cell2arg); + PyMem_Free(cell2arg); cell2arg = NULL; } } co = PyObject_New(PyCodeObject, &PyCode_Type); if (co == NULL) { if (cell2arg) - PyMem_FREE(cell2arg); + PyMem_Free(cell2arg); return NULL; } co->co_argcount = argcount; @@ -314,12 +314,12 @@ _PyCode_InitOpcache(PyCodeObject *co) if (opts) { co->co_opcache = (_PyOpcache *)PyMem_Calloc(opts, sizeof(_PyOpcache)); if (co->co_opcache == NULL) { - PyMem_FREE(co->co_opcache_map); + PyMem_Free(co->co_opcache_map); return -1; } } else { - PyMem_FREE(co->co_opcache_map); + PyMem_Free(co->co_opcache_map); co->co_opcache_map = NULL; co->co_opcache = NULL; } @@ -631,10 +631,10 @@ static void code_dealloc(PyCodeObject *co) { if (co->co_opcache != NULL) { - PyMem_FREE(co->co_opcache); + PyMem_Free(co->co_opcache); } if (co->co_opcache_map != NULL) { - PyMem_FREE(co->co_opcache_map); + PyMem_Free(co->co_opcache_map); } co->co_opcache_flag = 0; co->co_opcache_size = 0; @@ -664,7 +664,7 @@ code_dealloc(PyCodeObject *co) Py_XDECREF(co->co_name); Py_XDECREF(co->co_linetable); if (co->co_cell2arg != NULL) - PyMem_FREE(co->co_cell2arg); + PyMem_Free(co->co_cell2arg); if (co->co_zombieframe != NULL) PyObject_GC_Del(co->co_zombieframe); if (co->co_weakreflist != NULL) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index faa8696153cb8..ee1a9d1d7e71e 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -640,7 +640,7 @@ free_keys_object(PyDictKeysObject *keys) } #define new_values(size) PyMem_NEW(PyObject *, size) -#define free_values(values) PyMem_FREE(values) +#define free_values(values) PyMem_Free(values) /* Consumes a reference to the keys object */ static PyObject * diff --git a/Objects/listobject.c b/Objects/listobject.c index aac87ea1b61c9..ca9df599a0bd4 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -341,7 +341,7 @@ list_dealloc(PyListObject *op) while (--i >= 0) { Py_XDECREF(op->ob_item[i]); } - PyMem_FREE(op->ob_item); + PyMem_Free(op->ob_item); } struct _Py_list_state *state = get_list_state(); #ifdef Py_DEBUG @@ -592,7 +592,7 @@ _list_clear(PyListObject *a) while (--i >= 0) { Py_XDECREF(item[i]); } - PyMem_FREE(item); + PyMem_Free(item); } /* Never fails; the return value can be ignored. Note that there is no guarantee that the list is actually empty @@ -668,7 +668,7 @@ list_ass_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v) /* If norig == 0, item might be NULL, in which case we may not memcpy from it. */ if (s) { if (s > sizeof(recycle_on_stack)) { - recycle = (PyObject **)PyMem_MALLOC(s); + recycle = (PyObject **)PyMem_Malloc(s); if (recycle == NULL) { PyErr_NoMemory(); goto Error; @@ -706,7 +706,7 @@ list_ass_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v) result = 0; Error: if (recycle != recycle_on_stack) - PyMem_FREE(recycle); + PyMem_Free(recycle); Py_XDECREF(v_as_SF); return result; #undef b @@ -2230,7 +2230,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse) /* Leverage stack space we allocated but won't otherwise use */ keys = &ms.temparray[saved_ob_size+1]; else { - keys = PyMem_MALLOC(sizeof(PyObject *) * saved_ob_size); + keys = PyMem_Malloc(sizeof(PyObject *) * saved_ob_size); if (keys == NULL) { PyErr_NoMemory(); goto keyfunc_fail; @@ -2243,7 +2243,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse) for (i=i-1 ; i>=0 ; i--) Py_DECREF(keys[i]); if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2) - PyMem_FREE(keys); + PyMem_Free(keys); goto keyfunc_fail; } } @@ -2414,7 +2414,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse) for (i = 0; i < saved_ob_size; i++) Py_DECREF(keys[i]); if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2) - PyMem_FREE(keys); + PyMem_Free(keys); } if (self->allocated != -1 && result != NULL) { @@ -2442,7 +2442,7 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse) while (--i >= 0) { Py_XDECREF(final_ob_item[i]); } - PyMem_FREE(final_ob_item); + PyMem_Free(final_ob_item); } Py_XINCREF(result); return result; @@ -2908,7 +2908,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) } garbage = (PyObject**) - PyMem_MALLOC(slicelength*sizeof(PyObject*)); + PyMem_Malloc(slicelength*sizeof(PyObject*)); if (!garbage) { PyErr_NoMemory(); return -1; @@ -2949,7 +2949,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) for (i = 0; i < slicelength; i++) { Py_DECREF(garbage[i]); } - PyMem_FREE(garbage); + PyMem_Free(garbage); return res; } @@ -2990,7 +2990,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) } garbage = (PyObject**) - PyMem_MALLOC(slicelength*sizeof(PyObject*)); + PyMem_Malloc(slicelength*sizeof(PyObject*)); if (!garbage) { Py_DECREF(seq); PyErr_NoMemory(); @@ -3011,7 +3011,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) Py_DECREF(garbage[i]); } - PyMem_FREE(garbage); + PyMem_Free(garbage); Py_DECREF(seq); return 0; diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index c3ceb788e8e69..6590387dac531 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -211,7 +211,7 @@ _PyModule_CreateInitialized(struct PyModuleDef* module, int module_api_version) return NULL; if (module->m_size > 0) { - m->md_state = PyMem_MALLOC(module->m_size); + m->md_state = PyMem_Malloc(module->m_size); if (!m->md_state) { PyErr_NoMemory(); Py_DECREF(m); @@ -377,7 +377,7 @@ PyModule_ExecDef(PyObject *module, PyModuleDef *def) if (md->md_state == NULL) { /* Always set a state pointer; this serves as a marker to skip * multiple initialization (importlib.reload() is no-op) */ - md->md_state = PyMem_MALLOC(def->m_size); + md->md_state = PyMem_Malloc(def->m_size); if (!md->md_state) { PyErr_NoMemory(); return -1; @@ -681,7 +681,7 @@ module_dealloc(PyModuleObject *m) Py_XDECREF(m->md_dict); Py_XDECREF(m->md_name); if (m->md_state != NULL) - PyMem_FREE(m->md_state); + PyMem_Free(m->md_state); Py_TYPE(m)->tp_free((PyObject *)m); } diff --git a/Objects/odictobject.c b/Objects/odictobject.c index b4ac560d23581..83b326b2067a8 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -567,14 +567,14 @@ _odict_resize(PyODictObject *od) i = _odict_get_index_raw(od, _odictnode_KEY(node), _odictnode_HASH(node)); if (i < 0) { - PyMem_FREE(fast_nodes); + PyMem_Free(fast_nodes); return -1; } fast_nodes[i] = node; } /* Replace the old fast nodes table. */ - PyMem_FREE(od->od_fast_nodes); + PyMem_Free(od->od_fast_nodes); od->od_fast_nodes = fast_nodes; od->od_fast_nodes_size = size; od->od_resize_sentinel = ((PyDictObject *)od)->ma_keys; @@ -683,7 +683,7 @@ _odict_add_new_node(PyODictObject *od, PyObject *key, Py_hash_t hash) } /* must not be added yet */ - node = (_ODictNode *)PyMem_MALLOC(sizeof(_ODictNode)); + node = (_ODictNode *)PyMem_Malloc(sizeof(_ODictNode)); if (node == NULL) { Py_DECREF(key); PyErr_NoMemory(); @@ -701,7 +701,7 @@ _odict_add_new_node(PyODictObject *od, PyObject *key, Py_hash_t hash) #define _odictnode_DEALLOC(node) \ do { \ Py_DECREF(_odictnode_KEY(node)); \ - PyMem_FREE((void *)node); \ + PyMem_Free((void *)node); \ } while (0) /* Repeated calls on the same node are no-ops. */ @@ -776,7 +776,7 @@ _odict_clear_nodes(PyODictObject *od) { _ODictNode *node, *next; - PyMem_FREE(od->od_fast_nodes); + PyMem_Free(od->od_fast_nodes); od->od_fast_nodes = NULL; od->od_fast_nodes_size = 0; od->od_resize_sentinel = NULL; diff --git a/Objects/setobject.c b/Objects/setobject.c index af8ee03d831d6..79e84511926e1 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -289,7 +289,7 @@ set_table_resize(PySetObject *so, Py_ssize_t minused) } if (is_oldtable_malloced) - PyMem_DEL(oldtable); + PyMem_Free(oldtable); return 0; } @@ -424,7 +424,7 @@ set_clear_internal(PySetObject *so) } if (table_is_malloced) - PyMem_DEL(table); + PyMem_Free(table); return 0; } @@ -484,7 +484,7 @@ set_dealloc(PySetObject *so) } } if (so->table != so->smalltable) - PyMem_DEL(so->table); + PyMem_Free(so->table); Py_TYPE(so)->tp_free(so); Py_TRASHCAN_END } diff --git a/Objects/stringlib/join.h b/Objects/stringlib/join.h index 53bcbdea7ade9..62e4c98de7f25 100644 --- a/Objects/stringlib/join.h +++ b/Objects/stringlib/join.h @@ -155,7 +155,7 @@ STRINGLIB(bytes_join)(PyObject *sep, PyObject *iterable) for (i = 0; i < nbufs; i++) PyBuffer_Release(&buffers[i]); if (buffers != static_buffers) - PyMem_FREE(buffers); + PyMem_Free(buffers); return res; } diff --git a/Objects/structseq.c b/Objects/structseq.c index bb28e113978b3..5d71fcff3461a 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -467,14 +467,14 @@ PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc) type->tp_members = members; if (PyType_Ready(type) < 0) { - PyMem_FREE(members); + PyMem_Free(members); return -1; } Py_INCREF(type); if (initialize_structseq_dict( desc, type->tp_dict, n_members, n_unnamed_members) < 0) { - PyMem_FREE(members); + PyMem_Free(members); Py_DECREF(type); return -1; } @@ -526,7 +526,7 @@ PyStructSequence_NewType(PyStructSequence_Desc *desc) spec.slots = slots; type = (PyTypeObject *)PyType_FromSpecWithBases(&spec, (PyObject *)&PyTuple_Type); - PyMem_FREE(members); + PyMem_Free(members); if (type == NULL) { return NULL; } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 3a6143a8ad613..fbadd31f1a46c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1779,7 +1779,7 @@ pmerge(PyObject *acc, PyObject **to_merge, Py_ssize_t to_merge_size) } out: - PyMem_Del(remain); + PyMem_Free(remain); return res; } @@ -1859,7 +1859,7 @@ mro_implementation(PyTypeObject *type) result = PyList_New(1); if (result == NULL) { - PyMem_Del(to_merge); + PyMem_Free(to_merge); return NULL; } @@ -1869,7 +1869,7 @@ mro_implementation(PyTypeObject *type) Py_CLEAR(result); } - PyMem_Del(to_merge); + PyMem_Free(to_merge); return result; } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 70688c8c01381..ba6d07a67d2da 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -3298,7 +3298,7 @@ PyUnicode_AsWideCharString(PyObject *unicode, *size = buflen; } else if (wcslen(buffer) != (size_t)buflen) { - PyMem_FREE(buffer); + PyMem_Free(buffer); PyErr_SetString(PyExc_ValueError, "embedded null character"); return NULL; @@ -10211,7 +10211,7 @@ case_operation(PyObject *self, PyErr_SetString(PyExc_OverflowError, "string is too long"); return NULL; } - tmp = PyMem_MALLOC(sizeof(Py_UCS4) * 3 * length); + tmp = PyMem_Malloc(sizeof(Py_UCS4) * 3 * length); if (tmp == NULL) return PyErr_NoMemory(); newlength = perform(kind, data, length, tmp, &maxchar); @@ -10235,7 +10235,7 @@ case_operation(PyObject *self, Py_UNREACHABLE(); } leave: - PyMem_FREE(tmp); + PyMem_Free(tmp); return res; } @@ -11050,11 +11050,11 @@ replace(PyObject *self, PyObject *str1, assert(release1 == (buf1 != PyUnicode_DATA(str1))); assert(release2 == (buf2 != PyUnicode_DATA(str2))); if (srelease) - PyMem_FREE((void *)sbuf); + PyMem_Free((void *)sbuf); if (release1) - PyMem_FREE((void *)buf1); + PyMem_Free((void *)buf1); if (release2) - PyMem_FREE((void *)buf2); + PyMem_Free((void *)buf2); assert(_PyUnicode_CheckConsistency(u, 1)); return u; @@ -11064,11 +11064,11 @@ replace(PyObject *self, PyObject *str1, assert(release1 == (buf1 != PyUnicode_DATA(str1))); assert(release2 == (buf2 != PyUnicode_DATA(str2))); if (srelease) - PyMem_FREE((void *)sbuf); + PyMem_Free((void *)sbuf); if (release1) - PyMem_FREE((void *)buf1); + PyMem_Free((void *)buf1); if (release2) - PyMem_FREE((void *)buf2); + PyMem_Free((void *)buf2); return unicode_result_unchanged(self); error: @@ -11076,11 +11076,11 @@ replace(PyObject *self, PyObject *str1, assert(release1 == (buf1 != PyUnicode_DATA(str1))); assert(release2 == (buf2 != PyUnicode_DATA(str2))); if (srelease) - PyMem_FREE((void *)sbuf); + PyMem_Free((void *)sbuf); if (release1) - PyMem_FREE((void *)buf1); + PyMem_Free((void *)buf1); if (release2) - PyMem_FREE((void *)buf2); + PyMem_Free((void *)buf2); return NULL; } diff --git a/PC/winreg.c b/PC/winreg.c index 78c08693a8ace..fee51ac1bbe0a 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -1818,7 +1818,7 @@ winreg_SetValueEx_impl(PyObject *module, HKEY key, Py_BEGIN_ALLOW_THREADS rc = RegSetValueExW(key, value_name, 0, type, data, len); Py_END_ALLOW_THREADS - PyMem_DEL(data); + PyMem_Free(data); if (rc != ERROR_SUCCESS) return PyErr_SetFromWindowsErrWithFunction(rc, "RegSetValueEx"); diff --git a/Parser/string_parser.c b/Parser/string_parser.c index 8f6433dbcec13..09b8c35106e76 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -384,7 +384,7 @@ fstring_compile_expr(Parser *p, const char *expr_start, const char *expr_end, int lines, cols; if (!fstring_find_expr_location(t, str, &lines, &cols)) { - PyMem_FREE(str); + PyMem_Free(str); return NULL; } diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index f3c1d9b20ade1..96539bd556529 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -51,7 +51,7 @@ static const char* type_comment_prefix = "# type: "; static struct tok_state * tok_new(void) { - struct tok_state *tok = (struct tok_state *)PyMem_MALLOC( + struct tok_state *tok = (struct tok_state *)PyMem_Malloc( sizeof(struct tok_state)); if (tok == NULL) return NULL; @@ -93,7 +93,7 @@ tok_new(void) static char * new_string(const char *s, Py_ssize_t len, struct tok_state *tok) { - char* result = (char *)PyMem_MALLOC(len + 1); + char* result = (char *)PyMem_Malloc(len + 1); if (!result) { tok->done = E_NOMEM; return NULL; @@ -108,7 +108,7 @@ error_ret(struct tok_state *tok) /* XXX */ { tok->decoding_erred = 1; if (tok->fp != NULL && tok->buf != NULL) /* see PyTokenizer_Free */ - PyMem_FREE(tok->buf); + PyMem_Free(tok->buf); tok->buf = tok->cur = tok->inp = NULL; tok->start = NULL; tok->end = NULL; @@ -184,7 +184,7 @@ get_coding_spec(const char *s, char **spec, Py_ssize_t size, struct tok_state *t return 0; q = get_normal_name(r); if (r != q) { - PyMem_FREE(r); + PyMem_Free(r); r = new_string(q, strlen(q), tok); if (!r) return 0; @@ -244,7 +244,7 @@ check_coding_spec(const char* line, Py_ssize_t size, struct tok_state *tok, else { PyErr_Format(PyExc_SyntaxError, "encoding problem: %s", cs); - PyMem_FREE(cs); + PyMem_Free(cs); } } } else { /* then, compare cs with BOM */ @@ -252,7 +252,7 @@ check_coding_spec(const char* line, Py_ssize_t size, struct tok_state *tok, if (!r) PyErr_Format(PyExc_SyntaxError, "encoding problem: %s with BOM", cs); - PyMem_FREE(cs); + PyMem_Free(cs); } return r; } @@ -315,7 +315,7 @@ check_bom(int get_char(struct tok_state *), return 1; } if (tok->encoding != NULL) - PyMem_FREE(tok->encoding); + PyMem_Free(tok->encoding); tok->encoding = new_string("utf-8", 5, tok); if (!tok->encoding) return 0; @@ -620,7 +620,7 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) { size_t needed_length = strlen(s) + 2, final_length; char *buf, *current; char c = '\0'; - buf = PyMem_MALLOC(needed_length); + buf = PyMem_Malloc(needed_length); if (buf == NULL) { tok->done = E_NOMEM; return NULL; @@ -651,9 +651,9 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) { final_length = current - buf + 1; if (final_length < needed_length && final_length) { /* should never fail */ - char* result = PyMem_REALLOC(buf, final_length); + char* result = PyMem_Realloc(buf, final_length); if (result == NULL) { - PyMem_FREE(buf); + PyMem_Free(buf); } buf = result; } @@ -757,7 +757,7 @@ PyTokenizer_FromUTF8(const char *str, int exec_input) tok->read_coding_spec = 1; tok->enc = NULL; tok->str = translated; - tok->encoding = (char *)PyMem_MALLOC(6); + tok->encoding = (char *)PyMem_Malloc(6); if (!tok->encoding) { PyTokenizer_Free(tok); return NULL; @@ -778,7 +778,7 @@ PyTokenizer_FromFile(FILE *fp, const char* enc, struct tok_state *tok = tok_new(); if (tok == NULL) return NULL; - if ((tok->buf = (char *)PyMem_MALLOC(BUFSIZ)) == NULL) { + if ((tok->buf = (char *)PyMem_Malloc(BUFSIZ)) == NULL) { PyTokenizer_Free(tok); return NULL; } @@ -790,7 +790,7 @@ PyTokenizer_FromFile(FILE *fp, const char* enc, if (enc != NULL) { /* Must copy encoding declaration since it gets copied into the parse tree. */ - tok->encoding = PyMem_MALLOC(strlen(enc)+1); + tok->encoding = PyMem_Malloc(strlen(enc)+1); if (!tok->encoding) { PyTokenizer_Free(tok); return NULL; @@ -808,15 +808,15 @@ void PyTokenizer_Free(struct tok_state *tok) { if (tok->encoding != NULL) - PyMem_FREE(tok->encoding); + PyMem_Free(tok->encoding); Py_XDECREF(tok->decoding_readline); Py_XDECREF(tok->decoding_buffer); Py_XDECREF(tok->filename); if (tok->fp != NULL && tok->buf != NULL) - PyMem_FREE(tok->buf); + PyMem_Free(tok->buf); if (tok->input) - PyMem_FREE(tok->input); - PyMem_FREE(tok); + PyMem_Free(tok->input); + PyMem_Free(tok); } /* Get next char, updating state; error code goes into tok->done */ @@ -852,7 +852,7 @@ tok_nextc(struct tok_state *tok) char *newtok = PyOS_Readline(stdin, stdout, tok->prompt); if (newtok != NULL) { char *translated = translate_newlines(newtok, 0, tok); - PyMem_FREE(newtok); + PyMem_Free(newtok); if (translated == NULL) return EOF; newtok = translated; @@ -862,14 +862,14 @@ tok_nextc(struct tok_state *tok) Py_ssize_t buflen; const char* buf; PyObject *u = translate_into_utf8(newtok, tok->encoding); - PyMem_FREE(newtok); + PyMem_Free(newtok); if (!u) { tok->done = E_DECODE; return EOF; } buflen = PyBytes_GET_SIZE(u); buf = PyBytes_AS_STRING(u); - newtok = PyMem_MALLOC(buflen+1); + newtok = PyMem_Malloc(buflen+1); if (newtok == NULL) { Py_DECREF(u); tok->done = E_NOMEM; @@ -883,7 +883,7 @@ tok_nextc(struct tok_state *tok) if (newtok == NULL) tok->done = E_INTR; else if (*newtok == '\0') { - PyMem_FREE(newtok); + PyMem_Free(newtok); tok->done = E_EOF; } else if (tok->start != NULL) { @@ -892,12 +892,12 @@ tok_nextc(struct tok_state *tok) size_t newlen = oldlen + strlen(newtok); Py_ssize_t cur_multi_line_start = tok->multi_line_start - tok->buf; char *buf = tok->buf; - buf = (char *)PyMem_REALLOC(buf, newlen+1); + buf = (char *)PyMem_Realloc(buf, newlen+1); tok->lineno++; if (buf == NULL) { - PyMem_FREE(tok->buf); + PyMem_Free(tok->buf); tok->buf = NULL; - PyMem_FREE(newtok); + PyMem_Free(newtok); tok->done = E_NOMEM; return EOF; } @@ -906,7 +906,7 @@ tok_nextc(struct tok_state *tok) tok->multi_line_start = tok->buf + cur_multi_line_start; tok->line_start = tok->cur; strcpy(tok->buf + oldlen, newtok); - PyMem_FREE(newtok); + PyMem_Free(newtok); tok->inp = tok->buf + newlen; tok->end = tok->inp + 1; tok->start = tok->buf + start; @@ -914,7 +914,7 @@ tok_nextc(struct tok_state *tok) else { tok->lineno++; if (tok->buf != NULL) - PyMem_FREE(tok->buf); + PyMem_Free(tok->buf); tok->buf = newtok; tok->cur = tok->buf; tok->line_start = tok->buf; @@ -929,7 +929,7 @@ tok_nextc(struct tok_state *tok) if (tok->start == NULL) { if (tok->buf == NULL) { tok->buf = (char *) - PyMem_MALLOC(BUFSIZ); + PyMem_Malloc(BUFSIZ); if (tok->buf == NULL) { tok->done = E_NOMEM; return EOF; @@ -966,7 +966,7 @@ tok_nextc(struct tok_state *tok) Py_ssize_t curvalid = tok->inp - tok->buf; Py_ssize_t newsize = curvalid + BUFSIZ; char *newbuf = tok->buf; - newbuf = (char *)PyMem_REALLOC(newbuf, + newbuf = (char *)PyMem_Realloc(newbuf, newsize); if (newbuf == NULL) { tok->done = E_NOMEM; @@ -1851,7 +1851,7 @@ PyTokenizer_Get(struct tok_state *tok, const char **p_start, const char **p_end) encoding in the first or second line of the file (in which case the encoding should be assumed to be UTF-8). - The char* returned is malloc'ed via PyMem_MALLOC() and thus must be freed + The char* returned is malloc'ed via PyMem_Malloc() and thus must be freed by the caller. */ char * @@ -1894,7 +1894,7 @@ PyTokenizer_FindEncodingFilename(int fd, PyObject *filename) } fclose(fp); if (tok->encoding) { - encoding = (char *)PyMem_MALLOC(strlen(tok->encoding) + 1); + encoding = (char *)PyMem_Malloc(strlen(tok->encoding) + 1); if (encoding) strcpy(encoding, tok->encoding); } diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 1ce55b6ec5a1c..a73b8cb320e97 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2089,7 +2089,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt) Py_DECREF(stdin_encoding); Py_DECREF(stdin_errors); Py_XDECREF(po); - PyMem_FREE(s); + PyMem_Free(s); if (result != NULL) { if (PySys_Audit("builtins.input/result", "O", result) < 0) { diff --git a/Python/getargs.c b/Python/getargs.c index c85ff6d4777d2..8839492e5ef41 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -202,7 +202,7 @@ static int cleanup_ptr(PyObject *self, void *ptr) { if (ptr) { - PyMem_FREE(ptr); + PyMem_Free(ptr); } return 0; } @@ -246,7 +246,7 @@ cleanreturn(int retval, freelist_t *freelist) } } if (freelist->entries_malloced) - PyMem_FREE(freelist->entries); + PyMem_Free(freelist->entries); return retval; } diff --git a/Python/marshal.c b/Python/marshal.c index d292987ce05f4..fa4ec9eb605f0 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -638,7 +638,7 @@ r_string(Py_ssize_t n, RFILE *p) return res; } if (p->buf == NULL) { - p->buf = PyMem_MALLOC(n); + p->buf = PyMem_Malloc(n); if (p->buf == NULL) { PyErr_NoMemory(); return NULL; @@ -646,7 +646,7 @@ r_string(Py_ssize_t n, RFILE *p) p->buf_size = n; } else if (p->buf_size < n) { - char *tmp = PyMem_REALLOC(p->buf, n); + char *tmp = PyMem_Realloc(p->buf, n); if (tmp == NULL) { PyErr_NoMemory(); return NULL; @@ -1453,7 +1453,7 @@ PyMarshal_ReadShortFromFile(FILE *fp) rf.buf = NULL; res = r_short(&rf); if (rf.buf != NULL) - PyMem_FREE(rf.buf); + PyMem_Free(rf.buf); return res; } @@ -1468,7 +1468,7 @@ PyMarshal_ReadLongFromFile(FILE *fp) rf.buf = NULL; res = r_long(&rf); if (rf.buf != NULL) - PyMem_FREE(rf.buf); + PyMem_Free(rf.buf); return res; } @@ -1501,11 +1501,11 @@ PyMarshal_ReadLastObjectFromFile(FILE *fp) off_t filesize; filesize = getfilesize(fp); if (filesize > 0 && filesize <= REASONABLE_FILE_LIMIT) { - char* pBuf = (char *)PyMem_MALLOC(filesize); + char* pBuf = (char *)PyMem_Malloc(filesize); if (pBuf != NULL) { size_t n = fread(pBuf, 1, (size_t)filesize, fp); PyObject* v = PyMarshal_ReadObjectFromString(pBuf, n); - PyMem_FREE(pBuf); + PyMem_Free(pBuf); return v; } @@ -1534,7 +1534,7 @@ PyMarshal_ReadObjectFromFile(FILE *fp) result = r_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) - PyMem_FREE(rf.buf); + PyMem_Free(rf.buf); return result; } @@ -1555,7 +1555,7 @@ PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len) result = r_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) - PyMem_FREE(rf.buf); + PyMem_Free(rf.buf); return result; } @@ -1684,7 +1684,7 @@ marshal_load(PyObject *module, PyObject *file) result = read_object(&rf); Py_DECREF(rf.refs); if (rf.buf != NULL) - PyMem_FREE(rf.buf); + PyMem_Free(rf.buf); } else result = NULL; } diff --git a/Python/pystrtod.c b/Python/pystrtod.c index 1c8202c776188..9145d4eba121e 100644 --- a/Python/pystrtod.c +++ b/Python/pystrtod.c @@ -255,7 +255,7 @@ _PyOS_ascii_strtod(const char *nptr, char **endptr) char *copy, *c; /* Create a copy of the input, with the '.' converted to the locale-specific decimal point */ - copy = (char *)PyMem_MALLOC(end - digits_pos + + copy = (char *)PyMem_Malloc(end - digits_pos + 1 + decimal_point_len); if (copy == NULL) { *endptr = (char *)nptr; @@ -286,7 +286,7 @@ _PyOS_ascii_strtod(const char *nptr, char **endptr) (fail_pos - copy); } - PyMem_FREE(copy); + PyMem_Free(copy); } else { diff --git a/Python/traceback.c b/Python/traceback.c index 99b63af11f8be..708678facf7c3 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -419,12 +419,12 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) if (lseek(fd, 0, SEEK_SET) == (off_t)-1) { Py_DECREF(io); Py_DECREF(binary); - PyMem_FREE(found_encoding); + PyMem_Free(found_encoding); return 0; } fob = _PyObject_CallMethodId(io, &PyId_TextIOWrapper, "Os", binary, encoding); Py_DECREF(io); - PyMem_FREE(found_encoding); + PyMem_Free(found_encoding); if (fob == NULL) { PyErr_Clear(); From webhook-mailer at python.org Tue Dec 1 04:37:48 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Dec 2020 09:37:48 -0000 Subject: [Python-checkins] bpo-42519: Replace PyObject_MALLOC() with PyObject_Malloc() (GH-23587) Message-ID: https://github.com/python/cpython/commit/32bd68c839adb7b42af12366ab0892303115d1d1 commit: 32bd68c839adb7b42af12366ab0892303115d1d1 branch: master author: Victor Stinner committer: vstinner date: 2020-12-01T10:37:39+01:00 summary: bpo-42519: Replace PyObject_MALLOC() with PyObject_Malloc() (GH-23587) No longer use deprecated aliases to functions: * Replace PyObject_MALLOC() with PyObject_Malloc() * Replace PyObject_REALLOC() with PyObject_Realloc() * Replace PyObject_FREE() with PyObject_Free() * Replace PyObject_Del() with PyObject_Free() * Replace PyObject_DEL() with PyObject_Free() files: M Include/objimpl.h M Include/pymem.h M Modules/_blake2/blake2b_impl.c M Modules/_blake2/blake2s_impl.c M Modules/_ctypes/callproc.c M Modules/_curses_panel.c M Modules/_cursesmodule.c M Modules/_decimal/_decimal.c M Modules/_functoolsmodule.c M Modules/_hashopenssl.c M Modules/_multiprocessing/semaphore.c M Modules/_pickle.c M Modules/_sha3/sha3module.c M Modules/_sre.c M Modules/_ssl.c M Modules/_testbuffer.c M Modules/_testcapimodule.c M Modules/_threadmodule.c M Modules/_tkinter.c M Modules/cjkcodecs/multibytecodec.c M Modules/gcmodule.c M Modules/md5module.c M Modules/ossaudiodev.c M Modules/overlapped.c M Modules/selectmodule.c M Modules/sha1module.c M Modules/sha256module.c M Modules/sha512module.c M Modules/sre_lib.h M Modules/unicodedata.c M Modules/xxmodule.c M Modules/zlibmodule.c M Objects/bytesobject.c M Objects/capsule.c M Objects/codeobject.c M Objects/complexobject.c M Objects/dictobject.c M Objects/floatobject.c M Objects/longobject.c M Objects/object.c M Objects/odictobject.c M Objects/rangeobject.c M Objects/stringlib/unicode_format.h M Objects/typeobject.c M Objects/unicodeobject.c M PC/_msi.c M PC/winreg.c M Python/symtable.c diff --git a/Include/objimpl.h b/Include/objimpl.h index 464b1bf93ba2c..1408d051ba7ef 100644 --- a/Include/objimpl.h +++ b/Include/objimpl.h @@ -38,7 +38,7 @@ Functions and macros for modules that implement new object types. object with room for n items. In addition to the refcount and type pointer fields, this also fills in the ob_size field. - - PyObject_Del(op) releases the memory allocated for an object. It does not + - PyObject_Free(op) releases the memory allocated for an object. It does not run a destructor -- it only frees the memory. PyObject_Free is identical. - PyObject_Init(op, typeobj) and PyObject_InitVar(op, typeobj, n) don't @@ -103,6 +103,8 @@ PyAPI_FUNC(void) PyObject_Free(void *ptr); // Deprecated aliases only kept for backward compatibility. +// PyObject_Del and PyObject_DEL are defined with no parameter to be able to +// use them as function pointers (ex: tp_free = PyObject_Del). #define PyObject_MALLOC PyObject_Malloc #define PyObject_REALLOC PyObject_Realloc #define PyObject_FREE PyObject_Free diff --git a/Include/pymem.h b/Include/pymem.h index 5b9dd4219948a..92cd5369589ed 100644 --- a/Include/pymem.h +++ b/Include/pymem.h @@ -79,13 +79,15 @@ PyAPI_FUNC(void) PyMem_Free(void *ptr); // Deprecated aliases only kept for backward compatibility. +// PyMem_Del and PyMem_DEL are defined with no parameter to be able to use +// them as function pointers (ex: dealloc = PyMem_Del). #define PyMem_MALLOC(n) PyMem_Malloc(n) #define PyMem_NEW(type, n) PyMem_New(type, n) #define PyMem_REALLOC(p, n) PyMem_Realloc(p, n) #define PyMem_RESIZE(p, type, n) PyMem_Resize(p, type, n) #define PyMem_FREE(p) PyMem_Free(p) -#define PyMem_Del(p) PyMem_Free(p) -#define PyMem_DEL(p) PyMem_Free(p) +#define PyMem_Del PyMem_Free +#define PyMem_DEL PyMem_Free #ifndef Py_LIMITED_API diff --git a/Modules/_blake2/blake2b_impl.c b/Modules/_blake2/blake2b_impl.c index 8e1acce56b1d2..5d108ed008a8a 100644 --- a/Modules/_blake2/blake2b_impl.c +++ b/Modules/_blake2/blake2b_impl.c @@ -393,7 +393,7 @@ py_blake2b_dealloc(PyObject *self) } PyTypeObject *type = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(type); } diff --git a/Modules/_blake2/blake2s_impl.c b/Modules/_blake2/blake2s_impl.c index e1de5df37d098..85c2d4edad7ee 100644 --- a/Modules/_blake2/blake2s_impl.c +++ b/Modules/_blake2/blake2s_impl.c @@ -392,7 +392,7 @@ py_blake2s_dealloc(PyObject *self) } PyTypeObject *type = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(type); } diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 9b629877a8a53..40a05a44edd4c 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -475,7 +475,7 @@ static void PyCArg_dealloc(PyCArgObject *self) { Py_XDECREF(self->obj); - PyObject_Del(self); + PyObject_Free(self); } static int diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c index 1a8f0b636821f..7d252244e2405 100644 --- a/Modules/_curses_panel.c +++ b/Modules/_curses_panel.c @@ -282,7 +282,7 @@ PyCursesPanel_Dealloc(PyCursesPanelObject *po) Py_DECREF(po->wo); remove_lop(po); } - PyObject_DEL(po); + PyObject_Free(po); Py_DECREF(tp); } diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index a59858632e76f..1f4789baf7a68 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -689,7 +689,7 @@ PyCursesWindow_Dealloc(PyCursesWindowObject *wo) if (wo->win != stdscr) delwin(wo->win); if (wo->encoding != NULL) PyMem_Free(wo->encoding); - PyObject_DEL(wo); + PyObject_Free(wo); } /* Addch, Addstr, Addnstr */ diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index ea16c5a6cd9cd..9c85d76c6b5b8 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -1765,7 +1765,7 @@ ctxmanager_dealloc(PyDecContextManagerObject *self) { Py_XDECREF(self->local); Py_XDECREF(self->global); - PyObject_Del(self); + PyObject_Free(self); } static PyObject * diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index 9fad21fc33213..ff03c334766b8 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -478,7 +478,7 @@ keyobject_dealloc(keyobject *ko) { Py_DECREF(ko->cmp); Py_XDECREF(ko->object); - PyObject_FREE(ko); + PyObject_Free(ko); } static int @@ -742,7 +742,7 @@ lru_list_elem_dealloc(lru_list_elem *link) { Py_XDECREF(link->key); Py_XDECREF(link->result); - PyObject_Del(link); + PyObject_Free(link); } static PyTypeObject lru_list_elem_type = { diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 7e176cf21d629..d4295d7c3638d 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -341,7 +341,7 @@ EVP_dealloc(EVPobject *self) if (self->lock != NULL) PyThread_free_lock(self->lock); EVP_MD_CTX_free(self->ctx); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -1453,7 +1453,7 @@ _hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj, error: if (ctx) HMAC_CTX_free(ctx); - if (self) PyObject_Del(self); + if (self) PyObject_Free(self); return NULL; } @@ -1546,7 +1546,7 @@ _hmac_dealloc(HMACobject *self) PyThread_free_lock(self->lock); } HMAC_CTX_free(self->ctx); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/_multiprocessing/semaphore.c b/Modules/_multiprocessing/semaphore.c index 8732750e11be8..9a2d1f85c92fa 100644 --- a/Modules/_multiprocessing/semaphore.c +++ b/Modules/_multiprocessing/semaphore.c @@ -571,7 +571,7 @@ semlock_dealloc(SemLockObject* self) if (self->handle != SEM_FAILED) SEM_CLOSE(self->handle); PyMem_Free(self->name); - PyObject_Del(self); + PyObject_Free(self); } /*[clinic input] diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 7ecaeea18c611..5a8aad9de7679 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -443,7 +443,7 @@ Pdata_dealloc(Pdata *self) Py_DECREF(self->data[i]); } PyMem_Free(self->data); - PyObject_Del(self); + PyObject_Free(self); } static PyTypeObject Pdata_Type = { diff --git a/Modules/_sha3/sha3module.c b/Modules/_sha3/sha3module.c index da6dde6812f26..cae10f99d5b8d 100644 --- a/Modules/_sha3/sha3module.c +++ b/Modules/_sha3/sha3module.c @@ -274,7 +274,7 @@ SHA3_dealloc(SHA3object *self) } PyTypeObject *tp = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/_sre.c b/Modules/_sre.c index c67f38d75b809..57faf7bdaae4e 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -571,7 +571,7 @@ pattern_dealloc(PatternObject* self) Py_XDECREF(self->pattern); Py_XDECREF(self->groupindex); Py_XDECREF(self->indexgroup); - PyObject_DEL(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -1944,7 +1944,7 @@ match_dealloc(MatchObject* self) Py_XDECREF(self->regs); Py_XDECREF(self->string); Py_DECREF(self->pattern); - PyObject_DEL(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -2450,7 +2450,7 @@ scanner_dealloc(ScannerObject* self) state_fini(&self->state); Py_XDECREF(self->pattern); - PyObject_DEL(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 87fe3a16078fa..edb850ee46103 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -2295,7 +2295,7 @@ PySSL_dealloc(PySSLSocket *self) Py_XDECREF(self->ctx); Py_XDECREF(self->server_hostname); Py_XDECREF(self->owner); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/_testbuffer.c b/Modules/_testbuffer.c index d8321768bc972..1b4fb09fb8fbc 100644 --- a/Modules/_testbuffer.c +++ b/Modules/_testbuffer.c @@ -236,7 +236,7 @@ ndarray_dealloc(NDArrayObject *self) ndbuf_pop(self); } } - PyObject_Del(self); + PyObject_Free(self); } static int @@ -2734,7 +2734,7 @@ staticarray_init(PyObject *self, PyObject *args, PyObject *kwds) static void staticarray_dealloc(StaticArrayObject *self) { - PyObject_Del(self); + PyObject_Free(self); } /* Return a buffer for a PyBUF_FULL_RO request. Flags are not checked, diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 916d10a1e413b..d2104423c5890 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -6010,7 +6010,7 @@ test_structmembers_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) static void test_structmembers_free(PyObject *ob) { - PyObject_FREE(ob); + PyObject_Free(ob); } static PyTypeObject test_structmembersType = { @@ -6664,7 +6664,7 @@ static void heapctype_dealloc(HeapCTypeObject *self) { PyTypeObject *tp = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -6854,7 +6854,7 @@ heapctypewithdict_dealloc(HeapCTypeWithDictObject* self) PyTypeObject *tp = Py_TYPE(self); Py_XDECREF(self->dict); - PyObject_DEL(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -6925,7 +6925,7 @@ heapctypewithweakref_dealloc(HeapCTypeWithWeakrefObject* self) if (self->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *) self); Py_XDECREF(self->weakreflist); - PyObject_DEL(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -6968,7 +6968,7 @@ static void heapctypesetattr_dealloc(HeapCTypeSetattrObject *self) { PyTypeObject *tp = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index dcefa8dbaa91b..86d5f544fcf0f 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -34,7 +34,7 @@ lock_dealloc(lockobject *self) PyThread_release_lock(self->lock_lock); PyThread_free_lock(self->lock_lock); } - PyObject_Del(self); + PyObject_Free(self); } /* Helper to acquire an interruptible lock with a timeout. If the lock acquire diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 24aeb3da94c70..46d6a6e0954f5 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -904,7 +904,7 @@ PyTclObject_dealloc(PyTclObject *self) PyObject *tp = (PyObject *) Py_TYPE(self); Tcl_DecrRefCount(self->value); Py_XDECREF(self->string); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -2823,7 +2823,7 @@ Tktt_Dealloc(PyObject *self) Py_XDECREF(func); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } @@ -3096,7 +3096,7 @@ Tkapp_Dealloc(PyObject *self) ENTER_TCL Tcl_DeleteInterp(Tkapp_Interp(self)); LEAVE_TCL - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); DisableEventHook(); } diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 37a80a781da6f..9208b86b0c905 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -691,7 +691,7 @@ static struct PyMethodDef multibytecodec_methods[] = { static void multibytecodec_dealloc(MultibyteCodecObject *self) { - PyObject_Del(self); + PyObject_Free(self); } static PyTypeObject MultibyteCodec_Type = { diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 45201435f2460..fdbba6a7afc29 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -2290,7 +2290,7 @@ _PyObject_GC_Resize(PyVarObject *op, Py_ssize_t nitems) } PyGC_Head *g = AS_GC(op); - g = (PyGC_Head *)PyObject_REALLOC(g, sizeof(PyGC_Head) + basicsize); + g = (PyGC_Head *)PyObject_Realloc(g, sizeof(PyGC_Head) + basicsize); if (g == NULL) return (PyVarObject *)PyErr_NoMemory(); op = (PyVarObject *) FROM_GC(g); @@ -2309,7 +2309,7 @@ PyObject_GC_Del(void *op) if (gcstate->generations[0].count > 0) { gcstate->generations[0].count--; } - PyObject_FREE(g); + PyObject_Free(g); } int diff --git a/Modules/md5module.c b/Modules/md5module.c index 9bd2bd17e4fbf..1c401e884389f 100644 --- a/Modules/md5module.c +++ b/Modules/md5module.c @@ -342,7 +342,7 @@ static void MD5_dealloc(PyObject *ptr) { PyTypeObject *tp = Py_TYPE(ptr); - PyObject_Del(ptr); + PyObject_Free(ptr); Py_DECREF(tp); } diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index 2a1ac10814a69..4f2d9cb8b7c9c 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -154,7 +154,7 @@ oss_dealloc(oss_audio_t *self) /* if already closed, don't reclose it */ if (self->fd != -1) close(self->fd); - PyObject_Del(self); + PyObject_Free(self); } @@ -199,7 +199,7 @@ oss_mixer_dealloc(oss_mixer_t *self) /* if already closed, don't reclose it */ if (self->fd != -1) close(self->fd); - PyObject_Del(self); + PyObject_Free(self); } diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 3829932070a96..38dd98f084849 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -722,7 +722,7 @@ Overlapped_dealloc(OverlappedObject *self) SetLastError(olderr); PyTypeObject *tp = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index 0b9f20d6bbd9d..f80da5895401f 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -742,7 +742,7 @@ poll_dealloc(pollObject *self) if (self->ufds != NULL) PyMem_Free(self->ufds); Py_XDECREF(self->dict); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(type); } @@ -1130,7 +1130,7 @@ devpoll_dealloc(devpollObject *self) PyObject *type = (PyObject *)Py_TYPE(self); (void)devpoll_internal_close(self); PyMem_Free(self->fds); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(type); } diff --git a/Modules/sha1module.c b/Modules/sha1module.c index c22437de256b6..5209857041d90 100644 --- a/Modules/sha1module.c +++ b/Modules/sha1module.c @@ -320,7 +320,7 @@ static void SHA1_dealloc(PyObject *ptr) { PyTypeObject *tp = Py_TYPE(ptr); - PyObject_Del(ptr); + PyObject_Free(ptr); Py_DECREF(tp); } diff --git a/Modules/sha256module.c b/Modules/sha256module.c index edd4d010928f3..6b8bd8f1d27fb 100644 --- a/Modules/sha256module.c +++ b/Modules/sha256module.c @@ -397,7 +397,7 @@ static void SHA_dealloc(PyObject *ptr) { PyTypeObject *tp = Py_TYPE(ptr); - PyObject_Del(ptr); + PyObject_Free(ptr); Py_DECREF(tp); } diff --git a/Modules/sha512module.c b/Modules/sha512module.c index 725098def4d06..3fd9fa4c8d16f 100644 --- a/Modules/sha512module.c +++ b/Modules/sha512module.c @@ -453,7 +453,7 @@ static void SHA512_dealloc(PyObject *ptr) { PyTypeObject *tp = Py_TYPE(ptr); - PyObject_Del(ptr); + PyObject_Free(ptr); Py_DECREF(tp); } diff --git a/Modules/sre_lib.h b/Modules/sre_lib.h index cfe0a4af2c483..322f66fb4da6c 100644 --- a/Modules/sre_lib.h +++ b/Modules/sre_lib.h @@ -986,7 +986,7 @@ SRE(match)(SRE_STATE* state, const SRE_CODE* pattern, int toplevel) ctx->pattern[1], ctx->pattern[2])); /* install new repeat context */ - ctx->u.rep = (SRE_REPEAT*) PyObject_MALLOC(sizeof(*ctx->u.rep)); + ctx->u.rep = (SRE_REPEAT*) PyObject_Malloc(sizeof(*ctx->u.rep)); if (!ctx->u.rep) { PyErr_NoMemory(); RETURN_FAILURE; @@ -1000,7 +1000,7 @@ SRE(match)(SRE_STATE* state, const SRE_CODE* pattern, int toplevel) state->ptr = ctx->ptr; DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]); state->repeat = ctx->u.rep->prev; - PyObject_FREE(ctx->u.rep); + PyObject_Free(ctx->u.rep); if (ret) { RETURN_ON_ERROR(ret); diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c index fcf801dc9e4ad..4b8c46c779766 100644 --- a/Modules/unicodedata.c +++ b/Modules/unicodedata.c @@ -1418,7 +1418,7 @@ static void ucd_dealloc(PreviousDBVersion *self) { PyTypeObject *tp = Py_TYPE(self); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(tp); } diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c index 17b049c4b9a37..edcd62157c02f 100644 --- a/Modules/xxmodule.c +++ b/Modules/xxmodule.c @@ -44,7 +44,7 @@ static void Xxo_dealloc(XxoObject *self) { Py_XDECREF(self->x_attr); - PyObject_Del(self); + PyObject_Free(self); } static PyObject * diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index def617671f18f..a537087d19d83 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -591,7 +591,7 @@ Dealloc(compobject *self) Py_XDECREF(self->unused_data); Py_XDECREF(self->unconsumed_tail); Py_XDECREF(self->zdict); - PyObject_Del(self); + PyObject_Free(self); Py_DECREF(type); } diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index bb844090b8622..13216b9bb21a5 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -198,7 +198,7 @@ PyBytes_FromString(const char *str) } /* Inline PyObject_NewVar */ - op = (PyBytesObject *)PyObject_MALLOC(PyBytesObject_SIZE + size); + op = (PyBytesObject *)PyObject_Malloc(PyBytesObject_SIZE + size); if (op == NULL) { return PyErr_NoMemory(); } @@ -1475,7 +1475,7 @@ bytes_repeat(PyBytesObject *a, Py_ssize_t n) "repeated bytes are too long"); return NULL; } - op = (PyBytesObject *)PyObject_MALLOC(PyBytesObject_SIZE + nbytes); + op = (PyBytesObject *)PyObject_Malloc(PyBytesObject_SIZE + nbytes); if (op == NULL) { return PyErr_NoMemory(); } @@ -3054,9 +3054,9 @@ _PyBytes_Resize(PyObject **pv, Py_ssize_t newsize) _Py_ForgetReference(v); #endif *pv = (PyObject *) - PyObject_REALLOC(v, PyBytesObject_SIZE + newsize); + PyObject_Realloc(v, PyBytesObject_SIZE + newsize); if (*pv == NULL) { - PyObject_Del(v); + PyObject_Free(v); PyErr_NoMemory(); return -1; } diff --git a/Objects/capsule.c b/Objects/capsule.c index a2ff642526cd0..800a6c4b25c6d 100644 --- a/Objects/capsule.c +++ b/Objects/capsule.c @@ -260,7 +260,7 @@ capsule_dealloc(PyObject *o) if (capsule->destructor) { capsule->destructor(o); } - PyObject_DEL(o); + PyObject_Free(o); } diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 0257295f1e996..0b0b8f98ae4f3 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -669,7 +669,7 @@ code_dealloc(PyCodeObject *co) PyObject_GC_Del(co->co_zombieframe); if (co->co_weakreflist != NULL) PyObject_ClearWeakRefs((PyObject*)co); - PyObject_DEL(co); + PyObject_Free(co); } static PyObject * diff --git a/Objects/complexobject.c b/Objects/complexobject.c index a481d9ad8bbaa..a65ebdfa6cdf9 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -233,7 +233,7 @@ PyObject * PyComplex_FromCComplex(Py_complex cval) { /* Inline PyObject_New */ - PyComplexObject *op = PyObject_MALLOC(sizeof(PyComplexObject)); + PyComplexObject *op = PyObject_Malloc(sizeof(PyComplexObject)); if (op == NULL) { return PyErr_NoMemory(); } diff --git a/Objects/dictobject.c b/Objects/dictobject.c index ee1a9d1d7e71e..7a37313df8a6b 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -269,7 +269,7 @@ _PyDict_ClearFreeList(PyThreadState *tstate) PyObject_GC_Del(op); } while (state->keys_numfree) { - PyObject_FREE(state->keys_free_list[--state->keys_numfree]); + PyObject_Free(state->keys_free_list[--state->keys_numfree]); } } @@ -597,7 +597,7 @@ new_keys_object(Py_ssize_t size) } else { - dk = PyObject_MALLOC(sizeof(PyDictKeysObject) + dk = PyObject_Malloc(sizeof(PyDictKeysObject) + es * size + sizeof(PyDictKeyEntry) * usable); if (dk == NULL) { @@ -636,7 +636,7 @@ free_keys_object(PyDictKeysObject *keys) state->keys_free_list[state->keys_numfree++] = keys; return; } - PyObject_FREE(keys); + PyObject_Free(keys); } #define new_values(size) PyMem_NEW(PyObject *, size) @@ -1303,7 +1303,7 @@ dictresize(PyDictObject *mp, Py_ssize_t newsize) state->keys_free_list[state->keys_numfree++] = oldkeys; } else { - PyObject_FREE(oldkeys); + PyObject_Free(oldkeys); } } diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 1550b2eedc862..34fb57a946afa 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -237,7 +237,7 @@ float_dealloc(PyFloatObject *op) assert(state->numfree != -1); #endif if (state->numfree >= PyFloat_MAXFREELIST) { - PyObject_FREE(op); + PyObject_Free(op); return; } state->numfree++; @@ -2032,7 +2032,7 @@ _PyFloat_ClearFreeList(PyThreadState *tstate) PyFloatObject *f = state->free_list; while (f != NULL) { PyFloatObject *next = (PyFloatObject*) Py_TYPE(f); - PyObject_FREE(f); + PyObject_Free(f); f = next; } state->free_list = NULL; diff --git a/Objects/longobject.c b/Objects/longobject.c index e0d6410fe6818..240e92a41e0ec 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -131,7 +131,7 @@ _PyLong_New(Py_ssize_t size) "too many digits in integer"); return NULL; } - result = PyObject_MALLOC(offsetof(PyLongObject, ob_digit) + + result = PyObject_Malloc(offsetof(PyLongObject, ob_digit) + size*sizeof(digit)); if (!result) { PyErr_NoMemory(); diff --git a/Objects/object.c b/Objects/object.c index 2e8717f506ca0..0a8621b3503b3 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -161,7 +161,7 @@ PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, Py_ssize_t size) PyObject * _PyObject_New(PyTypeObject *tp) { - PyObject *op = (PyObject *) PyObject_MALLOC(_PyObject_SIZE(tp)); + PyObject *op = (PyObject *) PyObject_Malloc(_PyObject_SIZE(tp)); if (op == NULL) { return PyErr_NoMemory(); } @@ -174,7 +174,7 @@ _PyObject_NewVar(PyTypeObject *tp, Py_ssize_t nitems) { PyVarObject *op; const size_t size = _PyObject_VAR_SIZE(tp, nitems); - op = (PyVarObject *) PyObject_MALLOC(size); + op = (PyVarObject *) PyObject_Malloc(size); if (op == NULL) { return (PyVarObject *)PyErr_NoMemory(); } diff --git a/Objects/odictobject.c b/Objects/odictobject.c index 83b326b2067a8..4eb15f999bd1e 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -459,7 +459,7 @@ Potential Optimizations - implement a fuller MutableMapping API in C? - move the MutableMapping implementation to abstract.c? - optimize mutablemapping_update -- use PyObject_MALLOC (small object allocator) for odict nodes? +- use PyObject_Malloc (small object allocator) for odict nodes? - support subclasses better (e.g. in odict_richcompare) */ diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index 787d1138009a0..530426c8ac904 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -171,7 +171,7 @@ range_dealloc(rangeobject *r) Py_DECREF(r->stop); Py_DECREF(r->step); Py_DECREF(r->length); - PyObject_Del(r); + PyObject_Free(r); } /* Return number of items in range (lo, hi, step) as a PyLong object, @@ -1021,7 +1021,7 @@ longrangeiter_dealloc(longrangeiterobject *r) Py_XDECREF(r->start); Py_XDECREF(r->step); Py_XDECREF(r->len); - PyObject_Del(r); + PyObject_Free(r); } static PyObject * diff --git a/Objects/stringlib/unicode_format.h b/Objects/stringlib/unicode_format.h index b526ad21b8205..7152ec6ebe712 100644 --- a/Objects/stringlib/unicode_format.h +++ b/Objects/stringlib/unicode_format.h @@ -983,7 +983,7 @@ static void formatteriter_dealloc(formatteriterobject *it) { Py_XDECREF(it->str); - PyObject_FREE(it); + PyObject_Free(it); } /* returns a tuple: @@ -1147,7 +1147,7 @@ static void fieldnameiter_dealloc(fieldnameiterobject *it) { Py_XDECREF(it->str); - PyObject_FREE(it); + PyObject_Free(it); } /* returns a tuple: diff --git a/Objects/typeobject.c b/Objects/typeobject.c index fbadd31f1a46c..83bc877eb7d05 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1059,7 +1059,7 @@ PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems) obj = _PyObject_GC_Malloc(size); } else { - obj = (PyObject *)PyObject_MALLOC(size); + obj = (PyObject *)PyObject_Malloc(size); } if (obj == NULL) { @@ -2707,7 +2707,7 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds) goto error; /* Silently truncate the docstring if it contains null bytes. */ len = strlen(doc_str); - tp_doc = (char *)PyObject_MALLOC(len + 1); + tp_doc = (char *)PyObject_Malloc(len + 1); if (tp_doc == NULL) { PyErr_NoMemory(); goto error; @@ -3047,7 +3047,7 @@ PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) continue; } size_t len = strlen(slot->pfunc)+1; - char *tp_doc = PyObject_MALLOC(len); + char *tp_doc = PyObject_Malloc(len); if (tp_doc == NULL) { type->tp_doc = NULL; PyErr_NoMemory(); diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index ba6d07a67d2da..f6473c02d30fd 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1061,7 +1061,7 @@ resize_compact(PyObject *unicode, Py_ssize_t length) new_size = (struct_size + (length + 1) * char_size); if (_PyUnicode_HAS_UTF8_MEMORY(unicode)) { - PyObject_DEL(_PyUnicode_UTF8(unicode)); + PyObject_Free(_PyUnicode_UTF8(unicode)); _PyUnicode_UTF8(unicode) = NULL; _PyUnicode_UTF8_LENGTH(unicode) = 0; } @@ -1072,7 +1072,7 @@ resize_compact(PyObject *unicode, Py_ssize_t length) _Py_ForgetReference(unicode); #endif - new_unicode = (PyObject *)PyObject_REALLOC(unicode, new_size); + new_unicode = (PyObject *)PyObject_Realloc(unicode, new_size); if (new_unicode == NULL) { _Py_NewReference(unicode); PyErr_NoMemory(); @@ -1088,7 +1088,7 @@ resize_compact(PyObject *unicode, Py_ssize_t length) _PyUnicode_WSTR_LENGTH(unicode) = length; } else if (_PyUnicode_HAS_WSTR_MEMORY(unicode)) { - PyObject_DEL(_PyUnicode_WSTR(unicode)); + PyObject_Free(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; if (!PyUnicode_IS_ASCII(unicode)) _PyUnicode_WSTR_LENGTH(unicode) = 0; @@ -1131,12 +1131,12 @@ resize_inplace(PyObject *unicode, Py_ssize_t length) if (!share_utf8 && _PyUnicode_HAS_UTF8_MEMORY(unicode)) { - PyObject_DEL(_PyUnicode_UTF8(unicode)); + PyObject_Free(_PyUnicode_UTF8(unicode)); _PyUnicode_UTF8(unicode) = NULL; _PyUnicode_UTF8_LENGTH(unicode) = 0; } - data = (PyObject *)PyObject_REALLOC(data, new_size); + data = (PyObject *)PyObject_Realloc(data, new_size); if (data == NULL) { PyErr_NoMemory(); return -1; @@ -1169,7 +1169,7 @@ resize_inplace(PyObject *unicode, Py_ssize_t length) } new_size = sizeof(wchar_t) * (length + 1); wstr = _PyUnicode_WSTR(unicode); - wstr = PyObject_REALLOC(wstr, new_size); + wstr = PyObject_Realloc(wstr, new_size); if (!wstr) { PyErr_NoMemory(); return -1; @@ -1259,7 +1259,7 @@ _PyUnicode_New(Py_ssize_t length) _PyUnicode_UTF8(unicode) = NULL; _PyUnicode_UTF8_LENGTH(unicode) = 0; - _PyUnicode_WSTR(unicode) = (Py_UNICODE*) PyObject_MALLOC(new_size); + _PyUnicode_WSTR(unicode) = (Py_UNICODE*) PyObject_Malloc(new_size); if (!_PyUnicode_WSTR(unicode)) { Py_DECREF(unicode); PyErr_NoMemory(); @@ -1456,7 +1456,7 @@ PyUnicode_New(Py_ssize_t size, Py_UCS4 maxchar) * PyObject_New() so we are able to allocate space for the object and * it's data buffer. */ - obj = (PyObject *) PyObject_MALLOC(struct_size + (size + 1) * char_size); + obj = (PyObject *) PyObject_Malloc(struct_size + (size + 1) * char_size); if (obj == NULL) { return PyErr_NoMemory(); } @@ -1838,7 +1838,7 @@ _PyUnicode_Ready(PyObject *unicode) return -1; if (maxchar < 256) { - _PyUnicode_DATA_ANY(unicode) = PyObject_MALLOC(_PyUnicode_WSTR_LENGTH(unicode) + 1); + _PyUnicode_DATA_ANY(unicode) = PyObject_Malloc(_PyUnicode_WSTR_LENGTH(unicode) + 1); if (!_PyUnicode_DATA_ANY(unicode)) { PyErr_NoMemory(); return -1; @@ -1859,7 +1859,7 @@ _PyUnicode_Ready(PyObject *unicode) _PyUnicode_UTF8(unicode) = NULL; _PyUnicode_UTF8_LENGTH(unicode) = 0; } - PyObject_FREE(_PyUnicode_WSTR(unicode)); + PyObject_Free(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; _PyUnicode_WSTR_LENGTH(unicode) = 0; } @@ -1879,7 +1879,7 @@ _PyUnicode_Ready(PyObject *unicode) _PyUnicode_UTF8_LENGTH(unicode) = 0; #else /* sizeof(wchar_t) == 4 */ - _PyUnicode_DATA_ANY(unicode) = PyObject_MALLOC( + _PyUnicode_DATA_ANY(unicode) = PyObject_Malloc( 2 * (_PyUnicode_WSTR_LENGTH(unicode) + 1)); if (!_PyUnicode_DATA_ANY(unicode)) { PyErr_NoMemory(); @@ -1893,7 +1893,7 @@ _PyUnicode_Ready(PyObject *unicode) _PyUnicode_STATE(unicode).kind = PyUnicode_2BYTE_KIND; _PyUnicode_UTF8(unicode) = NULL; _PyUnicode_UTF8_LENGTH(unicode) = 0; - PyObject_FREE(_PyUnicode_WSTR(unicode)); + PyObject_Free(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; _PyUnicode_WSTR_LENGTH(unicode) = 0; #endif @@ -1908,7 +1908,7 @@ _PyUnicode_Ready(PyObject *unicode) PyErr_NoMemory(); return -1; } - _PyUnicode_DATA_ANY(unicode) = PyObject_MALLOC(4 * (length_wo_surrogates + 1)); + _PyUnicode_DATA_ANY(unicode) = PyObject_Malloc(4 * (length_wo_surrogates + 1)); if (!_PyUnicode_DATA_ANY(unicode)) { PyErr_NoMemory(); return -1; @@ -1920,7 +1920,7 @@ _PyUnicode_Ready(PyObject *unicode) /* unicode_convert_wchar_to_ucs4() requires a ready string */ _PyUnicode_STATE(unicode).ready = 1; unicode_convert_wchar_to_ucs4(_PyUnicode_WSTR(unicode), end, unicode); - PyObject_FREE(_PyUnicode_WSTR(unicode)); + PyObject_Free(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; _PyUnicode_WSTR_LENGTH(unicode) = 0; #else @@ -1973,13 +1973,13 @@ unicode_dealloc(PyObject *unicode) } if (_PyUnicode_HAS_WSTR_MEMORY(unicode)) { - PyObject_DEL(_PyUnicode_WSTR(unicode)); + PyObject_Free(_PyUnicode_WSTR(unicode)); } if (_PyUnicode_HAS_UTF8_MEMORY(unicode)) { - PyObject_DEL(_PyUnicode_UTF8(unicode)); + PyObject_Free(_PyUnicode_UTF8(unicode)); } if (!PyUnicode_IS_COMPACT(unicode) && _PyUnicode_DATA_ANY(unicode)) { - PyObject_DEL(_PyUnicode_DATA_ANY(unicode)); + PyObject_Free(_PyUnicode_DATA_ANY(unicode)); } Py_TYPE(unicode)->tp_free(unicode); @@ -4199,7 +4199,7 @@ PyUnicode_AsUnicodeAndSize(PyObject *unicode, Py_ssize_t *size) PyErr_NoMemory(); return NULL; } - w = (wchar_t *) PyObject_MALLOC(sizeof(wchar_t) * (wlen + 1)); + w = (wchar_t *) PyObject_Malloc(sizeof(wchar_t) * (wlen + 1)); if (w == NULL) { PyErr_NoMemory(); return NULL; @@ -5627,7 +5627,7 @@ unicode_fill_utf8(PyObject *unicode) PyBytes_AS_STRING(writer.buffer); Py_ssize_t len = end - start; - char *cache = PyObject_MALLOC(len + 1); + char *cache = PyObject_Malloc(len + 1); if (cache == NULL) { _PyBytesWriter_Dealloc(&writer); PyErr_NoMemory(); @@ -8544,7 +8544,7 @@ PyUnicode_BuildEncodingMap(PyObject* string) } /* Create a three-level trie */ - result = PyObject_MALLOC(sizeof(struct encoding_map) + + result = PyObject_Malloc(sizeof(struct encoding_map) + 16*count2 + 128*count3 - 1); if (!result) { return PyErr_NoMemory(); @@ -15567,7 +15567,7 @@ unicode_subtype_new(PyTypeObject *type, PyObject *unicode) PyErr_NoMemory(); goto onError; } - data = PyObject_MALLOC((length + 1) * char_size); + data = PyObject_Malloc((length + 1) * char_size); if (data == NULL) { PyErr_NoMemory(); goto onError; diff --git a/PC/_msi.c b/PC/_msi.c index 504899d0757b7..01516e85ccff3 100644 --- a/PC/_msi.c +++ b/PC/_msi.c @@ -351,7 +351,7 @@ msiobj_dealloc(msiobj* msidb) { MsiCloseHandle(msidb->h); msidb->h = 0; - PyObject_Del(msidb); + PyObject_Free(msidb); } static PyObject* diff --git a/PC/winreg.c b/PC/winreg.c index fee51ac1bbe0a..d62a7be28d3fa 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -145,7 +145,7 @@ PyHKEY_deallocFunc(PyObject *ob) PyHKEYObject *obkey = (PyHKEYObject *)ob; if (obkey->hkey) RegCloseKey((HKEY)obkey->hkey); - PyObject_DEL(ob); + PyObject_Free(ob); } static int @@ -459,7 +459,7 @@ PyObject * PyHKEY_FromHKEY(HKEY h) { /* Inline PyObject_New */ - PyHKEYObject *op = (PyHKEYObject *) PyObject_MALLOC(sizeof(PyHKEYObject)); + PyHKEYObject *op = (PyHKEYObject *) PyObject_Malloc(sizeof(PyHKEYObject)); if (op == NULL) { return PyErr_NoMemory(); } diff --git a/Python/symtable.c b/Python/symtable.c index 0464cd898b27f..cce1b1b5f3226 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -128,7 +128,7 @@ ste_dealloc(PySTEntryObject *ste) Py_XDECREF(ste->ste_varnames); Py_XDECREF(ste->ste_children); Py_XDECREF(ste->ste_directives); - PyObject_Del(ste); + PyObject_Free(ste); } #define OFF(x) offsetof(PySTEntryObject, x) From webhook-mailer at python.org Tue Dec 1 04:45:15 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 09:45:15 -0000 Subject: [Python-checkins] [doc] Fix abc.update_abstractmethods markup (GH-23576) Message-ID: https://github.com/python/cpython/commit/bc662c0bd7def052e9edbf504bb468860c83f371 commit: bc662c0bd7def052e9edbf504bb468860c83f371 branch: master author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T01:45:11-08:00 summary: [doc] Fix abc.update_abstractmethods markup (GH-23576) Add link to ABCMeta while at it. files: M Doc/library/abc.rst diff --git a/Doc/library/abc.rst b/Doc/library/abc.rst index 3a7414d7358e7..1a6ed474ff21d 100644 --- a/Doc/library/abc.rst +++ b/Doc/library/abc.rst @@ -336,6 +336,7 @@ The :mod:`abc` module also provides the following functions: .. versionadded:: 3.4 .. function:: update_abstractmethods(cls) + A function to recalculate an abstract class's abstraction status. This function should be called if a class's abstract methods have been implemented or changed after it was created. Usually, this function should @@ -343,7 +344,7 @@ The :mod:`abc` module also provides the following functions: Returns *cls*, to allow usage as a class decorator. - If *cls* is not an instance of ABCMeta, does nothing. + If *cls* is not an instance of :class:`ABCMeta`, does nothing. .. note:: From webhook-mailer at python.org Tue Dec 1 04:46:15 2020 From: webhook-mailer at python.org (JulienPalard) Date: Tue, 01 Dec 2020 09:46:15 -0000 Subject: [Python-checkins] Fix bz2 examples markup (#23580) Message-ID: https://github.com/python/cpython/commit/80a429eae95c15c2c2a6753376f2697c90c2b6b9 commit: 80a429eae95c15c2c2a6753376f2697c90c2b6b9 branch: master author: Andre Delfino committer: JulienPalard date: 2020-12-01T10:41:12+01:00 summary: Fix bz2 examples markup (#23580) files: M Doc/library/bz2.rst diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst index 85cdc16a7d78d..637baf49da1fc 100644 --- a/Doc/library/bz2.rst +++ b/Doc/library/bz2.rst @@ -266,7 +266,6 @@ Below are some examples of typical usage of the :mod:`bz2` module. Using :func:`compress` and :func:`decompress` to demonstrate round-trip compression: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -275,11 +274,9 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> c = bz2.compress(data) >>> len(data) / len(c) # Data compression ratio 1.513595166163142 - >>> d = bz2.decompress(c) >>> data == d # Check equality to original object after round-trip True @@ -287,7 +284,6 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress Using :class:`BZ2Compressor` for incremental compression: >>> import bz2 - >>> def gen_data(chunks=10, chunksize=1000): ... """Yield incremental blocks of chunksize bytes.""" ... for _ in range(chunks): @@ -310,7 +306,6 @@ while ordered, repetitive data usually yields a high compression ratio. Writing and reading a bzip2-compressed file in binary mode: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -319,14 +314,11 @@ Writing and reading a bzip2-compressed file in binary mode: ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> with bz2.open("myfile.bz2", "wb") as f: ... # Write compressed data to file ... unused = f.write(data) - >>> with bz2.open("myfile.bz2", "rb") as f: ... # Decompress data from file ... content = f.read() - >>> content == data # Check equality to original object after round-trip True From webhook-mailer at python.org Tue Dec 1 04:52:57 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 09:52:57 -0000 Subject: [Python-checkins] Fix bz2 examples markup (GH-23580) Message-ID: https://github.com/python/cpython/commit/04232de22951037bed292ad910a3179f0bc26dfb commit: 04232de22951037bed292ad910a3179f0bc26dfb branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T01:51:12-08:00 summary: Fix bz2 examples markup (GH-23580) (cherry picked from commit 80a429eae95c15c2c2a6753376f2697c90c2b6b9) Co-authored-by: Andre Delfino files: M Doc/library/bz2.rst diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst index 277de601cb7b6..cb9af5839fd47 100644 --- a/Doc/library/bz2.rst +++ b/Doc/library/bz2.rst @@ -264,7 +264,6 @@ Below are some examples of typical usage of the :mod:`bz2` module. Using :func:`compress` and :func:`decompress` to demonstrate round-trip compression: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -273,11 +272,9 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> c = bz2.compress(data) >>> len(data) / len(c) # Data compression ratio 1.513595166163142 - >>> d = bz2.decompress(c) >>> data == d # Check equality to original object after round-trip True @@ -285,7 +282,6 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress Using :class:`BZ2Compressor` for incremental compression: >>> import bz2 - >>> def gen_data(chunks=10, chunksize=1000): ... """Yield incremental blocks of chunksize bytes.""" ... for _ in range(chunks): @@ -308,7 +304,6 @@ while ordered, repetitive data usually yields a high compression ratio. Writing and reading a bzip2-compressed file in binary mode: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -317,14 +312,11 @@ Writing and reading a bzip2-compressed file in binary mode: ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> with bz2.open("myfile.bz2", "wb") as f: ... # Write compressed data to file ... unused = f.write(data) - >>> with bz2.open("myfile.bz2", "rb") as f: ... # Decompress data from file ... content = f.read() - >>> content == data # Check equality to original object after round-trip True From webhook-mailer at python.org Tue Dec 1 05:04:45 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 10:04:45 -0000 Subject: [Python-checkins] Fix bz2 examples markup (GH-23580) Message-ID: https://github.com/python/cpython/commit/aef482f7cfd78b25ecc9c38805549c5593655ed7 commit: aef482f7cfd78b25ecc9c38805549c5593655ed7 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T02:04:23-08:00 summary: Fix bz2 examples markup (GH-23580) (cherry picked from commit 80a429eae95c15c2c2a6753376f2697c90c2b6b9) Co-authored-by: Andre Delfino files: M Doc/library/bz2.rst diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst index 85cdc16a7d78d..637baf49da1fc 100644 --- a/Doc/library/bz2.rst +++ b/Doc/library/bz2.rst @@ -266,7 +266,6 @@ Below are some examples of typical usage of the :mod:`bz2` module. Using :func:`compress` and :func:`decompress` to demonstrate round-trip compression: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -275,11 +274,9 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> c = bz2.compress(data) >>> len(data) / len(c) # Data compression ratio 1.513595166163142 - >>> d = bz2.decompress(c) >>> data == d # Check equality to original object after round-trip True @@ -287,7 +284,6 @@ Using :func:`compress` and :func:`decompress` to demonstrate round-trip compress Using :class:`BZ2Compressor` for incremental compression: >>> import bz2 - >>> def gen_data(chunks=10, chunksize=1000): ... """Yield incremental blocks of chunksize bytes.""" ... for _ in range(chunks): @@ -310,7 +306,6 @@ while ordered, repetitive data usually yields a high compression ratio. Writing and reading a bzip2-compressed file in binary mode: >>> import bz2 - >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, @@ -319,14 +314,11 @@ Writing and reading a bzip2-compressed file in binary mode: ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" - >>> with bz2.open("myfile.bz2", "wb") as f: ... # Write compressed data to file ... unused = f.write(data) - >>> with bz2.open("myfile.bz2", "rb") as f: ... # Decompress data from file ... content = f.read() - >>> content == data # Check equality to original object after round-trip True From webhook-mailer at python.org Tue Dec 1 05:53:51 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 10:53:51 -0000 Subject: [Python-checkins] [3.9] bpo-17852: Doc: Fix the tutorial about closing files (GH-23135) (GH-23527) Message-ID: https://github.com/python/cpython/commit/4a44f53aa85c9400471ab084bc8fd8169065fc41 commit: 4a44f53aa85c9400471ab084bc8fd8169065fc41 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T02:53:42-08:00 summary: [3.9] bpo-17852: Doc: Fix the tutorial about closing files (GH-23135) (GH-23527) Co-authored-by: Inada Naoki (cherry picked from commit c8aaf71dde4888864c0c351e2f935f87652c3d54) Co-authored-by: Volker-Weissmann <39418860+Volker-Weissmann at users.noreply.github.com> files: M Doc/tutorial/inputoutput.rst diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index 366a532e817af..4e27cff83ce59 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -329,11 +329,16 @@ equivalent :keyword:`try`\ -\ :keyword:`finally` blocks:: If you're not using the :keyword:`with` keyword, then you should call ``f.close()`` to close the file and immediately free up any system -resources used by it. If you don't explicitly close a file, Python's -garbage collector will eventually destroy the object and close the -open file for you, but the file may stay open for a while. Another -risk is that different Python implementations will do this clean-up at -different times. +resources used by it. + +.. warning:: + Calling ``f.write()`` without using the :keyword:`!with` keyword or calling + ``f.close()`` **might** result in the arguments + of ``f.write()`` not being completely written to the disk, even if the + program exits successfully. + +.. + See also https://bugs.python.org/issue17852 After a file object is closed, either by a :keyword:`with` statement or by calling ``f.close()``, attempts to use the file object will From webhook-mailer at python.org Tue Dec 1 09:59:17 2020 From: webhook-mailer at python.org (benjaminp) Date: Tue, 01 Dec 2020 14:59:17 -0000 Subject: [Python-checkins] build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Message-ID: https://github.com/python/cpython/commit/a43fea88577c460eed7cc92a37b5fce787d6aab1 commit: a43fea88577c460eed7cc92a37b5fce787d6aab1 branch: master author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> committer: benjaminp date: 2020-12-01T08:59:12-06:00 summary: build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Bumps [actions/cache](https://github.com/actions/cache) from v2.1.2 to v2.1.3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.2...0781355a23dac32fd3bac414512f4b903437991a) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/build.yml M .github/workflows/coverage.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f543a94af363b..12c591e41362e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -135,7 +135,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.2 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index ed71a012395d4..11748f0e44981 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -32,7 +32,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.2 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} From webhook-mailer at python.org Tue Dec 1 10:00:21 2020 From: webhook-mailer at python.org (benjaminp) Date: Tue, 01 Dec 2020 15:00:21 -0000 Subject: [Python-checkins] build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23583) Message-ID: https://github.com/python/cpython/commit/8acd0e0d4976e91500149ee189f369f2b83b7537 commit: 8acd0e0d4976e91500149ee189f369f2b83b7537 branch: master author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> committer: benjaminp date: 2020-12-01T09:00:11-06:00 summary: build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23583) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.2.0 to v2.2.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2.2.0...726a6dcd0199f578459862705eed35cda05af50b) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/doc.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index f0dbfcd9d3b49..82e9645b5b337 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -38,7 +38,7 @@ jobs: - name: 'Build documentation' run: xvfb-run make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W --keep-going -j4" doctest html - name: 'Upload' - uses: actions/upload-artifact at v2.2.0 + uses: actions/upload-artifact at v2.2.1 with: name: doc-html path: Doc/build/html From webhook-mailer at python.org Tue Dec 1 10:06:06 2020 From: webhook-mailer at python.org (benjaminp) Date: Tue, 01 Dec 2020 15:06:06 -0000 Subject: [Python-checkins] [3.7] Bumps [actions/cache](https://github.com/actions/cache) from v1 to v2.1.3. (GH-23596) Message-ID: https://github.com/python/cpython/commit/47f075d96b9c205c6731f8599206172c3e209242 commit: 47f075d96b9c205c6731f8599206172c3e209242 branch: 3.7 author: Benjamin Peterson committer: benjaminp date: 2020-12-01T09:05:57-06:00 summary: [3.7] Bumps [actions/cache](https://github.com/actions/cache) from v1 to v2.1.3. (GH-23596) * build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Bumps [actions/cache](https://github.com/actions/cache) from v2.1.2 to v2.1.3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.2...0781355a23dac32fd3bac414512f4b903437991a) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit a43fea88577c460eed7cc92a37b5fce787d6aab1) * [3.7] build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Bumps [actions/cache](https://github.com/actions/cache) from v2.1.2 to v2.1.3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.2...0781355a23dac32fd3bac414512f4b903437991a) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>. (cherry picked from commit a43fea88577c460eed7cc92a37b5fce787d6aab1) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/build.yml M .github/workflows/coverage.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb00d0c0d0fa8..b3d4b7bab9cdd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -84,7 +84,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v1 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index b5668f85dd7ab..bfb077b299474 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -30,7 +30,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v1 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} From webhook-mailer at python.org Tue Dec 1 10:07:59 2020 From: webhook-mailer at python.org (pablogsal) Date: Tue, 01 Dec 2020 15:07:59 -0000 Subject: [Python-checkins] Add GCC pragmas to silence compiler warning about ffi_prep_closure (GH-23327) (GH-23590) Message-ID: https://github.com/python/cpython/commit/ae48dd4db53f64f053a6ed6571d083c332d06ff7 commit: ae48dd4db53f64f053a6ed6571d083c332d06ff7 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2020-12-01T15:07:50Z summary: Add GCC pragmas to silence compiler warning about ffi_prep_closure (GH-23327) (GH-23590) (cherry picked from commit cce3f0b0c88eba98bc11abe703a444bee7880ff8) Co-authored-by: Pablo Galindo Co-authored-by: Pablo Galindo files: M Modules/_ctypes/callbacks.c diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index 39cace58294d5..19c77f4f57ef5 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -426,15 +426,22 @@ CThunkObject *_ctypes_alloc_callback(PyObject *callable, PyErr_Format(PyExc_NotImplementedError, "ffi_prep_closure_loc() is missing"); goto error; #else -#ifdef MACOSX +#if defined(__clang__) || defined(MACOSX) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif +#if defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif result = ffi_prep_closure(p->pcl_write, &p->cif, closure_fcn, p); -#ifdef MACOSX +#if defined(__clang__) || defined(MACOSX) #pragma clang diagnostic pop #endif +#if defined(__GNUC__) + #pragma GCC diagnostic pop +#endif #endif } From webhook-mailer at python.org Tue Dec 1 10:18:18 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 15:18:18 -0000 Subject: [Python-checkins] build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23583) Message-ID: https://github.com/python/cpython/commit/eb6059e88124403076b592fe0b08d53b2a82b9be commit: eb6059e88124403076b592fe0b08d53b2a82b9be branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T07:18:09-08:00 summary: build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23583) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.2.0 to v2.2.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2.2.0...726a6dcd0199f578459862705eed35cda05af50b) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 8acd0e0d4976e91500149ee189f369f2b83b7537) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/doc.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index ff041210a3dea..2a04d66887015 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -34,7 +34,7 @@ jobs: - name: 'Build documentation' run: xvfb-run make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W -j4" doctest suspicious html - name: 'Upload' - uses: actions/upload-artifact at v2.2.0 + uses: actions/upload-artifact at v2.2.1 with: name: doc-html path: Doc/build/html From webhook-mailer at python.org Tue Dec 1 10:22:29 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Dec 2020 15:22:29 -0000 Subject: [Python-checkins] bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) Message-ID: https://github.com/python/cpython/commit/1867b462de427bcb8dfbcd256028410aea6ae929 commit: 1867b462de427bcb8dfbcd256028410aea6ae929 branch: master author: Victor Stinner committer: vstinner date: 2020-12-01T16:22:25+01:00 summary: bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) files: M Doc/whatsnew/3.8.rst diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 6a9fa34156946..0b4820f3333e1 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -2113,9 +2113,6 @@ Changes in the C API (Contributed by Antoine Pitrou in :issue:`32388`.) -* The :c:func:`PyCode_New` has a new parameter in the second position (*posonlyargcount*) - to support :pep:`570`, indicating the number of positional-only arguments. - * The functions :c:func:`PyNode_AddChild` and :c:func:`PyParser_AddToken` now accept two additional ``int`` arguments *end_lineno* and *end_col_offset*. From webhook-mailer at python.org Tue Dec 1 10:24:24 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 15:24:24 -0000 Subject: [Python-checkins] build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Message-ID: https://github.com/python/cpython/commit/d33f3347defa419ad18864fa3719ad8d668b78a0 commit: d33f3347defa419ad18864fa3719ad8d668b78a0 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T07:24:20-08:00 summary: build(deps): bump actions/cache from v2.1.2 to v2.1.3 (23582) Bumps [actions/cache](https://github.com/actions/cache) from v2.1.2 to v2.1.3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.2...0781355a23dac32fd3bac414512f4b903437991a) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit a43fea88577c460eed7cc92a37b5fce787d6aab1) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/build.yml M .github/workflows/coverage.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index deb0e67bedb90..3d7c9901a8e99 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -132,7 +132,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.2 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index d66c02b51b15e..6092f41325ff2 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -32,7 +32,7 @@ jobs: run: sudo ./.github/workflows/posix-deps-apt.sh - name: 'Restore OpenSSL build' id: cache-openssl - uses: actions/cache at v2.1.2 + uses: actions/cache at v2.1.3 with: path: ./multissl/openssl/${{ env.OPENSSL_VER }} key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} From webhook-mailer at python.org Tue Dec 1 10:30:14 2020 From: webhook-mailer at python.org (benjaminp) Date: Tue, 01 Dec 2020 15:30:14 -0000 Subject: [Python-checkins] [3.9] build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23597) Message-ID: https://github.com/python/cpython/commit/0955f6863d726985fc9cfad004f242002a0efc80 commit: 0955f6863d726985fc9cfad004f242002a0efc80 branch: 3.9 author: Benjamin Peterson committer: benjaminp date: 2020-12-01T09:30:03-06:00 summary: [3.9] build(deps): bump actions/upload-artifact from v2.2.0 to v2.2.1 (GH-23597) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.2.0 to v2.2.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2.2.0...726a6dcd0199f578459862705eed35cda05af50b) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 8acd0e0d4976e91500149ee189f369f2b83b7537) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> files: M .github/workflows/doc.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 455ad02f7ed3e..02e7c865cd568 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -36,7 +36,7 @@ jobs: - name: 'Build documentation' run: xvfb-run make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W -j4" doctest suspicious html - name: 'Upload' - uses: actions/upload-artifact at v2.2.0 + uses: actions/upload-artifact at v2.2.1 with: name: doc-html path: Doc/build/html From webhook-mailer at python.org Tue Dec 1 10:34:12 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 15:34:12 -0000 Subject: [Python-checkins] bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) Message-ID: https://github.com/python/cpython/commit/d9d63f13cf5b6b896c245099c42b08f6da083d05 commit: d9d63f13cf5b6b896c245099c42b08f6da083d05 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T07:34:01-08:00 summary: bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) (cherry picked from commit 1867b462de427bcb8dfbcd256028410aea6ae929) Co-authored-by: Victor Stinner files: M Doc/whatsnew/3.8.rst diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index ce386c0556cc2..1a192800b2f02 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -2115,9 +2115,6 @@ Changes in the C API (Contributed by Antoine Pitrou in :issue:`32388`.) -* The :c:func:`PyCode_New` has a new parameter in the second position (*posonlyargcount*) - to support :pep:`570`, indicating the number of positional-only arguments. - * The functions :c:func:`PyNode_AddChild` and :c:func:`PyParser_AddToken` now accept two additional ``int`` arguments *end_lineno* and *end_col_offset*. From webhook-mailer at python.org Tue Dec 1 10:55:04 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 01 Dec 2020 15:55:04 -0000 Subject: [Python-checkins] bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) Message-ID: https://github.com/python/cpython/commit/ed4614386f210964840daa1f7cbddbbd575f7a49 commit: ed4614386f210964840daa1f7cbddbbd575f7a49 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-01T07:54:54-08:00 summary: bpo-37221: PyCode_New() didn't change in Python 3.8 (GH-23595) (cherry picked from commit 1867b462de427bcb8dfbcd256028410aea6ae929) Co-authored-by: Victor Stinner files: M Doc/whatsnew/3.8.rst diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 6a9fa34156946..0b4820f3333e1 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -2113,9 +2113,6 @@ Changes in the C API (Contributed by Antoine Pitrou in :issue:`32388`.) -* The :c:func:`PyCode_New` has a new parameter in the second position (*posonlyargcount*) - to support :pep:`570`, indicating the number of positional-only arguments. - * The functions :c:func:`PyNode_AddChild` and :c:func:`PyParser_AddToken` now accept two additional ``int`` arguments *end_lineno* and *end_col_offset*. From webhook-mailer at python.org Tue Dec 1 15:35:04 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 01 Dec 2020 20:35:04 -0000 Subject: [Python-checkins] bpo-31904: Fix test_netrc for VxWorks RTOS (GH-21675) Message-ID: https://github.com/python/cpython/commit/e483d281bd55be0beee3e62d18e0719175bde671 commit: e483d281bd55be0beee3e62d18e0719175bde671 branch: master author: pxinwr committer: vstinner date: 2020-12-01T21:34:42+01:00 summary: bpo-31904: Fix test_netrc for VxWorks RTOS (GH-21675) Fix test_netrc on VxWorks: create temporary directories using temp_cwd(). files: A Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst M Lib/test/test_netrc.py diff --git a/Lib/test/test_netrc.py b/Lib/test/test_netrc.py index 2bd46aa745ff2..90ef5cd363b3f 100644 --- a/Lib/test/test_netrc.py +++ b/Lib/test/test_netrc.py @@ -109,62 +109,56 @@ def test_comment_at_end_of_machine_line_pass_has_hash(self): def test_security(self): # This test is incomplete since we are normally not run as root and # therefore can't test the file ownership being wrong. - d = os_helper.TESTFN - os.mkdir(d) - self.addCleanup(os_helper.rmtree, d) - fn = os.path.join(d, '.netrc') - with open(fn, 'wt') as f: - f.write("""\ - machine foo.domain.com login bar password pass - default login foo password pass - """) - with os_helper.EnvironmentVarGuard() as environ: - environ.set('HOME', d) - os.chmod(fn, 0o600) - nrc = netrc.netrc() - self.assertEqual(nrc.hosts['foo.domain.com'], - ('bar', None, 'pass')) - os.chmod(fn, 0o622) - self.assertRaises(netrc.NetrcParseError, netrc.netrc) + with os_helper.temp_cwd(None) as d: + fn = os.path.join(d, '.netrc') + with open(fn, 'wt') as f: + f.write("""\ + machine foo.domain.com login bar password pass + default login foo password pass + """) + with os_helper.EnvironmentVarGuard() as environ: + environ.set('HOME', d) + os.chmod(fn, 0o600) + nrc = netrc.netrc() + self.assertEqual(nrc.hosts['foo.domain.com'], + ('bar', None, 'pass')) + os.chmod(fn, 0o622) + self.assertRaises(netrc.NetrcParseError, netrc.netrc) def test_file_not_found_in_home(self): - d = os_helper.TESTFN - os.mkdir(d) - self.addCleanup(os_helper.rmtree, d) - with os_helper.EnvironmentVarGuard() as environ: - environ.set('HOME', d) - self.assertRaises(FileNotFoundError, netrc.netrc) + with os_helper.temp_cwd(None) as d: + with os_helper.EnvironmentVarGuard() as environ: + environ.set('HOME', d) + self.assertRaises(FileNotFoundError, netrc.netrc) def test_file_not_found_explicit(self): self.assertRaises(FileNotFoundError, netrc.netrc, file='unlikely_netrc') def test_home_not_set(self): - fake_home = os_helper.TESTFN - os.mkdir(fake_home) - self.addCleanup(os_helper.rmtree, fake_home) - fake_netrc_path = os.path.join(fake_home, '.netrc') - with open(fake_netrc_path, 'w') as f: - f.write('machine foo.domain.com login bar password pass') - os.chmod(fake_netrc_path, 0o600) - - orig_expanduser = os.path.expanduser - called = [] - - def fake_expanduser(s): - called.append(s) - with os_helper.EnvironmentVarGuard() as environ: - environ.set('HOME', fake_home) - environ.set('USERPROFILE', fake_home) - result = orig_expanduser(s) - return result - - with support.swap_attr(os.path, 'expanduser', fake_expanduser): - nrc = netrc.netrc() - login, account, password = nrc.authenticators('foo.domain.com') - self.assertEqual(login, 'bar') - - self.assertTrue(called) + with os_helper.temp_cwd(None) as fake_home: + fake_netrc_path = os.path.join(fake_home, '.netrc') + with open(fake_netrc_path, 'w') as f: + f.write('machine foo.domain.com login bar password pass') + os.chmod(fake_netrc_path, 0o600) + + orig_expanduser = os.path.expanduser + called = [] + + def fake_expanduser(s): + called.append(s) + with os_helper.EnvironmentVarGuard() as environ: + environ.set('HOME', fake_home) + environ.set('USERPROFILE', fake_home) + result = orig_expanduser(s) + return result + + with support.swap_attr(os.path, 'expanduser', fake_expanduser): + nrc = netrc.netrc() + login, account, password = nrc.authenticators('foo.domain.com') + self.assertEqual(login, 'bar') + + self.assertTrue(called) if __name__ == "__main__": diff --git a/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst b/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst new file mode 100644 index 0000000000000..49e9892e9ed7c --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst @@ -0,0 +1 @@ +Fix test_netrc on VxWorks: create temporary directories using temp_cwd(). From webhook-mailer at python.org Wed Dec 2 00:16:40 2020 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Dec 2020 05:16:40 -0000 Subject: [Python-checkins] bpo-40939: Restore some stable API functions incorrectly deleted (GH-23606) Message-ID: https://github.com/python/cpython/commit/46bd5ed94cf3d5e03f45eecf9afea1659980c8bf commit: 46bd5ed94cf3d5e03f45eecf9afea1659980c8bf branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-02T05:16:31Z summary: bpo-40939: Restore some stable API functions incorrectly deleted (GH-23606) files: M Python/pythonrun.c diff --git a/Python/pythonrun.c b/Python/pythonrun.c index bd49c40e9786c..6181a38defcc0 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1235,14 +1235,6 @@ Py_CompileStringExFlags(const char *str, const char *filename_str, int start, return co; } -/* For use in Py_LIMITED_API */ -#undef Py_CompileString -PyObject * -PyCompileString(const char *str, const char *filename, int start) -{ - return Py_CompileStringFlags(str, filename, start, NULL); -} - const char * _Py_SourceAsString(PyObject *cmd, const char *funcname, const char *what, PyCompilerFlags *cf, PyObject **cmd_copy) { @@ -1371,6 +1363,109 @@ PyOS_CheckStack(void) #endif /* USE_STACKCHECK */ +/* Deprecated C API functions still provided for binary compatibility */ + +#undef PyRun_AnyFile +PyAPI_FUNC(int) +PyRun_AnyFile(FILE *fp, const char *name) +{ + return PyRun_AnyFileExFlags(fp, name, 0, NULL); +} + +#undef PyRun_AnyFileEx +PyAPI_FUNC(int) +PyRun_AnyFileEx(FILE *fp, const char *name, int closeit) +{ + return PyRun_AnyFileExFlags(fp, name, closeit, NULL); +} + +#undef PyRun_AnyFileFlags +PyAPI_FUNC(int) +PyRun_AnyFileFlags(FILE *fp, const char *name, PyCompilerFlags *flags) +{ + return PyRun_AnyFileExFlags(fp, name, 0, flags); +} + +#undef PyRun_File +PyAPI_FUNC(PyObject *) +PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l) +{ + return PyRun_FileExFlags(fp, p, s, g, l, 0, NULL); +} + +#undef PyRun_FileEx +PyAPI_FUNC(PyObject *) +PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c) +{ + return PyRun_FileExFlags(fp, p, s, g, l, c, NULL); +} + +#undef PyRun_FileFlags +PyAPI_FUNC(PyObject *) +PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, + PyCompilerFlags *flags) +{ + return PyRun_FileExFlags(fp, p, s, g, l, 0, flags); +} + +#undef PyRun_SimpleFile +PyAPI_FUNC(int) +PyRun_SimpleFile(FILE *f, const char *p) +{ + return PyRun_SimpleFileExFlags(f, p, 0, NULL); +} + +#undef PyRun_SimpleFileEx +PyAPI_FUNC(int) +PyRun_SimpleFileEx(FILE *f, const char *p, int c) +{ + return PyRun_SimpleFileExFlags(f, p, c, NULL); +} + + +#undef PyRun_String +PyAPI_FUNC(PyObject *) +PyRun_String(const char *str, int s, PyObject *g, PyObject *l) +{ + return PyRun_StringFlags(str, s, g, l, NULL); +} + +#undef PyRun_SimpleString +PyAPI_FUNC(int) +PyRun_SimpleString(const char *s) +{ + return PyRun_SimpleStringFlags(s, NULL); +} + +#undef Py_CompileString +PyAPI_FUNC(PyObject *) +Py_CompileString(const char *str, const char *p, int s) +{ + return Py_CompileStringExFlags(str, p, s, NULL, -1); +} + +#undef Py_CompileStringFlags +PyAPI_FUNC(PyObject *) +Py_CompileStringFlags(const char *str, const char *p, int s, + PyCompilerFlags *flags) +{ + return Py_CompileStringExFlags(str, p, s, flags, -1); +} + +#undef PyRun_InteractiveOne +PyAPI_FUNC(int) +PyRun_InteractiveOne(FILE *f, const char *p) +{ + return PyRun_InteractiveOneFlags(f, p, NULL); +} + +#undef PyRun_InteractiveLoop +PyAPI_FUNC(int) +PyRun_InteractiveLoop(FILE *f, const char *p) +{ + return PyRun_InteractiveLoopFlags(f, p, NULL); +} + #ifdef __cplusplus } #endif From webhook-mailer at python.org Wed Dec 2 01:08:04 2020 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Dec 2020 06:08:04 -0000 Subject: [Python-checkins] Correct return type in Modules/_ssl.c::sslmodule_legacy (GH-23609) Message-ID: https://github.com/python/cpython/commit/93a0ef76473683aa3ad215e11df18f7839488c4e commit: 93a0ef76473683aa3ad215e11df18f7839488c4e branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-02T06:07:56Z summary: Correct return type in Modules/_ssl.c::sslmodule_legacy (GH-23609) files: M Modules/_ssl.c diff --git a/Modules/_ssl.c b/Modules/_ssl.c index edb850ee46103..96d2796fcfad4 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -6416,7 +6416,7 @@ sslmodule_legacy(PyObject *module) #ifdef HAVE_OPENSSL_CRYPTO_LOCK /* note that this will start threading if not already started */ if (!_setup_ssl_threads()) { - return NULL; + return 0; } #elif OPENSSL_VERSION_1_1 /* OpenSSL 1.1.0 builtin thread support is enabled */ From webhook-mailer at python.org Wed Dec 2 08:31:09 2020 From: webhook-mailer at python.org (markshannon) Date: Wed, 02 Dec 2020 13:31:09 -0000 Subject: [Python-checkins] bpo-42500: Fix recursion in or after except (GH-23568) Message-ID: https://github.com/python/cpython/commit/4e7a69bdb63a104587759d7784124492dcdd496e commit: 4e7a69bdb63a104587759d7784124492dcdd496e branch: master author: Mark Shannon committer: markshannon date: 2020-12-02T13:30:55Z summary: bpo-42500: Fix recursion in or after except (GH-23568) * Use counter, rather boolean state when handling soft overflows. files: A Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst M Include/cpython/pystate.h M Include/internal/pycore_ceval.h M Lib/test/test_exceptions.py M Lib/test/test_sys.py M Python/ceval.c M Python/errors.c M Python/pystate.c M Python/sysmodule.c diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index 0e6cc29091236..cfaee890f9715 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -54,8 +54,7 @@ struct _ts { /* Borrowed reference to the current frame (it can be NULL) */ PyFrameObject *frame; int recursion_depth; - char overflowed; /* The stack has overflowed. Allow 50 more calls - to handle the runtime error. */ + int recursion_headroom; /* Allow 50 more calls to handle any errors. */ int stackcheck_counter; /* 'tracing' keeps track of the execution depth when tracing/profiling. diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h index bbb667ea32d27..38fd681f20c45 100644 --- a/Include/internal/pycore_ceval.h +++ b/Include/internal/pycore_ceval.h @@ -92,24 +92,8 @@ static inline int _Py_EnterRecursiveCall_inline(const char *where) { #define Py_EnterRecursiveCall(where) _Py_EnterRecursiveCall_inline(where) -/* Compute the "lower-water mark" for a recursion limit. When - * Py_LeaveRecursiveCall() is called with a recursion depth below this mark, - * the overflowed flag is reset to 0. */ -static inline int _Py_RecursionLimitLowerWaterMark(int limit) { - if (limit > 200) { - return (limit - 50); - } - else { - return (3 * (limit >> 2)); - } -} - static inline void _Py_LeaveRecursiveCall(PyThreadState *tstate) { tstate->recursion_depth--; - int limit = tstate->interp->ceval.recursion_limit; - if (tstate->recursion_depth < _Py_RecursionLimitLowerWaterMark(limit)) { - tstate->overflowed = 0; - } } static inline void _Py_LeaveRecursiveCall_inline(void) { diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 4dbf5fe5d5bc3..1bdd3f2ce5993 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1046,7 +1046,7 @@ def gen(): # tstate->recursion_depth is equal to (recursion_limit - 1) # and is equal to recursion_limit when _gen_throw() calls # PyErr_NormalizeException(). - recurse(setrecursionlimit(depth + 2) - depth - 1) + recurse(setrecursionlimit(depth + 2) - depth) finally: sys.setrecursionlimit(recursionlimit) print('Done.') @@ -1076,6 +1076,54 @@ def test_recursion_normalizing_infinite_exception(self): b'while normalizing an exception', err) self.assertIn(b'Done.', out) + + def test_recursion_in_except_handler(self): + + def set_relative_recursion_limit(n): + depth = 1 + while True: + try: + sys.setrecursionlimit(depth) + except RecursionError: + depth += 1 + else: + break + sys.setrecursionlimit(depth+n) + + def recurse_in_except(): + try: + 1/0 + except: + recurse_in_except() + + def recurse_after_except(): + try: + 1/0 + except: + pass + recurse_after_except() + + def recurse_in_body_and_except(): + try: + recurse_in_body_and_except() + except: + recurse_in_body_and_except() + + recursionlimit = sys.getrecursionlimit() + try: + set_relative_recursion_limit(10) + for func in (recurse_in_except, recurse_after_except, recurse_in_body_and_except): + with self.subTest(func=func): + try: + func() + except RecursionError: + pass + else: + self.fail("Should have raised a RecursionError") + finally: + sys.setrecursionlimit(recursionlimit) + + @cpython_only def test_recursion_normalizing_with_no_memory(self): # Issue #30697. Test that in the abort that occurs when there is no @@ -1112,7 +1160,7 @@ def raiseMemError(): except MemoryError as e: tb = e.__traceback__ else: - self.fail("Should have raises a MemoryError") + self.fail("Should have raised a MemoryError") return traceback.format_tb(tb) tb1 = raiseMemError() diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 173ef9ebb4c19..3860656c181c2 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -221,7 +221,7 @@ def test_recursionlimit_recovery(self): def f(): f() try: - for depth in (10, 25, 50, 75, 100, 250, 1000): + for depth in (50, 75, 100, 250, 1000): try: sys.setrecursionlimit(depth) except RecursionError: @@ -231,17 +231,17 @@ def f(): # Issue #5392: test stack overflow after hitting recursion # limit twice - self.assertRaises(RecursionError, f) - self.assertRaises(RecursionError, f) + with self.assertRaises(RecursionError): + f() + with self.assertRaises(RecursionError): + f() finally: sys.setrecursionlimit(oldlimit) @test.support.cpython_only def test_setrecursionlimit_recursion_depth(self): # Issue #25274: Setting a low recursion limit must be blocked if the - # current recursion depth is already higher than the "lower-water - # mark". Otherwise, it may not be possible anymore to - # reset the overflowed flag to 0. + # current recursion depth is already higher than limit. from _testinternalcapi import get_recursion_depth @@ -262,42 +262,10 @@ def set_recursion_limit_at_depth(depth, limit): sys.setrecursionlimit(1000) for limit in (10, 25, 50, 75, 100, 150, 200): - # formula extracted from _Py_RecursionLimitLowerWaterMark() - if limit > 200: - depth = limit - 50 - else: - depth = limit * 3 // 4 - set_recursion_limit_at_depth(depth, limit) + set_recursion_limit_at_depth(limit, limit) finally: sys.setrecursionlimit(oldlimit) - # The error message is specific to CPython - @test.support.cpython_only - def test_recursionlimit_fatalerror(self): - # A fatal error occurs if a second recursion limit is hit when recovering - # from a first one. - code = textwrap.dedent(""" - import sys - - def f(): - try: - f() - except RecursionError: - f() - - sys.setrecursionlimit(%d) - f()""") - with test.support.SuppressCrashReport(): - for i in (50, 1000): - sub = subprocess.Popen([sys.executable, '-c', code % i], - stderr=subprocess.PIPE) - err = sub.communicate()[1] - self.assertTrue(sub.returncode, sub.returncode) - self.assertIn( - b"Fatal Python error: _Py_CheckRecursiveCall: " - b"Cannot recover from stack overflow", - err) - def test_getwindowsversion(self): # Raise SkipTest if sys doesn't have getwindowsversion attribute test.support.get_attribute(sys, "getwindowsversion") diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst new file mode 100644 index 0000000000000..2462a8e1fabef --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst @@ -0,0 +1,2 @@ +Improve handling of exceptions near recursion limit. Converts a number of +Fatal Errors in RecursionErrors. diff --git a/Python/ceval.c b/Python/ceval.c index 693852e15b7c3..9de925780e407 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -857,20 +857,22 @@ _Py_CheckRecursiveCall(PyThreadState *tstate, const char *where) return -1; } #endif - if (tstate->overflowed) { + if (tstate->recursion_headroom) { if (tstate->recursion_depth > recursion_limit + 50) { /* Overflowing while handling an overflow. Give up. */ Py_FatalError("Cannot recover from stack overflow."); } - return 0; } - if (tstate->recursion_depth > recursion_limit) { - --tstate->recursion_depth; - tstate->overflowed = 1; - _PyErr_Format(tstate, PyExc_RecursionError, - "maximum recursion depth exceeded%s", - where); - return -1; + else { + if (tstate->recursion_depth > recursion_limit) { + tstate->recursion_headroom++; + _PyErr_Format(tstate, PyExc_RecursionError, + "maximum recursion depth exceeded%s", + where); + tstate->recursion_headroom--; + --tstate->recursion_depth; + return -1; + } } return 0; } diff --git a/Python/errors.c b/Python/errors.c index f80ae21fdde7c..8242ac69785d4 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -290,12 +290,14 @@ _PyErr_NormalizeException(PyThreadState *tstate, PyObject **exc, PyObject **val, PyObject **tb) { int recursion_depth = 0; + tstate->recursion_headroom++; PyObject *type, *value, *initial_tb; restart: type = *exc; if (type == NULL) { /* There was no exception, so nothing to do. */ + tstate->recursion_headroom--; return; } @@ -347,6 +349,7 @@ _PyErr_NormalizeException(PyThreadState *tstate, PyObject **exc, } *exc = type; *val = value; + tstate->recursion_headroom--; return; error: diff --git a/Python/pystate.c b/Python/pystate.c index 600cc5e03a1cf..8da583f8e06bc 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -605,7 +605,7 @@ new_threadstate(PyInterpreterState *interp, int init) tstate->frame = NULL; tstate->recursion_depth = 0; - tstate->overflowed = 0; + tstate->recursion_headroom = 0; tstate->stackcheck_counter = 0; tstate->tracing = 0; tstate->use_tracing = 0; diff --git a/Python/sysmodule.c b/Python/sysmodule.c index f05b33a9aacf1..b80d37df42c80 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1181,7 +1181,6 @@ static PyObject * sys_setrecursionlimit_impl(PyObject *module, int new_limit) /*[clinic end generated code: output=35e1c64754800ace input=b0f7a23393924af3]*/ { - int mark; PyThreadState *tstate = _PyThreadState_GET(); if (new_limit < 1) { @@ -1199,8 +1198,7 @@ sys_setrecursionlimit_impl(PyObject *module, int new_limit) Reject too low new limit if the current recursion depth is higher than the new low-water mark. Otherwise it may not be possible anymore to reset the overflowed flag to 0. */ - mark = _Py_RecursionLimitLowerWaterMark(new_limit); - if (tstate->recursion_depth >= mark) { + if (tstate->recursion_depth >= new_limit) { _PyErr_Format(tstate, PyExc_RecursionError, "cannot set the recursion limit to %i at " "the recursion depth %i: the limit is too low", From webhook-mailer at python.org Wed Dec 2 08:31:45 2020 From: webhook-mailer at python.org (markshannon) Date: Wed, 02 Dec 2020 13:31:45 -0000 Subject: [Python-checkins] bpo-42246: Make sure that line number is correct after a return, as required by PEP 626 (GH-23495) Message-ID: https://github.com/python/cpython/commit/5977a7989d49c3e095c7659a58267d87a17b12b1 commit: 5977a7989d49c3e095c7659a58267d87a17b12b1 branch: master author: Mark Shannon committer: markshannon date: 2020-12-02T13:31:40Z summary: bpo-42246: Make sure that line number is correct after a return, as required by PEP 626 (GH-23495) Make sure that line number is correct after a return, as defined by PEP 626. files: A Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst M Lib/test/test_compile.py M Lib/test/test_dis.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 190e1a6661030..1e61f41c25b78 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -156,7 +156,7 @@ def test_leading_newlines(self): s256 = "".join(["\n"] * 256 + ["spam"]) co = compile(s256, 'fn', 'exec') self.assertEqual(co.co_firstlineno, 1) - self.assertEqual(list(co.co_lines()), [(0, 4, 257), (4, 8, None)]) + self.assertEqual(list(co.co_lines()), [(0, 8, 257)]) def test_literals_with_leading_zeroes(self): for arg in ["077787", "0xj", "0x.", "0e", "090000000000000", @@ -775,6 +775,39 @@ def or_false(x): self.assertIn('LOAD_', opcodes[0].opname) self.assertEqual('RETURN_VALUE', opcodes[1].opname) + def test_lineno_after_implicit_return(self): + TRUE = True + # Don't use constant True or False, as compiler will remove test + def if1(x): + x() + if TRUE: + pass + def if2(x): + x() + if TRUE: + pass + else: + pass + def if3(x): + x() + if TRUE: + pass + else: + return None + def if4(x): + x() + if not TRUE: + pass + funcs = [ if1, if2, if3, if4] + lastlines = [ 3, 3, 3, 2] + frame = None + def save_caller_frame(): + nonlocal frame + frame = sys._getframe(1) + for func, lastline in zip(funcs, lastlines, strict=True): + with self.subTest(func=func): + func(save_caller_frame) + self.assertEqual(frame.f_lineno-frame.f_code.co_firstlineno, lastline) def test_big_dict_literal(self): # The compiler has a flushing point in "compiler_dict" that calls compiles diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 9cd11d3118b60..d0743d62e3d79 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -131,12 +131,14 @@ def bug708901(): 12 STORE_FAST 0 (res) %3d 14 JUMP_ABSOLUTE 10 - >> 16 LOAD_CONST 0 (None) + +%3d >> 16 LOAD_CONST 0 (None) 18 RETURN_VALUE """ % (bug708901.__code__.co_firstlineno + 1, bug708901.__code__.co_firstlineno + 2, bug708901.__code__.co_firstlineno + 1, - bug708901.__code__.co_firstlineno + 3) + bug708901.__code__.co_firstlineno + 3, + bug708901.__code__.co_firstlineno + 1) def bug1333982(x=[]): @@ -295,13 +297,15 @@ def bug1333982(x=[]): 52 STORE_FAST 0 (e) 54 DELETE_FAST 0 (e) 56 RERAISE - >> 58 RERAISE + +%3d >> 58 RERAISE """ % (TRACEBACK_CODE.co_firstlineno + 1, TRACEBACK_CODE.co_firstlineno + 2, TRACEBACK_CODE.co_firstlineno + 5, TRACEBACK_CODE.co_firstlineno + 3, TRACEBACK_CODE.co_firstlineno + 4, - TRACEBACK_CODE.co_firstlineno + 5) + TRACEBACK_CODE.co_firstlineno + 5, + TRACEBACK_CODE.co_firstlineno + 3) def _fstring(a, b, c, d): return f'{a} {b:4} {c!r} {d!r:4}' diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst new file mode 100644 index 0000000000000..ff200475e6368 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst @@ -0,0 +1,2 @@ +PEP 626: After a return, the f_lineno attribute of a frame is always the +last line executed. diff --git a/Python/compile.c b/Python/compile.c index 57aa43476becd..c67e8e885e4e6 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -812,6 +812,28 @@ compiler_use_next_block(struct compiler *c, basicblock *block) return block; } +static basicblock * +compiler_copy_block(struct compiler *c, basicblock *block) +{ + /* Cannot copy a block if it has a fallthrough, since + * a block can only have one fallthrough predecessor. + */ + assert(block->b_nofallthrough); + basicblock *result = compiler_next_block(c); + if (result == NULL) { + return NULL; + } + for (int i = 0; i < block->b_iused; i++) { + int n = compiler_next_instr(result); + if (n < 0) { + return NULL; + } + result->b_instr[n] = block->b_instr[i]; + } + result->b_exit = block->b_exit; + return result; +} + /* Returns the offset of the next instruction in the current block's b_instr array. Resizes the b_instr as necessary. Returns -1 on failure. @@ -2732,12 +2754,13 @@ compiler_if(struct compiler *c, stmt_ty s) static int compiler_for(struct compiler *c, stmt_ty s) { - basicblock *start, *cleanup, *end; + basicblock *start, *body, *cleanup, *end; start = compiler_new_block(c); + body = compiler_new_block(c); cleanup = compiler_new_block(c); end = compiler_new_block(c); - if (start == NULL || end == NULL || cleanup == NULL) { + if (start == NULL || body == NULL || end == NULL || cleanup == NULL) { return 0; } if (!compiler_push_fblock(c, FOR_LOOP, start, end, NULL)) { @@ -2747,6 +2770,7 @@ compiler_for(struct compiler *c, stmt_ty s) ADDOP(c, GET_ITER); compiler_use_next_block(c, start); ADDOP_JUMP(c, FOR_ITER, cleanup); + compiler_use_next_block(c, body); VISIT(c, expr, s->v.For.target); VISIT_SEQ(c, stmt, s->v.For.body); ADDOP_JUMP(c, JUMP_ABSOLUTE, start); @@ -5929,9 +5953,16 @@ dump_basicblock(const basicblock *b) } #endif + +static int +normalize_basic_block(basicblock *bb); + static int optimize_cfg(struct assembler *a, PyObject *consts); +static int +ensure_exits_have_lineno(struct compiler *c); + static PyCodeObject * assemble(struct compiler *c, int addNone) { @@ -5952,6 +5983,16 @@ assemble(struct compiler *c, int addNone) ADDOP(c, RETURN_VALUE); } + for (basicblock *b = c->u->u_blocks; b != NULL; b = b->b_list) { + if (normalize_basic_block(b)) { + goto error; + } + } + + if (ensure_exits_have_lineno(c)) { + goto error; + } + nblocks = 0; entryblock = NULL; for (b = c->u->u_blocks; b != NULL; b = b->b_list) { @@ -5966,6 +6007,7 @@ assemble(struct compiler *c, int addNone) else c->u->u_firstlineno = 1; } + if (!assemble_init(&a, nblocks, c->u->u_firstlineno)) goto error; a.a_entry = entryblock; @@ -6338,7 +6380,6 @@ clean_basic_block(basicblock *bb) { bb->b_iused = dest; } - static int normalize_basic_block(basicblock *bb) { /* Mark blocks as exit and/or nofallthrough. @@ -6349,7 +6390,8 @@ normalize_basic_block(basicblock *bb) { case RAISE_VARARGS: case RERAISE: bb->b_exit = 1; - /* fall through */ + bb->b_nofallthrough = 1; + break; case JUMP_ABSOLUTE: case JUMP_FORWARD: bb->b_nofallthrough = 1; @@ -6358,16 +6400,21 @@ normalize_basic_block(basicblock *bb) { case POP_JUMP_IF_TRUE: case JUMP_IF_FALSE_OR_POP: case JUMP_IF_TRUE_OR_POP: + case FOR_ITER: if (i != bb->b_iused-1) { PyErr_SetString(PyExc_SystemError, "malformed control flow graph."); return -1; } + /* Skip over empty basic blocks. */ + while (bb->b_instr[i].i_target->b_iused == 0) { + bb->b_instr[i].i_target = bb->b_instr[i].i_target->b_next; + } + } } return 0; } - static int mark_reachable(struct assembler *a) { basicblock **stack, **sp; @@ -6398,8 +6445,27 @@ mark_reachable(struct assembler *a) { return 0; } +/* If an instruction has no line number, but it's predecessor in the BB does, + * then copy the line number. This reduces the size of the line number table, + * but has no impact on the generated line number events. + */ +static void +minimize_lineno_table(struct assembler *a) { + for (basicblock *b = a->a_entry; b != NULL; b = b->b_next) { + int prev_lineno = -1; + for (int i = 0; i < b->b_iused; i++) { + if (b->b_instr[i].i_lineno < 0) { + b->b_instr[i].i_lineno = prev_lineno; + } + else { + prev_lineno = b->b_instr[i].i_lineno; + } + } + + } +} -/* Perform basic peephole optimizations on a control flow graph. +/* Perform optimizations on a control flow graph. The consts object should still be in list form to allow new constants to be appended. @@ -6411,11 +6477,6 @@ mark_reachable(struct assembler *a) { static int optimize_cfg(struct assembler *a, PyObject *consts) { - for (basicblock *b = a->a_entry; b != NULL; b = b->b_next) { - if (normalize_basic_block(b)) { - return -1; - } - } for (basicblock *b = a->a_entry; b != NULL; b = b->b_next) { if (optimize_basic_block(b, consts)) { return -1; @@ -6432,9 +6493,63 @@ optimize_cfg(struct assembler *a, PyObject *consts) b->b_iused = 0; } } + minimize_lineno_table(a); + return 0; +} + +static inline int +is_exit_without_lineno(basicblock *b) { + return b->b_exit && b->b_instr[0].i_lineno < 0; +} + +/* PEP 626 mandates that the f_lineno of a frame is correct + * after a frame terminates. It would be prohibitively expensive + * to continuously update the f_lineno field at runtime, + * so we make sure that all exiting instruction (raises and returns) + * have a valid line number, allowing us to compute f_lineno lazily. + * We can do this by duplicating the exit blocks without line number + * so that none have more than one predecessor. We can then safely + * copy the line number from the sole predecessor block. + */ +static int +ensure_exits_have_lineno(struct compiler *c) +{ + /* Copy all exit blocks without line number that are targets of a jump. + */ + for (basicblock *b = c->u->u_blocks; b != NULL; b = b->b_list) { + if (b->b_iused > 0 && is_jump(&b->b_instr[b->b_iused-1])) { + switch (b->b_instr[b->b_iused-1].i_opcode) { + /* Note: Only actual jumps, not exception handlers */ + case SETUP_ASYNC_WITH: + case SETUP_WITH: + case SETUP_FINALLY: + continue; + } + basicblock *target = b->b_instr[b->b_iused-1].i_target; + if (is_exit_without_lineno(target)) { + basicblock *new_target = compiler_copy_block(c, target); + if (new_target == NULL) { + return -1; + } + new_target->b_instr[0].i_lineno = b->b_instr[b->b_iused-1].i_lineno; + b->b_instr[b->b_iused-1].i_target = new_target; + } + } + } + /* Any remaining reachable exit blocks without line number can only be reached by + * fall through, and thus can only have a single predecessor */ + for (basicblock *b = c->u->u_blocks; b != NULL; b = b->b_list) { + if (!b->b_nofallthrough && b->b_next && b->b_iused > 0) { + if (is_exit_without_lineno(b->b_next)) { + assert(b->b_next->b_iused > 0); + b->b_next->b_instr[0].i_lineno = b->b_instr[b->b_iused-1].i_lineno; + } + } + } return 0; } + /* Retained for API compatibility. * Optimization is now done in optimize_cfg */ diff --git a/Python/importlib.h b/Python/importlib.h index c76ee3c559292..c5ff9ece081ee 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -71,217 +71,216 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,97,99,101,169,0,114,10,0,0,0,250,29,60,102,114, 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, 98,111,111,116,115,116,114,97,112,62,218,5,95,119,114,97, - 112,34,0,0,0,115,12,0,0,0,8,2,10,1,20,1, - 14,1,4,128,255,128,114,12,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 67,0,0,0,115,12,0,0,0,116,0,116,1,131,1,124, - 0,131,1,83,0,169,1,78,41,2,218,4,116,121,112,101, - 218,3,115,121,115,169,1,218,4,110,97,109,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,11,95,110, - 101,119,95,109,111,100,117,108,101,42,0,0,0,115,4,0, - 0,0,12,1,255,128,114,18,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 64,0,0,0,115,12,0,0,0,101,0,90,1,100,0,90, - 2,100,1,83,0,41,2,218,14,95,68,101,97,100,108,111, - 99,107,69,114,114,111,114,78,41,3,114,1,0,0,0,114, - 0,0,0,0,114,2,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,19,0, - 0,0,55,0,0,0,115,6,0,0,0,8,0,4,1,255, - 128,114,19,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, - 56,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,90,6,100,8,100,9,132,0,90,7, - 100,10,100,11,132,0,90,8,100,12,83,0,41,13,218,11, - 95,77,111,100,117,108,101,76,111,99,107,122,169,65,32,114, - 101,99,117,114,115,105,118,101,32,108,111,99,107,32,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,32,119,104,105, - 99,104,32,105,115,32,97,98,108,101,32,116,111,32,100,101, - 116,101,99,116,32,100,101,97,100,108,111,99,107,115,10,32, - 32,32,32,40,101,46,103,46,32,116,104,114,101,97,100,32, - 49,32,116,114,121,105,110,103,32,116,111,32,116,97,107,101, - 32,108,111,99,107,115,32,65,32,116,104,101,110,32,66,44, - 32,97,110,100,32,116,104,114,101,97,100,32,50,32,116,114, - 121,105,110,103,32,116,111,10,32,32,32,32,116,97,107,101, - 32,108,111,99,107,115,32,66,32,116,104,101,110,32,65,41, - 46,10,32,32,32,32,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 48,0,0,0,116,0,160,1,161,0,124,0,95,2,116,0, - 160,1,161,0,124,0,95,3,124,1,124,0,95,4,100,0, - 124,0,95,5,100,1,124,0,95,6,100,1,124,0,95,7, - 100,0,83,0,169,2,78,233,0,0,0,0,41,8,218,7, - 95,116,104,114,101,97,100,90,13,97,108,108,111,99,97,116, - 101,95,108,111,99,107,218,4,108,111,99,107,218,6,119,97, - 107,101,117,112,114,17,0,0,0,218,5,111,119,110,101,114, - 218,5,99,111,117,110,116,218,7,119,97,105,116,101,114,115, - 169,2,218,4,115,101,108,102,114,17,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,8,95,95, - 105,110,105,116,95,95,65,0,0,0,115,16,0,0,0,10, - 1,10,1,6,1,6,1,6,1,6,1,4,128,255,128,122, - 20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,105, - 110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,3,0,0,0,67,0,0,0,115,84, - 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,125, - 2,116,3,131,0,125,3,116,4,160,5,124,2,161,1,125, - 4,124,4,100,0,117,0,114,42,100,1,83,0,124,4,106, - 2,125,2,124,2,124,1,107,2,114,60,100,2,83,0,124, - 2,124,3,118,0,114,72,100,1,83,0,124,3,160,6,124, - 2,161,1,1,0,113,20,41,3,78,70,84,41,7,114,23, - 0,0,0,218,9,103,101,116,95,105,100,101,110,116,114,26, - 0,0,0,218,3,115,101,116,218,12,95,98,108,111,99,107, - 105,110,103,95,111,110,218,3,103,101,116,218,3,97,100,100, - 41,5,114,30,0,0,0,90,2,109,101,218,3,116,105,100, - 90,4,115,101,101,110,114,24,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,12,104,97,115,95, - 100,101,97,100,108,111,99,107,73,0,0,0,115,26,0,0, - 0,8,2,6,1,6,1,10,2,8,1,4,1,6,1,8, - 1,4,1,8,1,4,6,12,1,255,128,122,24,95,77,111, - 100,117,108,101,76,111,99,107,46,104,97,115,95,100,101,97, - 100,108,111,99,107,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,196, - 0,0,0,116,0,160,1,161,0,125,1,124,0,116,2,124, - 1,60,0,122,170,124,0,106,3,143,126,1,0,124,0,106, - 4,100,1,107,2,115,46,124,0,106,5,124,1,107,2,114, - 90,124,1,124,0,95,5,124,0,4,0,106,4,100,2,55, - 0,2,0,95,4,87,0,100,3,4,0,4,0,131,3,1, - 0,87,0,116,2,124,1,61,0,100,4,83,0,124,0,160, - 6,161,0,114,110,116,7,100,5,124,0,22,0,131,1,130, - 1,124,0,106,8,160,9,100,6,161,1,114,136,124,0,4, - 0,106,10,100,2,55,0,2,0,95,10,87,0,100,3,4, - 0,4,0,131,3,1,0,110,16,49,0,115,156,48,0,1, - 0,1,0,1,0,89,0,1,0,124,0,106,8,160,9,161, - 0,1,0,124,0,106,8,160,11,161,0,1,0,113,18,116, - 2,124,1,61,0,48,0,41,7,122,185,10,32,32,32,32, - 32,32,32,32,65,99,113,117,105,114,101,32,116,104,101,32, - 109,111,100,117,108,101,32,108,111,99,107,46,32,32,73,102, - 32,97,32,112,111,116,101,110,116,105,97,108,32,100,101,97, - 100,108,111,99,107,32,105,115,32,100,101,116,101,99,116,101, - 100,44,10,32,32,32,32,32,32,32,32,97,32,95,68,101, - 97,100,108,111,99,107,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,46,10,32,32,32,32,32,32,32,32,79, - 116,104,101,114,119,105,115,101,44,32,116,104,101,32,108,111, - 99,107,32,105,115,32,97,108,119,97,121,115,32,97,99,113, - 117,105,114,101,100,32,97,110,100,32,84,114,117,101,32,105, - 115,32,114,101,116,117,114,110,101,100,46,10,32,32,32,32, - 32,32,32,32,114,22,0,0,0,233,1,0,0,0,78,84, - 122,23,100,101,97,100,108,111,99,107,32,100,101,116,101,99, - 116,101,100,32,98,121,32,37,114,70,41,12,114,23,0,0, - 0,114,32,0,0,0,114,34,0,0,0,114,24,0,0,0, - 114,27,0,0,0,114,26,0,0,0,114,38,0,0,0,114, - 19,0,0,0,114,25,0,0,0,218,7,97,99,113,117,105, - 114,101,114,28,0,0,0,218,7,114,101,108,101,97,115,101, - 169,2,114,30,0,0,0,114,37,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,40,0,0,0, - 94,0,0,0,115,36,0,0,0,8,6,8,1,2,1,8, - 2,20,1,6,1,14,1,14,1,6,9,4,247,8,1,12, - 1,12,1,44,1,10,2,12,1,8,2,255,128,122,19,95, - 77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,105, - 114,101,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,8,0,0,0,67,0,0,0,115,144,0,0,0, - 116,0,160,1,161,0,125,1,124,0,106,2,143,110,1,0, - 124,0,106,3,124,1,107,3,114,34,116,4,100,1,131,1, - 130,1,124,0,106,5,100,2,107,4,115,48,74,0,130,1, - 124,0,4,0,106,5,100,3,56,0,2,0,95,5,124,0, - 106,5,100,2,107,2,114,108,100,0,124,0,95,3,124,0, - 106,6,114,108,124,0,4,0,106,6,100,3,56,0,2,0, - 95,6,124,0,106,7,160,8,161,0,1,0,87,0,100,0, - 4,0,4,0,131,3,1,0,100,0,83,0,49,0,115,130, - 48,0,1,0,1,0,1,0,89,0,1,0,100,0,83,0, - 41,4,78,250,31,99,97,110,110,111,116,32,114,101,108,101, - 97,115,101,32,117,110,45,97,99,113,117,105,114,101,100,32, - 108,111,99,107,114,22,0,0,0,114,39,0,0,0,41,9, - 114,23,0,0,0,114,32,0,0,0,114,24,0,0,0,114, - 26,0,0,0,218,12,82,117,110,116,105,109,101,69,114,114, - 111,114,114,27,0,0,0,114,28,0,0,0,114,25,0,0, - 0,114,41,0,0,0,114,42,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,41,0,0,0,119, - 0,0,0,115,30,0,0,0,8,1,8,1,10,1,8,1, - 14,1,14,1,10,1,6,1,6,1,14,1,22,1,4,128, - 16,0,4,128,255,128,122,19,95,77,111,100,117,108,101,76, - 111,99,107,46,114,101,108,101,97,115,101,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0, - 67,0,0,0,115,18,0,0,0,100,1,160,0,124,0,106, - 1,116,2,124,0,131,1,161,2,83,0,41,2,78,122,23, - 95,77,111,100,117,108,101,76,111,99,107,40,123,33,114,125, - 41,32,97,116,32,123,125,169,3,218,6,102,111,114,109,97, - 116,114,17,0,0,0,218,2,105,100,169,1,114,30,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,8,95,95,114,101,112,114,95,95,132,0,0,0,115,4, - 0,0,0,18,1,255,128,122,20,95,77,111,100,117,108,101, - 76,111,99,107,46,95,95,114,101,112,114,95,95,78,41,9, - 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,38,0,0,0,114,40, - 0,0,0,114,41,0,0,0,114,49,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,20,0,0,0,59,0,0,0,115,16,0,0,0,8, - 0,4,1,8,5,8,8,8,21,8,25,12,13,255,128,114, - 20,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,48,0, + 112,34,0,0,0,115,10,0,0,0,8,2,10,1,20,1, + 18,1,255,128,114,12,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, + 0,0,115,12,0,0,0,116,0,116,1,131,1,124,0,131, + 1,83,0,169,1,78,41,2,218,4,116,121,112,101,218,3, + 115,121,115,169,1,218,4,110,97,109,101,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,11,95,110,101,119, + 95,109,111,100,117,108,101,42,0,0,0,115,4,0,0,0, + 12,1,255,128,114,18,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0, + 0,0,115,12,0,0,0,101,0,90,1,100,0,90,2,100, + 1,83,0,41,2,218,14,95,68,101,97,100,108,111,99,107, + 69,114,114,111,114,78,41,3,114,1,0,0,0,114,0,0, + 0,0,114,2,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,19,0,0,0, + 55,0,0,0,115,6,0,0,0,8,0,4,1,255,128,114, + 19,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,90,6,100,8,100,9,132,0,90,7,100,10, - 83,0,41,11,218,16,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,122,86,65,32,115,105,109,112,108,101, - 32,95,77,111,100,117,108,101,76,111,99,107,32,101,113,117, - 105,118,97,108,101,110,116,32,102,111,114,32,80,121,116,104, - 111,110,32,98,117,105,108,100,115,32,119,105,116,104,111,117, - 116,10,32,32,32,32,109,117,108,116,105,45,116,104,114,101, - 97,100,105,110,103,32,115,117,112,112,111,114,116,46,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,124,1,124,0, - 95,0,100,1,124,0,95,1,100,0,83,0,114,21,0,0, - 0,41,2,114,17,0,0,0,114,27,0,0,0,114,29,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,31,0,0,0,140,0,0,0,115,8,0,0,0,6, - 1,6,1,4,128,255,128,122,25,95,68,117,109,109,121,77, - 111,100,117,108,101,76,111,99,107,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,18,0,0,0, - 124,0,4,0,106,0,100,1,55,0,2,0,95,0,100,2, - 83,0,41,3,78,114,39,0,0,0,84,41,1,114,27,0, + 100,11,132,0,90,8,100,12,83,0,41,13,218,11,95,77, + 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, + 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, + 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, + 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, + 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, + 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, + 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, + 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, + 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, + 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, + 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,115,48,0, + 0,0,116,0,160,1,161,0,124,0,95,2,116,0,160,1, + 161,0,124,0,95,3,124,1,124,0,95,4,100,0,124,0, + 95,5,100,1,124,0,95,6,100,1,124,0,95,7,100,0, + 83,0,169,2,78,233,0,0,0,0,41,8,218,7,95,116, + 104,114,101,97,100,90,13,97,108,108,111,99,97,116,101,95, + 108,111,99,107,218,4,108,111,99,107,218,6,119,97,107,101, + 117,112,114,17,0,0,0,218,5,111,119,110,101,114,218,5, + 99,111,117,110,116,218,7,119,97,105,116,101,114,115,169,2, + 218,4,115,101,108,102,114,17,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,8,95,95,105,110, + 105,116,95,95,65,0,0,0,115,14,0,0,0,10,1,10, + 1,6,1,6,1,6,1,10,1,255,128,122,20,95,77,111, + 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, + 95,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,67,0,0,0,115,84,0,0,0,116, + 0,160,1,161,0,125,1,124,0,106,2,125,2,116,3,131, + 0,125,3,116,4,160,5,124,2,161,1,125,4,124,4,100, + 0,117,0,114,42,100,1,83,0,124,4,106,2,125,2,124, + 2,124,1,107,2,114,60,100,2,83,0,124,2,124,3,118, + 0,114,72,100,1,83,0,124,3,160,6,124,2,161,1,1, + 0,113,20,41,3,78,70,84,41,7,114,23,0,0,0,218, + 9,103,101,116,95,105,100,101,110,116,114,26,0,0,0,218, + 3,115,101,116,218,12,95,98,108,111,99,107,105,110,103,95, + 111,110,218,3,103,101,116,218,3,97,100,100,41,5,114,30, + 0,0,0,90,2,109,101,218,3,116,105,100,90,4,115,101, + 101,110,114,24,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,12,104,97,115,95,100,101,97,100, + 108,111,99,107,73,0,0,0,115,26,0,0,0,8,2,6, + 1,6,1,10,2,8,1,4,1,6,1,8,1,4,1,8, + 1,4,6,12,1,255,128,122,24,95,77,111,100,117,108,101, + 76,111,99,107,46,104,97,115,95,100,101,97,100,108,111,99, + 107,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,67,0,0,0,115,196,0,0,0,116, + 0,160,1,161,0,125,1,124,0,116,2,124,1,60,0,122, + 170,124,0,106,3,143,126,1,0,124,0,106,4,100,1,107, + 2,115,46,124,0,106,5,124,1,107,2,114,90,124,1,124, + 0,95,5,124,0,4,0,106,4,100,2,55,0,2,0,95, + 4,87,0,100,3,4,0,4,0,131,3,1,0,87,0,116, + 2,124,1,61,0,100,4,83,0,124,0,160,6,161,0,114, + 110,116,7,100,5,124,0,22,0,131,1,130,1,124,0,106, + 8,160,9,100,6,161,1,114,136,124,0,4,0,106,10,100, + 2,55,0,2,0,95,10,87,0,100,3,4,0,4,0,131, + 3,1,0,110,16,49,0,115,156,48,0,1,0,1,0,1, + 0,89,0,1,0,124,0,106,8,160,9,161,0,1,0,124, + 0,106,8,160,11,161,0,1,0,113,18,116,2,124,1,61, + 0,48,0,41,7,122,185,10,32,32,32,32,32,32,32,32, + 65,99,113,117,105,114,101,32,116,104,101,32,109,111,100,117, + 108,101,32,108,111,99,107,46,32,32,73,102,32,97,32,112, + 111,116,101,110,116,105,97,108,32,100,101,97,100,108,111,99, + 107,32,105,115,32,100,101,116,101,99,116,101,100,44,10,32, + 32,32,32,32,32,32,32,97,32,95,68,101,97,100,108,111, + 99,107,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,46,10,32,32,32,32,32,32,32,32,79,116,104,101,114, + 119,105,115,101,44,32,116,104,101,32,108,111,99,107,32,105, + 115,32,97,108,119,97,121,115,32,97,99,113,117,105,114,101, + 100,32,97,110,100,32,84,114,117,101,32,105,115,32,114,101, + 116,117,114,110,101,100,46,10,32,32,32,32,32,32,32,32, + 114,22,0,0,0,233,1,0,0,0,78,84,122,23,100,101, + 97,100,108,111,99,107,32,100,101,116,101,99,116,101,100,32, + 98,121,32,37,114,70,41,12,114,23,0,0,0,114,32,0, + 0,0,114,34,0,0,0,114,24,0,0,0,114,27,0,0, + 0,114,26,0,0,0,114,38,0,0,0,114,19,0,0,0, + 114,25,0,0,0,218,7,97,99,113,117,105,114,101,114,28, + 0,0,0,218,7,114,101,108,101,97,115,101,169,2,114,30, + 0,0,0,114,37,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,40,0,0,0,94,0,0,0, + 115,36,0,0,0,8,6,8,1,2,1,8,2,20,1,6, + 1,14,1,14,1,6,9,4,247,8,1,12,1,12,1,44, + 1,10,2,12,1,8,2,255,128,122,19,95,77,111,100,117, + 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, + 0,0,0,67,0,0,0,115,144,0,0,0,116,0,160,1, + 161,0,125,1,124,0,106,2,143,110,1,0,124,0,106,3, + 124,1,107,3,114,34,116,4,100,1,131,1,130,1,124,0, + 106,5,100,2,107,4,115,48,74,0,130,1,124,0,4,0, + 106,5,100,3,56,0,2,0,95,5,124,0,106,5,100,2, + 107,2,114,108,100,0,124,0,95,3,124,0,106,6,114,108, + 124,0,4,0,106,6,100,3,56,0,2,0,95,6,124,0, + 106,7,160,8,161,0,1,0,87,0,100,0,4,0,4,0, + 131,3,1,0,100,0,83,0,49,0,115,130,48,0,1,0, + 1,0,1,0,89,0,1,0,100,0,83,0,41,4,78,250, + 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, + 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, + 114,22,0,0,0,114,39,0,0,0,41,9,114,23,0,0, + 0,114,32,0,0,0,114,24,0,0,0,114,26,0,0,0, + 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,27, + 0,0,0,114,28,0,0,0,114,25,0,0,0,114,41,0, + 0,0,114,42,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,41,0,0,0,119,0,0,0,115, + 24,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, + 10,1,6,1,6,1,14,1,46,1,255,128,122,19,95,77, + 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,5,0,0,0,67,0,0,0,115,18,0,0,0,100, + 1,160,0,124,0,106,1,116,2,124,0,131,1,161,2,83, + 0,41,2,78,122,23,95,77,111,100,117,108,101,76,111,99, + 107,40,123,33,114,125,41,32,97,116,32,123,125,169,3,218, + 6,102,111,114,109,97,116,114,17,0,0,0,218,2,105,100, + 169,1,114,30,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95, + 132,0,0,0,115,4,0,0,0,18,1,255,128,122,20,95, + 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112, + 114,95,95,78,41,9,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, + 38,0,0,0,114,40,0,0,0,114,41,0,0,0,114,49, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,20,0,0,0,59,0,0,0, + 115,16,0,0,0,8,0,4,1,8,5,8,8,8,21,8, + 25,12,13,255,128,114,20,0,0,0,99,0,0,0,0,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,4,100,5, + 132,0,90,5,100,6,100,7,132,0,90,6,100,8,100,9, + 132,0,90,7,100,10,83,0,41,11,218,16,95,68,117,109, + 109,121,77,111,100,117,108,101,76,111,99,107,122,86,65,32, + 115,105,109,112,108,101,32,95,77,111,100,117,108,101,76,111, + 99,107,32,101,113,117,105,118,97,108,101,110,116,32,102,111, + 114,32,80,121,116,104,111,110,32,98,117,105,108,100,115,32, + 119,105,116,104,111,117,116,10,32,32,32,32,109,117,108,116, + 105,45,116,104,114,101,97,100,105,110,103,32,115,117,112,112, + 111,114,116,46,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,0, + 0,0,124,1,124,0,95,0,100,1,124,0,95,1,100,0, + 83,0,114,21,0,0,0,41,2,114,17,0,0,0,114,27, + 0,0,0,114,29,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,31,0,0,0,140,0,0,0, + 115,6,0,0,0,6,1,10,1,255,128,122,25,95,68,117, + 109,109,121,77,111,100,117,108,101,76,111,99,107,46,95,95, + 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 18,0,0,0,124,0,4,0,106,0,100,1,55,0,2,0, + 95,0,100,2,83,0,41,3,78,114,39,0,0,0,84,41, + 1,114,27,0,0,0,114,48,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,40,0,0,0,144, + 0,0,0,115,6,0,0,0,14,1,4,1,255,128,122,24, + 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, + 46,97,99,113,117,105,114,101,99,1,0,0,0,0,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,2,114,18, + 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, + 56,0,2,0,95,0,100,0,83,0,41,4,78,114,22,0, + 0,0,114,43,0,0,0,114,39,0,0,0,41,2,114,27, + 0,0,0,114,44,0,0,0,114,48,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,41,0,0, + 0,148,0,0,0,115,8,0,0,0,10,1,8,1,18,1, + 255,128,122,24,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, + 0,67,0,0,0,115,18,0,0,0,100,1,160,0,124,0, + 106,1,116,2,124,0,131,1,161,2,83,0,41,2,78,122, + 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,40,123,33,114,125,41,32,97,116,32,123,125,114,45,0, 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,40,0,0,0,144,0,0,0,115, - 6,0,0,0,14,1,4,1,255,128,122,24,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,46,97,99,113, - 117,105,114,101,99,1,0,0,0,0,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,2,114,18,116,1,100,2, - 131,1,130,1,124,0,4,0,106,0,100,3,56,0,2,0, - 95,0,100,0,83,0,41,4,78,114,22,0,0,0,114,43, - 0,0,0,114,39,0,0,0,41,2,114,27,0,0,0,114, - 44,0,0,0,114,48,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,41,0,0,0,148,0,0, - 0,115,10,0,0,0,10,1,8,1,14,1,4,128,255,128, - 122,24,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,114,101,108,101,97,115,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,67, - 0,0,0,115,18,0,0,0,100,1,160,0,124,0,106,1, - 116,2,124,0,131,1,161,2,83,0,41,2,78,122,28,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,40, - 123,33,114,125,41,32,97,116,32,123,125,114,45,0,0,0, - 114,48,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,49,0,0,0,153,0,0,0,115,4,0, - 0,0,18,1,255,128,122,25,95,68,117,109,109,121,77,111, - 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, - 95,78,41,8,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,40,0, - 0,0,114,41,0,0,0,114,49,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,136,0,0,0,115,14,0,0,0,8,0, - 4,1,8,3,8,4,8,4,12,5,255,128,114,50,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,64,0,0,0,115,36,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,100,6,132,0,90,5,100, - 7,83,0,41,8,218,18,95,77,111,100,117,108,101,76,111, - 99,107,77,97,110,97,103,101,114,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, - 0,0,115,16,0,0,0,124,1,124,0,95,0,100,0,124, - 0,95,1,100,0,83,0,114,13,0,0,0,41,2,218,5, - 95,110,97,109,101,218,5,95,108,111,99,107,114,29,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,31,0,0,0,159,0,0,0,115,8,0,0,0,6,1, - 6,1,4,128,255,128,122,27,95,77,111,100,117,108,101,76, + 0,114,11,0,0,0,114,49,0,0,0,153,0,0,0,115, + 4,0,0,0,18,1,255,128,122,25,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112, + 114,95,95,78,41,8,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, + 40,0,0,0,114,41,0,0,0,114,49,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,136,0,0,0,115,14,0,0,0, + 8,0,4,1,8,3,8,4,8,4,12,5,255,128,114,50, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,64,0,0,0,115,36,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,100,6,132,0,90, + 5,100,7,83,0,41,8,218,18,95,77,111,100,117,108,101, + 76,111,99,107,77,97,110,97,103,101,114,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, + 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,100, + 0,124,0,95,1,100,0,83,0,114,13,0,0,0,41,2, + 218,5,95,110,97,109,101,218,5,95,108,111,99,107,114,29, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,31,0,0,0,159,0,0,0,115,6,0,0,0, + 6,1,10,1,255,128,122,27,95,77,111,100,117,108,101,76, 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,2,0,0,0,67,0,0,0,115,26,0,0, @@ -291,462 +290,461 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,111,99,107,114,52,0,0,0,114,53,0,0,0,114,40, 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, 0,0,114,11,0,0,0,218,9,95,95,101,110,116,101,114, - 95,95,163,0,0,0,115,8,0,0,0,12,1,10,1,4, - 128,255,128,122,28,95,77,111,100,117,108,101,76,111,99,107, - 77,97,110,97,103,101,114,46,95,95,101,110,116,101,114,95, - 95,99,1,0,0,0,0,0,0,0,0,0,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,53,0,0,0,114,41,0,0,0,41,3, - 114,30,0,0,0,218,4,97,114,103,115,90,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,167,0,0,0, - 115,6,0,0,0,10,1,4,128,255,128,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, - 55,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,51,0, - 0,0,157,0,0,0,115,10,0,0,0,8,0,8,2,8, - 4,12,4,255,128,114,51,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,134,0,0,0,116,0,160,1,161,0,1,0, - 122,114,122,14,116,2,124,0,25,0,131,0,125,1,87,0, - 110,22,4,0,116,3,121,46,1,0,1,0,1,0,100,1, - 125,1,89,0,110,2,48,0,124,1,100,1,117,0,114,110, - 116,4,100,1,117,0,114,74,116,5,124,0,131,1,125,1, - 110,8,116,6,124,0,131,1,125,1,124,0,102,1,100,2, - 100,3,132,1,125,2,116,7,160,8,124,1,124,2,161,2, - 116,2,124,0,60,0,87,0,116,0,160,9,161,0,1,0, - 124,1,83,0,116,0,160,9,161,0,1,0,48,0,41,4, - 122,139,71,101,116,32,111,114,32,99,114,101,97,116,101,32, - 116,104,101,32,109,111,100,117,108,101,32,108,111,99,107,32, - 102,111,114,32,97,32,103,105,118,101,110,32,109,111,100,117, - 108,101,32,110,97,109,101,46,10,10,32,32,32,32,65,99, - 113,117,105,114,101,47,114,101,108,101,97,115,101,32,105,110, - 116,101,114,110,97,108,108,121,32,116,104,101,32,103,108,111, - 98,97,108,32,105,109,112,111,114,116,32,108,111,99,107,32, - 116,111,32,112,114,111,116,101,99,116,10,32,32,32,32,95, - 109,111,100,117,108,101,95,108,111,99,107,115,46,78,99,2, + 95,95,163,0,0,0,115,6,0,0,0,12,1,14,1,255, + 128,122,28,95,77,111,100,117,108,101,76,111,99,107,77,97, + 110,97,103,101,114,46,95,95,101,110,116,101,114,95,95,99, + 1,0,0,0,0,0,0,0,0,0,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,53,0,0,0,114,41,0,0,0,41,3,114,30, + 0,0,0,218,4,97,114,103,115,90,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,167,0,0,0,115,4, + 0,0,0,14,1,255,128,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,55,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,51,0,0,0,157,0, + 0,0,115,10,0,0,0,8,0,8,2,8,4,12,4,255, + 128,114,51,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, + 134,0,0,0,116,0,160,1,161,0,1,0,122,114,122,14, + 116,2,124,0,25,0,131,0,125,1,87,0,110,22,4,0, + 116,3,121,46,1,0,1,0,1,0,100,1,125,1,89,0, + 110,2,48,0,124,1,100,1,117,0,114,110,116,4,100,1, + 117,0,114,74,116,5,124,0,131,1,125,1,110,8,116,6, + 124,0,131,1,125,1,124,0,102,1,100,2,100,3,132,1, + 125,2,116,7,160,8,124,1,124,2,161,2,116,2,124,0, + 60,0,87,0,116,0,160,9,161,0,1,0,124,1,83,0, + 116,0,160,9,161,0,1,0,48,0,41,4,122,139,71,101, + 116,32,111,114,32,99,114,101,97,116,101,32,116,104,101,32, + 109,111,100,117,108,101,32,108,111,99,107,32,102,111,114,32, + 97,32,103,105,118,101,110,32,109,111,100,117,108,101,32,110, + 97,109,101,46,10,10,32,32,32,32,65,99,113,117,105,114, + 101,47,114,101,108,101,97,115,101,32,105,110,116,101,114,110, + 97,108,108,121,32,116,104,101,32,103,108,111,98,97,108,32, + 105,109,112,111,114,116,32,108,111,99,107,32,116,111,32,112, + 114,111,116,101,99,116,10,32,32,32,32,95,109,111,100,117, + 108,101,95,108,111,99,107,115,46,78,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,83, + 0,0,0,115,54,0,0,0,116,0,160,1,161,0,1,0, + 122,34,116,2,160,3,124,1,161,1,124,0,117,0,114,30, + 116,2,124,1,61,0,87,0,116,0,160,4,161,0,1,0, + 100,0,83,0,116,0,160,4,161,0,1,0,48,0,114,13, + 0,0,0,41,5,218,4,95,105,109,112,218,12,97,99,113, + 117,105,114,101,95,108,111,99,107,218,13,95,109,111,100,117, + 108,101,95,108,111,99,107,115,114,35,0,0,0,218,12,114, + 101,108,101,97,115,101,95,108,111,99,107,41,2,218,3,114, + 101,102,114,17,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,2,99,98,192,0,0,0,115,12, + 0,0,0,8,1,2,1,14,4,8,1,22,2,255,128,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, + 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,50,0, + 0,0,114,20,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,54,0,0,0, + 173,0,0,0,115,32,0,0,0,8,6,2,1,2,1,14, + 1,12,1,10,1,8,2,8,1,10,1,8,2,12,2,18, + 11,8,2,4,2,10,254,255,128,114,54,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, - 0,0,0,83,0,0,0,115,54,0,0,0,116,0,160,1, - 161,0,1,0,122,34,116,2,160,3,124,1,161,1,124,0, - 117,0,114,30,116,2,124,1,61,0,87,0,116,0,160,4, - 161,0,1,0,100,0,83,0,116,0,160,4,161,0,1,0, - 48,0,114,13,0,0,0,41,5,218,4,95,105,109,112,218, - 12,97,99,113,117,105,114,101,95,108,111,99,107,218,13,95, - 109,111,100,117,108,101,95,108,111,99,107,115,114,35,0,0, - 0,218,12,114,101,108,101,97,115,101,95,108,111,99,107,41, - 2,218,3,114,101,102,114,17,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,2,99,98,192,0, - 0,0,115,16,0,0,0,8,1,2,1,14,4,8,1,8, - 2,4,128,10,0,255,128,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,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,50,0,0,0,114,20,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,54,0,0,0,173,0,0,0,115,32,0,0, - 0,8,6,2,1,2,1,14,1,12,1,10,1,8,2,8, - 1,10,1,8,2,12,2,18,11,8,2,4,2,10,254,255, - 128,114,54,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, - 54,0,0,0,116,0,124,0,131,1,125,1,122,12,124,1, - 160,1,161,0,1,0,87,0,110,20,4,0,116,2,121,40, - 1,0,1,0,1,0,89,0,100,1,83,0,48,0,124,1, - 160,3,161,0,1,0,100,1,83,0,41,2,122,189,65,99, - 113,117,105,114,101,115,32,116,104,101,110,32,114,101,108,101, - 97,115,101,115,32,116,104,101,32,109,111,100,117,108,101,32, - 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, - 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, - 32,32,32,84,104,105,115,32,105,115,32,117,115,101,100,32, - 116,111,32,101,110,115,117,114,101,32,97,32,109,111,100,117, - 108,101,32,105,115,32,99,111,109,112,108,101,116,101,108,121, - 32,105,110,105,116,105,97,108,105,122,101,100,44,32,105,110, - 32,116,104,101,10,32,32,32,32,101,118,101,110,116,32,105, - 116,32,105,115,32,98,101,105,110,103,32,105,109,112,111,114, - 116,101,100,32,98,121,32,97,110,111,116,104,101,114,32,116, - 104,114,101,97,100,46,10,32,32,32,32,78,41,4,114,54, - 0,0,0,114,40,0,0,0,114,19,0,0,0,114,41,0, - 0,0,41,2,114,17,0,0,0,114,24,0,0,0,114,10, - 0,0,0,114,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,210,0,0,0,115,20,0,0,0,8,6,2,1,12, - 1,12,1,2,3,4,128,2,0,8,2,4,128,255,128,114, - 66,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,4,0,0,0,79,0,0,0,115,14,0, - 0,0,124,0,124,1,105,0,124,2,164,1,142,1,83,0, - 41,2,97,46,1,0,0,114,101,109,111,118,101,95,105,109, - 112,111,114,116,108,105,98,95,102,114,97,109,101,115,32,105, - 110,32,105,109,112,111,114,116,46,99,32,119,105,108,108,32, - 97,108,119,97,121,115,32,114,101,109,111,118,101,32,115,101, - 113,117,101,110,99,101,115,10,32,32,32,32,111,102,32,105, - 109,112,111,114,116,108,105,98,32,102,114,97,109,101,115,32, - 116,104,97,116,32,101,110,100,32,119,105,116,104,32,97,32, - 99,97,108,108,32,116,111,32,116,104,105,115,32,102,117,110, - 99,116,105,111,110,10,10,32,32,32,32,85,115,101,32,105, - 116,32,105,110,115,116,101,97,100,32,111,102,32,97,32,110, - 111,114,109,97,108,32,99,97,108,108,32,105,110,32,112,108, - 97,99,101,115,32,119,104,101,114,101,32,105,110,99,108,117, - 100,105,110,103,32,116,104,101,32,105,109,112,111,114,116,108, - 105,98,10,32,32,32,32,102,114,97,109,101,115,32,105,110, - 116,114,111,100,117,99,101,115,32,117,110,119,97,110,116,101, - 100,32,110,111,105,115,101,32,105,110,116,111,32,116,104,101, - 32,116,114,97,99,101,98,97,99,107,32,40,101,46,103,46, - 32,119,104,101,110,32,101,120,101,99,117,116,105,110,103,10, - 32,32,32,32,109,111,100,117,108,101,32,99,111,100,101,41, - 10,32,32,32,32,78,114,10,0,0,0,41,3,218,1,102, - 114,56,0,0,0,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,227,0,0,0,115,4,0,0,0,14,8, - 255,128,114,68,0,0,0,114,39,0,0,0,41,1,218,9, - 118,101,114,98,111,115,105,116,121,99,1,0,0,0,0,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,106,2,124,1,107, - 5,114,50,124,0,160,3,100,1,161,1,115,30,100,2,124, - 0,23,0,125,0,116,4,124,0,106,5,124,2,142,0,116, - 0,106,6,100,3,141,2,1,0,100,4,83,0,41,5,122, - 61,80,114,105,110,116,32,116,104,101,32,109,101,115,115,97, - 103,101,32,116,111,32,115,116,100,101,114,114,32,105,102,32, - 45,118,47,80,89,84,72,79,78,86,69,82,66,79,83,69, - 32,105,115,32,116,117,114,110,101,100,32,111,110,46,41,2, - 250,1,35,122,7,105,109,112,111,114,116,32,122,2,35,32, - 41,1,90,4,102,105,108,101,78,41,7,114,15,0,0,0, - 218,5,102,108,97,103,115,218,7,118,101,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,46,0,0,0,218,6,115,116,100,101,114,114, - 41,3,218,7,109,101,115,115,97,103,101,114,69,0,0,0, - 114,56,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,238,0,0,0,115,12,0,0,0,12, - 2,10,1,8,1,20,1,4,128,255,128,114,77,0,0,0, - 99,1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99,111, - 114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,32, - 116,104,101,32,110,97,109,101,100,32,109,111,100,117,108,101, - 32,105,115,32,98,117,105,108,116,45,105,110,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,19,0,0,0,115,38,0,0,0,124,1,116,0,106, - 1,118,1,114,28,116,2,100,1,160,3,124,1,161,1,124, - 1,100,2,141,2,130,1,136,0,124,0,124,1,131,2,83, - 0,41,3,78,250,29,123,33,114,125,32,105,115,32,110,111, - 116,32,97,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,114,16,0,0,0,41,4,114,15,0,0,0,218, - 20,98,117,105,108,116,105,110,95,109,111,100,117,108,101,95, - 110,97,109,101,115,218,11,73,109,112,111,114,116,69,114,114, - 111,114,114,46,0,0,0,169,2,114,30,0,0,0,218,8, - 102,117,108,108,110,97,109,101,169,1,218,3,102,120,110,114, - 10,0,0,0,114,11,0,0,0,218,25,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,248,0,0,0,115,12,0,0,0,10,1,10, - 1,2,1,6,255,10,2,255,128,122,52,95,114,101,113,117, - 105,114,101,115,95,98,117,105,108,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,78, - 169,1,114,12,0,0,0,41,2,114,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,246,0,0,0,115,8,0,0,0,12,2, - 10,5,4,1,255,128,114,87,0,0,0,99,1,0,0,0, - 0,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, - 1,83,0,41,4,122,47,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, - 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,102, - 114,111,122,101,110,46,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,19,0,0,0,115, - 38,0,0,0,116,0,160,1,124,1,161,1,115,28,116,2, - 100,1,160,3,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,58,0,0,0,218,9,105,115,95,102,114,111,122,101, - 110,114,80,0,0,0,114,46,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,3,1,0,0,115,12,0, - 0,0,10,1,10,1,2,1,6,255,10,2,255,128,122,50, + 0,0,0,67,0,0,0,115,54,0,0,0,116,0,124,0, + 131,1,125,1,122,12,124,1,160,1,161,0,1,0,87,0, + 110,20,4,0,116,2,121,40,1,0,1,0,1,0,89,0, + 100,1,83,0,48,0,124,1,160,3,161,0,1,0,100,1, + 83,0,41,2,122,189,65,99,113,117,105,114,101,115,32,116, + 104,101,110,32,114,101,108,101,97,115,101,115,32,116,104,101, + 32,109,111,100,117,108,101,32,108,111,99,107,32,102,111,114, + 32,97,32,103,105,118,101,110,32,109,111,100,117,108,101,32, + 110,97,109,101,46,10,10,32,32,32,32,84,104,105,115,32, + 105,115,32,117,115,101,100,32,116,111,32,101,110,115,117,114, + 101,32,97,32,109,111,100,117,108,101,32,105,115,32,99,111, + 109,112,108,101,116,101,108,121,32,105,110,105,116,105,97,108, + 105,122,101,100,44,32,105,110,32,116,104,101,10,32,32,32, + 32,101,118,101,110,116,32,105,116,32,105,115,32,98,101,105, + 110,103,32,105,109,112,111,114,116,101,100,32,98,121,32,97, + 110,111,116,104,101,114,32,116,104,114,101,97,100,46,10,32, + 32,32,32,78,41,4,114,54,0,0,0,114,40,0,0,0, + 114,19,0,0,0,114,41,0,0,0,41,2,114,17,0,0, + 0,114,24,0,0,0,114,10,0,0,0,114,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,210,0,0,0,115,14, + 0,0,0,8,6,2,1,12,1,12,1,8,3,12,2,255, + 128,114,66,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,4,0,0,0,79,0,0,0,115, + 14,0,0,0,124,0,124,1,105,0,124,2,164,1,142,1, + 83,0,41,2,97,46,1,0,0,114,101,109,111,118,101,95, + 105,109,112,111,114,116,108,105,98,95,102,114,97,109,101,115, + 32,105,110,32,105,109,112,111,114,116,46,99,32,119,105,108, + 108,32,97,108,119,97,121,115,32,114,101,109,111,118,101,32, + 115,101,113,117,101,110,99,101,115,10,32,32,32,32,111,102, + 32,105,109,112,111,114,116,108,105,98,32,102,114,97,109,101, + 115,32,116,104,97,116,32,101,110,100,32,119,105,116,104,32, + 97,32,99,97,108,108,32,116,111,32,116,104,105,115,32,102, + 117,110,99,116,105,111,110,10,10,32,32,32,32,85,115,101, + 32,105,116,32,105,110,115,116,101,97,100,32,111,102,32,97, + 32,110,111,114,109,97,108,32,99,97,108,108,32,105,110,32, + 112,108,97,99,101,115,32,119,104,101,114,101,32,105,110,99, + 108,117,100,105,110,103,32,116,104,101,32,105,109,112,111,114, + 116,108,105,98,10,32,32,32,32,102,114,97,109,101,115,32, + 105,110,116,114,111,100,117,99,101,115,32,117,110,119,97,110, + 116,101,100,32,110,111,105,115,101,32,105,110,116,111,32,116, + 104,101,32,116,114,97,99,101,98,97,99,107,32,40,101,46, + 103,46,32,119,104,101,110,32,101,120,101,99,117,116,105,110, + 103,10,32,32,32,32,109,111,100,117,108,101,32,99,111,100, + 101,41,10,32,32,32,32,78,114,10,0,0,0,41,3,218, + 1,102,114,56,0,0,0,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,227,0,0,0,115,4,0,0,0, + 14,8,255,128,114,68,0,0,0,114,39,0,0,0,41,1, + 218,9,118,101,114,98,111,115,105,116,121,99,1,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0, + 71,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, + 1,107,5,114,54,124,0,160,3,100,1,161,1,115,30,100, + 2,124,0,23,0,125,0,116,4,124,0,106,5,124,2,142, + 0,116,0,106,6,100,3,141,2,1,0,100,4,83,0,100, + 4,83,0,41,5,122,61,80,114,105,110,116,32,116,104,101, + 32,109,101,115,115,97,103,101,32,116,111,32,115,116,100,101, + 114,114,32,105,102,32,45,118,47,80,89,84,72,79,78,86, + 69,82,66,79,83,69,32,105,115,32,116,117,114,110,101,100, + 32,111,110,46,41,2,250,1,35,122,7,105,109,112,111,114, + 116,32,122,2,35,32,41,1,90,4,102,105,108,101,78,41, + 7,114,15,0,0,0,218,5,102,108,97,103,115,218,7,118, + 101,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,46,0,0,0,218,6, + 115,116,100,101,114,114,41,3,218,7,109,101,115,115,97,103, + 101,114,69,0,0,0,114,56,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,238,0,0,0, + 115,12,0,0,0,12,2,10,1,8,1,24,1,4,253,255, + 128,114,77,0,0,0,99,1,0,0,0,0,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,1,83,0,41,4, + 122,49,68,101,99,111,114,97,116,111,114,32,116,111,32,118, + 101,114,105,102,121,32,116,104,101,32,110,97,109,101,100,32, + 109,111,100,117,108,101,32,105,115,32,98,117,105,108,116,45, + 105,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,19,0,0,0,115,38,0,0, + 0,124,1,116,0,106,1,118,1,114,28,116,2,100,1,160, + 3,124,1,161,1,124,1,100,2,141,2,130,1,136,0,124, + 0,124,1,131,2,83,0,41,3,78,250,29,123,33,114,125, + 32,105,115,32,110,111,116,32,97,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,114,16,0,0,0,41,4, + 114,15,0,0,0,218,20,98,117,105,108,116,105,110,95,109, + 111,100,117,108,101,95,110,97,109,101,115,218,11,73,109,112, + 111,114,116,69,114,114,111,114,114,46,0,0,0,169,2,114, + 30,0,0,0,218,8,102,117,108,108,110,97,109,101,169,1, + 218,3,102,120,110,114,10,0,0,0,114,11,0,0,0,218, + 25,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,248,0,0,0,115,12, + 0,0,0,10,1,10,1,2,1,6,255,10,2,255,128,122, + 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,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,78,169,1,114,12,0,0,0,41,2,114, + 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,246,0,0,0,115, + 8,0,0,0,12,2,10,5,4,1,255,128,114,87,0,0, + 0,99,1,0,0,0,0,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,1,83,0,41,4,122,47,68,101,99, + 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, + 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, + 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,19,0,0,0,115,38,0,0,0,116,0,160,1,124,1, + 161,1,115,28,116,2,100,1,160,3,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,58,0,0,0,218,9,105,115, + 95,102,114,111,122,101,110,114,80,0,0,0,114,46,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,3, + 1,0,0,115,12,0,0,0,10,1,10,1,2,1,6,255, + 10,2,255,128,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, - 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,78,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,1,1,0,0,115,8,0,0,0,12,2, - 10,5,4,1,255,128,114,91,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, - 67,0,0,0,115,58,0,0,0,116,0,124,1,124,0,131, - 2,125,2,124,1,116,1,106,2,118,0,114,50,116,1,106, - 2,124,1,25,0,125,3,116,3,124,2,124,3,131,2,1, - 0,116,1,106,2,124,1,25,0,83,0,116,4,124,2,131, - 1,83,0,41,2,122,128,76,111,97,100,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 32,105,110,116,111,32,115,121,115,46,109,111,100,117,108,101, - 115,32,97,110,100,32,114,101,116,117,114,110,32,105,116,46, - 10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120,101, - 99,95,109,111,100,117,108,101,32,105,110,115,116,101,97,100, - 46,10,10,32,32,32,32,78,41,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, - 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,13,1,0,0,115,14,0,0,0,10,6,10, - 1,10,1,10,1,10,1,8,2,255,128,114,98,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,8,0,0,0,67,0,0,0,115,210,0,0,0,116,0, - 124,0,100,1,100,0,131,3,125,1,116,1,124,1,100,2, - 131,2,114,54,122,12,124,1,160,2,124,0,161,1,87,0, - 83,0,4,0,116,3,121,52,1,0,1,0,1,0,89,0, - 110,2,48,0,122,10,124,0,106,4,125,2,87,0,110,18, - 4,0,116,5,121,82,1,0,1,0,1,0,89,0,110,18, - 48,0,124,2,100,0,117,1,114,100,116,6,124,2,131,1, - 83,0,122,10,124,0,106,7,125,3,87,0,110,22,4,0, - 116,5,121,132,1,0,1,0,1,0,100,3,125,3,89,0, - 110,2,48,0,122,10,124,0,106,8,125,4,87,0,110,52, - 4,0,116,5,121,196,1,0,1,0,1,0,124,1,100,0, - 117,0,114,180,100,4,160,9,124,3,161,1,6,0,89,0, - 83,0,100,5,160,9,124,3,124,1,161,2,6,0,89,0, - 83,0,48,0,100,6,160,9,124,3,124,4,161,2,83,0, - 41,7,78,218,10,95,95,108,111,97,100,101,114,95,95,218, - 11,109,111,100,117,108,101,95,114,101,112,114,250,1,63,250, - 13,60,109,111,100,117,108,101,32,123,33,114,125,62,250,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,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,46,0,0,0,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,29, - 1,0,0,115,48,0,0,0,12,2,10,1,2,4,12,1, - 12,1,6,1,2,1,10,1,12,1,6,1,8,2,8,1, - 2,4,10,1,12,1,10,1,2,1,10,1,12,1,8,1, - 14,1,18,2,12,2,255,128,114,112,0,0,0,99,0,0, - 0,0,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,132,2,90,4,100,6,100,7,132,0,90, - 5,100,8,100,9,132,0,90,6,101,7,100,10,100,11,132, - 0,131,1,90,8,101,8,106,9,100,12,100,11,132,0,131, - 1,90,8,101,7,100,13,100,14,132,0,131,1,90,10,101, - 7,100,15,100,16,132,0,131,1,90,11,101,11,106,9,100, - 17,100,16,132,0,131,1,90,11,100,2,83,0,41,18,218, - 10,77,111,100,117,108,101,83,112,101,99,97,208,5,0,0, - 84,104,101,32,115,112,101,99,105,102,105,99,97,116,105,111, - 110,32,102,111,114,32,97,32,109,111,100,117,108,101,44,32, - 117,115,101,100,32,102,111,114,32,108,111,97,100,105,110,103, - 46,10,10,32,32,32,32,65,32,109,111,100,117,108,101,39, - 115,32,115,112,101,99,32,105,115,32,116,104,101,32,115,111, - 117,114,99,101,32,102,111,114,32,105,110,102,111,114,109,97, - 116,105,111,110,32,97,98,111,117,116,32,116,104,101,32,109, - 111,100,117,108,101,46,32,32,70,111,114,10,32,32,32,32, - 100,97,116,97,32,97,115,115,111,99,105,97,116,101,100,32, - 119,105,116,104,32,116,104,101,32,109,111,100,117,108,101,44, - 32,105,110,99,108,117,100,105,110,103,32,115,111,117,114,99, - 101,44,32,117,115,101,32,116,104,101,32,115,112,101,99,39, - 115,10,32,32,32,32,108,111,97,100,101,114,46,10,10,32, - 32,32,32,96,110,97,109,101,96,32,105,115,32,116,104,101, - 32,97,98,115,111,108,117,116,101,32,110,97,109,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,46,32,32,96, - 108,111,97,100,101,114,96,32,105,115,32,116,104,101,32,108, - 111,97,100,101,114,10,32,32,32,32,116,111,32,117,115,101, - 32,119,104,101,110,32,108,111,97,100,105,110,103,32,116,104, - 101,32,109,111,100,117,108,101,46,32,32,96,112,97,114,101, - 110,116,96,32,105,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,10,32,32,32,32,112,97,99,107,97, - 103,101,32,116,104,101,32,109,111,100,117,108,101,32,105,115, - 32,105,110,46,32,32,84,104,101,32,112,97,114,101,110,116, - 32,105,115,32,100,101,114,105,118,101,100,32,102,114,111,109, - 32,116,104,101,32,110,97,109,101,46,10,10,32,32,32,32, - 96,105,115,95,112,97,99,107,97,103,101,96,32,100,101,116, - 101,114,109,105,110,101,115,32,105,102,32,116,104,101,32,109, - 111,100,117,108,101,32,105,115,32,99,111,110,115,105,100,101, - 114,101,100,32,97,32,112,97,99,107,97,103,101,32,111,114, - 10,32,32,32,32,110,111,116,46,32,32,79,110,32,109,111, - 100,117,108,101,115,32,116,104,105,115,32,105,115,32,114,101, - 102,108,101,99,116,101,100,32,98,121,32,116,104,101,32,96, - 95,95,112,97,116,104,95,95,96,32,97,116,116,114,105,98, - 117,116,101,46,10,10,32,32,32,32,96,111,114,105,103,105, - 110,96,32,105,115,32,116,104,101,32,115,112,101,99,105,102, - 105,99,32,108,111,99,97,116,105,111,110,32,117,115,101,100, - 32,98,121,32,116,104,101,32,108,111,97,100,101,114,32,102, - 114,111,109,32,119,104,105,99,104,32,116,111,10,32,32,32, - 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101, - 44,32,105,102,32,116,104,97,116,32,105,110,102,111,114,109, - 97,116,105,111,110,32,105,115,32,97,118,97,105,108,97,98, - 108,101,46,32,32,87,104,101,110,32,102,105,108,101,110,97, - 109,101,32,105,115,10,32,32,32,32,115,101,116,44,32,111, - 114,105,103,105,110,32,119,105,108,108,32,109,97,116,99,104, - 46,10,10,32,32,32,32,96,104,97,115,95,108,111,99,97, - 116,105,111,110,96,32,105,110,100,105,99,97,116,101,115,32, - 116,104,97,116,32,97,32,115,112,101,99,39,115,32,34,111, - 114,105,103,105,110,34,32,114,101,102,108,101,99,116,115,32, - 97,32,108,111,99,97,116,105,111,110,46,10,32,32,32,32, - 87,104,101,110,32,116,104,105,115,32,105,115,32,84,114,117, - 101,44,32,96,95,95,102,105,108,101,95,95,96,32,97,116, - 116,114,105,98,117,116,101,32,111,102,32,116,104,101,32,109, - 111,100,117,108,101,32,105,115,32,115,101,116,46,10,10,32, - 32,32,32,96,99,97,99,104,101,100,96,32,105,115,32,116, - 104,101,32,108,111,99,97,116,105,111,110,32,111,102,32,116, - 104,101,32,99,97,99,104,101,100,32,98,121,116,101,99,111, - 100,101,32,102,105,108,101,44,32,105,102,32,97,110,121,46, - 32,32,73,116,10,32,32,32,32,99,111,114,114,101,115,112, - 111,110,100,115,32,116,111,32,116,104,101,32,96,95,95,99, - 97,99,104,101,100,95,95,96,32,97,116,116,114,105,98,117, - 116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113, - 117,101,110,99,101,32,111,102,32,112,97,116,104,32,101,110, - 116,114,105,101,115,32,116,111,10,32,32,32,32,115,101,97, - 114,99,104,32,119,104,101,110,32,105,109,112,111,114,116,105, - 110,103,32,115,117,98,109,111,100,117,108,101,115,46,32,32, - 73,102,32,115,101,116,44,32,105,115,95,112,97,99,107,97, - 103,101,32,115,104,111,117,108,100,32,98,101,10,32,32,32, - 32,84,114,117,101,45,45,97,110,100,32,70,97,108,115,101, - 32,111,116,104,101,114,119,105,115,101,46,10,10,32,32,32, - 32,80,97,99,107,97,103,101,115,32,97,114,101,32,115,105, - 109,112,108,121,32,109,111,100,117,108,101,115,32,116,104,97, - 116,32,40,109,97,121,41,32,104,97,118,101,32,115,117,98, - 109,111,100,117,108,101,115,46,32,32,73,102,32,97,32,115, - 112,101,99,10,32,32,32,32,104,97,115,32,97,32,110,111, - 110,45,78,111,110,101,32,118,97,108,117,101,32,105,110,32, - 96,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,96,44,32,116,104, - 101,32,105,109,112,111,114,116,10,32,32,32,32,115,121,115, - 116,101,109,32,119,105,108,108,32,99,111,110,115,105,100,101, - 114,32,109,111,100,117,108,101,115,32,108,111,97,100,101,100, - 32,102,114,111,109,32,116,104,101,32,115,112,101,99,32,97, - 115,32,112,97,99,107,97,103,101,115,46,10,10,32,32,32, - 32,79,110,108,121,32,102,105,110,100,101,114,115,32,40,115, - 101,101,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,77,101,116,97,80,97,116,104,70,105,110,100,101,114,32, - 97,110,100,10,32,32,32,32,105,109,112,111,114,116,108,105, - 98,46,97,98,99,46,80,97,116,104,69,110,116,114,121,70, - 105,110,100,101,114,41,32,115,104,111,117,108,100,32,109,111, - 100,105,102,121,32,77,111,100,117,108,101,83,112,101,99,32, - 105,110,115,116,97,110,99,101,115,46,10,10,32,32,32,32, - 78,41,3,218,6,111,114,105,103,105,110,218,12,108,111,97, - 100,101,114,95,115,116,97,116,101,218,10,105,115,95,112,97, - 99,107,97,103,101,99,3,0,0,0,0,0,0,0,3,0, - 0,0,6,0,0,0,2,0,0,0,67,0,0,0,115,54, - 0,0,0,124,1,124,0,95,0,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,41,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,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,102,1,0,0,115, - 18,0,0,0,6,2,6,1,6,1,6,1,14,1,6,3, - 6,1,4,128,255,128,122,19,77,111,100,117,108,101,83,112, - 101,99,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, - 67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,106, - 1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,125, - 1,124,0,106,3,100,0,117,1,114,52,124,1,160,4,100, - 3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,106, - 5,100,0,117,1,114,80,124,1,160,4,100,4,160,0,124, - 0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,106, - 6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,41, - 7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,108, - 111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,103, - 105,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,46,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,117,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,56,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,49,0,0,0,114,1,0,0,115, - 22,0,0,0,10,1,10,1,4,255,10,2,18,1,10,1, - 8,1,4,1,6,255,22,2,255,128,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,114,101,112,114,95,95,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 8,0,0,0,67,0,0,0,115,102,0,0,0,124,0,106, - 0,125,2,122,72,124,0,106,1,124,1,106,1,107,2,111, - 76,124,0,106,2,124,1,106,2,107,2,111,76,124,0,106, - 3,124,1,106,3,107,2,111,76,124,2,124,1,106,0,107, - 2,111,76,124,0,106,4,124,1,106,4,107,2,111,76,124, - 0,106,5,124,1,106,5,107,2,87,0,83,0,4,0,116, - 6,121,100,1,0,1,0,1,0,116,7,6,0,89,0,83, - 0,48,0,114,13,0,0,0,41,8,114,117,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,107,0,0,0,218,14,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,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,124,1,0,0,115,32,0,0,0,6,1,2, - 1,12,1,10,1,2,255,10,2,2,254,8,3,2,253,10, - 4,2,252,10,5,4,251,12,6,10,1,255,128,122,17,77, - 111,100,117,108,101,83,112,101,99,46,95,95,101,113,95,95, + 95,119,114,97,112,112,101,114,78,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,1,1,0,0,115, + 8,0,0,0,12,2,10,5,4,1,255,128,114,91,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,58,0,0,0,116, + 0,124,1,124,0,131,2,125,2,124,1,116,1,106,2,118, + 0,114,50,116,1,106,2,124,1,25,0,125,3,116,3,124, + 2,124,3,131,2,1,0,116,1,106,2,124,1,25,0,83, + 0,116,4,124,2,131,1,83,0,41,2,122,128,76,111,97, + 100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, + 109,111,100,117,108,101,32,105,110,116,111,32,115,121,115,46, + 109,111,100,117,108,101,115,32,97,110,100,32,114,101,116,117, + 114,110,32,105,116,46,10,10,32,32,32,32,84,104,105,115, + 32,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,108,111,97,100, + 101,114,46,101,120,101,99,95,109,111,100,117,108,101,32,105, + 110,115,116,101,97,100,46,10,10,32,32,32,32,78,41,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,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,13,1,0,0,115,14, + 0,0,0,10,6,10,1,10,1,10,1,10,1,8,2,255, + 128,114,98,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, + 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, + 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, + 124,0,161,1,87,0,83,0,4,0,116,3,121,52,1,0, + 1,0,1,0,89,0,110,2,48,0,122,10,124,0,106,4, + 125,2,87,0,110,18,4,0,116,5,121,82,1,0,1,0, + 1,0,89,0,110,18,48,0,124,2,100,0,117,1,114,100, + 116,6,124,2,131,1,83,0,122,10,124,0,106,7,125,3, + 87,0,110,22,4,0,116,5,121,132,1,0,1,0,1,0, + 100,3,125,3,89,0,110,2,48,0,122,10,124,0,106,8, + 125,4,87,0,110,52,4,0,116,5,121,196,1,0,1,0, + 1,0,124,1,100,0,117,0,114,180,100,4,160,9,124,3, + 161,1,6,0,89,0,83,0,100,5,160,9,124,3,124,1, + 161,2,6,0,89,0,83,0,48,0,100,6,160,9,124,3, + 124,4,161,2,83,0,41,7,78,218,10,95,95,108,111,97, + 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, + 112,114,250,1,63,250,13,60,109,111,100,117,108,101,32,123, + 33,114,125,62,250,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, + 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,46,0,0,0,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,29,1,0,0,115,48,0,0,0,12,2, + 10,1,2,4,12,1,12,1,6,1,2,1,10,1,12,1, + 6,1,8,2,8,1,2,4,10,1,12,1,10,1,2,1, + 10,1,12,1,8,1,14,1,18,2,12,2,255,128,114,112, + 0,0,0,99,0,0,0,0,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,132,2,90,4,100, + 6,100,7,132,0,90,5,100,8,100,9,132,0,90,6,101, + 7,100,10,100,11,132,0,131,1,90,8,101,8,106,9,100, + 12,100,11,132,0,131,1,90,8,101,7,100,13,100,14,132, + 0,131,1,90,10,101,7,100,15,100,16,132,0,131,1,90, + 11,101,11,106,9,100,17,100,16,132,0,131,1,90,11,100, + 2,83,0,41,18,218,10,77,111,100,117,108,101,83,112,101, + 99,97,208,5,0,0,84,104,101,32,115,112,101,99,105,102, + 105,99,97,116,105,111,110,32,102,111,114,32,97,32,109,111, + 100,117,108,101,44,32,117,115,101,100,32,102,111,114,32,108, + 111,97,100,105,110,103,46,10,10,32,32,32,32,65,32,109, + 111,100,117,108,101,39,115,32,115,112,101,99,32,105,115,32, + 116,104,101,32,115,111,117,114,99,101,32,102,111,114,32,105, + 110,102,111,114,109,97,116,105,111,110,32,97,98,111,117,116, + 32,116,104,101,32,109,111,100,117,108,101,46,32,32,70,111, + 114,10,32,32,32,32,100,97,116,97,32,97,115,115,111,99, + 105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,109, + 111,100,117,108,101,44,32,105,110,99,108,117,100,105,110,103, + 32,115,111,117,114,99,101,44,32,117,115,101,32,116,104,101, + 32,115,112,101,99,39,115,10,32,32,32,32,108,111,97,100, + 101,114,46,10,10,32,32,32,32,96,110,97,109,101,96,32, + 105,115,32,116,104,101,32,97,98,115,111,108,117,116,101,32, + 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, + 108,101,46,32,32,96,108,111,97,100,101,114,96,32,105,115, + 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32, + 116,111,32,117,115,101,32,119,104,101,110,32,108,111,97,100, + 105,110,103,32,116,104,101,32,109,111,100,117,108,101,46,32, + 32,96,112,97,114,101,110,116,96,32,105,115,32,116,104,101, + 32,110,97,109,101,32,111,102,32,116,104,101,10,32,32,32, + 32,112,97,99,107,97,103,101,32,116,104,101,32,109,111,100, + 117,108,101,32,105,115,32,105,110,46,32,32,84,104,101,32, + 112,97,114,101,110,116,32,105,115,32,100,101,114,105,118,101, + 100,32,102,114,111,109,32,116,104,101,32,110,97,109,101,46, + 10,10,32,32,32,32,96,105,115,95,112,97,99,107,97,103, + 101,96,32,100,101,116,101,114,109,105,110,101,115,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,99, + 111,110,115,105,100,101,114,101,100,32,97,32,112,97,99,107, + 97,103,101,32,111,114,10,32,32,32,32,110,111,116,46,32, + 32,79,110,32,109,111,100,117,108,101,115,32,116,104,105,115, + 32,105,115,32,114,101,102,108,101,99,116,101,100,32,98,121, + 32,116,104,101,32,96,95,95,112,97,116,104,95,95,96,32, + 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, + 96,111,114,105,103,105,110,96,32,105,115,32,116,104,101,32, + 115,112,101,99,105,102,105,99,32,108,111,99,97,116,105,111, + 110,32,117,115,101,100,32,98,121,32,116,104,101,32,108,111, + 97,100,101,114,32,102,114,111,109,32,119,104,105,99,104,32, + 116,111,10,32,32,32,32,108,111,97,100,32,116,104,101,32, + 109,111,100,117,108,101,44,32,105,102,32,116,104,97,116,32, + 105,110,102,111,114,109,97,116,105,111,110,32,105,115,32,97, + 118,97,105,108,97,98,108,101,46,32,32,87,104,101,110,32, + 102,105,108,101,110,97,109,101,32,105,115,10,32,32,32,32, + 115,101,116,44,32,111,114,105,103,105,110,32,119,105,108,108, + 32,109,97,116,99,104,46,10,10,32,32,32,32,96,104,97, + 115,95,108,111,99,97,116,105,111,110,96,32,105,110,100,105, + 99,97,116,101,115,32,116,104,97,116,32,97,32,115,112,101, + 99,39,115,32,34,111,114,105,103,105,110,34,32,114,101,102, + 108,101,99,116,115,32,97,32,108,111,99,97,116,105,111,110, + 46,10,32,32,32,32,87,104,101,110,32,116,104,105,115,32, + 105,115,32,84,114,117,101,44,32,96,95,95,102,105,108,101, + 95,95,96,32,97,116,116,114,105,98,117,116,101,32,111,102, + 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,115, + 101,116,46,10,10,32,32,32,32,96,99,97,99,104,101,100, + 96,32,105,115,32,116,104,101,32,108,111,99,97,116,105,111, + 110,32,111,102,32,116,104,101,32,99,97,99,104,101,100,32, + 98,121,116,101,99,111,100,101,32,102,105,108,101,44,32,105, + 102,32,97,110,121,46,32,32,73,116,10,32,32,32,32,99, + 111,114,114,101,115,112,111,110,100,115,32,116,111,32,116,104, + 101,32,96,95,95,99,97,99,104,101,100,95,95,96,32,97, + 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96, + 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,96,32,105,115,32,116, + 104,101,32,115,101,113,117,101,110,99,101,32,111,102,32,112, + 97,116,104,32,101,110,116,114,105,101,115,32,116,111,10,32, + 32,32,32,115,101,97,114,99,104,32,119,104,101,110,32,105, + 109,112,111,114,116,105,110,103,32,115,117,98,109,111,100,117, + 108,101,115,46,32,32,73,102,32,115,101,116,44,32,105,115, + 95,112,97,99,107,97,103,101,32,115,104,111,117,108,100,32, + 98,101,10,32,32,32,32,84,114,117,101,45,45,97,110,100, + 32,70,97,108,115,101,32,111,116,104,101,114,119,105,115,101, + 46,10,10,32,32,32,32,80,97,99,107,97,103,101,115,32, + 97,114,101,32,115,105,109,112,108,121,32,109,111,100,117,108, + 101,115,32,116,104,97,116,32,40,109,97,121,41,32,104,97, + 118,101,32,115,117,98,109,111,100,117,108,101,115,46,32,32, + 73,102,32,97,32,115,112,101,99,10,32,32,32,32,104,97, + 115,32,97,32,110,111,110,45,78,111,110,101,32,118,97,108, + 117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10,32, + 32,32,32,115,121,115,116,101,109,32,119,105,108,108,32,99, + 111,110,115,105,100,101,114,32,109,111,100,117,108,101,115,32, + 108,111,97,100,101,100,32,102,114,111,109,32,116,104,101,32, + 115,112,101,99,32,97,115,32,112,97,99,107,97,103,101,115, + 46,10,10,32,32,32,32,79,110,108,121,32,102,105,110,100, + 101,114,115,32,40,115,101,101,32,105,109,112,111,114,116,108, + 105,98,46,97,98,99,46,77,101,116,97,80,97,116,104,70, + 105,110,100,101,114,32,97,110,100,10,32,32,32,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,80,97,116,104, + 69,110,116,114,121,70,105,110,100,101,114,41,32,115,104,111, + 117,108,100,32,109,111,100,105,102,121,32,77,111,100,117,108, + 101,83,112,101,99,32,105,110,115,116,97,110,99,101,115,46, + 10,10,32,32,32,32,78,41,3,218,6,111,114,105,103,105, + 110,218,12,108,111,97,100,101,114,95,115,116,97,116,101,218, + 10,105,115,95,112,97,99,107,97,103,101,99,3,0,0,0, + 0,0,0,0,3,0,0,0,6,0,0,0,2,0,0,0, + 67,0,0,0,115,54,0,0,0,124,1,124,0,95,0,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,41, + 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,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,102,1,0,0,115,16,0,0,0,6,2,6,1,6,1, + 6,1,14,1,6,3,10,1,255,128,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 6,0,0,0,67,0,0,0,115,102,0,0,0,100,1,160, + 0,124,0,106,1,161,1,100,2,160,0,124,0,106,2,161, + 1,103,2,125,1,124,0,106,3,100,0,117,1,114,52,124, + 1,160,4,100,3,160,0,124,0,106,3,161,1,161,1,1, + 0,124,0,106,5,100,0,117,1,114,80,124,1,160,4,100, + 4,160,0,124,0,106,5,161,1,161,1,1,0,100,5,160, + 0,124,0,106,6,106,7,100,6,160,8,124,1,161,1,161, + 2,83,0,41,7,78,122,9,110,97,109,101,61,123,33,114, + 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11, + 111,114,105,103,105,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,46,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,117,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,56,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,49,0,0,0,114, + 1,0,0,115,22,0,0,0,10,1,10,1,4,255,10,2, + 18,1,10,1,8,1,4,1,6,255,22,2,255,128,122,19, + 77,111,100,117,108,101,83,112,101,99,46,95,95,114,101,112, + 114,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,8,0,0,0,67,0,0,0,115,102,0,0, + 0,124,0,106,0,125,2,122,72,124,0,106,1,124,1,106, + 1,107,2,111,76,124,0,106,2,124,1,106,2,107,2,111, + 76,124,0,106,3,124,1,106,3,107,2,111,76,124,2,124, + 1,106,0,107,2,111,76,124,0,106,4,124,1,106,4,107, + 2,111,76,124,0,106,5,124,1,106,5,107,2,87,0,83, + 0,4,0,116,6,121,100,1,0,1,0,1,0,116,7,6, + 0,89,0,83,0,48,0,114,13,0,0,0,41,8,114,117, + 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,107,0,0,0,218,14,78, + 111,116,73,109,112,108,101,109,101,110,116,101,100,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,124,1,0,0,115,32,0,0, + 0,6,1,2,1,12,1,10,1,2,255,10,2,2,254,8, + 3,2,253,10,4,2,252,10,5,4,251,12,6,10,1,255, + 128,122,17,77,111,100,117,108,101,83,112,101,99,46,95,95, + 101,113,95,95,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,58,0, + 0,0,124,0,106,0,100,0,117,0,114,52,124,0,106,1, + 100,0,117,1,114,52,124,0,106,2,114,52,116,3,100,0, + 117,0,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,114,0,0,0,114,118,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,48,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,123,0, + 0,0,136,1,0,0,115,14,0,0,0,10,2,16,1,8, + 1,4,1,14,1,6,1,255,128,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,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,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,123,0,0,0, + 145,1,0,0,115,4,0,0,0,10,2,255,128,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,32,0,0,0,124,0,106,0,100, + 1,117,0,114,26,124,0,106,1,160,2,100,2,161,1,100, + 3,25,0,83,0,124,0,106,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,0,0,114, + 17,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, + 114,48,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,149,1,0,0, + 115,8,0,0,0,10,3,16,1,6,2,255,128,122,17,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,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,58,0,0,0,124,0, - 106,0,100,0,117,0,114,52,124,0,106,1,100,0,117,1, - 114,52,124,0,106,2,114,52,116,3,100,0,117,0,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,114,0,0,0,114,118,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,48,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,123,0,0,0,136,1, - 0,0,115,14,0,0,0,10,2,16,1,8,1,4,1,14, - 1,6,1,255,128,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,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,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,123,0,0,0,145,1,0,0, - 115,6,0,0,0,6,2,4,128,255,128,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,32,0,0,0,124,0,106,0,100,1,117, - 0,114,26,124,0,106,1,160,2,100,2,161,1,100,3,25, - 0,83,0,124,0,106,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,0,0,114,17,0, - 0,0,218,10,114,112,97,114,116,105,116,105,111,110,114,48, - 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,149,1,0,0,115,8, - 0,0,0,10,3,16,1,6,2,255,128,122,17,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,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,48, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,124,0,0,0,157,1,0,0,115,4,0,0,0, - 6,2,255,128,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,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,117,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,124,0,0,0,161,1,0, - 0,115,6,0,0,0,10,2,4,128,255,128,41,12,114,1, + 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,48,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,124,0,0,0,157,1,0,0,115,4,0, + 0,0,6,2,255,128,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,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,117,101,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,124,0,0,0,161, + 1,0,0,115,4,0,0,0,14,2,255,128,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,49,0,0,0,114,126,0,0, 0,218,8,112,114,111,112,101,114,116,121,114,123,0,0,0, @@ -1038,788 +1036,787 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 3,114,51,0,0,0,114,17,0,0,0,114,160,0,0,0, 169,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,196,2,0,0,115, - 8,0,0,0,12,9,38,1,4,128,255,128,114,95,0,0, - 0,99,0,0,0,0,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,100,2,90,4,101, - 5,100,3,100,4,132,0,131,1,90,6,101,7,100,20,100, - 6,100,7,132,1,131,1,90,8,101,7,100,21,100,8,100, - 9,132,1,131,1,90,9,101,5,100,10,100,11,132,0,131, - 1,90,10,101,5,100,12,100,13,132,0,131,1,90,11,101, - 7,101,12,100,14,100,15,132,0,131,1,131,1,90,13,101, - 7,101,12,100,16,100,17,132,0,131,1,131,1,90,14,101, - 7,101,12,100,18,100,19,132,0,131,1,131,1,90,15,101, - 7,101,16,131,1,90,17,100,5,83,0,41,22,218,15,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,122,144, - 77,101,116,97,32,112,97,116,104,32,105,109,112,111,114,116, - 32,102,111,114,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32, - 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104, - 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116, - 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118, - 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10, - 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, - 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, - 122,8,98,117,105,108,116,45,105,110,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,67, - 0,0,0,115,22,0,0,0,100,1,124,0,106,0,155,2, - 100,2,116,1,106,2,155,0,100,3,157,5,83,0,41,5, - 250,115,82,101,116,117,114,110,32,114,101,112,114,32,102,111, - 114,32,116,104,101,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,84,104,101,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,84,104,101,32,105,109,112,111,114,116,32,109,97,99, - 104,105,110,101,114,121,32,100,111,101,115,32,116,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,8,60,109,111,100,117,108,101,32,122, - 2,32,40,122,2,41,62,78,41,3,114,1,0,0,0,114, - 162,0,0,0,114,139,0,0,0,169,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,222,2,0,0,115,4,0,0,0,22,7,255, - 128,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,0,0,0,0,0,4,0,0,0, - 5,0,0,0,67,0,0,0,115,42,0,0,0,124,2,100, - 0,117,1,114,12,100,0,83,0,116,0,160,1,124,1,161, - 1,114,38,116,2,124,1,124,0,124,0,106,3,100,1,141, - 3,83,0,100,0,83,0,169,2,78,114,138,0,0,0,41, - 4,114,58,0,0,0,90,10,105,115,95,98,117,105,108,116, - 105,110,114,92,0,0,0,114,139,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, - 231,2,0,0,115,12,0,0,0,8,2,4,1,10,1,16, - 1,4,2,255,128,122,25,66,117,105,108,116,105,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,0,0,0,0,0,4,0,0, - 0,4,0,0,0,67,0,0,0,115,30,0,0,0,124,0, - 160,0,124,1,124,2,161,2,125,3,124,3,100,1,117,1, - 114,26,124,3,106,1,83,0,100,1,83,0,41,2,122,175, - 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, - 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, - 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, - 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, - 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,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,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,170,0,0,0,114,110,0,0,0,41,4,114,167, - 0,0,0,114,82,0,0,0,114,168,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,240,2, - 0,0,115,6,0,0,0,12,9,18,1,255,128,122,27,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, - 0,0,0,115,46,0,0,0,124,0,106,0,116,1,106,2, - 118,1,114,34,116,3,100,1,160,4,124,0,106,0,161,1, - 124,0,106,0,100,2,141,2,130,1,116,5,116,6,106,7, - 124,0,131,2,83,0,41,4,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,78,0,0,0,114,16,0,0,0,78,41,8,114, - 17,0,0,0,114,15,0,0,0,114,79,0,0,0,114,80, - 0,0,0,114,46,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,114,161,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,150,0,0,0,252,2,0,0,115, - 12,0,0,0,12,3,12,1,4,1,6,255,12,2,255,128, - 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,117,108,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,67,0,0,0,115,16,0,0,0,116,0,116, - 1,106,2,124,0,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,68,0,0,0,114, - 58,0,0,0,90,12,101,120,101,99,95,98,117,105,108,116, - 105,110,114,164,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,151,0,0,0,4,3,0,0,115, - 6,0,0,0,12,3,4,128,255,128,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,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,122,57,82,101,116, - 117,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,167, - 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,9,3,0,0,115,4,0,0,0,4,4,255,128,122,24, + 6,0,0,0,12,9,42,1,255,128,114,95,0,0,0,99, + 0,0,0,0,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,100,2,90,4,101,5,100, + 3,100,4,132,0,131,1,90,6,101,7,100,20,100,6,100, + 7,132,1,131,1,90,8,101,7,100,21,100,8,100,9,132, + 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, + 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,101, + 12,100,14,100,15,132,0,131,1,131,1,90,13,101,7,101, + 12,100,16,100,17,132,0,131,1,131,1,90,14,101,7,101, + 12,100,18,100,19,132,0,131,1,131,1,90,15,101,7,101, + 16,131,1,90,17,100,5,83,0,41,22,218,15,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,122,144,77,101, + 116,97,32,112,97,116,104,32,105,109,112,111,114,116,32,102, + 111,114,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,46,10,10,32,32,32,32,65,108,108,32,109,101, + 116,104,111,100,115,32,97,114,101,32,101,105,116,104,101,114, + 32,99,108,97,115,115,32,111,114,32,115,116,97,116,105,99, + 32,109,101,116,104,111,100,115,32,116,111,32,97,118,111,105, + 100,32,116,104,101,32,110,101,101,100,32,116,111,10,32,32, + 32,32,105,110,115,116,97,110,116,105,97,116,101,32,116,104, + 101,32,99,108,97,115,115,46,10,10,32,32,32,32,122,8, + 98,117,105,108,116,45,105,110,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, + 0,115,22,0,0,0,100,1,124,0,106,0,155,2,100,2, + 116,1,106,2,155,0,100,3,157,5,83,0,41,5,250,115, + 82,101,116,117,114,110,32,114,101,112,114,32,102,111,114,32, + 116,104,101,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,109,101,116,104,111,100,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, + 84,104,101,32,105,109,112,111,114,116,32,109,97,99,104,105, + 110,101,114,121,32,100,111,101,115,32,116,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,8,60,109,111,100,117,108,101,32,122,2,32, + 40,122,2,41,62,78,41,3,114,1,0,0,0,114,162,0, + 0,0,114,139,0,0,0,169,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,222,2,0,0,115,4,0,0,0,22,7,255,128,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,0,0,0,0,0,4,0,0,0,5,0, + 0,0,67,0,0,0,115,42,0,0,0,124,2,100,0,117, + 1,114,12,100,0,83,0,116,0,160,1,124,1,161,1,114, + 38,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, + 0,100,0,83,0,169,2,78,114,138,0,0,0,41,4,114, + 58,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110, + 114,92,0,0,0,114,139,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,231,2, + 0,0,115,12,0,0,0,8,2,4,1,10,1,16,1,4, + 2,255,128,122,25,66,117,105,108,116,105,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,0,0,0,0,0,4,0,0,0,4, + 0,0,0,67,0,0,0,115,30,0,0,0,124,0,160,0, + 124,1,124,2,161,2,125,3,124,3,100,1,117,1,114,26, + 124,3,106,1,83,0,100,1,83,0,41,2,122,175,70,105, + 110,100,32,116,104,101,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,73,102,32,39,112,97,116,104,39,32,105,115,32,101,118, + 101,114,32,115,112,101,99,105,102,105,101,100,32,116,104,101, + 110,32,116,104,101,32,115,101,97,114,99,104,32,105,115,32, + 99,111,110,115,105,100,101,114,101,100,32,97,32,102,97,105, + 108,117,114,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,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,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,170,0,0,0,114,110,0,0,0,41,4,114,167,0,0, + 0,114,82,0,0,0,114,168,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,240,2,0,0, + 115,6,0,0,0,12,9,18,1,255,128,122,27,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, + 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, + 114,34,116,3,100,1,160,4,124,0,106,0,161,1,124,0, + 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, + 131,2,83,0,41,4,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,78,0,0,0,114,16,0,0,0,78,41,8,114,17,0, + 0,0,114,15,0,0,0,114,79,0,0,0,114,80,0,0, + 0,114,46,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, + 114,161,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,150,0,0,0,252,2,0,0,115,12,0, + 0,0,12,3,12,1,4,1,6,255,12,2,255,128,122,29, 66,117,105,108,116,105,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,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,122,56,82,101, - 116,117,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,115,111,117,114,99,101, - 32,99,111,100,101,46,78,114,10,0,0,0,114,172,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,15,3,0,0, - 115,4,0,0,0,4,4,255,128,122,26,66,117,105,108,116, - 105,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,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,3,122,52,82,101,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, - 78,114,10,0,0,0,114,172,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,116,0,0,0,21, - 3,0,0,115,4,0,0,0,4,4,255,128,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, - 18,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0, - 114,3,0,0,0,114,139,0,0,0,218,12,115,116,97,116, - 105,99,109,101,116,104,111,100,114,100,0,0,0,218,11,99, - 108,97,115,115,109,101,116,104,111,100,114,170,0,0,0,114, - 171,0,0,0,114,150,0,0,0,114,151,0,0,0,114,87, - 0,0,0,114,173,0,0,0,114,174,0,0,0,114,116,0, - 0,0,114,98,0,0,0,114,156,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,162,0,0,0,211,2,0,0,115,48,0,0,0,8,0, - 4,2,4,7,2,2,10,1,2,8,12,1,2,8,12,1, - 2,11,10,1,2,7,10,1,2,4,2,1,12,1,2,4, - 2,1,12,1,2,4,2,1,12,1,12,4,255,128,114,162, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,144,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, - 4,101,5,100,3,100,4,132,0,131,1,90,6,101,7,100, - 22,100,6,100,7,132,1,131,1,90,8,101,7,100,23,100, - 8,100,9,132,1,131,1,90,9,101,5,100,10,100,11,132, - 0,131,1,90,10,101,5,100,12,100,13,132,0,131,1,90, - 11,101,7,100,14,100,15,132,0,131,1,90,12,101,7,101, - 13,100,16,100,17,132,0,131,1,131,1,90,14,101,7,101, - 13,100,18,100,19,132,0,131,1,131,1,90,15,101,7,101, - 13,100,20,100,21,132,0,131,1,131,1,90,16,100,5,83, - 0,41,24,218,14,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,122,142,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, - 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, - 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, - 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, - 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, - 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, - 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, - 32,32,32,90,6,102,114,111,122,101,110,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,16,0,0,0,100,1,160,0,124,0,106, - 1,116,2,106,3,161,2,83,0,41,3,114,163,0,0,0, - 114,154,0,0,0,78,41,4,114,46,0,0,0,114,1,0, - 0,0,114,177,0,0,0,114,139,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,41,3,0,0,115,4,0,0,0,16,7, - 255,128,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,0,0,0,0,0,0,0,0,4,0,0,0, - 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, - 1,124,1,161,1,114,26,116,2,124,1,124,0,124,0,106, - 3,100,1,141,3,83,0,100,0,83,0,114,165,0,0,0, - 41,4,114,58,0,0,0,114,89,0,0,0,114,92,0,0, - 0,114,139,0,0,0,114,166,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,170,0,0,0,50, - 3,0,0,115,8,0,0,0,10,2,16,1,4,2,255,128, - 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,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,18,0,0,0,116,0,160,1,124,1,161,1, - 114,14,124,0,83,0,100,1,83,0,41,2,122,93,70,105, - 110,100,32,97,32,102,114,111,122,101,110,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, - 115,32,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,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,58, - 0,0,0,114,89,0,0,0,41,3,114,167,0,0,0,114, - 82,0,0,0,114,168,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,171,0,0,0,57,3,0, - 0,115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115, - 4,0,0,0,100,1,83,0,41,2,122,42,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,114,161,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,150,0,0,0,66,3,0,0,115,4,0,0,0,4,128, - 255,128,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,0,0,0,0,0,0,3,0,0, - 0,4,0,0,0,67,0,0,0,115,64,0,0,0,124,0, - 106,0,106,1,125,1,116,2,160,3,124,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,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,46, - 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,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,151,0,0,0,70,3,0,0, - 115,18,0,0,0,8,2,10,1,10,1,2,1,6,255,12, - 2,12,1,4,128,255,128,122,26,70,114,111,122,101,110,73, + 99,114,101,97,116,101,95,109,111,100,117,108,101,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,16,0,0,0,116,0,116,1,106, + 2,124,0,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,68,0,0,0,114,58,0, + 0,0,90,12,101,120,101,99,95,98,117,105,108,116,105,110, + 114,164,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,151,0,0,0,4,3,0,0,115,4,0, + 0,0,16,3,255,128,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,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, - 0,116,0,124,0,124,1,131,2,83,0,41,2,122,95,76, - 111,97,100,32,97,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 105,115,32,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,78,41, - 1,114,98,0,0,0,114,172,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,156,0,0,0,79, - 3,0,0,115,4,0,0,0,10,7,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, - 0,115,10,0,0,0,116,0,160,1,124,1,161,1,83,0, - 41,2,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,78,41,2,114,58,0,0,0,114,179,0,0,0,114,172, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,173,0,0,0,88,3,0,0,115,4,0,0,0, - 10,4,255,128,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,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,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, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,41,2,122,57,82,101,116,117,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,167,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,9,3,0, + 0,115,4,0,0,0,4,4,255,128,122,24,66,117,105,108, + 116,105,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,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,122,56,82,101,116,117,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,115,111,117,114,99,101,32,99,111,100, + 101,46,78,114,10,0,0,0,114,172,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,15,3,0,0,115,4,0,0, + 0,4,4,255,128,122,26,66,117,105,108,116,105,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,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,3,122,52,82,101,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,78,114,10,0, + 0,0,114,172,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,116,0,0,0,21,3,0,0,115, + 4,0,0,0,4,4,255,128,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,18,114,1,0, + 0,0,114,0,0,0,0,114,2,0,0,0,114,3,0,0, + 0,114,139,0,0,0,218,12,115,116,97,116,105,99,109,101, + 116,104,111,100,114,100,0,0,0,218,11,99,108,97,115,115, + 109,101,116,104,111,100,114,170,0,0,0,114,171,0,0,0, + 114,150,0,0,0,114,151,0,0,0,114,87,0,0,0,114, + 173,0,0,0,114,174,0,0,0,114,116,0,0,0,114,98, + 0,0,0,114,156,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,162,0,0, + 0,211,2,0,0,115,48,0,0,0,8,0,4,2,4,7, + 2,2,10,1,2,8,12,1,2,8,12,1,2,11,10,1, + 2,7,10,1,2,4,2,1,12,1,2,4,2,1,12,1, + 2,4,2,1,12,1,12,4,255,128,114,162,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, + 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, + 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, + 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, + 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, + 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, + 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, + 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, + 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, + 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, + 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, + 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, + 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, + 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, + 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, + 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, + 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, + 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,4,0,0,0,67,0,0,0, + 115,16,0,0,0,100,1,160,0,124,0,106,1,116,2,106, + 3,161,2,83,0,41,3,114,163,0,0,0,114,154,0,0, + 0,78,41,4,114,46,0,0,0,114,1,0,0,0,114,177, + 0,0,0,114,139,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,41,3,0,0,115,4,0,0,0,16,7,255,128,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, + 0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0, + 67,0,0,0,115,30,0,0,0,116,0,160,1,124,1,161, + 1,114,26,116,2,124,1,124,0,124,0,106,3,100,1,141, + 3,83,0,100,0,83,0,114,165,0,0,0,41,4,114,58, + 0,0,0,114,89,0,0,0,114,92,0,0,0,114,139,0, + 0,0,114,166,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,170,0,0,0,50,3,0,0,115, + 8,0,0,0,10,2,16,1,4,2,255,128,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,0,0, + 0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115, + 18,0,0,0,116,0,160,1,124,1,161,1,114,14,124,0, + 83,0,100,1,83,0,41,2,122,93,70,105,110,100,32,97, + 32,102,114,111,122,101,110,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,58,0,0,0,114, + 89,0,0,0,41,3,114,167,0,0,0,114,82,0,0,0, + 114,168,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,171,0,0,0,57,3,0,0,115,4,0, + 0,0,18,7,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0, + 100,1,83,0,41,2,122,42,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,114,161,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,150,0,0, + 0,66,3,0,0,115,4,0,0,0,4,128,255,128,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,0,0,0,0,0,0,3,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, + 125,1,116,2,160,3,124,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,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,46,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,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,151,0,0,0,70,3,0,0,115,16,0,0, + 0,8,2,10,1,10,1,2,1,6,255,12,2,16,1,255, + 128,122,26,70,114,111,122,101,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,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,124, + 1,131,2,83,0,41,2,122,95,76,111,97,100,32,97,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,1,114,98,0,0,0, + 114,172,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,156,0,0,0,79,3,0,0,115,4,0, + 0,0,10,7,255,128,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,0,0,0,0,2, + 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, + 116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2,114,58, + 0,0,0,114,179,0,0,0,114,172,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,173,0,0, + 0,88,3,0,0,115,4,0,0,0,10,4,255,128,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, + 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,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,172,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,174,0, + 0,0,94,3,0,0,115,4,0,0,0,4,4,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,115,10,0,0,0,116,0,160,1,124,1,161,1, + 83,0,41,2,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,78,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, 172,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,174,0,0,0,94,3,0,0,115,4,0,0, - 0,4,4,255,128,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,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, - 160,1,124,1,161,1,83,0,41,2,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,78,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,172,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,116,0,0,0,100,3, - 0,0,115,4,0,0,0,10,4,255,128,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,17,114, - 1,0,0,0,114,0,0,0,0,114,2,0,0,0,114,3, - 0,0,0,114,139,0,0,0,114,175,0,0,0,114,100,0, - 0,0,114,176,0,0,0,114,170,0,0,0,114,171,0,0, - 0,114,150,0,0,0,114,151,0,0,0,114,156,0,0,0, - 114,91,0,0,0,114,173,0,0,0,114,174,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,177,0,0,0,30,3,0, - 0,115,50,0,0,0,8,0,4,2,4,7,2,2,10,1, - 2,8,12,1,2,6,12,1,2,8,10,1,2,3,10,1, - 2,8,10,1,2,8,2,1,12,1,2,4,2,1,12,1, - 2,4,2,1,16,1,255,128,114,177,0,0,0,99,0,0, - 0,0,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,83,0,41,7,218,18,95, - 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, - 116,122,36,67,111,110,116,101,120,116,32,109,97,110,97,103, - 101,114,32,102,111,114,32,116,104,101,32,105,109,112,111,114, - 116,32,108,111,99,107,46,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,2,0,0,0,67,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,58,0,0,0,114,59,0,0,0,114,48,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,55, - 0,0,0,113,3,0,0,115,6,0,0,0,8,2,4,128, - 255,128,122,28,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,46,95,95,101,110,116,101,114,95,95, - 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,2,0,0,0,67,0,0,0,115,12,0,0,0,116,0, - 160,1,161,0,1,0,100,1,83,0,41,2,122,60,82,101, - 108,101,97,115,101,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,58,0, - 0,0,114,61,0,0,0,41,4,114,30,0,0,0,218,8, - 101,120,99,95,116,121,112,101,218,9,101,120,99,95,118,97, - 108,117,101,218,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,57,0,0,0,117,3,0,0,115,6,0,0,0,8, - 2,4,128,255,128,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,55,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,182,0,0,0,109,3,0,0, - 115,10,0,0,0,8,0,4,2,8,2,12,4,255,128,114, - 182,0,0,0,99,3,0,0,0,0,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,3,131,1,130,1,124,3,100,4,25,0,125,4,124,0, - 114,60,100,5,160,3,124,4,124,0,161,2,83,0,124,4, - 83,0,41,7,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,129,0,0,0,114,39,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,99,107,97,103,101,114,22,0,0,0,250,5,123,125,46, - 123,125,78,41,4,218,6,114,115,112,108,105,116,218,3,108, - 101,110,114,80,0,0,0,114,46,0,0,0,41,5,114,17, - 0,0,0,218,7,112,97,99,107,97,103,101,218,5,108,101, - 118,101,108,90,4,98,105,116,115,90,4,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,122,3,0, - 0,115,12,0,0,0,16,2,12,1,8,1,8,1,20,1, - 255,128,114,191,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124, - 1,124,3,131,2,83,0,114,13,0,0,0,41,2,114,171, - 0,0,0,114,92,0,0,0,41,4,218,6,102,105,110,100, - 101,114,114,17,0,0,0,114,168,0,0,0,114,110,0,0, + 0,0,0,114,116,0,0,0,100,3,0,0,115,4,0,0, + 0,10,4,255,128,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,17,114,1,0,0,0,114,0, + 0,0,0,114,2,0,0,0,114,3,0,0,0,114,139,0, + 0,0,114,175,0,0,0,114,100,0,0,0,114,176,0,0, + 0,114,170,0,0,0,114,171,0,0,0,114,150,0,0,0, + 114,151,0,0,0,114,156,0,0,0,114,91,0,0,0,114, + 173,0,0,0,114,174,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,177,0,0,0,30,3,0,0,115,50,0,0,0, + 8,0,4,2,4,7,2,2,10,1,2,8,12,1,2,6, + 12,1,2,8,10,1,2,3,10,1,2,8,10,1,2,8, + 2,1,12,1,2,4,2,1,12,1,2,4,2,1,16,1, + 255,128,114,177,0,0,0,99,0,0,0,0,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,83,0,41,7,218,18,95,73,109,112,111,114,116, + 76,111,99,107,67,111,110,116,101,120,116,122,36,67,111,110, + 116,101,120,116,32,109,97,110,97,103,101,114,32,102,111,114, + 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, + 46,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,67,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,58,0,0,0,114, + 59,0,0,0,114,48,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,55,0,0,0,113,3,0, + 0,115,4,0,0,0,12,2,255,128,122,28,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, + 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,2,0,0,0,67,0,0, + 0,115,12,0,0,0,116,0,160,1,161,0,1,0,100,1, + 83,0,41,2,122,60,82,101,108,101,97,115,101,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,58,0,0,0,114,61,0,0,0,41, + 4,114,30,0,0,0,218,8,101,120,99,95,116,121,112,101, + 218,9,101,120,99,95,118,97,108,117,101,218,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,57,0,0,0,117,3, + 0,0,115,4,0,0,0,12,2,255,128,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, + 55,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,182,0, + 0,0,109,3,0,0,115,10,0,0,0,8,0,4,2,8, + 2,12,4,255,128,114,182,0,0,0,99,3,0,0,0,0, + 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,3,131,1,130,1,124,3,100,4, + 25,0,125,4,124,0,114,60,100,5,160,3,124,4,124,0, + 161,2,83,0,124,4,83,0,41,7,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,129, + 0,0,0,114,39,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,99,107,97,103,101,114,22,0,0, + 0,250,5,123,125,46,123,125,78,41,4,218,6,114,115,112, + 108,105,116,218,3,108,101,110,114,80,0,0,0,114,46,0, + 0,0,41,5,114,17,0,0,0,218,7,112,97,99,107,97, + 103,101,218,5,108,101,118,101,108,90,4,98,105,116,115,90, + 4,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,122,3,0,0,115,12,0,0,0,16,2,12,1, + 8,1,8,1,20,1,255,128,114,191,0,0,0,99,3,0, + 0,0,0,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,117,0,114,24,100, + 0,83,0,116,1,124,1,124,3,131,2,83,0,114,13,0, + 0,0,41,2,114,171,0,0,0,114,92,0,0,0,41,4, + 218,6,102,105,110,100,101,114,114,17,0,0,0,114,168,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,131,3,0,0,115,10,0, + 0,0,12,3,8,1,4,1,10,1,255,128,114,193,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,10,0, + 0,0,10,0,0,0,67,0,0,0,115,28,1,0,0,116, + 0,106,1,125,3,124,3,100,1,117,0,114,22,116,2,100, + 2,131,1,130,1,124,3,115,38,116,3,160,4,100,3,116, + 5,161,2,1,0,124,0,116,0,106,6,118,0,125,4,124, + 3,68,0,93,226,125,5,116,7,131,0,143,94,1,0,122, + 10,124,5,106,8,125,6,87,0,110,54,4,0,116,9,121, + 128,1,0,1,0,1,0,116,10,124,5,124,0,124,1,131, + 3,125,7,124,7,100,1,117,0,114,124,89,0,87,0,100, + 1,4,0,4,0,131,3,1,0,113,52,89,0,110,14,48, + 0,124,6,124,0,124,1,124,2,131,3,125,7,87,0,100, + 1,4,0,4,0,131,3,1,0,110,16,49,0,115,162,48, + 0,1,0,1,0,1,0,89,0,1,0,124,7,100,1,117, + 1,114,52,124,4,144,1,115,16,124,0,116,0,106,6,118, + 0,144,1,114,16,116,0,106,6,124,0,25,0,125,8,122, + 10,124,8,106,11,125,9,87,0,110,26,4,0,116,9,121, + 244,1,0,1,0,1,0,124,7,6,0,89,0,2,0,1, + 0,83,0,48,0,124,9,100,1,117,0,144,1,114,8,124, + 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, + 7,2,0,1,0,83,0,100,1,83,0,41,4,122,21,70, + 105,110,100,32,97,32,109,111,100,117,108,101,39,115,32,115, + 112,101,99,46,78,122,53,115,121,115,46,109,101,116,97,95, + 112,97,116,104,32,105,115,32,78,111,110,101,44,32,80,121, + 116,104,111,110,32,105,115,32,108,105,107,101,108,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,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,93,0,0,0, + 114,182,0,0,0,114,170,0,0,0,114,107,0,0,0,114, + 193,0,0,0,114,106,0,0,0,41,10,114,17,0,0,0, + 114,168,0,0,0,114,169,0,0,0,114,194,0,0,0,90, + 9,105,115,95,114,101,108,111,97,100,114,192,0,0,0,114, + 170,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,140,3, + 0,0,115,56,0,0,0,6,2,8,1,8,2,4,3,12, + 1,10,5,8,1,8,1,2,1,10,1,12,1,12,1,8, + 1,22,1,42,2,8,1,18,2,10,1,2,1,10,1,12, + 1,14,4,10,2,8,1,8,2,8,2,4,2,255,128,114, + 198,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,5,0,0,0,67,0,0,0,115,110,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,0,114,44,116,5,100,3,131,1,130,1,124,2, + 100,2,107,4,114,82,116,0,124,1,116,1,131,2,115,70, + 116,2,100,4,131,1,130,1,124,1,115,82,116,6,100,5, + 131,1,130,1,124,0,115,106,124,2,100,2,107,2,114,102, + 116,5,100,6,131,1,130,1,100,7,83,0,100,7,83,0, + 41,8,122,28,86,101,114,105,102,121,32,97,114,103,117,109, + 101,110,116,115,32,97,114,101,32,34,115,97,110,101,34,46, + 122,31,109,111,100,117,108,101,32,110,97,109,101,32,109,117, + 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,123, + 125,114,22,0,0,0,122,18,108,101,118,101,108,32,109,117, + 115,116,32,98,101,32,62,61,32,48,122,31,95,95,112,97, + 99,107,97,103,101,95,95,32,110,111,116,32,115,101,116,32, + 116,111,32,97,32,115,116,114,105,110,103,122,54,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,119,105,116,104,32,110,111,32,107, + 110,111,119,110,32,112,97,114,101,110,116,32,112,97,99,107, + 97,103,101,122,17,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,46,0,0,0,114,14,0,0,0,218, + 10,86,97,108,117,101,69,114,114,111,114,114,80,0,0,0, + 169,3,114,17,0,0,0,114,189,0,0,0,114,190,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,131,3,0,0,115,10,0,0,0,12,3,8,1, - 4,1,10,1,255,128,114,193,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,10,0,0,0, - 67,0,0,0,115,28,1,0,0,116,0,106,1,125,3,124, - 3,100,1,117,0,114,22,116,2,100,2,131,1,130,1,124, - 3,115,38,116,3,160,4,100,3,116,5,161,2,1,0,124, - 0,116,0,106,6,118,0,125,4,124,3,68,0,93,226,125, - 5,116,7,131,0,143,94,1,0,122,10,124,5,106,8,125, - 6,87,0,110,54,4,0,116,9,121,128,1,0,1,0,1, - 0,116,10,124,5,124,0,124,1,131,3,125,7,124,7,100, - 1,117,0,114,124,89,0,87,0,100,1,4,0,4,0,131, - 3,1,0,113,52,89,0,110,14,48,0,124,6,124,0,124, - 1,124,2,131,3,125,7,87,0,100,1,4,0,4,0,131, - 3,1,0,110,16,49,0,115,162,48,0,1,0,1,0,1, - 0,89,0,1,0,124,7,100,1,117,1,114,52,124,4,144, - 1,115,16,124,0,116,0,106,6,118,0,144,1,114,16,116, - 0,106,6,124,0,25,0,125,8,122,10,124,8,106,11,125, - 9,87,0,110,26,4,0,116,9,121,244,1,0,1,0,1, - 0,124,7,6,0,89,0,2,0,1,0,83,0,48,0,124, - 9,100,1,117,0,144,1,114,8,124,7,2,0,1,0,83, - 0,124,9,2,0,1,0,83,0,124,7,2,0,1,0,83, - 0,100,1,83,0,41,4,122,21,70,105,110,100,32,97,32, - 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, - 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, - 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, - 115,32,108,105,107,101,108,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,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,93,0,0,0,114,182,0,0,0,114, - 170,0,0,0,114,107,0,0,0,114,193,0,0,0,114,106, - 0,0,0,41,10,114,17,0,0,0,114,168,0,0,0,114, - 169,0,0,0,114,194,0,0,0,90,9,105,115,95,114,101, - 108,111,97,100,114,192,0,0,0,114,170,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,140,3,0,0,115,56,0,0, - 0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8, - 1,2,1,10,1,12,1,12,1,8,1,22,1,42,2,8, - 1,18,2,10,1,2,1,10,1,12,1,14,4,10,2,8, - 1,8,2,8,2,4,2,255,128,114,198,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,106,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,0,114,44, - 116,5,100,3,131,1,130,1,124,2,100,2,107,4,114,82, - 116,0,124,1,116,1,131,2,115,70,116,2,100,4,131,1, - 130,1,124,1,115,82,116,6,100,5,131,1,130,1,124,0, - 115,102,124,2,100,2,107,2,114,102,116,5,100,6,131,1, - 130,1,100,7,83,0,41,8,122,28,86,101,114,105,102,121, - 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, - 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, - 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,123,125,114,22,0,0,0,122,18,108,101, - 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, - 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, - 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, - 103,122,54,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,119,105,116, - 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, - 116,32,112,97,99,107,97,103,101,122,17,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,46,0,0,0, - 114,14,0,0,0,218,10,86,97,108,117,101,69,114,114,111, - 114,114,80,0,0,0,169,3,114,17,0,0,0,114,189,0, - 0,0,114,190,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,187,3,0,0,115,26,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,4,128,255,128,114,204,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,0,0, - 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,20, - 1,0,0,100,0,125,2,124,0,160,0,100,1,161,1,100, - 2,25,0,125,3,124,3,114,128,124,3,116,1,106,2,118, - 1,114,42,116,3,124,1,124,3,131,2,1,0,124,0,116, - 1,106,2,118,0,114,62,116,1,106,2,124,0,25,0,83, - 0,116,1,106,2,124,3,25,0,125,4,122,10,124,4,106, - 4,125,2,87,0,110,44,4,0,116,5,121,126,1,0,1, - 0,1,0,116,6,100,3,23,0,160,7,124,0,124,3,161, - 2,125,5,116,8,124,5,124,0,100,4,141,2,100,0,130, - 2,48,0,116,9,124,0,124,2,131,2,125,6,124,6,100, - 0,117,0,114,164,116,8,116,6,160,7,124,0,161,1,124, - 0,100,4,141,2,130,1,116,10,124,6,131,1,125,7,124, - 3,144,1,114,16,116,1,106,2,124,3,25,0,125,4,124, - 0,160,0,100,1,161,1,100,5,25,0,125,8,122,18,116, - 11,124,4,124,8,124,7,131,3,1,0,87,0,124,7,83, - 0,4,0,116,5,144,1,121,14,1,0,1,0,1,0,100, - 6,124,3,155,2,100,7,124,8,155,2,157,4,125,5,116, - 12,160,13,124,5,116,14,161,2,1,0,89,0,124,7,83, - 0,48,0,124,7,83,0,41,8,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,122,27,67,97,110,110,111,116,32, - 115,101,116,32,97,110,32,97,116,116,114,105,98,117,116,101, - 32,111,110,32,122,18,32,102,111,114,32,99,104,105,108,100, - 32,109,111,100,117,108,101,32,41,15,114,130,0,0,0,114, - 15,0,0,0,114,93,0,0,0,114,68,0,0,0,114,142, - 0,0,0,114,107,0,0,0,218,8,95,69,82,82,95,77, - 83,71,114,46,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,198,0,0, - 0,114,160,0,0,0,114,5,0,0,0,114,195,0,0,0, - 114,196,0,0,0,114,197,0,0,0,41,9,114,17,0,0, - 0,218,7,105,109,112,111,114,116,95,114,168,0,0,0,114, - 131,0,0,0,90,13,112,97,114,101,110,116,95,109,111,100, - 117,108,101,114,158,0,0,0,114,96,0,0,0,114,97,0, - 0,0,90,5,99,104,105,108,100,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,206,3,0,0,115,60,0,0,0,4,1,14,1,4,1, - 10,1,10,1,10,2,10,1,10,1,2,1,10,1,12,1, - 16,1,16,1,10,1,8,1,18,1,8,2,6,1,10,2, - 14,1,2,1,14,1,4,4,14,253,16,1,14,1,4,1, - 2,255,4,1,255,128,114,209,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0, - 67,0,0,0,115,128,0,0,0,116,0,124,0,131,1,143, - 62,1,0,116,1,106,2,160,3,124,0,116,4,161,2,125, - 2,124,2,116,4,117,0,114,56,116,5,124,0,124,1,131, - 2,87,0,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,87,0,100,1,4,0,4,0,131,3,1,0,110,16,49, - 0,115,76,48,0,1,0,1,0,1,0,89,0,1,0,124, - 2,100,1,117,0,114,116,100,2,160,6,124,0,161,1,125, - 3,116,7,124,3,124,0,100,3,141,2,130,1,116,8,124, - 0,131,1,1,0,124,2,83,0,41,4,122,25,70,105,110, - 100,32,97,110,100,32,108,111,97,100,32,116,104,101,32,109, - 111,100,117,108,101,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,51,0,0,0,114,15,0, - 0,0,114,93,0,0,0,114,35,0,0,0,218,14,95,78, - 69,69,68,83,95,76,79,65,68,73,78,71,114,209,0,0, - 0,114,46,0,0,0,114,207,0,0,0,114,66,0,0,0, - 41,4,114,17,0,0,0,114,208,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,241,3,0,0,115,24,0,0,0,10,2, - 14,1,8,1,54,1,8,2,4,1,2,1,4,255,12,2, - 8,2,4,1,255,128,114,211,0,0,0,114,22,0,0,0, - 99,3,0,0,0,0,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,3,125,0,116,2, - 124,0,116,3,131,2,83,0,41,3,97,50,1,0,0,73, - 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110, - 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101, - 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116, - 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99, - 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103, - 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32, - 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116, - 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32, - 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101, - 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116, - 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97, - 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97, - 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110, - 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97, - 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84, - 104,105,115,32,105,110,99,108,117,100,101,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,78,41,4,114,204,0,0,0,114,191, - 0,0,0,114,211,0,0,0,218,11,95,103,99,100,95,105, - 109,112,111,114,116,114,203,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,212,0,0,0,1,4, - 0,0,115,10,0,0,0,12,9,8,1,12,1,10,1,255, - 128,114,212,0,0,0,169,1,218,9,114,101,99,117,114,115, - 105,118,101,99,3,0,0,0,0,0,0,0,1,0,0,0, - 8,0,0,0,11,0,0,0,67,0,0,0,115,216,0,0, - 0,124,1,68,0,93,206,125,4,116,0,124,4,116,1,131, - 2,115,64,124,3,114,34,124,0,106,2,100,1,23,0,125, - 5,110,4,100,2,125,5,116,3,100,3,124,5,155,0,100, - 4,116,4,124,4,131,1,106,2,155,0,157,4,131,1,130, - 1,124,4,100,5,107,2,114,106,124,3,115,4,116,5,124, - 0,100,6,131,2,114,4,116,6,124,0,124,0,106,7,124, - 2,100,7,100,8,141,4,1,0,113,4,116,5,124,0,124, - 4,131,2,115,4,100,9,160,8,124,0,106,2,124,4,161, - 2,125,6,122,14,116,9,124,2,124,6,131,2,1,0,87, - 0,113,4,4,0,116,10,121,210,1,0,125,7,1,0,122, - 42,124,7,106,11,124,6,107,2,114,200,116,12,106,13,160, - 14,124,6,116,15,161,2,100,10,117,1,114,200,87,0,89, - 0,100,10,125,7,126,7,113,4,130,0,100,10,125,7,126, - 7,48,0,48,0,124,0,83,0,41,11,122,238,70,105,103, - 117,114,101,32,111,117,116,32,119,104,97,116,32,95,95,105, - 109,112,111,114,116,95,95,32,115,104,111,117,108,100,32,114, - 101,116,117,114,110,46,10,10,32,32,32,32,84,104,101,32, - 105,109,112,111,114,116,95,32,112,97,114,97,109,101,116,101, - 114,32,105,115,32,97,32,99,97,108,108,97,98,108,101,32, - 119,104,105,99,104,32,116,97,107,101,115,32,116,104,101,32, - 110,97,109,101,32,111,102,32,109,111,100,117,108,101,32,116, - 111,10,32,32,32,32,105,109,112,111,114,116,46,32,73,116, - 32,105,115,32,114,101,113,117,105,114,101,100,32,116,111,32, - 100,101,99,111,117,112,108,101,32,116,104,101,32,102,117,110, - 99,116,105,111,110,32,102,114,111,109,32,97,115,115,117,109, - 105,110,103,32,105,109,112,111,114,116,108,105,98,39,115,10, - 32,32,32,32,105,109,112,111,114,116,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,105,115,32,100,101,115, - 105,114,101,100,46,10,10,32,32,32,32,122,8,46,95,95, - 97,108,108,95,95,122,13,96,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, - 213,0,0,0,114,186,0,0,0,78,41,16,114,199,0,0, - 0,114,200,0,0,0,114,1,0,0,0,114,201,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,216,0,0, - 0,114,46,0,0,0,114,68,0,0,0,114,207,0,0,0, - 114,17,0,0,0,114,15,0,0,0,114,93,0,0,0,114, - 35,0,0,0,114,210,0,0,0,41,8,114,97,0,0,0, - 218,8,102,114,111,109,108,105,115,116,114,208,0,0,0,114, - 214,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,217,0, - 0,0,16,4,0,0,115,52,0,0,0,8,10,10,1,4, - 1,12,1,4,2,10,1,8,1,8,255,8,2,14,1,10, - 1,2,1,8,255,10,2,14,1,2,1,14,1,14,1,10, - 4,16,1,2,255,12,2,2,1,10,128,4,1,255,128,114, - 217,0,0,0,99,1,0,0,0,0,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,117,1,114,82,124,2, - 100,3,117,1,114,78,124,1,124,2,106,1,107,3,114,78, - 116,2,106,3,100,4,124,1,155,2,100,5,124,2,106,1, - 155,2,100,6,157,5,116,4,100,7,100,8,141,3,1,0, - 124,1,83,0,124,2,100,3,117,1,114,96,124,2,106,1, - 83,0,116,2,106,3,100,9,116,4,100,7,100,8,141,3, - 1,0,124,0,100,10,25,0,125,1,100,11,124,0,118,1, - 114,142,124,1,160,5,100,12,161,1,100,13,25,0,125,1, - 124,1,83,0,41,14,122,167,67,97,108,99,117,108,97,116, - 101,32,119,104,97,116,32,95,95,112,97,99,107,97,103,101, - 95,95,32,115,104,111,117,108,100,32,98,101,46,10,10,32, - 32,32,32,95,95,112,97,99,107,97,103,101,95,95,32,105, - 115,32,110,111,116,32,103,117,97,114,97,110,116,101,101,100, - 32,116,111,32,98,101,32,100,101,102,105,110,101,100,32,111, - 114,32,99,111,117,108,100,32,98,101,32,115,101,116,32,116, - 111,32,78,111,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, - 146,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,101,118,101,108,122,89,99,97,110,39,116,32, - 114,101,115,111,108,118,101,32,112,97,99,107,97,103,101,32, - 102,114,111,109,32,95,95,115,112,101,99,95,95,32,111,114, - 32,95,95,112,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,142,0,0,0,114,129,0, - 0,0,114,22,0,0,0,41,6,114,35,0,0,0,114,131, - 0,0,0,114,195,0,0,0,114,196,0,0,0,114,197,0, - 0,0,114,130,0,0,0,41,3,218,7,103,108,111,98,97, - 108,115,114,189,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,53,4, - 0,0,115,44,0,0,0,10,7,10,1,8,1,18,1,6, - 1,2,1,4,255,4,1,6,255,4,2,6,254,4,3,8, - 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, - 1,255,128,114,223,0,0,0,114,10,0,0,0,99,5,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,5,0, - 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, - 2,114,18,116,0,124,0,131,1,125,5,110,36,124,1,100, - 2,117,1,114,30,124,1,110,2,105,0,125,6,116,1,124, - 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, - 5,124,3,115,148,124,4,100,1,107,2,114,84,116,0,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, - 0,115,92,124,5,83,0,116,3,124,0,131,1,116,3,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, - 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, - 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, - 7,124,5,100,4,131,2,114,170,116,8,124,5,124,3,116, - 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, - 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, - 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, - 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, - 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, - 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, - 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, - 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, - 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, - 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, - 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, - 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, - 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, - 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, - 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, - 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, - 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, - 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, - 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, - 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, - 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, - 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,46,46,112,107,103,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,129,0, - 0,0,114,142,0,0,0,41,9,114,212,0,0,0,114,223, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,188, - 0,0,0,114,15,0,0,0,114,93,0,0,0,114,1,0, - 0,0,114,4,0,0,0,114,217,0,0,0,41,9,114,17, - 0,0,0,114,222,0,0,0,218,6,108,111,99,97,108,115, - 114,218,0,0,0,114,190,0,0,0,114,97,0,0,0,90, - 8,103,108,111,98,97,108,115,95,114,189,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,80,4,0,0,115,32,0,0,0,8,11,10,1,16, - 2,8,1,12,1,4,1,8,3,18,1,4,1,4,1,26, - 4,30,3,10,1,12,1,4,2,255,128,114,226,0,0,0, - 99,1,0,0,0,0,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,117,0,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,162,0,0,0,114,170,0,0,0,114,80, - 0,0,0,114,160,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,117,4,0,0,115,10,0,0,0, - 10,1,8,1,12,1,8,1,255,128,114,227,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 5,0,0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125,3,125,4,116, - 5,124,4,124,2,131,2,114,26,124,3,116,1,106,6,118, - 0,114,60,116,7,125,5,110,16,116,0,160,8,124,3,161, - 1,114,26,116,9,125,5,110,0,116,10,124,4,124,5,131, - 2,125,6,116,11,124,6,124,4,131,2,1,0,113,26,116, - 1,106,3,116,12,25,0,125,7,100,1,68,0,93,46,125, - 8,124,8,116,1,106,3,118,1,114,136,116,13,124,8,131, - 1,125,9,110,10,116,1,106,3,124,8,25,0,125,9,116, - 14,124,7,124,8,124,9,131,3,1,0,113,112,100,2,83, - 0,41,3,122,250,83,101,116,117,112,32,105,109,112,111,114, - 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, - 103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,110, - 106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,32, - 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, - 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, - 32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,101, - 100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,101, - 115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,109, - 112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,108, - 111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,32, - 32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,32, - 116,119,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,195,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,199, - 0,0,0,114,79,0,0,0,114,162,0,0,0,114,89,0, - 0,0,114,177,0,0,0,114,143,0,0,0,114,149,0,0, - 0,114,1,0,0,0,114,227,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,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,124,4, - 0,0,115,38,0,0,0,4,9,4,1,8,3,18,1,10, - 1,10,1,6,1,10,1,6,1,10,3,12,1,10,3,8, - 1,10,1,10,1,10,2,14,1,4,128,255,128,114,231,0, - 0,0,99,2,0,0,0,0,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,106,2,160,3,116,5,161,1, - 1,0,100,1,83,0,41,2,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,231,0, - 0,0,114,15,0,0,0,114,194,0,0,0,114,120,0,0, - 0,114,162,0,0,0,114,177,0,0,0,41,2,114,229,0, - 0,0,114,230,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, - 159,4,0,0,115,10,0,0,0,10,2,12,2,12,1,4, - 128,255,128,114,232,0,0,0,99,0,0,0,0,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, - 1,0,100,2,83,0,41,3,122,57,73,110,115,116,97,108, - 108,32,105,109,112,111,114,116,101,114,115,32,116,104,97,116, - 32,114,101,113,117,105,114,101,32,101,120,116,101,114,110,97, - 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,127,0,0,0,114,232,0,0, - 0,114,15,0,0,0,114,93,0,0,0,114,1,0,0,0, - 41,1,114,233,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,167,4,0,0,115,10,0,0,0,8,3,4,1, - 16,1,4,128,255,128,114,234,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,53,114,3,0,0,0,114, - 23,0,0,0,114,195,0,0,0,114,65,0,0,0,114,127, - 0,0,0,114,12,0,0,0,114,18,0,0,0,114,60,0, - 0,0,114,34,0,0,0,114,44,0,0,0,114,19,0,0, - 0,114,20,0,0,0,114,50,0,0,0,114,51,0,0,0, - 114,54,0,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,143,0,0,0,114,149,0,0,0,114,153,0,0, - 0,114,108,0,0,0,114,94,0,0,0,114,159,0,0,0, - 114,160,0,0,0,114,95,0,0,0,114,162,0,0,0,114, - 177,0,0,0,114,182,0,0,0,114,191,0,0,0,114,193, - 0,0,0,114,198,0,0,0,114,204,0,0,0,90,15,95, - 69,82,82,95,77,83,71,95,80,82,69,70,73,88,114,206, - 0,0,0,114,209,0,0,0,218,6,111,98,106,101,99,116, - 114,210,0,0,0,114,211,0,0,0,114,212,0,0,0,114, - 217,0,0,0,114,223,0,0,0,114,226,0,0,0,114,227, - 0,0,0,114,231,0,0,0,114,232,0,0,0,114,234,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, - 1,0,0,0,115,106,0,0,0,4,0,4,25,4,1,4, - 1,4,3,8,3,8,8,4,8,4,2,16,3,14,4,14, - 77,14,21,8,16,8,37,8,17,14,11,8,8,8,11,8, - 12,8,16,14,36,16,101,10,26,14,45,8,72,8,17,8, - 17,8,30,8,37,8,42,14,15,14,75,14,79,8,13,8, - 9,10,9,8,47,4,16,8,1,8,2,6,32,8,3,10, - 16,14,15,8,37,10,27,8,37,8,7,8,35,8,8,4, - 128,255,128, + 218,13,95,115,97,110,105,116,121,95,99,104,101,99,107,187, + 3,0,0,115,26,0,0,0,10,2,18,1,8,1,8,1, + 8,1,10,1,8,1,4,1,8,1,12,2,8,1,8,255, + 255,128,114,204,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,0,0,0,0,9,0,0,0, + 8,0,0,0,67,0,0,0,115,20,1,0,0,100,0,125, + 2,124,0,160,0,100,1,161,1,100,2,25,0,125,3,124, + 3,114,128,124,3,116,1,106,2,118,1,114,42,116,3,124, + 1,124,3,131,2,1,0,124,0,116,1,106,2,118,0,114, + 62,116,1,106,2,124,0,25,0,83,0,116,1,106,2,124, + 3,25,0,125,4,122,10,124,4,106,4,125,2,87,0,110, + 44,4,0,116,5,121,126,1,0,1,0,1,0,116,6,100, + 3,23,0,160,7,124,0,124,3,161,2,125,5,116,8,124, + 5,124,0,100,4,141,2,100,0,130,2,48,0,116,9,124, + 0,124,2,131,2,125,6,124,6,100,0,117,0,114,164,116, + 8,116,6,160,7,124,0,161,1,124,0,100,4,141,2,130, + 1,116,10,124,6,131,1,125,7,124,3,144,1,114,16,116, + 1,106,2,124,3,25,0,125,4,124,0,160,0,100,1,161, + 1,100,5,25,0,125,8,122,18,116,11,124,4,124,8,124, + 7,131,3,1,0,87,0,124,7,83,0,4,0,116,5,144, + 1,121,14,1,0,1,0,1,0,100,6,124,3,155,2,100, + 7,124,8,155,2,157,4,125,5,116,12,160,13,124,5,116, + 14,161,2,1,0,89,0,124,7,83,0,48,0,124,7,83, + 0,41,8,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,122,27,67,97,110,110,111,116,32,115,101,116,32,97,110, + 32,97,116,116,114,105,98,117,116,101,32,111,110,32,122,18, + 32,102,111,114,32,99,104,105,108,100,32,109,111,100,117,108, + 101,32,41,15,114,130,0,0,0,114,15,0,0,0,114,93, + 0,0,0,114,68,0,0,0,114,142,0,0,0,114,107,0, + 0,0,218,8,95,69,82,82,95,77,83,71,114,46,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,198,0,0,0,114,160,0,0,0, + 114,5,0,0,0,114,195,0,0,0,114,196,0,0,0,114, + 197,0,0,0,41,9,114,17,0,0,0,218,7,105,109,112, + 111,114,116,95,114,168,0,0,0,114,131,0,0,0,90,13, + 112,97,114,101,110,116,95,109,111,100,117,108,101,114,158,0, + 0,0,114,96,0,0,0,114,97,0,0,0,90,5,99,104, + 105,108,100,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,206,3,0,0,115, + 60,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, + 10,1,10,1,2,1,10,1,12,1,16,1,16,1,10,1, + 8,1,18,1,8,2,6,1,10,2,14,1,2,1,14,1, + 4,4,14,253,16,1,14,1,4,1,2,255,4,1,255,128, + 114,209,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,8,0,0,0,67,0,0,0,115,128, + 0,0,0,116,0,124,0,131,1,143,62,1,0,116,1,106, + 2,160,3,124,0,116,4,161,2,125,2,124,2,116,4,117, + 0,114,56,116,5,124,0,124,1,131,2,87,0,2,0,100, + 1,4,0,4,0,131,3,1,0,83,0,87,0,100,1,4, + 0,4,0,131,3,1,0,110,16,49,0,115,76,48,0,1, + 0,1,0,1,0,89,0,1,0,124,2,100,1,117,0,114, + 116,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, + 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, + 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, + 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,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,51,0,0,0,114,15,0,0,0,114,93,0,0, + 0,114,35,0,0,0,218,14,95,78,69,69,68,83,95,76, + 79,65,68,73,78,71,114,209,0,0,0,114,46,0,0,0, + 114,207,0,0,0,114,66,0,0,0,41,4,114,17,0,0, + 0,114,208,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,241, + 3,0,0,115,24,0,0,0,10,2,14,1,8,1,54,1, + 8,2,4,1,2,1,4,255,12,2,8,2,4,1,255,128, + 114,211,0,0,0,114,22,0,0,0,99,3,0,0,0,0, + 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,3,125,0,116,2,124,0,116,3,131,2, + 83,0,41,3,97,50,1,0,0,73,109,112,111,114,116,32, + 97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,109, + 111,100,117,108,101,32,98,97,115,101,100,32,111,110,32,105, + 116,115,32,110,97,109,101,44,32,116,104,101,32,112,97,99, + 107,97,103,101,32,116,104,101,32,99,97,108,108,32,105,115, + 10,32,32,32,32,98,101,105,110,103,32,109,97,100,101,32, + 102,114,111,109,44,32,97,110,100,32,116,104,101,32,108,101, + 118,101,108,32,97,100,106,117,115,116,109,101,110,116,46,10, + 10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,105, + 111,110,32,114,101,112,114,101,115,101,110,116,115,32,116,104, + 101,32,103,114,101,97,116,101,115,116,32,99,111,109,109,111, + 110,32,100,101,110,111,109,105,110,97,116,111,114,32,111,102, + 32,102,117,110,99,116,105,111,110,97,108,105,116,121,10,32, + 32,32,32,98,101,116,119,101,101,110,32,105,109,112,111,114, + 116,95,109,111,100,117,108,101,32,97,110,100,32,95,95,105, + 109,112,111,114,116,95,95,46,32,84,104,105,115,32,105,110, + 99,108,117,100,101,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, + 78,41,4,114,204,0,0,0,114,191,0,0,0,114,211,0, + 0,0,218,11,95,103,99,100,95,105,109,112,111,114,116,114, + 203,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,212,0,0,0,1,4,0,0,115,10,0,0, + 0,12,9,8,1,12,1,10,1,255,128,114,212,0,0,0, + 169,1,218,9,114,101,99,117,114,115,105,118,101,99,3,0, + 0,0,0,0,0,0,1,0,0,0,8,0,0,0,11,0, + 0,0,67,0,0,0,115,216,0,0,0,124,1,68,0,93, + 204,125,4,116,0,124,4,116,1,131,2,115,64,124,3,114, + 34,124,0,106,2,100,1,23,0,125,5,110,4,100,2,125, + 5,116,3,100,3,124,5,155,0,100,4,116,4,124,4,131, + 1,106,2,155,0,157,4,131,1,130,1,124,4,100,5,107, + 2,114,106,124,3,115,4,116,5,124,0,100,6,131,2,114, + 4,116,6,124,0,124,0,106,7,124,2,100,7,100,8,141, + 4,1,0,113,4,116,5,124,0,124,4,131,2,115,4,100, + 9,160,8,124,0,106,2,124,4,161,2,125,6,122,14,116, + 9,124,2,124,6,131,2,1,0,87,0,113,4,4,0,116, + 10,121,214,1,0,125,7,1,0,122,42,124,7,106,11,124, + 6,107,2,114,200,116,12,106,13,160,14,124,6,116,15,161, + 2,100,10,117,1,114,200,87,0,89,0,100,10,125,7,126, + 7,113,4,130,0,100,10,125,7,126,7,48,0,124,0,83, + 0,48,0,41,11,122,238,70,105,103,117,114,101,32,111,117, + 116,32,119,104,97,116,32,95,95,105,109,112,111,114,116,95, + 95,32,115,104,111,117,108,100,32,114,101,116,117,114,110,46, + 10,10,32,32,32,32,84,104,101,32,105,109,112,111,114,116, + 95,32,112,97,114,97,109,101,116,101,114,32,105,115,32,97, + 32,99,97,108,108,97,98,108,101,32,119,104,105,99,104,32, + 116,97,107,101,115,32,116,104,101,32,110,97,109,101,32,111, + 102,32,109,111,100,117,108,101,32,116,111,10,32,32,32,32, + 105,109,112,111,114,116,46,32,73,116,32,105,115,32,114,101, + 113,117,105,114,101,100,32,116,111,32,100,101,99,111,117,112, + 108,101,32,116,104,101,32,102,117,110,99,116,105,111,110,32, + 102,114,111,109,32,97,115,115,117,109,105,110,103,32,105,109, + 112,111,114,116,108,105,98,39,115,10,32,32,32,32,105,109, + 112,111,114,116,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,105,115,32,100,101,115,105,114,101,100,46,10, + 10,32,32,32,32,122,8,46,95,95,97,108,108,95,95,122, + 13,96,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,213,0,0,0,114,186, + 0,0,0,78,41,16,114,199,0,0,0,114,200,0,0,0, + 114,1,0,0,0,114,201,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,216,0,0,0,114,46,0,0,0, + 114,68,0,0,0,114,207,0,0,0,114,17,0,0,0,114, + 15,0,0,0,114,93,0,0,0,114,35,0,0,0,114,210, + 0,0,0,41,8,114,97,0,0,0,218,8,102,114,111,109, + 108,105,115,116,114,208,0,0,0,114,214,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,217,0,0,0,16,4,0,0, + 115,54,0,0,0,8,10,10,1,4,1,12,1,4,2,10, + 1,8,1,8,255,8,2,14,1,10,1,2,1,8,255,10, + 2,14,1,2,1,14,1,14,1,10,4,16,1,2,255,12, + 2,2,1,8,128,4,1,2,248,255,128,114,217,0,0,0, + 99,1,0,0,0,0,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,117,1,114,82,124,2,100,3,117,1, + 114,78,124,1,124,2,106,1,107,3,114,78,116,2,106,3, + 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, + 157,5,116,4,100,7,100,8,141,3,1,0,124,1,83,0, + 124,2,100,3,117,1,114,96,124,2,106,1,83,0,116,2, + 106,3,100,9,116,4,100,7,100,8,141,3,1,0,124,0, + 100,10,25,0,125,1,100,11,124,0,118,1,114,142,124,1, + 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, + 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, + 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, + 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, + 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, + 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, + 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, + 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, + 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,146,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, + 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, + 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, + 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, + 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,142,0,0,0,114,129,0,0,0,114,22, + 0,0,0,41,6,114,35,0,0,0,114,131,0,0,0,114, + 195,0,0,0,114,196,0,0,0,114,197,0,0,0,114,130, + 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,189, + 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,53,4,0,0,115,44, + 0,0,0,10,7,10,1,8,1,18,1,6,1,2,1,4, + 255,4,1,6,255,4,2,6,254,4,3,8,1,6,1,6, + 2,4,2,6,254,8,3,8,1,14,1,4,1,255,128,114, + 223,0,0,0,114,10,0,0,0,99,5,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,5,0,0,0,67,0, + 0,0,115,174,0,0,0,124,4,100,1,107,2,114,18,116, + 0,124,0,131,1,125,5,110,36,124,1,100,2,117,1,114, + 30,124,1,110,2,105,0,125,6,116,1,124,6,131,1,125, + 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, + 148,124,4,100,1,107,2,114,84,116,0,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,83,0,124,0,115,92,124, + 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, + 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, + 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, + 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, + 4,131,2,114,170,116,8,124,5,124,3,116,0,131,3,83, + 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, + 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, + 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, + 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, + 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, + 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, + 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, + 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, + 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, + 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, + 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, + 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, + 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, + 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, + 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, + 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, + 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, + 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, + 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, + 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, + 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, + 46,112,107,103,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,129,0,0,0,114,142, + 0,0,0,41,9,114,212,0,0,0,114,223,0,0,0,218, + 9,112,97,114,116,105,116,105,111,110,114,188,0,0,0,114, + 15,0,0,0,114,93,0,0,0,114,1,0,0,0,114,4, + 0,0,0,114,217,0,0,0,41,9,114,17,0,0,0,114, + 222,0,0,0,218,6,108,111,99,97,108,115,114,218,0,0, + 0,114,190,0,0,0,114,97,0,0,0,90,8,103,108,111, + 98,97,108,115,95,114,189,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,80,4, + 0,0,115,32,0,0,0,8,11,10,1,16,2,8,1,12, + 1,4,1,8,3,18,1,4,1,4,1,26,4,30,3,10, + 1,12,1,4,2,255,128,114,226,0,0,0,99,1,0,0, + 0,0,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,117,0,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,162,0,0,0,114,170,0,0,0,114,80,0,0,0,114, + 160,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,117,4,0,0,115,10,0,0,0,10,1,8,1, + 12,1,8,1,255,128,114,227,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, + 67,0,0,0,115,164,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, + 0,68,0,93,70,92,2,125,3,125,4,116,5,124,4,124, + 2,131,2,114,26,124,3,116,1,106,6,118,0,114,60,116, + 7,125,5,110,16,116,0,160,8,124,3,161,1,114,26,116, + 9,125,5,110,0,116,10,124,4,124,5,131,2,125,6,116, + 11,124,6,124,4,131,2,1,0,113,26,116,1,106,3,116, + 12,25,0,125,7,100,1,68,0,93,46,125,8,124,8,116, + 1,106,3,118,1,114,136,116,13,124,8,131,1,125,9,110, + 10,116,1,106,3,124,8,25,0,125,9,116,14,124,7,124, + 8,124,9,131,3,1,0,113,112,100,2,83,0,41,3,122, + 250,83,101,116,117,112,32,105,109,112,111,114,116,108,105,98, + 32,98,121,32,105,109,112,111,114,116,105,110,103,32,110,101, + 101,100,101,100,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116, + 105,110,103,32,116,104,101,109,10,32,32,32,32,105,110,116, + 111,32,116,104,101,32,103,108,111,98,97,108,32,110,97,109, + 101,115,112,97,99,101,46,10,10,32,32,32,32,65,115,32, + 115,121,115,32,105,115,32,110,101,101,100,101,100,32,102,111, + 114,32,115,121,115,46,109,111,100,117,108,101,115,32,97,99, + 99,101,115,115,32,97,110,100,32,95,105,109,112,32,105,115, + 32,110,101,101,100,101,100,32,116,111,32,108,111,97,100,32, + 98,117,105,108,116,45,105,110,10,32,32,32,32,109,111,100, + 117,108,101,115,44,32,116,104,111,115,101,32,116,119,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,195,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,199,0,0,0,114, + 79,0,0,0,114,162,0,0,0,114,89,0,0,0,114,177, + 0,0,0,114,143,0,0,0,114,149,0,0,0,114,1,0, + 0,0,114,227,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,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,124,4,0,0,115,38, + 0,0,0,4,9,4,1,8,3,18,1,10,1,10,1,6, + 1,10,1,6,1,10,3,12,1,10,3,8,1,10,1,10, + 1,10,2,14,1,4,251,255,128,114,231,0,0,0,99,2, + 0,0,0,0,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,106,2,160,3,116,5,161,1,1,0,100,1, + 83,0,41,2,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,231,0,0,0,114,15, + 0,0,0,114,194,0,0,0,114,120,0,0,0,114,162,0, + 0,0,114,177,0,0,0,41,2,114,229,0,0,0,114,230, + 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,159,4,0,0, + 115,8,0,0,0,10,2,12,2,16,1,255,128,114,232,0, + 0,0,99,0,0,0,0,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,1,0,100,2,83,0, + 41,3,122,57,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,101,114,115,32,116,104,97,116,32,114,101,113,117,105, + 114,101,32,101,120,116,101,114,110,97,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,127,0,0,0,114,232,0,0,0,114,15,0,0,0, + 114,93,0,0,0,114,1,0,0,0,41,1,114,233,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,167,4,0, + 0,115,8,0,0,0,8,3,4,1,20,1,255,128,114,234, + 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,53,114,3,0,0,0,114,23,0,0,0,114,195,0,0, + 0,114,65,0,0,0,114,127,0,0,0,114,12,0,0,0, + 114,18,0,0,0,114,60,0,0,0,114,34,0,0,0,114, + 44,0,0,0,114,19,0,0,0,114,20,0,0,0,114,50, + 0,0,0,114,51,0,0,0,114,54,0,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,143,0,0,0,114, + 149,0,0,0,114,153,0,0,0,114,108,0,0,0,114,94, + 0,0,0,114,159,0,0,0,114,160,0,0,0,114,95,0, + 0,0,114,162,0,0,0,114,177,0,0,0,114,182,0,0, + 0,114,191,0,0,0,114,193,0,0,0,114,198,0,0,0, + 114,204,0,0,0,90,15,95,69,82,82,95,77,83,71,95, + 80,82,69,70,73,88,114,206,0,0,0,114,209,0,0,0, + 218,6,111,98,106,101,99,116,114,210,0,0,0,114,211,0, + 0,0,114,212,0,0,0,114,217,0,0,0,114,223,0,0, + 0,114,226,0,0,0,114,227,0,0,0,114,231,0,0,0, + 114,232,0,0,0,114,234,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,1,0,0,0,115,104,0,0, + 0,4,0,4,25,4,1,4,1,4,3,8,3,8,8,4, + 8,4,2,16,3,14,4,14,77,14,21,8,16,8,37,8, + 17,14,11,8,8,8,11,8,12,8,16,14,36,16,101,10, + 26,14,45,8,72,8,17,8,17,8,30,8,37,8,42,14, + 15,14,75,14,79,8,13,8,9,10,9,8,47,4,16,8, + 1,8,2,6,32,8,3,10,16,14,15,8,37,10,27,8, + 37,8,7,8,35,12,8,255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index de4db360b0606..c459bcf2e90c4 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -79,1900 +79,1899 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 169,0,114,7,0,0,0,250,38,60,102,114,111,122,101,110, 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, 115,116,114,97,112,95,101,120,116,101,114,110,97,108,62,218, - 9,60,103,101,110,101,120,112,114,62,46,0,0,0,115,6, - 0,0,0,22,0,4,128,255,128,114,9,0,0,0,218,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,4,0,0,0,67,0,0,0,115,22,0,0,0,104,0, - 124,0,93,14,125,1,100,0,124,1,155,0,157,2,146,2, - 113,4,83,0,41,1,250,1,58,114,7,0,0,0,41,2, - 114,5,0,0,0,218,1,115,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,9,60,115,101,116,99,111,109, - 112,62,49,0,0,0,115,4,0,0,0,22,0,255,128,114, - 13,0,0,0,41,1,218,3,119,105,110,41,2,90,6,99, - 121,103,119,105,110,90,6,100,97,114,119,105,110,99,0,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,3,0,0,0,115,62,0,0,0,116,0,106,1,160, - 2,116,3,161,1,114,50,116,0,106,1,160,2,116,4,161, - 1,114,30,100,1,137,0,110,4,100,2,137,0,135,0,102, - 1,100,3,100,4,132,8,125,0,124,0,83,0,100,5,100, - 4,132,0,125,0,124,0,83,0,41,6,78,90,12,80,89, - 84,72,79,78,67,65,83,69,79,75,115,12,0,0,0,80, - 89,84,72,79,78,67,65,83,69,79,75,99,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 19,0,0,0,115,20,0,0,0,116,0,106,1,106,2,12, - 0,111,18,136,0,116,3,106,4,118,0,83,0,41,2,122, - 94,84,114,117,101,32,105,102,32,102,105,108,101,110,97,109, - 101,115,32,109,117,115,116,32,98,101,32,99,104,101,99,107, - 101,100,32,99,97,115,101,45,105,110,115,101,110,115,105,116, - 105,118,101,108,121,32,97,110,100,32,105,103,110,111,114,101, - 32,101,110,118,105,114,111,110,109,101,110,116,32,102,108,97, - 103,115,32,97,114,101,32,110,111,116,32,115,101,116,46,78, - 41,5,218,3,115,121,115,218,5,102,108,97,103,115,218,18, - 105,103,110,111,114,101,95,101,110,118,105,114,111,110,109,101, - 110,116,218,3,95,111,115,90,7,101,110,118,105,114,111,110, - 114,7,0,0,0,169,1,218,3,107,101,121,114,7,0,0, - 0,114,8,0,0,0,218,11,95,114,101,108,97,120,95,99, - 97,115,101,66,0,0,0,115,4,0,0,0,20,2,255,128, - 122,37,95,109,97,107,101,95,114,101,108,97,120,95,99,97, - 115,101,46,60,108,111,99,97,108,115,62,46,95,114,101,108, - 97,120,95,99,97,115,101,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,83,0,0,0, - 115,4,0,0,0,100,1,83,0,41,3,122,53,84,114,117, - 101,32,105,102,32,102,105,108,101,110,97,109,101,115,32,109, - 117,115,116,32,98,101,32,99,104,101,99,107,101,100,32,99, - 97,115,101,45,105,110,115,101,110,115,105,116,105,118,101,108, - 121,46,70,78,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,21,0, - 0,0,70,0,0,0,115,4,0,0,0,4,2,255,128,41, - 5,114,15,0,0,0,218,8,112,108,97,116,102,111,114,109, - 218,10,115,116,97,114,116,115,119,105,116,104,218,27,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,218,35,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,83,84,82,95,75,69,89,41,1, - 114,21,0,0,0,114,7,0,0,0,114,19,0,0,0,114, - 8,0,0,0,218,16,95,109,97,107,101,95,114,101,108,97, - 120,95,99,97,115,101,59,0,0,0,115,18,0,0,0,12, - 1,12,1,6,1,4,2,12,2,4,7,8,253,4,3,255, - 128,114,26,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, - 20,0,0,0,116,0,124,0,131,1,100,1,64,0,160,1, - 100,2,100,3,161,2,83,0,41,5,122,42,67,111,110,118, - 101,114,116,32,97,32,51,50,45,98,105,116,32,105,110,116, - 101,103,101,114,32,116,111,32,108,105,116,116,108,101,45,101, - 110,100,105,97,110,46,236,3,0,0,0,255,127,255,127,3, - 0,233,4,0,0,0,218,6,108,105,116,116,108,101,78,41, - 2,218,3,105,110,116,218,8,116,111,95,98,121,116,101,115, - 41,1,218,1,120,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,12,95,112,97,99,107,95,117,105,110,116, - 51,50,78,0,0,0,115,4,0,0,0,20,2,255,128,114, - 33,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,67,0,0,0,115,28,0, - 0,0,116,0,124,0,131,1,100,1,107,2,115,16,74,0, - 130,1,116,1,160,2,124,0,100,2,161,2,83,0,41,4, - 122,47,67,111,110,118,101,114,116,32,52,32,98,121,116,101, - 115,32,105,110,32,108,105,116,116,108,101,45,101,110,100,105, - 97,110,32,116,111,32,97,110,32,105,110,116,101,103,101,114, - 46,114,28,0,0,0,114,29,0,0,0,78,169,3,114,4, - 0,0,0,114,30,0,0,0,218,10,102,114,111,109,95,98, - 121,116,101,115,169,1,218,4,100,97,116,97,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,14,95,117,110, - 112,97,99,107,95,117,105,110,116,51,50,83,0,0,0,115, - 6,0,0,0,16,2,12,1,255,128,114,38,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 4,0,0,0,67,0,0,0,115,28,0,0,0,116,0,124, - 0,131,1,100,1,107,2,115,16,74,0,130,1,116,1,160, - 2,124,0,100,2,161,2,83,0,41,4,122,47,67,111,110, - 118,101,114,116,32,50,32,98,121,116,101,115,32,105,110,32, - 108,105,116,116,108,101,45,101,110,100,105,97,110,32,116,111, - 32,97,110,32,105,110,116,101,103,101,114,46,233,2,0,0, - 0,114,29,0,0,0,78,114,34,0,0,0,114,36,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,14,95,117,110,112,97,99,107,95,117,105,110,116,49,54, - 88,0,0,0,115,6,0,0,0,16,2,12,1,255,128,114, - 40,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,71,0,0,0,115,20,0, - 0,0,116,0,160,1,100,1,100,2,132,0,124,0,68,0, - 131,1,161,1,83,0,41,4,122,31,82,101,112,108,97,99, - 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, - 104,46,106,111,105,110,40,41,46,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,5,0,0,0,83,0, - 0,0,115,26,0,0,0,103,0,124,0,93,18,125,1,124, - 1,114,4,124,1,160,0,116,1,161,1,145,2,113,4,83, - 0,114,7,0,0,0,41,2,218,6,114,115,116,114,105,112, - 218,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114, - 115,41,2,114,5,0,0,0,218,4,112,97,114,116,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,10,60, - 108,105,115,116,99,111,109,112,62,96,0,0,0,115,8,0, - 0,0,6,0,6,1,14,255,255,128,122,30,95,112,97,116, - 104,95,106,111,105,110,46,60,108,111,99,97,108,115,62,46, - 60,108,105,115,116,99,111,109,112,62,78,41,2,218,8,112, - 97,116,104,95,115,101,112,218,4,106,111,105,110,41,1,218, - 10,112,97,116,104,95,112,97,114,116,115,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,10,95,112,97,116, - 104,95,106,111,105,110,94,0,0,0,115,8,0,0,0,10, - 2,2,1,8,255,255,128,114,48,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, - 0,67,0,0,0,115,94,0,0,0,116,0,116,1,131,1, - 100,1,107,2,114,36,124,0,160,2,116,3,161,1,92,3, - 125,1,125,2,125,3,124,1,124,3,102,2,83,0,116,4, - 124,0,131,1,68,0,93,40,125,4,124,4,116,1,118,0, - 114,44,124,0,106,5,124,4,100,1,100,2,141,2,92,2, - 125,1,125,3,124,1,124,3,102,2,2,0,1,0,83,0, - 100,3,124,0,102,2,83,0,41,5,122,32,82,101,112,108, - 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, - 97,116,104,46,115,112,108,105,116,40,41,46,114,3,0,0, - 0,41,1,90,8,109,97,120,115,112,108,105,116,114,10,0, - 0,0,78,41,6,114,4,0,0,0,114,42,0,0,0,218, - 10,114,112,97,114,116,105,116,105,111,110,114,45,0,0,0, - 218,8,114,101,118,101,114,115,101,100,218,6,114,115,112,108, - 105,116,41,5,218,4,112,97,116,104,90,5,102,114,111,110, - 116,218,1,95,218,4,116,97,105,108,114,32,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11, - 95,112,97,116,104,95,115,112,108,105,116,100,0,0,0,115, - 18,0,0,0,12,2,16,1,8,1,12,1,8,1,18,1, - 12,1,8,1,255,128,114,55,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,10,0,0,0,116,0,160,1,124,0,161, - 1,83,0,41,2,122,126,83,116,97,116,32,116,104,101,32, - 112,97,116,104,46,10,10,32,32,32,32,77,97,100,101,32, - 97,32,115,101,112,97,114,97,116,101,32,102,117,110,99,116, - 105,111,110,32,116,111,32,109,97,107,101,32,105,116,32,101, - 97,115,105,101,114,32,116,111,32,111,118,101,114,114,105,100, - 101,32,105,110,32,101,120,112,101,114,105,109,101,110,116,115, - 10,32,32,32,32,40,101,46,103,46,32,99,97,99,104,101, - 32,115,116,97,116,32,114,101,115,117,108,116,115,41,46,10, - 10,32,32,32,32,78,41,2,114,18,0,0,0,90,4,115, - 116,97,116,169,1,114,52,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,95,112,97,116,104, - 95,115,116,97,116,112,0,0,0,115,4,0,0,0,10,7, - 255,128,114,57,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,0, - 115,48,0,0,0,122,12,116,0,124,0,131,1,125,2,87, - 0,110,20,4,0,116,1,121,32,1,0,1,0,1,0,89, - 0,100,1,83,0,48,0,124,2,106,2,100,2,64,0,124, - 1,107,2,83,0,41,4,122,49,84,101,115,116,32,119,104, - 101,116,104,101,114,32,116,104,101,32,112,97,116,104,32,105, - 115,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,101,32,116,121,112,101,46,70,105,0,240,0,0, - 78,41,3,114,57,0,0,0,218,7,79,83,69,114,114,111, - 114,218,7,115,116,95,109,111,100,101,41,3,114,52,0,0, - 0,218,4,109,111,100,101,90,9,115,116,97,116,95,105,110, - 102,111,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,18,95,112,97,116,104,95,105,115,95,109,111,100,101, - 95,116,121,112,101,122,0,0,0,115,12,0,0,0,2,2, - 12,1,12,1,8,1,14,1,255,128,114,61,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,67,0,0,0,115,10,0,0,0,116,0,124, - 0,100,1,131,2,83,0,41,3,122,31,82,101,112,108,97, - 99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,97, - 116,104,46,105,115,102,105,108,101,46,105,0,128,0,0,78, - 41,1,114,61,0,0,0,114,56,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, - 116,104,95,105,115,102,105,108,101,131,0,0,0,115,4,0, - 0,0,10,2,255,128,114,62,0,0,0,99,1,0,0,0, + 9,60,103,101,110,101,120,112,114,62,46,0,0,0,115,4, + 0,0,0,26,0,255,128,114,9,0,0,0,218,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,67,0,0,0,115,22,0,0,0,104,0,124,0, + 93,14,125,1,100,0,124,1,155,0,157,2,146,2,113,4, + 83,0,41,1,250,1,58,114,7,0,0,0,41,2,114,5, + 0,0,0,218,1,115,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,9,60,115,101,116,99,111,109,112,62, + 49,0,0,0,115,4,0,0,0,22,0,255,128,114,13,0, + 0,0,41,1,218,3,119,105,110,41,2,90,6,99,121,103, + 119,105,110,90,6,100,97,114,119,105,110,99,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,22,0,0,0,124,0,115,12,116,0,160, - 1,161,0,125,0,116,2,124,0,100,1,131,2,83,0,41, - 3,122,30,82,101,112,108,97,99,101,109,101,110,116,32,102, - 111,114,32,111,115,46,112,97,116,104,46,105,115,100,105,114, - 46,105,0,64,0,0,78,41,3,114,18,0,0,0,218,6, - 103,101,116,99,119,100,114,61,0,0,0,114,56,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,112,97,116,104,95,105,115,100,105,114,136,0,0,0, - 115,8,0,0,0,4,2,8,1,10,1,255,128,114,64,0, + 3,0,0,0,115,62,0,0,0,116,0,106,1,160,2,116, + 3,161,1,114,50,116,0,106,1,160,2,116,4,161,1,114, + 30,100,1,137,0,110,4,100,2,137,0,135,0,102,1,100, + 3,100,4,132,8,125,0,124,0,83,0,100,5,100,4,132, + 0,125,0,124,0,83,0,41,6,78,90,12,80,89,84,72, + 79,78,67,65,83,69,79,75,115,12,0,0,0,80,89,84, + 72,79,78,67,65,83,69,79,75,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,19,0, + 0,0,115,20,0,0,0,116,0,106,1,106,2,12,0,111, + 18,136,0,116,3,106,4,118,0,83,0,41,2,122,94,84, + 114,117,101,32,105,102,32,102,105,108,101,110,97,109,101,115, + 32,109,117,115,116,32,98,101,32,99,104,101,99,107,101,100, + 32,99,97,115,101,45,105,110,115,101,110,115,105,116,105,118, + 101,108,121,32,97,110,100,32,105,103,110,111,114,101,32,101, + 110,118,105,114,111,110,109,101,110,116,32,102,108,97,103,115, + 32,97,114,101,32,110,111,116,32,115,101,116,46,78,41,5, + 218,3,115,121,115,218,5,102,108,97,103,115,218,18,105,103, + 110,111,114,101,95,101,110,118,105,114,111,110,109,101,110,116, + 218,3,95,111,115,90,7,101,110,118,105,114,111,110,114,7, + 0,0,0,169,1,218,3,107,101,121,114,7,0,0,0,114, + 8,0,0,0,218,11,95,114,101,108,97,120,95,99,97,115, + 101,66,0,0,0,115,4,0,0,0,20,2,255,128,122,37, + 95,109,97,107,101,95,114,101,108,97,120,95,99,97,115,101, + 46,60,108,111,99,97,108,115,62,46,95,114,101,108,97,120, + 95,99,97,115,101,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,83,0,0,0,115,4, + 0,0,0,100,1,83,0,41,3,122,53,84,114,117,101,32, + 105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,115, + 116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,115, + 101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,46, + 70,78,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,21,0,0,0, + 70,0,0,0,115,4,0,0,0,4,2,255,128,41,5,114, + 15,0,0,0,218,8,112,108,97,116,102,111,114,109,218,10, + 115,116,97,114,116,115,119,105,116,104,218,27,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,218,35,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,83,84,82,95,75,69,89,41,1,114,21, + 0,0,0,114,7,0,0,0,114,19,0,0,0,114,8,0, + 0,0,218,16,95,109,97,107,101,95,114,101,108,97,120,95, + 99,97,115,101,59,0,0,0,115,18,0,0,0,12,1,12, + 1,6,1,4,2,12,2,4,7,8,253,4,3,255,128,114, + 26,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,4,0,0,0,67,0,0,0,115,20,0, + 0,0,116,0,124,0,131,1,100,1,64,0,160,1,100,2, + 100,3,161,2,83,0,41,5,122,42,67,111,110,118,101,114, + 116,32,97,32,51,50,45,98,105,116,32,105,110,116,101,103, + 101,114,32,116,111,32,108,105,116,116,108,101,45,101,110,100, + 105,97,110,46,236,3,0,0,0,255,127,255,127,3,0,233, + 4,0,0,0,218,6,108,105,116,116,108,101,78,41,2,218, + 3,105,110,116,218,8,116,111,95,98,121,116,101,115,41,1, + 218,1,120,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,12,95,112,97,99,107,95,117,105,110,116,51,50, + 78,0,0,0,115,4,0,0,0,20,2,255,128,114,33,0, 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,0, - 124,0,160,0,116,1,161,1,112,24,124,0,100,1,100,2, - 133,2,25,0,116,2,118,0,83,0,41,4,122,142,82,101, - 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115, - 46,112,97,116,104,46,105,115,97,98,115,46,10,10,32,32, - 32,32,67,111,110,115,105,100,101,114,115,32,97,32,87,105, - 110,100,111,119,115,32,100,114,105,118,101,45,114,101,108,97, - 116,105,118,101,32,112,97,116,104,32,40,110,111,32,100,114, - 105,118,101,44,32,98,117,116,32,115,116,97,114,116,115,32, - 119,105,116,104,32,115,108,97,115,104,41,32,116,111,10,32, - 32,32,32,115,116,105,108,108,32,98,101,32,34,97,98,115, - 111,108,117,116,101,34,46,10,32,32,32,32,114,3,0,0, - 0,233,3,0,0,0,78,41,3,114,23,0,0,0,114,42, - 0,0,0,218,20,95,112,97,116,104,115,101,112,115,95,119, - 105,116,104,95,99,111,108,111,110,114,56,0,0,0,114,7, + 0,0,0,4,0,0,0,67,0,0,0,115,28,0,0,0, + 116,0,124,0,131,1,100,1,107,2,115,16,74,0,130,1, + 116,1,160,2,124,0,100,2,161,2,83,0,41,4,122,47, + 67,111,110,118,101,114,116,32,52,32,98,121,116,101,115,32, + 105,110,32,108,105,116,116,108,101,45,101,110,100,105,97,110, + 32,116,111,32,97,110,32,105,110,116,101,103,101,114,46,114, + 28,0,0,0,114,29,0,0,0,78,169,3,114,4,0,0, + 0,114,30,0,0,0,218,10,102,114,111,109,95,98,121,116, + 101,115,169,1,218,4,100,97,116,97,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,14,95,117,110,112,97, + 99,107,95,117,105,110,116,51,50,83,0,0,0,115,6,0, + 0,0,16,2,12,1,255,128,114,38,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,28,0,0,0,116,0,124,0,131, + 1,100,1,107,2,115,16,74,0,130,1,116,1,160,2,124, + 0,100,2,161,2,83,0,41,4,122,47,67,111,110,118,101, + 114,116,32,50,32,98,121,116,101,115,32,105,110,32,108,105, + 116,116,108,101,45,101,110,100,105,97,110,32,116,111,32,97, + 110,32,105,110,116,101,103,101,114,46,233,2,0,0,0,114, + 29,0,0,0,78,114,34,0,0,0,114,36,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14, + 95,117,110,112,97,99,107,95,117,105,110,116,49,54,88,0, + 0,0,115,6,0,0,0,16,2,12,1,255,128,114,40,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,71,0,0,0,115,20,0,0,0, + 116,0,160,1,100,1,100,2,132,0,124,0,68,0,131,1, + 161,1,83,0,41,4,122,31,82,101,112,108,97,99,101,109, + 101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,46, + 106,111,105,110,40,41,46,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,5,0,0,0,83,0,0,0, + 115,26,0,0,0,103,0,124,0,93,18,125,1,124,1,114, + 4,124,1,160,0,116,1,161,1,145,2,113,4,83,0,114, + 7,0,0,0,41,2,218,6,114,115,116,114,105,112,218,15, + 112,97,116,104,95,115,101,112,97,114,97,116,111,114,115,41, + 2,114,5,0,0,0,218,4,112,97,114,116,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,10,60,108,105, + 115,116,99,111,109,112,62,96,0,0,0,115,8,0,0,0, + 6,0,6,1,14,255,255,128,122,30,95,112,97,116,104,95, + 106,111,105,110,46,60,108,111,99,97,108,115,62,46,60,108, + 105,115,116,99,111,109,112,62,78,41,2,218,8,112,97,116, + 104,95,115,101,112,218,4,106,111,105,110,41,1,218,10,112, + 97,116,104,95,112,97,114,116,115,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,10,95,112,97,116,104,95, + 106,111,105,110,94,0,0,0,115,8,0,0,0,10,2,2, + 1,8,255,255,128,114,48,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, + 0,0,0,115,94,0,0,0,116,0,116,1,131,1,100,1, + 107,2,114,36,124,0,160,2,116,3,161,1,92,3,125,1, + 125,2,125,3,124,1,124,3,102,2,83,0,116,4,124,0, + 131,1,68,0,93,40,125,4,124,4,116,1,118,0,114,44, + 124,0,106,5,124,4,100,1,100,2,141,2,92,2,125,1, + 125,3,124,1,124,3,102,2,2,0,1,0,83,0,100,3, + 124,0,102,2,83,0,41,5,122,32,82,101,112,108,97,99, + 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, + 104,46,115,112,108,105,116,40,41,46,114,3,0,0,0,41, + 1,90,8,109,97,120,115,112,108,105,116,114,10,0,0,0, + 78,41,6,114,4,0,0,0,114,42,0,0,0,218,10,114, + 112,97,114,116,105,116,105,111,110,114,45,0,0,0,218,8, + 114,101,118,101,114,115,101,100,218,6,114,115,112,108,105,116, + 41,5,218,4,112,97,116,104,90,5,102,114,111,110,116,218, + 1,95,218,4,116,97,105,108,114,32,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,112, + 97,116,104,95,115,112,108,105,116,100,0,0,0,115,18,0, + 0,0,12,2,16,1,8,1,12,1,8,1,18,1,12,1, + 8,1,255,128,114,55,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,10,0,0,0,116,0,160,1,124,0,161,1,83, + 0,41,2,122,126,83,116,97,116,32,116,104,101,32,112,97, + 116,104,46,10,10,32,32,32,32,77,97,100,101,32,97,32, + 115,101,112,97,114,97,116,101,32,102,117,110,99,116,105,111, + 110,32,116,111,32,109,97,107,101,32,105,116,32,101,97,115, + 105,101,114,32,116,111,32,111,118,101,114,114,105,100,101,32, + 105,110,32,101,120,112,101,114,105,109,101,110,116,115,10,32, + 32,32,32,40,101,46,103,46,32,99,97,99,104,101,32,115, + 116,97,116,32,114,101,115,117,108,116,115,41,46,10,10,32, + 32,32,32,78,41,2,114,18,0,0,0,90,4,115,116,97, + 116,169,1,114,52,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,10,95,112,97,116,104,95,115, + 116,97,116,112,0,0,0,115,4,0,0,0,10,7,255,128, + 114,57,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, + 0,0,0,122,12,116,0,124,0,131,1,125,2,87,0,110, + 20,4,0,116,1,121,32,1,0,1,0,1,0,89,0,100, + 1,83,0,48,0,124,2,106,2,100,2,64,0,124,1,107, + 2,83,0,41,4,122,49,84,101,115,116,32,119,104,101,116, + 104,101,114,32,116,104,101,32,112,97,116,104,32,105,115,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,101,32,116,121,112,101,46,70,105,0,240,0,0,78,41, + 3,114,57,0,0,0,218,7,79,83,69,114,114,111,114,218, + 7,115,116,95,109,111,100,101,41,3,114,52,0,0,0,218, + 4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,111, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,116, + 121,112,101,122,0,0,0,115,12,0,0,0,2,2,12,1, + 12,1,8,1,14,1,255,128,114,61,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,100, + 1,131,2,83,0,41,3,122,31,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,105,115,102,105,108,101,46,105,0,128,0,0,78,41,1, + 114,61,0,0,0,114,56,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,12,95,112,97,116,104, + 95,105,115,102,105,108,101,131,0,0,0,115,4,0,0,0, + 10,2,255,128,114,62,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,22,0,0,0,124,0,115,12,116,0,160,1,161, + 0,125,0,116,2,124,0,100,1,131,2,83,0,41,3,122, + 30,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114, + 32,111,115,46,112,97,116,104,46,105,115,100,105,114,46,105, + 0,64,0,0,78,41,3,114,18,0,0,0,218,6,103,101, + 116,99,119,100,114,61,0,0,0,114,56,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,105,115,97,98,115,143,0,0,0,115,4, - 0,0,0,26,6,255,128,114,67,0,0,0,233,182,1,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,11,0,0,0,67,0,0,0,115,170,0,0,0,100, - 1,160,0,124,0,116,1,124,0,131,1,161,2,125,3,116, - 2,160,3,124,3,116,2,106,4,116,2,106,5,66,0,116, - 2,106,6,66,0,124,2,100,2,64,0,161,3,125,4,122, - 72,116,7,160,8,124,4,100,3,161,2,143,26,125,5,124, - 5,160,9,124,1,161,1,1,0,87,0,100,4,4,0,4, - 0,131,3,1,0,110,16,49,0,115,94,48,0,1,0,1, - 0,1,0,89,0,1,0,116,2,160,10,124,3,124,0,161, - 2,1,0,87,0,100,4,83,0,4,0,116,11,121,168,1, - 0,1,0,1,0,122,14,116,2,160,12,124,3,161,1,1, - 0,87,0,130,0,4,0,116,11,121,166,1,0,1,0,1, - 0,89,0,130,0,48,0,48,0,41,5,122,162,66,101,115, - 116,45,101,102,102,111,114,116,32,102,117,110,99,116,105,111, - 110,32,116,111,32,119,114,105,116,101,32,100,97,116,97,32, - 116,111,32,97,32,112,97,116,104,32,97,116,111,109,105,99, - 97,108,108,121,46,10,32,32,32,32,66,101,32,112,114,101, - 112,97,114,101,100,32,116,111,32,104,97,110,100,108,101,32, - 97,32,70,105,108,101,69,120,105,115,116,115,69,114,114,111, - 114,32,105,102,32,99,111,110,99,117,114,114,101,110,116,32, - 119,114,105,116,105,110,103,32,111,102,32,116,104,101,10,32, - 32,32,32,116,101,109,112,111,114,97,114,121,32,102,105,108, - 101,32,105,115,32,97,116,116,101,109,112,116,101,100,46,250, - 5,123,125,46,123,125,114,68,0,0,0,90,2,119,98,78, - 41,13,218,6,102,111,114,109,97,116,218,2,105,100,114,18, - 0,0,0,90,4,111,112,101,110,90,6,79,95,69,88,67, - 76,90,7,79,95,67,82,69,65,84,90,8,79,95,87,82, - 79,78,76,89,218,3,95,105,111,218,6,70,105,108,101,73, - 79,218,5,119,114,105,116,101,218,7,114,101,112,108,97,99, - 101,114,58,0,0,0,90,6,117,110,108,105,110,107,41,6, - 114,52,0,0,0,114,37,0,0,0,114,60,0,0,0,90, - 8,112,97,116,104,95,116,109,112,90,2,102,100,218,4,102, - 105,108,101,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,13,95,119,114,105,116,101,95,97,116,111,109,105, - 99,152,0,0,0,115,38,0,0,0,16,5,6,1,22,1, - 4,255,2,2,14,3,40,1,14,1,4,128,12,1,2,1, - 12,1,2,3,12,254,2,1,2,1,2,255,2,1,255,128, - 114,77,0,0,0,105,104,13,0,0,114,39,0,0,0,114, - 29,0,0,0,115,2,0,0,0,13,10,90,11,95,95,112, - 121,99,97,99,104,101,95,95,122,4,111,112,116,45,122,3, - 46,112,121,122,4,46,112,121,119,122,4,46,112,121,99,41, - 1,218,12,111,112,116,105,109,105,122,97,116,105,111,110,99, - 2,0,0,0,0,0,0,0,1,0,0,0,12,0,0,0, - 5,0,0,0,67,0,0,0,115,88,1,0,0,124,1,100, - 1,117,1,114,52,116,0,160,1,100,2,116,2,161,2,1, - 0,124,2,100,1,117,1,114,40,100,3,125,3,116,3,124, - 3,131,1,130,1,124,1,114,48,100,4,110,2,100,5,125, - 2,116,4,160,5,124,0,161,1,125,0,116,6,124,0,131, - 1,92,2,125,4,125,5,124,5,160,7,100,6,161,1,92, - 3,125,6,125,7,125,8,116,8,106,9,106,10,125,9,124, - 9,100,1,117,0,114,114,116,11,100,7,131,1,130,1,100, - 4,160,12,124,6,114,126,124,6,110,2,124,8,124,7,124, - 9,103,3,161,1,125,10,124,2,100,1,117,0,114,172,116, - 8,106,13,106,14,100,8,107,2,114,164,100,4,125,2,110, - 8,116,8,106,13,106,14,125,2,116,15,124,2,131,1,125, - 2,124,2,100,4,107,3,114,224,124,2,160,16,161,0,115, - 210,116,17,100,9,160,18,124,2,161,1,131,1,130,1,100, - 10,160,18,124,10,116,19,124,2,161,3,125,10,124,10,116, - 20,100,8,25,0,23,0,125,11,116,8,106,21,100,1,117, - 1,144,1,114,76,116,22,124,4,131,1,144,1,115,16,116, - 23,116,4,160,24,161,0,124,4,131,2,125,4,124,4,100, - 5,25,0,100,11,107,2,144,1,114,56,124,4,100,8,25, - 0,116,25,118,1,144,1,114,56,124,4,100,12,100,1,133, - 2,25,0,125,4,116,23,116,8,106,21,124,4,160,26,116, - 25,161,1,124,11,131,3,83,0,116,23,124,4,116,27,124, - 11,131,3,83,0,41,13,97,254,2,0,0,71,105,118,101, - 110,32,116,104,101,32,112,97,116,104,32,116,111,32,97,32, - 46,112,121,32,102,105,108,101,44,32,114,101,116,117,114,110, - 32,116,104,101,32,112,97,116,104,32,116,111,32,105,116,115, - 32,46,112,121,99,32,102,105,108,101,46,10,10,32,32,32, - 32,84,104,101,32,46,112,121,32,102,105,108,101,32,100,111, - 101,115,32,110,111,116,32,110,101,101,100,32,116,111,32,101, - 120,105,115,116,59,32,116,104,105,115,32,115,105,109,112,108, - 121,32,114,101,116,117,114,110,115,32,116,104,101,32,112,97, - 116,104,32,116,111,32,116,104,101,10,32,32,32,32,46,112, - 121,99,32,102,105,108,101,32,99,97,108,99,117,108,97,116, - 101,100,32,97,115,32,105,102,32,116,104,101,32,46,112,121, - 32,102,105,108,101,32,119,101,114,101,32,105,109,112,111,114, - 116,101,100,46,10,10,32,32,32,32,84,104,101,32,39,111, - 112,116,105,109,105,122,97,116,105,111,110,39,32,112,97,114, - 97,109,101,116,101,114,32,99,111,110,116,114,111,108,115,32, - 116,104,101,32,112,114,101,115,117,109,101,100,32,111,112,116, - 105,109,105,122,97,116,105,111,110,32,108,101,118,101,108,32, - 111,102,10,32,32,32,32,116,104,101,32,98,121,116,101,99, - 111,100,101,32,102,105,108,101,46,32,73,102,32,39,111,112, - 116,105,109,105,122,97,116,105,111,110,39,32,105,115,32,110, - 111,116,32,78,111,110,101,44,32,116,104,101,32,115,116,114, - 105,110,103,32,114,101,112,114,101,115,101,110,116,97,116,105, - 111,110,10,32,32,32,32,111,102,32,116,104,101,32,97,114, - 103,117,109,101,110,116,32,105,115,32,116,97,107,101,110,32, - 97,110,100,32,118,101,114,105,102,105,101,100,32,116,111,32, - 98,101,32,97,108,112,104,97,110,117,109,101,114,105,99,32, - 40,101,108,115,101,32,86,97,108,117,101,69,114,114,111,114, - 10,32,32,32,32,105,115,32,114,97,105,115,101,100,41,46, - 10,10,32,32,32,32,84,104,101,32,100,101,98,117,103,95, - 111,118,101,114,114,105,100,101,32,112,97,114,97,109,101,116, - 101,114,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,73,102,32,100,101,98,117,103,95,111,118,101,114,114, - 105,100,101,32,105,115,32,110,111,116,32,78,111,110,101,44, - 10,32,32,32,32,97,32,84,114,117,101,32,118,97,108,117, - 101,32,105,115,32,116,104,101,32,115,97,109,101,32,97,115, - 32,115,101,116,116,105,110,103,32,39,111,112,116,105,109,105, - 122,97,116,105,111,110,39,32,116,111,32,116,104,101,32,101, - 109,112,116,121,32,115,116,114,105,110,103,10,32,32,32,32, - 119,104,105,108,101,32,97,32,70,97,108,115,101,32,118,97, - 108,117,101,32,105,115,32,101,113,117,105,118,97,108,101,110, - 116,32,116,111,32,115,101,116,116,105,110,103,32,39,111,112, - 116,105,109,105,122,97,116,105,111,110,39,32,116,111,32,39, - 49,39,46,10,10,32,32,32,32,73,102,32,115,121,115,46, - 105,109,112,108,101,109,101,110,116,97,116,105,111,110,46,99, - 97,99,104,101,95,116,97,103,32,105,115,32,78,111,110,101, - 32,116,104,101,110,32,78,111,116,73,109,112,108,101,109,101, - 110,116,101,100,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,46,10,10,32,32,32,32,78,122,70,116,104,101, + 112,97,116,104,95,105,115,100,105,114,136,0,0,0,115,8, + 0,0,0,4,2,8,1,10,1,255,128,114,64,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,67,0,0,0,115,26,0,0,0,124,0, + 160,0,116,1,161,1,112,24,124,0,100,1,100,2,133,2, + 25,0,116,2,118,0,83,0,41,4,122,142,82,101,112,108, + 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, + 97,116,104,46,105,115,97,98,115,46,10,10,32,32,32,32, + 67,111,110,115,105,100,101,114,115,32,97,32,87,105,110,100, + 111,119,115,32,100,114,105,118,101,45,114,101,108,97,116,105, + 118,101,32,112,97,116,104,32,40,110,111,32,100,114,105,118, + 101,44,32,98,117,116,32,115,116,97,114,116,115,32,119,105, + 116,104,32,115,108,97,115,104,41,32,116,111,10,32,32,32, + 32,115,116,105,108,108,32,98,101,32,34,97,98,115,111,108, + 117,116,101,34,46,10,32,32,32,32,114,3,0,0,0,233, + 3,0,0,0,78,41,3,114,23,0,0,0,114,42,0,0, + 0,218,20,95,112,97,116,104,115,101,112,115,95,119,105,116, + 104,95,99,111,108,111,110,114,56,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,95,112,97, + 116,104,95,105,115,97,98,115,143,0,0,0,115,4,0,0, + 0,26,6,255,128,114,67,0,0,0,233,182,1,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 11,0,0,0,67,0,0,0,115,170,0,0,0,100,1,160, + 0,124,0,116,1,124,0,131,1,161,2,125,3,116,2,160, + 3,124,3,116,2,106,4,116,2,106,5,66,0,116,2,106, + 6,66,0,124,2,100,2,64,0,161,3,125,4,122,72,116, + 7,160,8,124,4,100,3,161,2,143,26,125,5,124,5,160, + 9,124,1,161,1,1,0,87,0,100,4,4,0,4,0,131, + 3,1,0,110,16,49,0,115,94,48,0,1,0,1,0,1, + 0,89,0,1,0,116,2,160,10,124,3,124,0,161,2,1, + 0,87,0,100,4,83,0,4,0,116,11,121,168,1,0,1, + 0,1,0,122,14,116,2,160,12,124,3,161,1,1,0,87, + 0,130,0,4,0,116,11,121,166,1,0,1,0,1,0,89, + 0,130,0,48,0,48,0,41,5,122,162,66,101,115,116,45, + 101,102,102,111,114,116,32,102,117,110,99,116,105,111,110,32, + 116,111,32,119,114,105,116,101,32,100,97,116,97,32,116,111, + 32,97,32,112,97,116,104,32,97,116,111,109,105,99,97,108, + 108,121,46,10,32,32,32,32,66,101,32,112,114,101,112,97, + 114,101,100,32,116,111,32,104,97,110,100,108,101,32,97,32, + 70,105,108,101,69,120,105,115,116,115,69,114,114,111,114,32, + 105,102,32,99,111,110,99,117,114,114,101,110,116,32,119,114, + 105,116,105,110,103,32,111,102,32,116,104,101,10,32,32,32, + 32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32, + 105,115,32,97,116,116,101,109,112,116,101,100,46,250,5,123, + 125,46,123,125,114,68,0,0,0,90,2,119,98,78,41,13, + 218,6,102,111,114,109,97,116,218,2,105,100,114,18,0,0, + 0,90,4,111,112,101,110,90,6,79,95,69,88,67,76,90, + 7,79,95,67,82,69,65,84,90,8,79,95,87,82,79,78, + 76,89,218,3,95,105,111,218,6,70,105,108,101,73,79,218, + 5,119,114,105,116,101,218,7,114,101,112,108,97,99,101,114, + 58,0,0,0,90,6,117,110,108,105,110,107,41,6,114,52, + 0,0,0,114,37,0,0,0,114,60,0,0,0,90,8,112, + 97,116,104,95,116,109,112,90,2,102,100,218,4,102,105,108, + 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,13,95,119,114,105,116,101,95,97,116,111,109,105,99,152, + 0,0,0,115,36,0,0,0,16,5,6,1,22,1,4,255, + 2,2,14,3,40,1,18,1,12,1,2,1,12,1,2,3, + 12,254,2,1,2,1,2,255,2,1,255,128,114,77,0,0, + 0,105,104,13,0,0,114,39,0,0,0,114,29,0,0,0, + 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, + 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, + 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, + 112,116,105,109,105,122,97,116,105,111,110,99,2,0,0,0, + 0,0,0,0,1,0,0,0,12,0,0,0,5,0,0,0, + 67,0,0,0,115,88,1,0,0,124,1,100,1,117,1,114, + 52,116,0,160,1,100,2,116,2,161,2,1,0,124,2,100, + 1,117,1,114,40,100,3,125,3,116,3,124,3,131,1,130, + 1,124,1,114,48,100,4,110,2,100,5,125,2,116,4,160, + 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, + 4,125,5,124,5,160,7,100,6,161,1,92,3,125,6,125, + 7,125,8,116,8,106,9,106,10,125,9,124,9,100,1,117, + 0,114,114,116,11,100,7,131,1,130,1,100,4,160,12,124, + 6,114,126,124,6,110,2,124,8,124,7,124,9,103,3,161, + 1,125,10,124,2,100,1,117,0,114,172,116,8,106,13,106, + 14,100,8,107,2,114,164,100,4,125,2,110,8,116,8,106, + 13,106,14,125,2,116,15,124,2,131,1,125,2,124,2,100, + 4,107,3,114,224,124,2,160,16,161,0,115,210,116,17,100, + 9,160,18,124,2,161,1,131,1,130,1,100,10,160,18,124, + 10,116,19,124,2,161,3,125,10,124,10,116,20,100,8,25, + 0,23,0,125,11,116,8,106,21,100,1,117,1,144,1,114, + 76,116,22,124,4,131,1,144,1,115,16,116,23,116,4,160, + 24,161,0,124,4,131,2,125,4,124,4,100,5,25,0,100, + 11,107,2,144,1,114,56,124,4,100,8,25,0,116,25,118, + 1,144,1,114,56,124,4,100,12,100,1,133,2,25,0,125, + 4,116,23,116,8,106,21,124,4,160,26,116,25,161,1,124, + 11,131,3,83,0,116,23,124,4,116,27,124,11,131,3,83, + 0,41,13,97,254,2,0,0,71,105,118,101,110,32,116,104, + 101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,32, + 102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,101, + 32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,121, + 99,32,102,105,108,101,46,10,10,32,32,32,32,84,104,101, + 32,46,112,121,32,102,105,108,101,32,100,111,101,115,32,110, + 111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,116, + 59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,101, + 116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,116, + 111,32,116,104,101,10,32,32,32,32,46,112,121,99,32,102, + 105,108,101,32,99,97,108,99,117,108,97,116,101,100,32,97, + 115,32,105,102,32,116,104,101,32,46,112,121,32,102,105,108, + 101,32,119,101,114,101,32,105,109,112,111,114,116,101,100,46, + 10,10,32,32,32,32,84,104,101,32,39,111,112,116,105,109, + 105,122,97,116,105,111,110,39,32,112,97,114,97,109,101,116, + 101,114,32,99,111,110,116,114,111,108,115,32,116,104,101,32, + 112,114,101,115,117,109,101,100,32,111,112,116,105,109,105,122, + 97,116,105,111,110,32,108,101,118,101,108,32,111,102,10,32, + 32,32,32,116,104,101,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,46,32,73,102,32,39,111,112,116,105,109,105, + 122,97,116,105,111,110,39,32,105,115,32,110,111,116,32,78, + 111,110,101,44,32,116,104,101,32,115,116,114,105,110,103,32, + 114,101,112,114,101,115,101,110,116,97,116,105,111,110,10,32, + 32,32,32,111,102,32,116,104,101,32,97,114,103,117,109,101, + 110,116,32,105,115,32,116,97,107,101,110,32,97,110,100,32, + 118,101,114,105,102,105,101,100,32,116,111,32,98,101,32,97, + 108,112,104,97,110,117,109,101,114,105,99,32,40,101,108,115, + 101,32,86,97,108,117,101,69,114,114,111,114,10,32,32,32, + 32,105,115,32,114,97,105,115,101,100,41,46,10,10,32,32, + 32,32,84,104,101,32,100,101,98,117,103,95,111,118,101,114, + 114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,46,32,73,102, 32,100,101,98,117,103,95,111,118,101,114,114,105,100,101,32, - 112,97,114,97,109,101,116,101,114,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,59,32,117,115,101,32,39,111,112, - 116,105,109,105,122,97,116,105,111,110,39,32,105,110,115,116, - 101,97,100,122,50,100,101,98,117,103,95,111,118,101,114,114, - 105,100,101,32,111,114,32,111,112,116,105,109,105,122,97,116, - 105,111,110,32,109,117,115,116,32,98,101,32,115,101,116,32, - 116,111,32,78,111,110,101,114,10,0,0,0,114,3,0,0, - 0,218,1,46,250,36,115,121,115,46,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,116, - 97,103,32,105,115,32,78,111,110,101,114,0,0,0,0,122, - 24,123,33,114,125,32,105,115,32,110,111,116,32,97,108,112, - 104,97,110,117,109,101,114,105,99,122,7,123,125,46,123,125, - 123,125,114,11,0,0,0,114,39,0,0,0,41,28,218,9, - 95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218, - 18,68,101,112,114,101,99,97,116,105,111,110,87,97,114,110, - 105,110,103,218,9,84,121,112,101,69,114,114,111,114,114,18, - 0,0,0,218,6,102,115,112,97,116,104,114,55,0,0,0, - 114,49,0,0,0,114,15,0,0,0,218,14,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,218,9,99,97,99,104, - 101,95,116,97,103,218,19,78,111,116,73,109,112,108,101,109, - 101,110,116,101,100,69,114,114,111,114,114,46,0,0,0,114, - 16,0,0,0,218,8,111,112,116,105,109,105,122,101,218,3, - 115,116,114,218,7,105,115,97,108,110,117,109,218,10,86,97, - 108,117,101,69,114,114,111,114,114,70,0,0,0,218,4,95, - 79,80,84,218,17,66,89,84,69,67,79,68,69,95,83,85, - 70,70,73,88,69,83,218,14,112,121,99,97,99,104,101,95, - 112,114,101,102,105,120,114,67,0,0,0,114,48,0,0,0, - 114,63,0,0,0,114,42,0,0,0,218,6,108,115,116,114, - 105,112,218,8,95,80,89,67,65,67,72,69,41,12,114,52, - 0,0,0,90,14,100,101,98,117,103,95,111,118,101,114,114, - 105,100,101,114,78,0,0,0,218,7,109,101,115,115,97,103, - 101,218,4,104,101,97,100,114,54,0,0,0,90,4,98,97, - 115,101,114,6,0,0,0,218,4,114,101,115,116,90,3,116, - 97,103,90,15,97,108,109,111,115,116,95,102,105,108,101,110, - 97,109,101,218,8,102,105,108,101,110,97,109,101,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,17,99,97, - 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,84, - 1,0,0,115,74,0,0,0,8,18,6,1,2,1,4,255, - 8,2,4,1,8,1,12,1,10,1,12,1,16,1,8,1, - 8,1,8,1,24,1,8,1,12,1,6,1,8,2,8,1, - 8,1,8,1,14,1,14,1,12,1,12,1,10,9,14,1, - 28,5,12,1,2,4,4,1,8,1,2,1,4,253,12,5, - 255,128,114,102,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,10,0,0,0,5,0,0,0,67,0,0,0, - 115,44,1,0,0,116,0,106,1,106,2,100,1,117,0,114, - 20,116,3,100,2,131,1,130,1,116,4,160,5,124,0,161, - 1,125,0,116,6,124,0,131,1,92,2,125,1,125,2,100, - 3,125,3,116,0,106,7,100,1,117,1,114,102,116,0,106, - 7,160,8,116,9,161,1,125,4,124,1,160,10,124,4,116, - 11,23,0,161,1,114,102,124,1,116,12,124,4,131,1,100, - 1,133,2,25,0,125,1,100,4,125,3,124,3,115,144,116, - 6,124,1,131,1,92,2,125,1,125,5,124,5,116,13,107, - 3,114,144,116,14,116,13,155,0,100,5,124,0,155,2,157, - 3,131,1,130,1,124,2,160,15,100,6,161,1,125,6,124, - 6,100,7,118,1,114,176,116,14,100,8,124,2,155,2,157, - 2,131,1,130,1,124,6,100,9,107,2,144,1,114,12,124, - 2,160,16,100,6,100,10,161,2,100,11,25,0,125,7,124, - 7,160,10,116,17,161,1,115,226,116,14,100,12,116,17,155, - 2,157,2,131,1,130,1,124,7,116,12,116,17,131,1,100, - 1,133,2,25,0,125,8,124,8,160,18,161,0,144,1,115, - 12,116,14,100,13,124,7,155,2,100,14,157,3,131,1,130, - 1,124,2,160,19,100,6,161,1,100,15,25,0,125,9,116, - 20,124,1,124,9,116,21,100,15,25,0,23,0,131,2,83, - 0,41,16,97,110,1,0,0,71,105,118,101,110,32,116,104, - 101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,99, - 46,32,102,105,108,101,44,32,114,101,116,117,114,110,32,116, - 104,101,32,112,97,116,104,32,116,111,32,105,116,115,32,46, - 112,121,32,102,105,108,101,46,10,10,32,32,32,32,84,104, - 101,32,46,112,121,99,32,102,105,108,101,32,100,111,101,115, - 32,110,111,116,32,110,101,101,100,32,116,111,32,101,120,105, - 115,116,59,32,116,104,105,115,32,115,105,109,112,108,121,32, - 114,101,116,117,114,110,115,32,116,104,101,32,112,97,116,104, - 32,116,111,10,32,32,32,32,116,104,101,32,46,112,121,32, - 102,105,108,101,32,99,97,108,99,117,108,97,116,101,100,32, - 116,111,32,99,111,114,114,101,115,112,111,110,100,32,116,111, - 32,116,104,101,32,46,112,121,99,32,102,105,108,101,46,32, - 32,73,102,32,112,97,116,104,32,100,111,101,115,10,32,32, - 32,32,110,111,116,32,99,111,110,102,111,114,109,32,116,111, - 32,80,69,80,32,51,49,52,55,47,52,56,56,32,102,111, - 114,109,97,116,44,32,86,97,108,117,101,69,114,114,111,114, - 32,119,105,108,108,32,98,101,32,114,97,105,115,101,100,46, - 32,73,102,10,32,32,32,32,115,121,115,46,105,109,112,108, + 105,115,32,110,111,116,32,78,111,110,101,44,10,32,32,32, + 32,97,32,84,114,117,101,32,118,97,108,117,101,32,105,115, + 32,116,104,101,32,115,97,109,101,32,97,115,32,115,101,116, + 116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,105, + 111,110,39,32,116,111,32,116,104,101,32,101,109,112,116,121, + 32,115,116,114,105,110,103,10,32,32,32,32,119,104,105,108, + 101,32,97,32,70,97,108,115,101,32,118,97,108,117,101,32, + 105,115,32,101,113,117,105,118,97,108,101,110,116,32,116,111, + 32,115,101,116,116,105,110,103,32,39,111,112,116,105,109,105, + 122,97,116,105,111,110,39,32,116,111,32,39,49,39,46,10, + 10,32,32,32,32,73,102,32,115,121,115,46,105,109,112,108, 101,109,101,110,116,97,116,105,111,110,46,99,97,99,104,101, 95,116,97,103,32,105,115,32,78,111,110,101,32,116,104,101, 110,32,78,111,116,73,109,112,108,101,109,101,110,116,101,100, 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,46, - 10,10,32,32,32,32,78,114,80,0,0,0,70,84,122,31, - 32,110,111,116,32,98,111,116,116,111,109,45,108,101,118,101, - 108,32,100,105,114,101,99,116,111,114,121,32,105,110,32,114, - 79,0,0,0,62,2,0,0,0,114,39,0,0,0,114,65, - 0,0,0,122,29,101,120,112,101,99,116,101,100,32,111,110, - 108,121,32,50,32,111,114,32,51,32,100,111,116,115,32,105, - 110,32,114,65,0,0,0,114,39,0,0,0,233,254,255,255, - 255,122,53,111,112,116,105,109,105,122,97,116,105,111,110,32, - 112,111,114,116,105,111,110,32,111,102,32,102,105,108,101,110, - 97,109,101,32,100,111,101,115,32,110,111,116,32,115,116,97, - 114,116,32,119,105,116,104,32,122,19,111,112,116,105,109,105, - 122,97,116,105,111,110,32,108,101,118,101,108,32,122,29,32, - 105,115,32,110,111,116,32,97,110,32,97,108,112,104,97,110, - 117,109,101,114,105,99,32,118,97,108,117,101,114,0,0,0, - 0,41,22,114,15,0,0,0,114,86,0,0,0,114,87,0, - 0,0,114,88,0,0,0,114,18,0,0,0,114,85,0,0, - 0,114,55,0,0,0,114,95,0,0,0,114,41,0,0,0, - 114,42,0,0,0,114,23,0,0,0,114,45,0,0,0,114, - 4,0,0,0,114,97,0,0,0,114,92,0,0,0,218,5, - 99,111,117,110,116,114,51,0,0,0,114,93,0,0,0,114, - 91,0,0,0,218,9,112,97,114,116,105,116,105,111,110,114, - 48,0,0,0,218,15,83,79,85,82,67,69,95,83,85,70, - 70,73,88,69,83,41,10,114,52,0,0,0,114,99,0,0, - 0,90,16,112,121,99,97,99,104,101,95,102,105,108,101,110, - 97,109,101,90,23,102,111,117,110,100,95,105,110,95,112,121, - 99,97,99,104,101,95,112,114,101,102,105,120,90,13,115,116, - 114,105,112,112,101,100,95,112,97,116,104,90,7,112,121,99, - 97,99,104,101,90,9,100,111,116,95,99,111,117,110,116,114, - 78,0,0,0,90,9,111,112,116,95,108,101,118,101,108,90, - 13,98,97,115,101,95,102,105,108,101,110,97,109,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,17,115, - 111,117,114,99,101,95,102,114,111,109,95,99,97,99,104,101, - 155,1,0,0,115,62,0,0,0,12,9,8,1,10,1,12, - 1,4,1,10,1,12,1,14,1,16,1,4,1,4,1,12, - 1,8,1,8,1,2,1,8,255,10,2,8,1,14,1,10, - 1,16,1,10,1,4,1,2,1,8,255,16,2,10,1,16, - 1,14,2,18,1,255,128,114,107,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,9,0,0, - 0,67,0,0,0,115,124,0,0,0,116,0,124,0,131,1, - 100,1,107,2,114,16,100,2,83,0,124,0,160,1,100,3, - 161,1,92,3,125,1,125,2,125,3,124,1,114,56,124,3, - 160,2,161,0,100,4,100,5,133,2,25,0,100,6,107,3, - 114,60,124,0,83,0,122,12,116,3,124,0,131,1,125,4, - 87,0,110,34,4,0,116,4,116,5,102,2,121,106,1,0, - 1,0,1,0,124,0,100,2,100,5,133,2,25,0,125,4, - 89,0,110,2,48,0,116,6,124,4,131,1,114,120,124,4, - 83,0,124,0,83,0,41,7,122,188,67,111,110,118,101,114, - 116,32,97,32,98,121,116,101,99,111,100,101,32,102,105,108, - 101,32,112,97,116,104,32,116,111,32,97,32,115,111,117,114, - 99,101,32,112,97,116,104,32,40,105,102,32,112,111,115,115, - 105,98,108,101,41,46,10,10,32,32,32,32,84,104,105,115, - 32,102,117,110,99,116,105,111,110,32,101,120,105,115,116,115, - 32,112,117,114,101,108,121,32,102,111,114,32,98,97,99,107, - 119,97,114,100,115,45,99,111,109,112,97,116,105,98,105,108, - 105,116,121,32,102,111,114,10,32,32,32,32,80,121,73,109, - 112,111,114,116,95,69,120,101,99,67,111,100,101,77,111,100, - 117,108,101,87,105,116,104,70,105,108,101,110,97,109,101,115, - 40,41,32,105,110,32,116,104,101,32,67,32,65,80,73,46, - 10,10,32,32,32,32,114,0,0,0,0,78,114,79,0,0, - 0,233,253,255,255,255,233,255,255,255,255,90,2,112,121,41, - 7,114,4,0,0,0,114,49,0,0,0,218,5,108,111,119, - 101,114,114,107,0,0,0,114,88,0,0,0,114,92,0,0, - 0,114,62,0,0,0,41,5,218,13,98,121,116,101,99,111, - 100,101,95,112,97,116,104,114,100,0,0,0,114,53,0,0, - 0,90,9,101,120,116,101,110,115,105,111,110,218,11,115,111, - 117,114,99,101,95,112,97,116,104,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,15,95,103,101,116,95,115, - 111,117,114,99,101,102,105,108,101,195,1,0,0,115,22,0, - 0,0,12,7,4,1,16,1,24,1,4,1,2,1,12,1, - 16,1,18,1,16,1,255,128,114,113,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0, - 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,116, - 1,116,2,131,1,161,1,114,46,122,10,116,3,124,0,131, - 1,87,0,83,0,4,0,116,4,121,44,1,0,1,0,1, - 0,89,0,100,0,83,0,48,0,124,0,160,0,116,1,116, - 5,131,1,161,1,114,64,124,0,83,0,100,0,83,0,169, - 1,78,41,6,218,8,101,110,100,115,119,105,116,104,218,5, - 116,117,112,108,101,114,106,0,0,0,114,102,0,0,0,114, - 88,0,0,0,114,94,0,0,0,41,1,114,101,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,103,101,116,95,99,97,99,104,101,100,214,1,0,0, - 115,22,0,0,0,14,1,2,1,10,1,12,1,2,1,4, - 128,2,0,14,1,4,1,4,2,255,128,114,117,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,8,0,0,0,67,0,0,0,115,50,0,0,0,122,14, - 116,0,124,0,131,1,106,1,125,1,87,0,110,22,4,0, - 116,2,121,36,1,0,1,0,1,0,100,1,125,1,89,0, - 110,2,48,0,124,1,100,2,79,0,125,1,124,1,83,0, - 41,4,122,51,67,97,108,99,117,108,97,116,101,32,116,104, - 101,32,109,111,100,101,32,112,101,114,109,105,115,115,105,111, - 110,115,32,102,111,114,32,97,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,46,114,68,0,0,0,233,128,0,0, - 0,78,41,3,114,57,0,0,0,114,59,0,0,0,114,58, - 0,0,0,41,2,114,52,0,0,0,114,60,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, - 95,99,97,108,99,95,109,111,100,101,226,1,0,0,115,14, - 0,0,0,2,2,14,1,12,1,10,1,8,3,4,1,255, - 128,114,119,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,115, - 52,0,0,0,100,6,135,0,102,1,100,2,100,3,132,9, - 125,1,116,0,100,1,117,1,114,30,116,0,106,1,125,2, - 110,8,100,4,100,5,132,0,125,2,124,2,124,1,136,0, - 131,2,1,0,124,1,83,0,41,7,122,252,68,101,99,111, - 114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,32, - 116,104,97,116,32,116,104,101,32,109,111,100,117,108,101,32, - 98,101,105,110,103,32,114,101,113,117,101,115,116,101,100,32, - 109,97,116,99,104,101,115,32,116,104,101,32,111,110,101,32, - 116,104,101,10,32,32,32,32,108,111,97,100,101,114,32,99, - 97,110,32,104,97,110,100,108,101,46,10,10,32,32,32,32, - 84,104,101,32,102,105,114,115,116,32,97,114,103,117,109,101, - 110,116,32,40,115,101,108,102,41,32,109,117,115,116,32,100, - 101,102,105,110,101,32,95,110,97,109,101,32,119,104,105,99, - 104,32,116,104,101,32,115,101,99,111,110,100,32,97,114,103, - 117,109,101,110,116,32,105,115,10,32,32,32,32,99,111,109, - 112,97,114,101,100,32,97,103,97,105,110,115,116,46,32,73, - 102,32,116,104,101,32,99,111,109,112,97,114,105,115,111,110, - 32,102,97,105,108,115,32,116,104,101,110,32,73,109,112,111, - 114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,101, - 100,46,10,10,32,32,32,32,78,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,4,0,0,0,31,0, - 0,0,115,72,0,0,0,124,1,100,0,117,0,114,16,124, - 0,106,0,125,1,110,32,124,0,106,0,124,1,107,3,114, - 48,116,1,100,1,124,0,106,0,124,1,102,2,22,0,124, - 1,100,2,141,2,130,1,136,0,124,0,124,1,103,2,124, - 2,162,1,82,0,105,0,124,3,164,1,142,1,83,0,41, - 3,78,122,30,108,111,97,100,101,114,32,102,111,114,32,37, - 115,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32, - 37,115,169,1,218,4,110,97,109,101,41,2,114,121,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,121,0,0,0,218,4,97,114,103, - 115,218,6,107,119,97,114,103,115,169,1,218,6,109,101,116, - 104,111,100,114,7,0,0,0,114,8,0,0,0,218,19,95, - 99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112, - 101,114,246,1,0,0,115,20,0,0,0,8,1,8,1,10, - 1,4,1,8,1,2,255,2,1,6,255,24,2,255,128,122, - 40,95,99,104,101,99,107,95,110,97,109,101,46,60,108,111, - 99,97,108,115,62,46,95,99,104,101,99,107,95,110,97,109, - 101,95,119,114,97,112,112,101,114,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,7,0,0,0,83,0, - 0,0,115,56,0,0,0,100,1,68,0,93,32,125,2,116, - 0,124,1,124,2,131,2,114,4,116,1,124,0,124,2,116, - 2,124,1,124,2,131,2,131,3,1,0,113,4,124,0,106, - 3,160,4,124,1,106,3,161,1,1,0,100,0,83,0,41, - 2,78,41,4,218,10,95,95,109,111,100,117,108,101,95,95, - 218,8,95,95,110,97,109,101,95,95,218,12,95,95,113,117, - 97,108,110,97,109,101,95,95,218,7,95,95,100,111,99,95, - 95,41,5,218,7,104,97,115,97,116,116,114,218,7,115,101, - 116,97,116,116,114,218,7,103,101,116,97,116,116,114,218,8, - 95,95,100,105,99,116,95,95,218,6,117,112,100,97,116,101, - 41,3,90,3,110,101,119,90,3,111,108,100,114,75,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,5,95,119,114,97,112,3,2,0,0,115,12,0,0,0, - 8,1,10,1,20,1,14,1,4,128,255,128,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,2,218,10,95, - 98,111,111,116,115,116,114,97,112,114,138,0,0,0,41,3, - 114,127,0,0,0,114,128,0,0,0,114,138,0,0,0,114, - 7,0,0,0,114,126,0,0,0,114,8,0,0,0,218,11, - 95,99,104,101,99,107,95,110,97,109,101,238,1,0,0,115, - 14,0,0,0,14,8,8,10,8,1,8,2,10,6,4,1, - 255,128,114,140,0,0,0,99,2,0,0,0,0,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,117,0,114,56,116,1,124,3,131, - 1,114,56,100,2,125,4,116,2,160,3,124,4,160,4,124, - 3,100,3,25,0,161,1,116,5,161,2,1,0,124,2,83, - 0,41,4,122,155,84,114,121,32,116,111,32,102,105,110,100, - 32,97,32,108,111,97,100,101,114,32,102,111,114,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,98,121,32,100,101,108,101,103,97,116,105,110,103, - 32,116,111,10,32,32,32,32,115,101,108,102,46,102,105,110, - 100,95,108,111,97,100,101,114,40,41,46,10,10,32,32,32, - 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,32,105,110,32,102,97, - 118,111,114,32,111,102,32,102,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,40,41,46,10,10,32,32,32,32, - 78,122,44,78,111,116,32,105,109,112,111,114,116,105,110,103, - 32,100,105,114,101,99,116,111,114,121,32,123,125,58,32,109, - 105,115,115,105,110,103,32,95,95,105,110,105,116,95,95,114, - 0,0,0,0,41,6,218,11,102,105,110,100,95,108,111,97, - 100,101,114,114,4,0,0,0,114,81,0,0,0,114,82,0, - 0,0,114,70,0,0,0,218,13,73,109,112,111,114,116,87, - 97,114,110,105,110,103,41,5,114,123,0,0,0,218,8,102, - 117,108,108,110,97,109,101,218,6,108,111,97,100,101,114,218, - 8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,17,95, - 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, - 13,2,0,0,115,12,0,0,0,14,10,16,1,4,1,22, - 1,4,1,255,128,114,147,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,67, - 0,0,0,115,166,0,0,0,124,0,100,1,100,2,133,2, - 25,0,125,3,124,3,116,0,107,3,114,64,100,3,124,1, - 155,2,100,4,124,3,155,2,157,4,125,4,116,1,160,2, - 100,5,124,4,161,2,1,0,116,3,124,4,102,1,105,0, - 124,2,164,1,142,1,130,1,116,4,124,0,131,1,100,6, - 107,0,114,106,100,7,124,1,155,2,157,2,125,4,116,1, - 160,2,100,5,124,4,161,2,1,0,116,5,124,4,131,1, - 130,1,116,6,124,0,100,2,100,8,133,2,25,0,131,1, - 125,5,124,5,100,9,64,0,114,162,100,10,124,5,155,2, - 100,11,124,1,155,2,157,4,125,4,116,3,124,4,102,1, - 105,0,124,2,164,1,142,1,130,1,124,5,83,0,41,12, - 97,84,2,0,0,80,101,114,102,111,114,109,32,98,97,115, - 105,99,32,118,97,108,105,100,105,116,121,32,99,104,101,99, - 107,105,110,103,32,111,102,32,97,32,112,121,99,32,104,101, - 97,100,101,114,32,97,110,100,32,114,101,116,117,114,110,32, - 116,104,101,32,102,108,97,103,115,32,102,105,101,108,100,44, - 10,32,32,32,32,119,104,105,99,104,32,100,101,116,101,114, - 109,105,110,101,115,32,104,111,119,32,116,104,101,32,112,121, - 99,32,115,104,111,117,108,100,32,98,101,32,102,117,114,116, - 104,101,114,32,118,97,108,105,100,97,116,101,100,32,97,103, - 97,105,110,115,116,32,116,104,101,32,115,111,117,114,99,101, + 10,10,32,32,32,32,78,122,70,116,104,101,32,100,101,98, + 117,103,95,111,118,101,114,114,105,100,101,32,112,97,114,97, + 109,101,116,101,114,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,59,32,117,115,101,32,39,111,112,116,105,109,105, + 122,97,116,105,111,110,39,32,105,110,115,116,101,97,100,122, + 50,100,101,98,117,103,95,111,118,101,114,114,105,100,101,32, + 111,114,32,111,112,116,105,109,105,122,97,116,105,111,110,32, + 109,117,115,116,32,98,101,32,115,101,116,32,116,111,32,78, + 111,110,101,114,10,0,0,0,114,3,0,0,0,218,1,46, + 250,36,115,121,115,46,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,46,99,97,99,104,101,95,116,97,103,32,105, + 115,32,78,111,110,101,114,0,0,0,0,122,24,123,33,114, + 125,32,105,115,32,110,111,116,32,97,108,112,104,97,110,117, + 109,101,114,105,99,122,7,123,125,46,123,125,123,125,114,11, + 0,0,0,114,39,0,0,0,41,28,218,9,95,119,97,114, + 110,105,110,103,115,218,4,119,97,114,110,218,18,68,101,112, + 114,101,99,97,116,105,111,110,87,97,114,110,105,110,103,218, + 9,84,121,112,101,69,114,114,111,114,114,18,0,0,0,218, + 6,102,115,112,97,116,104,114,55,0,0,0,114,49,0,0, + 0,114,15,0,0,0,218,14,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,218,9,99,97,99,104,101,95,116,97, + 103,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, + 100,69,114,114,111,114,114,46,0,0,0,114,16,0,0,0, + 218,8,111,112,116,105,109,105,122,101,218,3,115,116,114,218, + 7,105,115,97,108,110,117,109,218,10,86,97,108,117,101,69, + 114,114,111,114,114,70,0,0,0,218,4,95,79,80,84,218, + 17,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, + 69,83,218,14,112,121,99,97,99,104,101,95,112,114,101,102, + 105,120,114,67,0,0,0,114,48,0,0,0,114,63,0,0, + 0,114,42,0,0,0,218,6,108,115,116,114,105,112,218,8, + 95,80,89,67,65,67,72,69,41,12,114,52,0,0,0,90, + 14,100,101,98,117,103,95,111,118,101,114,114,105,100,101,114, + 78,0,0,0,218,7,109,101,115,115,97,103,101,218,4,104, + 101,97,100,114,54,0,0,0,90,4,98,97,115,101,114,6, + 0,0,0,218,4,114,101,115,116,90,3,116,97,103,90,15, + 97,108,109,111,115,116,95,102,105,108,101,110,97,109,101,218, + 8,102,105,108,101,110,97,109,101,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,17,99,97,99,104,101,95, + 102,114,111,109,95,115,111,117,114,99,101,84,1,0,0,115, + 74,0,0,0,8,18,6,1,2,1,4,255,8,2,4,1, + 8,1,12,1,10,1,12,1,16,1,8,1,8,1,8,1, + 24,1,8,1,12,1,6,1,8,2,8,1,8,1,8,1, + 14,1,14,1,12,1,12,1,10,9,14,1,28,5,12,1, + 2,4,4,1,8,1,2,1,4,253,12,5,255,128,114,102, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 10,0,0,0,5,0,0,0,67,0,0,0,115,44,1,0, + 0,116,0,106,1,106,2,100,1,117,0,114,20,116,3,100, + 2,131,1,130,1,116,4,160,5,124,0,161,1,125,0,116, + 6,124,0,131,1,92,2,125,1,125,2,100,3,125,3,116, + 0,106,7,100,1,117,1,114,102,116,0,106,7,160,8,116, + 9,161,1,125,4,124,1,160,10,124,4,116,11,23,0,161, + 1,114,102,124,1,116,12,124,4,131,1,100,1,133,2,25, + 0,125,1,100,4,125,3,124,3,115,144,116,6,124,1,131, + 1,92,2,125,1,125,5,124,5,116,13,107,3,114,144,116, + 14,116,13,155,0,100,5,124,0,155,2,157,3,131,1,130, + 1,124,2,160,15,100,6,161,1,125,6,124,6,100,7,118, + 1,114,176,116,14,100,8,124,2,155,2,157,2,131,1,130, + 1,124,6,100,9,107,2,144,1,114,12,124,2,160,16,100, + 6,100,10,161,2,100,11,25,0,125,7,124,7,160,10,116, + 17,161,1,115,226,116,14,100,12,116,17,155,2,157,2,131, + 1,130,1,124,7,116,12,116,17,131,1,100,1,133,2,25, + 0,125,8,124,8,160,18,161,0,144,1,115,12,116,14,100, + 13,124,7,155,2,100,14,157,3,131,1,130,1,124,2,160, + 19,100,6,161,1,100,15,25,0,125,9,116,20,124,1,124, + 9,116,21,100,15,25,0,23,0,131,2,83,0,41,16,97, + 110,1,0,0,71,105,118,101,110,32,116,104,101,32,112,97, + 116,104,32,116,111,32,97,32,46,112,121,99,46,32,102,105, + 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, + 97,116,104,32,116,111,32,105,116,115,32,46,112,121,32,102, + 105,108,101,46,10,10,32,32,32,32,84,104,101,32,46,112, + 121,99,32,102,105,108,101,32,100,111,101,115,32,110,111,116, + 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, + 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, + 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,10, + 32,32,32,32,116,104,101,32,46,112,121,32,102,105,108,101, + 32,99,97,108,99,117,108,97,116,101,100,32,116,111,32,99, + 111,114,114,101,115,112,111,110,100,32,116,111,32,116,104,101, + 32,46,112,121,99,32,102,105,108,101,46,32,32,73,102,32, + 112,97,116,104,32,100,111,101,115,10,32,32,32,32,110,111, + 116,32,99,111,110,102,111,114,109,32,116,111,32,80,69,80, + 32,51,49,52,55,47,52,56,56,32,102,111,114,109,97,116, + 44,32,86,97,108,117,101,69,114,114,111,114,32,119,105,108, + 108,32,98,101,32,114,97,105,115,101,100,46,32,73,102,10, + 32,32,32,32,115,121,115,46,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, + 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, + 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, + 32,32,78,114,80,0,0,0,70,84,122,31,32,110,111,116, + 32,98,111,116,116,111,109,45,108,101,118,101,108,32,100,105, + 114,101,99,116,111,114,121,32,105,110,32,114,79,0,0,0, + 62,2,0,0,0,114,39,0,0,0,114,65,0,0,0,122, + 29,101,120,112,101,99,116,101,100,32,111,110,108,121,32,50, + 32,111,114,32,51,32,100,111,116,115,32,105,110,32,114,65, + 0,0,0,114,39,0,0,0,233,254,255,255,255,122,53,111, + 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116, + 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32, + 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119, + 105,116,104,32,122,19,111,112,116,105,109,105,122,97,116,105, + 111,110,32,108,101,118,101,108,32,122,29,32,105,115,32,110, + 111,116,32,97,110,32,97,108,112,104,97,110,117,109,101,114, + 105,99,32,118,97,108,117,101,114,0,0,0,0,41,22,114, + 15,0,0,0,114,86,0,0,0,114,87,0,0,0,114,88, + 0,0,0,114,18,0,0,0,114,85,0,0,0,114,55,0, + 0,0,114,95,0,0,0,114,41,0,0,0,114,42,0,0, + 0,114,23,0,0,0,114,45,0,0,0,114,4,0,0,0, + 114,97,0,0,0,114,92,0,0,0,218,5,99,111,117,110, + 116,114,51,0,0,0,114,93,0,0,0,114,91,0,0,0, + 218,9,112,97,114,116,105,116,105,111,110,114,48,0,0,0, + 218,15,83,79,85,82,67,69,95,83,85,70,70,73,88,69, + 83,41,10,114,52,0,0,0,114,99,0,0,0,90,16,112, + 121,99,97,99,104,101,95,102,105,108,101,110,97,109,101,90, + 23,102,111,117,110,100,95,105,110,95,112,121,99,97,99,104, + 101,95,112,114,101,102,105,120,90,13,115,116,114,105,112,112, + 101,100,95,112,97,116,104,90,7,112,121,99,97,99,104,101, + 90,9,100,111,116,95,99,111,117,110,116,114,78,0,0,0, + 90,9,111,112,116,95,108,101,118,101,108,90,13,98,97,115, + 101,95,102,105,108,101,110,97,109,101,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,17,115,111,117,114,99, + 101,95,102,114,111,109,95,99,97,99,104,101,155,1,0,0, + 115,62,0,0,0,12,9,8,1,10,1,12,1,4,1,10, + 1,12,1,14,1,16,1,4,1,4,1,12,1,8,1,8, + 1,2,1,8,255,10,2,8,1,14,1,10,1,16,1,10, + 1,4,1,2,1,8,255,16,2,10,1,16,1,14,2,18, + 1,255,128,114,107,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,9,0,0,0,67,0,0, + 0,115,124,0,0,0,116,0,124,0,131,1,100,1,107,2, + 114,16,100,2,83,0,124,0,160,1,100,3,161,1,92,3, + 125,1,125,2,125,3,124,1,114,56,124,3,160,2,161,0, + 100,4,100,5,133,2,25,0,100,6,107,3,114,60,124,0, + 83,0,122,12,116,3,124,0,131,1,125,4,87,0,110,34, + 4,0,116,4,116,5,102,2,121,106,1,0,1,0,1,0, + 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,2, + 48,0,116,6,124,4,131,1,114,120,124,4,83,0,124,0, + 83,0,41,7,122,188,67,111,110,118,101,114,116,32,97,32, + 98,121,116,101,99,111,100,101,32,102,105,108,101,32,112,97, + 116,104,32,116,111,32,97,32,115,111,117,114,99,101,32,112, + 97,116,104,32,40,105,102,32,112,111,115,115,105,98,108,101, + 41,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, + 99,116,105,111,110,32,101,120,105,115,116,115,32,112,117,114, + 101,108,121,32,102,111,114,32,98,97,99,107,119,97,114,100, + 115,45,99,111,109,112,97,116,105,98,105,108,105,116,121,32, + 102,111,114,10,32,32,32,32,80,121,73,109,112,111,114,116, + 95,69,120,101,99,67,111,100,101,77,111,100,117,108,101,87, + 105,116,104,70,105,108,101,110,97,109,101,115,40,41,32,105, + 110,32,116,104,101,32,67,32,65,80,73,46,10,10,32,32, + 32,32,114,0,0,0,0,78,114,79,0,0,0,233,253,255, + 255,255,233,255,255,255,255,90,2,112,121,41,7,114,4,0, + 0,0,114,49,0,0,0,218,5,108,111,119,101,114,114,107, + 0,0,0,114,88,0,0,0,114,92,0,0,0,114,62,0, + 0,0,41,5,218,13,98,121,116,101,99,111,100,101,95,112, + 97,116,104,114,100,0,0,0,114,53,0,0,0,90,9,101, + 120,116,101,110,115,105,111,110,218,11,115,111,117,114,99,101, + 95,112,97,116,104,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, + 101,102,105,108,101,195,1,0,0,115,22,0,0,0,12,7, + 4,1,16,1,24,1,4,1,2,1,12,1,16,1,18,1, + 16,1,255,128,114,113,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0, + 0,0,115,68,0,0,0,124,0,160,0,116,1,116,2,131, + 1,161,1,114,46,122,10,116,3,124,0,131,1,87,0,83, + 0,4,0,116,4,121,44,1,0,1,0,1,0,89,0,100, + 0,83,0,48,0,124,0,160,0,116,1,116,5,131,1,161, + 1,114,64,124,0,83,0,100,0,83,0,169,1,78,41,6, + 218,8,101,110,100,115,119,105,116,104,218,5,116,117,112,108, + 101,114,106,0,0,0,114,102,0,0,0,114,88,0,0,0, + 114,94,0,0,0,41,1,114,101,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, + 116,95,99,97,99,104,101,100,214,1,0,0,115,18,0,0, + 0,14,1,2,1,10,1,12,1,8,1,14,1,4,1,4, + 2,255,128,114,117,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, + 0,115,50,0,0,0,122,14,116,0,124,0,131,1,106,1, + 125,1,87,0,110,22,4,0,116,2,121,36,1,0,1,0, + 1,0,100,1,125,1,89,0,110,2,48,0,124,1,100,2, + 79,0,125,1,124,1,83,0,41,4,122,51,67,97,108,99, + 117,108,97,116,101,32,116,104,101,32,109,111,100,101,32,112, + 101,114,109,105,115,115,105,111,110,115,32,102,111,114,32,97, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,46,114, + 68,0,0,0,233,128,0,0,0,78,41,3,114,57,0,0, + 0,114,59,0,0,0,114,58,0,0,0,41,2,114,52,0, + 0,0,114,60,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,10,95,99,97,108,99,95,109,111, + 100,101,226,1,0,0,115,14,0,0,0,2,2,14,1,12, + 1,10,1,8,3,4,1,255,128,114,119,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, + 0,0,0,3,0,0,0,115,52,0,0,0,100,6,135,0, + 102,1,100,2,100,3,132,9,125,1,116,0,100,1,117,1, + 114,30,116,0,106,1,125,2,110,8,100,4,100,5,132,0, + 125,2,124,2,124,1,136,0,131,2,1,0,124,1,83,0, + 41,7,122,252,68,101,99,111,114,97,116,111,114,32,116,111, + 32,118,101,114,105,102,121,32,116,104,97,116,32,116,104,101, + 32,109,111,100,117,108,101,32,98,101,105,110,103,32,114,101, + 113,117,101,115,116,101,100,32,109,97,116,99,104,101,115,32, + 116,104,101,32,111,110,101,32,116,104,101,10,32,32,32,32, + 108,111,97,100,101,114,32,99,97,110,32,104,97,110,100,108, + 101,46,10,10,32,32,32,32,84,104,101,32,102,105,114,115, + 116,32,97,114,103,117,109,101,110,116,32,40,115,101,108,102, + 41,32,109,117,115,116,32,100,101,102,105,110,101,32,95,110, + 97,109,101,32,119,104,105,99,104,32,116,104,101,32,115,101, + 99,111,110,100,32,97,114,103,117,109,101,110,116,32,105,115, + 10,32,32,32,32,99,111,109,112,97,114,101,100,32,97,103, + 97,105,110,115,116,46,32,73,102,32,116,104,101,32,99,111, + 109,112,97,114,105,115,111,110,32,102,97,105,108,115,32,116, + 104,101,110,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,115,32,114,97,105,115,101,100,46,10,10,32,32,32,32, + 78,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,31,0,0,0,115,72,0,0,0,124, + 1,100,0,117,0,114,16,124,0,106,0,125,1,110,32,124, + 0,106,0,124,1,107,3,114,48,116,1,100,1,124,0,106, + 0,124,1,102,2,22,0,124,1,100,2,141,2,130,1,136, + 0,124,0,124,1,103,2,124,2,162,1,82,0,105,0,124, + 3,164,1,142,1,83,0,41,3,78,122,30,108,111,97,100, + 101,114,32,102,111,114,32,37,115,32,99,97,110,110,111,116, + 32,104,97,110,100,108,101,32,37,115,169,1,218,4,110,97, + 109,101,41,2,114,121,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,121, + 0,0,0,218,4,97,114,103,115,218,6,107,119,97,114,103, + 115,169,1,218,6,109,101,116,104,111,100,114,7,0,0,0, + 114,8,0,0,0,218,19,95,99,104,101,99,107,95,110,97, + 109,101,95,119,114,97,112,112,101,114,246,1,0,0,115,20, + 0,0,0,8,1,8,1,10,1,4,1,8,1,2,255,2, + 1,6,255,24,2,255,128,122,40,95,99,104,101,99,107,95, + 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,7,0,0,0,83,0,0,0,115,56,0,0,0,100, + 1,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, + 4,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, + 3,1,0,113,4,124,0,106,3,160,4,124,1,106,3,161, + 1,1,0,100,0,83,0,41,2,78,41,4,218,10,95,95, + 109,111,100,117,108,101,95,95,218,8,95,95,110,97,109,101, + 95,95,218,12,95,95,113,117,97,108,110,97,109,101,95,95, + 218,7,95,95,100,111,99,95,95,41,5,218,7,104,97,115, + 97,116,116,114,218,7,115,101,116,97,116,116,114,218,7,103, + 101,116,97,116,116,114,218,8,95,95,100,105,99,116,95,95, + 218,6,117,112,100,97,116,101,41,3,90,3,110,101,119,90, + 3,111,108,100,114,75,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,5,95,119,114,97,112,3, + 2,0,0,115,10,0,0,0,8,1,10,1,20,1,18,1, + 255,128,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,2,218,10,95,98,111,111,116,115,116,114,97,112,114, + 138,0,0,0,41,3,114,127,0,0,0,114,128,0,0,0, + 114,138,0,0,0,114,7,0,0,0,114,126,0,0,0,114, + 8,0,0,0,218,11,95,99,104,101,99,107,95,110,97,109, + 101,238,1,0,0,115,14,0,0,0,14,8,8,10,8,1, + 8,2,10,6,4,1,255,128,114,140,0,0,0,99,2,0, + 0,0,0,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,117,0,114, + 56,116,1,124,3,131,1,114,56,100,2,125,4,116,2,160, + 3,124,4,160,4,124,3,100,3,25,0,161,1,116,5,161, + 2,1,0,124,2,83,0,41,4,122,155,84,114,121,32,116, + 111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,32, + 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,32,98,121,32,100,101,108,101, + 103,97,116,105,110,103,32,116,111,10,32,32,32,32,115,101, + 108,102,46,102,105,110,100,95,108,111,97,100,101,114,40,41, + 46,10,10,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,105,110,32,102,97,118,111,114,32,111,102,32,102,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,40,41,46, + 10,10,32,32,32,32,78,122,44,78,111,116,32,105,109,112, + 111,114,116,105,110,103,32,100,105,114,101,99,116,111,114,121, + 32,123,125,58,32,109,105,115,115,105,110,103,32,95,95,105, + 110,105,116,95,95,114,0,0,0,0,41,6,218,11,102,105, + 110,100,95,108,111,97,100,101,114,114,4,0,0,0,114,81, + 0,0,0,114,82,0,0,0,114,70,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,41,5,114,123, + 0,0,0,218,8,102,117,108,108,110,97,109,101,218,6,108, + 111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218, + 3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108, + 101,95,115,104,105,109,13,2,0,0,115,12,0,0,0,14, + 10,16,1,4,1,22,1,4,1,255,128,114,147,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,4,0,0,0,67,0,0,0,115,166,0,0,0,124,0, + 100,1,100,2,133,2,25,0,125,3,124,3,116,0,107,3, + 114,64,100,3,124,1,155,2,100,4,124,3,155,2,157,4, + 125,4,116,1,160,2,100,5,124,4,161,2,1,0,116,3, + 124,4,102,1,105,0,124,2,164,1,142,1,130,1,116,4, + 124,0,131,1,100,6,107,0,114,106,100,7,124,1,155,2, + 157,2,125,4,116,1,160,2,100,5,124,4,161,2,1,0, + 116,5,124,4,131,1,130,1,116,6,124,0,100,2,100,8, + 133,2,25,0,131,1,125,5,124,5,100,9,64,0,114,162, + 100,10,124,5,155,2,100,11,124,1,155,2,157,4,125,4, + 116,3,124,4,102,1,105,0,124,2,164,1,142,1,130,1, + 124,5,83,0,41,12,97,84,2,0,0,80,101,114,102,111, + 114,109,32,98,97,115,105,99,32,118,97,108,105,100,105,116, + 121,32,99,104,101,99,107,105,110,103,32,111,102,32,97,32, + 112,121,99,32,104,101,97,100,101,114,32,97,110,100,32,114, + 101,116,117,114,110,32,116,104,101,32,102,108,97,103,115,32, + 102,105,101,108,100,44,10,32,32,32,32,119,104,105,99,104, + 32,100,101,116,101,114,109,105,110,101,115,32,104,111,119,32, + 116,104,101,32,112,121,99,32,115,104,111,117,108,100,32,98, + 101,32,102,117,114,116,104,101,114,32,118,97,108,105,100,97, + 116,101,100,32,97,103,97,105,110,115,116,32,116,104,101,32, + 115,111,117,114,99,101,46,10,10,32,32,32,32,42,100,97, + 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, + 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, + 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, + 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, + 101,10,32,32,32,32,114,101,113,117,105,114,101,100,44,32, + 116,104,111,117,103,104,46,41,10,10,32,32,32,32,42,110, + 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, + 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, + 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, + 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, + 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, + 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, + 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, + 98,117,103,103,105,110,103,46,10,10,32,32,32,32,73,109, + 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,32,119,104,101,110,32,116,104,101,32,109,97,103, + 105,99,32,110,117,109,98,101,114,32,105,115,32,105,110,99, + 111,114,114,101,99,116,32,111,114,32,119,104,101,110,32,116, + 104,101,32,102,108,97,103,115,10,32,32,32,32,102,105,101, + 108,100,32,105,115,32,105,110,118,97,108,105,100,46,32,69, + 79,70,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,32,119,104,101,110,32,116,104,101,32,100,97,116,97,32, + 105,115,32,102,111,117,110,100,32,116,111,32,98,101,32,116, + 114,117,110,99,97,116,101,100,46,10,10,32,32,32,32,78, + 114,28,0,0,0,122,20,98,97,100,32,109,97,103,105,99, + 32,110,117,109,98,101,114,32,105,110,32,122,2,58,32,250, + 2,123,125,233,16,0,0,0,122,40,114,101,97,99,104,101, + 100,32,69,79,70,32,119,104,105,108,101,32,114,101,97,100, + 105,110,103,32,112,121,99,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,139,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,114,122,0,0,0,114,4, + 0,0,0,218,8,69,79,70,69,114,114,111,114,114,38,0, + 0,0,41,6,114,37,0,0,0,114,121,0,0,0,218,11, + 101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103, + 105,99,114,98,0,0,0,114,16,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,13,95,99,108, + 97,115,115,105,102,121,95,112,121,99,30,2,0,0,115,30, + 0,0,0,12,16,8,1,16,1,12,1,16,1,12,1,10, + 1,12,1,8,1,16,1,8,2,16,1,16,1,4,1,255, + 128,114,156,0,0,0,99,5,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, + 124,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,62,100,4,124,3, + 155,2,157,2,125,5,116,1,160,2,100,5,124,5,161,2, + 1,0,116,3,124,5,102,1,105,0,124,4,164,1,142,1, + 130,1,124,2,100,6,117,1,114,120,116,0,124,0,100,2, + 100,7,133,2,25,0,131,1,124,2,100,3,64,0,107,3, + 114,116,116,3,100,4,124,3,155,2,157,2,102,1,105,0, + 124,4,164,1,142,1,130,1,100,6,83,0,100,6,83,0, + 41,8,97,7,2,0,0,86,97,108,105,100,97,116,101,32, + 97,32,112,121,99,32,97,103,97,105,110,115,116,32,116,104, + 101,32,115,111,117,114,99,101,32,108,97,115,116,45,109,111, + 100,105,102,105,101,100,32,116,105,109,101,46,10,10,32,32, + 32,32,42,100,97,116,97,42,32,105,115,32,116,104,101,32, + 99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,32, + 112,121,99,32,102,105,108,101,46,32,40,79,110,108,121,32, + 116,104,101,32,102,105,114,115,116,32,49,54,32,98,121,116, + 101,115,32,97,114,101,10,32,32,32,32,114,101,113,117,105, + 114,101,100,46,41,10,10,32,32,32,32,42,115,111,117,114, + 99,101,95,109,116,105,109,101,42,32,105,115,32,116,104,101, + 32,108,97,115,116,32,109,111,100,105,102,105,101,100,32,116, + 105,109,101,115,116,97,109,112,32,111,102,32,116,104,101,32, + 115,111,117,114,99,101,32,102,105,108,101,46,10,10,32,32, + 32,32,42,115,111,117,114,99,101,95,115,105,122,101,42,32, + 105,115,32,78,111,110,101,32,111,114,32,116,104,101,32,115, + 105,122,101,32,111,102,32,116,104,101,32,115,111,117,114,99, + 101,32,102,105,108,101,32,105,110,32,98,121,116,101,115,46, + 10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,32, + 116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,101, + 100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,10, + 32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,115, + 42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,114, + 121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,97, + 105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,112, + 114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,46, + 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,150, + 0,0,0,233,12,0,0,0,114,27,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,148,0,0,0,78,114,149,0,0,0, + 41,4,114,38,0,0,0,114,139,0,0,0,114,153,0,0, + 0,114,122,0,0,0,41,6,114,37,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,121,0,0,0,114,155,0, + 0,0,114,98,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,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,63, + 2,0,0,115,20,0,0,0,24,19,10,1,12,1,16,1, + 8,1,22,1,2,255,22,2,8,254,255,128,114,160,0,0, + 0,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,42,0,0,0,124, + 0,100,1,100,2,133,2,25,0,124,1,107,3,114,38,116, + 0,100,3,124,2,155,2,157,2,102,1,105,0,124,3,164, + 1,142,1,130,1,100,4,83,0,41,5,97,243,1,0,0, + 86,97,108,105,100,97,116,101,32,97,32,104,97,115,104,45, + 98,97,115,101,100,32,112,121,99,32,98,121,32,99,104,101, + 99,107,105,110,103,32,116,104,101,32,114,101,97,108,32,115, + 111,117,114,99,101,32,104,97,115,104,32,97,103,97,105,110, + 115,116,32,116,104,101,32,111,110,101,32,105,110,10,32,32, + 32,32,116,104,101,32,112,121,99,32,104,101,97,100,101,114, 46,10,10,32,32,32,32,42,100,97,116,97,42,32,105,115, 32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102, 32,116,104,101,32,112,121,99,32,102,105,108,101,46,32,40, 79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,49, 54,32,98,121,116,101,115,32,97,114,101,10,32,32,32,32, - 114,101,113,117,105,114,101,100,44,32,116,104,111,117,103,104, - 46,41,10,10,32,32,32,32,42,110,97,109,101,42,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,46,32,73,116,32,105,115,32,117, - 115,101,100,32,102,111,114,32,108,111,103,103,105,110,103,46, - 10,10,32,32,32,32,42,101,120,99,95,100,101,116,97,105, - 108,115,42,32,105,115,32,97,32,100,105,99,116,105,111,110, - 97,114,121,32,112,97,115,115,101,100,32,116,111,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,102,32,105,116,32, - 114,97,105,115,101,100,32,102,111,114,10,32,32,32,32,105, - 109,112,114,111,118,101,100,32,100,101,98,117,103,103,105,110, - 103,46,10,10,32,32,32,32,73,109,112,111,114,116,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, - 101,110,32,116,104,101,32,109,97,103,105,99,32,110,117,109, - 98,101,114,32,105,115,32,105,110,99,111,114,114,101,99,116, - 32,111,114,32,119,104,101,110,32,116,104,101,32,102,108,97, - 103,115,10,32,32,32,32,102,105,101,108,100,32,105,115,32, - 105,110,118,97,108,105,100,46,32,69,79,70,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,32,119,104,101,110, - 32,116,104,101,32,100,97,116,97,32,105,115,32,102,111,117, - 110,100,32,116,111,32,98,101,32,116,114,117,110,99,97,116, - 101,100,46,10,10,32,32,32,32,78,114,28,0,0,0,122, - 20,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101, - 114,32,105,110,32,122,2,58,32,250,2,123,125,233,16,0, - 0,0,122,40,114,101,97,99,104,101,100,32,69,79,70,32, - 119,104,105,108,101,32,114,101,97,100,105,110,103,32,112,121, - 99,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,139,0,0, - 0,218,16,95,118,101,114,98,111,115,101,95,109,101,115,115, - 97,103,101,114,122,0,0,0,114,4,0,0,0,218,8,69, - 79,70,69,114,114,111,114,114,38,0,0,0,41,6,114,37, - 0,0,0,114,121,0,0,0,218,11,101,120,99,95,100,101, - 116,97,105,108,115,90,5,109,97,103,105,99,114,98,0,0, - 0,114,16,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,13,95,99,108,97,115,115,105,102,121, - 95,112,121,99,30,2,0,0,115,30,0,0,0,12,16,8, - 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, - 1,8,2,16,1,16,1,4,1,255,128,114,156,0,0,0, - 99,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,4,0,0,0,67,0,0,0,115,120,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,62,100,4,124,3,155,2,157,2,125,5, - 116,1,160,2,100,5,124,5,161,2,1,0,116,3,124,5, - 102,1,105,0,124,4,164,1,142,1,130,1,124,2,100,6, - 117,1,114,116,116,0,124,0,100,2,100,7,133,2,25,0, - 131,1,124,2,100,3,64,0,107,3,114,116,116,3,100,4, - 124,3,155,2,157,2,102,1,105,0,124,4,164,1,142,1, - 130,1,100,6,83,0,41,8,97,7,2,0,0,86,97,108, - 105,100,97,116,101,32,97,32,112,121,99,32,97,103,97,105, - 110,115,116,32,116,104,101,32,115,111,117,114,99,101,32,108, - 97,115,116,45,109,111,100,105,102,105,101,100,32,116,105,109, - 101,46,10,10,32,32,32,32,42,100,97,116,97,42,32,105, - 115,32,116,104,101,32,99,111,110,116,101,110,116,115,32,111, - 102,32,116,104,101,32,112,121,99,32,102,105,108,101,46,32, - 40,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32, - 49,54,32,98,121,116,101,115,32,97,114,101,10,32,32,32, - 32,114,101,113,117,105,114,101,100,46,41,10,10,32,32,32, - 32,42,115,111,117,114,99,101,95,109,116,105,109,101,42,32, - 105,115,32,116,104,101,32,108,97,115,116,32,109,111,100,105, - 102,105,101,100,32,116,105,109,101,115,116,97,109,112,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, - 101,46,10,10,32,32,32,32,42,115,111,117,114,99,101,95, - 115,105,122,101,42,32,105,115,32,78,111,110,101,32,111,114, - 32,116,104,101,32,115,105,122,101,32,111,102,32,116,104,101, - 32,115,111,117,114,99,101,32,102,105,108,101,32,105,110,32, - 98,121,116,101,115,46,10,10,32,32,32,32,42,110,97,109, - 101,42,32,105,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,46,32,73,116,32, - 105,115,32,117,115,101,100,32,102,111,114,32,108,111,103,103, - 105,110,103,46,10,10,32,32,32,32,42,101,120,99,95,100, - 101,116,97,105,108,115,42,32,105,115,32,97,32,100,105,99, - 116,105,111,110,97,114,121,32,112,97,115,115,101,100,32,116, - 111,32,73,109,112,111,114,116,69,114,114,111,114,32,105,102, - 32,105,116,32,114,97,105,115,101,100,32,102,111,114,10,32, - 32,32,32,105,109,112,114,111,118,101,100,32,100,101,98,117, - 103,103,105,110,103,46,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,150,0,0,0,233,12,0,0,0,114,27, - 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,148,0,0,0, - 78,114,149,0,0,0,41,4,114,38,0,0,0,114,139,0, - 0,0,114,153,0,0,0,114,122,0,0,0,41,6,114,37, - 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,121, - 0,0,0,114,155,0,0,0,114,98,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,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,63,2,0,0,115,20,0,0,0,24,19, - 10,1,12,1,16,1,8,1,22,1,2,255,22,2,4,128, - 255,128,114,160,0,0,0,99,4,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,42,0,0,0,124,0,100,1,100,2,133,2,25,0,124, - 1,107,3,114,38,116,0,100,3,124,2,155,2,157,2,102, - 1,105,0,124,3,164,1,142,1,130,1,100,4,83,0,41, - 5,97,243,1,0,0,86,97,108,105,100,97,116,101,32,97, - 32,104,97,115,104,45,98,97,115,101,100,32,112,121,99,32, - 98,121,32,99,104,101,99,107,105,110,103,32,116,104,101,32, - 114,101,97,108,32,115,111,117,114,99,101,32,104,97,115,104, - 32,97,103,97,105,110,115,116,32,116,104,101,32,111,110,101, - 32,105,110,10,32,32,32,32,116,104,101,32,112,121,99,32, - 104,101,97,100,101,114,46,10,10,32,32,32,32,42,100,97, - 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, - 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, - 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, - 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, - 101,10,32,32,32,32,114,101,113,117,105,114,101,100,46,41, - 10,10,32,32,32,32,42,115,111,117,114,99,101,95,104,97, - 115,104,42,32,105,115,32,116,104,101,32,105,109,112,111,114, - 116,108,105,98,46,117,116,105,108,46,115,111,117,114,99,101, - 95,104,97,115,104,40,41,32,111,102,32,116,104,101,32,115, - 111,117,114,99,101,32,102,105,108,101,46,10,10,32,32,32, - 32,42,110,97,109,101,42,32,105,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, - 46,32,73,116,32,105,115,32,117,115,101,100,32,102,111,114, - 32,108,111,103,103,105,110,103,46,10,10,32,32,32,32,42, - 101,120,99,95,100,101,116,97,105,108,115,42,32,105,115,32, - 97,32,100,105,99,116,105,111,110,97,114,121,32,112,97,115, - 115,101,100,32,116,111,32,73,109,112,111,114,116,69,114,114, - 111,114,32,105,102,32,105,116,32,114,97,105,115,101,100,32, - 102,111,114,10,32,32,32,32,105,109,112,114,111,118,101,100, - 32,100,101,98,117,103,103,105,110,103,46,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,150,0,0,0,114,149, - 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,122,0,0,0,41,4,114,37,0, - 0,0,218,11,115,111,117,114,99,101,95,104,97,115,104,114, - 121,0,0,0,114,155,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,18,95,118,97,108,105,100, - 97,116,101,95,104,97,115,104,95,112,121,99,91,2,0,0, - 115,16,0,0,0,16,17,2,1,8,1,4,255,2,2,6, - 254,4,128,255,128,114,162,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, - 0,0,0,115,76,0,0,0,116,0,160,1,124,0,161,1, - 125,4,116,2,124,4,116,3,131,2,114,56,116,4,160,5, - 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,52, - 116,6,160,7,124,4,124,3,161,2,1,0,124,4,83,0, - 116,8,100,3,160,9,124,2,161,1,124,1,124,2,100,4, - 141,3,130,1,41,5,122,35,67,111,109,112,105,108,101,32, - 98,121,116,101,99,111,100,101,32,97,115,32,102,111,117,110, - 100,32,105,110,32,97,32,112,121,99,46,122,21,99,111,100, - 101,32,111,98,106,101,99,116,32,102,114,111,109,32,123,33, - 114,125,78,122,23,78,111,110,45,99,111,100,101,32,111,98, - 106,101,99,116,32,105,110,32,123,33,114,125,169,2,114,121, - 0,0,0,114,52,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,139,0,0,0,114,153,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,122,0,0,0,114,70,0,0,0,41,5, - 114,37,0,0,0,114,121,0,0,0,114,111,0,0,0,114, - 112,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112, - 105,108,101,95,98,121,116,101,99,111,100,101,115,2,0,0, - 115,20,0,0,0,10,2,10,1,12,1,8,1,12,1,4, - 1,10,2,4,1,6,255,255,128,114,169,0,0,0,99,3, - 0,0,0,0,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,131,1,161,1, - 1,0,124,3,160,2,116,3,124,1,131,1,161,1,1,0, - 124,3,160,2,116,3,124,2,131,1,161,1,1,0,124,3, - 160,2,116,4,160,5,124,0,161,1,161,1,1,0,124,3, - 83,0,41,3,122,43,80,114,111,100,117,99,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,0,0,0,0,78,41,6,218,9,98,121,116,101,97, - 114,114,97,121,114,152,0,0,0,218,6,101,120,116,101,110, - 100,114,33,0,0,0,114,164,0,0,0,218,5,100,117,109, - 112,115,41,4,114,168,0,0,0,218,5,109,116,105,109,101, - 114,159,0,0,0,114,37,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,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,128,2,0,0,115,14,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,255,128,114,174,0,0,0,84,99,3, - 0,0,0,0,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,2,116,3,124,4,131,1,161,1,1,0,116,4, - 124,1,131,1,100,2,107,2,115,50,74,0,130,1,124,3, - 160,2,124,1,161,1,1,0,124,3,160,2,116,5,160,6, - 124,0,161,1,161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,150,0,0,0, - 78,41,7,114,170,0,0,0,114,152,0,0,0,114,171,0, - 0,0,114,33,0,0,0,114,4,0,0,0,114,164,0,0, - 0,114,172,0,0,0,41,5,114,168,0,0,0,114,161,0, - 0,0,90,7,99,104,101,99,107,101,100,114,37,0,0,0, - 114,16,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, - 97,115,104,95,112,121,99,138,2,0,0,115,16,0,0,0, - 8,2,12,1,14,1,16,1,10,1,16,1,4,1,255,128, - 114,175,0,0,0,99,1,0,0,0,0,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,100,2,100,3,161,2,125,4,124,4,160, - 6,124,0,160,6,124,3,100,1,25,0,161,1,161,1,83, - 0,41,4,122,121,68,101,99,111,100,101,32,98,121,116,101, - 115,32,114,101,112,114,101,115,101,110,116,105,110,103,32,115, - 111,117,114,99,101,32,99,111,100,101,32,97,110,100,32,114, - 101,116,117,114,110,32,116,104,101,32,115,116,114,105,110,103, - 46,10,10,32,32,32,32,85,110,105,118,101,114,115,97,108, - 32,110,101,119,108,105,110,101,32,115,117,112,112,111,114,116, - 32,105,115,32,117,115,101,100,32,105,110,32,116,104,101,32, - 100,101,99,111,100,105,110,103,46,10,32,32,32,32,114,0, - 0,0,0,78,84,41,7,218,8,116,111,107,101,110,105,122, - 101,114,72,0,0,0,90,7,66,121,116,101,115,73,79,90, - 8,114,101,97,100,108,105,110,101,90,15,100,101,116,101,99, - 116,95,101,110,99,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,176,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,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, - 99,101,149,2,0,0,115,12,0,0,0,8,5,12,1,10, - 1,12,1,20,1,255,128,114,180,0,0,0,169,2,114,144, - 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,0,0,0,0,2,0,0,0,9,0,0,0, - 8,0,0,0,67,0,0,0,115,8,1,0,0,124,1,100, - 1,117,0,114,56,100,2,125,1,116,0,124,2,100,3,131, - 2,114,66,122,14,124,2,160,1,124,0,161,1,125,1,87, - 0,110,28,4,0,116,2,121,54,1,0,1,0,1,0,89, - 0,110,12,48,0,116,3,160,4,124,1,161,1,125,1,116, - 5,106,6,124,0,124,2,124,1,100,4,141,3,125,4,100, - 5,124,4,95,7,124,2,100,1,117,0,114,148,116,8,131, - 0,68,0,93,40,92,2,125,5,125,6,124,1,160,9,116, - 10,124,6,131,1,161,1,114,102,124,5,124,0,124,1,131, - 2,125,2,124,2,124,4,95,11,1,0,113,148,100,1,83, - 0,124,3,116,12,117,0,114,212,116,0,124,2,100,6,131, - 2,114,218,122,14,124,2,160,13,124,0,161,1,125,7,87, - 0,110,18,4,0,116,2,121,198,1,0,1,0,1,0,89, - 0,110,20,48,0,124,7,114,218,103,0,124,4,95,14,110, - 6,124,3,124,4,95,14,124,4,106,14,103,0,107,2,144, - 1,114,4,124,1,144,1,114,4,116,15,124,1,131,1,100, - 7,25,0,125,8,124,4,106,14,160,16,124,8,161,1,1, - 0,124,4,83,0,41,8,97,61,1,0,0,82,101,116,117, - 114,110,32,97,32,109,111,100,117,108,101,32,115,112,101,99, - 32,98,97,115,101,100,32,111,110,32,97,32,102,105,108,101, - 32,108,111,99,97,116,105,111,110,46,10,10,32,32,32,32, - 84,111,32,105,110,100,105,99,97,116,101,32,116,104,97,116, - 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,44,32,115,101,116,10,32,32, - 32,32,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,32,116,111,32, - 97,32,108,105,115,116,32,111,102,32,100,105,114,101,99,116, - 111,114,121,32,112,97,116,104,115,46,32,32,65,110,10,32, - 32,32,32,101,109,112,116,121,32,108,105,115,116,32,105,115, - 32,115,117,102,102,105,99,105,101,110,116,44,32,116,104,111, - 117,103,104,32,105,116,115,32,110,111,116,32,111,116,104,101, - 114,119,105,115,101,32,117,115,101,102,117,108,32,116,111,32, - 116,104,101,10,32,32,32,32,105,109,112,111,114,116,32,115, - 121,115,116,101,109,46,10,10,32,32,32,32,84,104,101,32, - 108,111,97,100,101,114,32,109,117,115,116,32,116,97,107,101, - 32,97,32,115,112,101,99,32,97,115,32,105,116,115,32,111, - 110,108,121,32,95,95,105,110,105,116,95,95,40,41,32,97, - 114,103,46,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,0,0,0,0,41, - 17,114,133,0,0,0,114,183,0,0,0,114,122,0,0,0, - 114,18,0,0,0,114,85,0,0,0,114,139,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,115,0,0,0,114,116,0,0, - 0,114,144,0,0,0,218,9,95,80,79,80,85,76,65,84, - 69,114,186,0,0,0,114,182,0,0,0,114,55,0,0,0, - 218,6,97,112,112,101,110,100,41,9,114,121,0,0,0,90, - 8,108,111,99,97,116,105,111,110,114,144,0,0,0,114,182, - 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,186,0,0,0,90,7,100,105,114,110,97,109,101,114, - 7,0,0,0,114,7,0,0,0,114,8,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,166,2,0,0,115,64,0,0,0, - 8,12,4,4,10,1,2,2,14,1,12,1,6,1,10,2, - 16,8,6,1,8,3,14,1,14,1,10,1,6,1,4,1, - 4,2,8,3,10,2,2,1,14,1,12,1,6,1,4,2, - 8,1,6,2,12,1,6,1,12,1,12,1,4,2,255,128, - 114,194,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,88, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,90,4,100,3,90,5,101,6,111,30,100,4,101,7,118, - 0,90,8,101,9,100,5,100,6,132,0,131,1,90,10,101, - 11,100,7,100,8,132,0,131,1,90,12,101,11,100,14,100, - 10,100,11,132,1,131,1,90,13,101,11,100,15,100,12,100, - 13,132,1,131,1,90,14,100,9,83,0,41,16,218,21,87, - 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105, - 110,100,101,114,122,62,77,101,116,97,32,112,97,116,104,32, - 102,105,110,100,101,114,32,102,111,114,32,109,111,100,117,108, - 101,115,32,100,101,99,108,97,114,101,100,32,105,110,32,116, - 104,101,32,87,105,110,100,111,119,115,32,114,101,103,105,115, - 116,114,121,46,122,59,83,111,102,116,119,97,114,101,92,80, - 121,116,104,111,110,92,80,121,116,104,111,110,67,111,114,101, - 92,123,115,121,115,95,118,101,114,115,105,111,110,125,92,77, - 111,100,117,108,101,115,92,123,102,117,108,108,110,97,109,101, - 125,122,65,83,111,102,116,119,97,114,101,92,80,121,116,104, - 111,110,92,80,121,116,104,111,110,67,111,114,101,92,123,115, - 121,115,95,118,101,114,115,105,111,110,125,92,77,111,100,117, - 108,101,115,92,123,102,117,108,108,110,97,109,101,125,92,68, - 101,98,117,103,122,6,95,100,46,112,121,100,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,67,0,0,0,115,50,0,0,0,122,16,116,0,160,1, - 116,0,106,2,124,0,161,2,87,0,83,0,4,0,116,3, - 121,48,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,0,161,2,6,0,89,0,83,0,48,0,114,114,0,0, - 0,41,5,218,6,119,105,110,114,101,103,90,7,79,112,101, - 110,75,101,121,90,17,72,75,69,89,95,67,85,82,82,69, - 78,84,95,85,83,69,82,114,58,0,0,0,90,18,72,75, - 69,89,95,76,79,67,65,76,95,77,65,67,72,73,78,69, - 114,19,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,14,95,111,112,101,110,95,114,101,103,105, - 115,116,114,121,246,2,0,0,115,10,0,0,0,2,2,16, - 1,12,1,20,1,255,128,122,36,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,99,2,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, - 0,0,67,0,0,0,115,130,0,0,0,124,0,106,0,114, - 14,124,0,106,1,125,2,110,6,124,0,106,2,125,2,124, - 2,106,3,124,1,100,1,116,4,106,5,100,0,100,2,133, - 2,25,0,22,0,100,3,141,2,125,3,122,60,124,0,160, - 6,124,3,161,1,143,28,125,4,116,7,160,8,124,4,100, - 4,161,2,125,5,87,0,100,0,4,0,4,0,131,3,1, - 0,110,16,49,0,115,94,48,0,1,0,1,0,1,0,89, - 0,1,0,87,0,124,5,83,0,4,0,116,9,121,128,1, - 0,1,0,1,0,89,0,100,0,83,0,48,0,41,5,78, - 122,5,37,100,46,37,100,114,39,0,0,0,41,2,114,143, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,70,0,0,0,114,15,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,197, - 0,0,0,114,196,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,58,0,0,0,41,6,218,3,99,108,115, - 114,143,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,20,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,16,95,115,101,97,114,99,104, - 95,114,101,103,105,115,116,114,121,253,2,0,0,115,26,0, - 0,0,6,2,8,1,6,2,6,1,16,1,6,255,2,2, - 12,1,44,1,4,3,12,254,8,1,255,128,122,38,87,105, - 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, - 100,101,114,46,95,115,101,97,114,99,104,95,114,101,103,105, - 115,116,114,121,78,99,4,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,8,0,0,0,67,0,0,0,115,118, - 0,0,0,124,0,160,0,124,1,161,1,125,4,124,4,100, - 0,117,0,114,22,100,0,83,0,122,12,116,1,124,4,131, - 1,1,0,87,0,110,20,4,0,116,2,121,54,1,0,1, - 0,1,0,89,0,100,0,83,0,48,0,116,3,131,0,68, - 0,93,50,92,2,125,5,125,6,124,4,160,4,116,5,124, - 6,131,1,161,1,114,62,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,100,0,83,0,41,2,78,114,184,0,0, - 0,41,8,114,204,0,0,0,114,57,0,0,0,114,58,0, - 0,0,114,188,0,0,0,114,115,0,0,0,114,116,0,0, - 0,114,139,0,0,0,218,16,115,112,101,99,95,102,114,111, - 109,95,108,111,97,100,101,114,41,8,114,202,0,0,0,114, - 143,0,0,0,114,52,0,0,0,218,6,116,97,114,103,101, - 116,114,203,0,0,0,114,144,0,0,0,114,193,0,0,0, - 114,191,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,9,102,105,110,100,95,115,112,101,99,12, - 3,0,0,115,32,0,0,0,10,2,8,1,4,1,2,1, - 12,1,12,1,8,1,14,1,14,1,6,1,8,1,2,1, - 6,254,8,3,4,128,255,128,122,31,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,115,112,101,99,99,3,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, - 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, - 2,125,3,124,3,100,1,117,1,114,26,124,3,106,1,83, - 0,100,1,83,0,41,2,122,108,70,105,110,100,32,109,111, - 100,117,108,101,32,110,97,109,101,100,32,105,110,32,116,104, - 101,32,114,101,103,105,115,116,114,121,46,10,10,32,32,32, - 32,32,32,32,32,84,104,105,115,32,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,78,169,2,114,207,0,0,0,114,144,0, - 0,0,169,4,114,202,0,0,0,114,143,0,0,0,114,52, - 0,0,0,114,191,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,11,102,105,110,100,95,109,111, - 100,117,108,101,28,3,0,0,115,10,0,0,0,12,7,8, - 1,6,1,4,2,255,128,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,2,78,78,41,1, - 78,41,15,114,130,0,0,0,114,129,0,0,0,114,131,0, - 0,0,114,132,0,0,0,114,200,0,0,0,114,199,0,0, - 0,218,11,95,77,83,95,87,73,78,68,79,87,83,218,18, - 69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,88, - 69,83,114,198,0,0,0,218,12,115,116,97,116,105,99,109, - 101,116,104,111,100,114,197,0,0,0,218,11,99,108,97,115, - 115,109,101,116,104,111,100,114,204,0,0,0,114,207,0,0, - 0,114,210,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,195,0,0,0,234, - 2,0,0,115,32,0,0,0,8,0,4,2,2,3,2,255, - 2,4,2,255,12,3,2,2,10,1,2,6,10,1,2,14, - 12,1,2,15,16,1,255,128,114,195,0,0,0,99,0,0, - 0,0,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, - 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,100, - 8,100,9,132,0,90,7,100,10,83,0,41,11,218,13,95, - 76,111,97,100,101,114,66,97,115,105,99,115,122,83,66,97, - 115,101,32,99,108,97,115,115,32,111,102,32,99,111,109,109, - 111,110,32,99,111,100,101,32,110,101,101,100,101,100,32,98, - 121,32,98,111,116,104,32,83,111,117,114,99,101,76,111,97, - 100,101,114,32,97,110,100,10,32,32,32,32,83,111,117,114, - 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, - 46,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116, - 0,124,0,160,1,124,1,161,1,131,1,100,1,25,0,125, - 2,124,2,160,2,100,2,100,1,161,2,100,3,25,0,125, - 3,124,1,160,3,100,2,161,1,100,4,25,0,125,4,124, - 3,100,5,107,2,111,62,124,4,100,5,107,3,83,0,41, - 7,122,141,67,111,110,99,114,101,116,101,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110, - 115,112,101,99,116,76,111,97,100,101,114,46,105,115,95,112, - 97,99,107,97,103,101,32,98,121,32,99,104,101,99,107,105, - 110,103,32,105,102,10,32,32,32,32,32,32,32,32,116,104, - 101,32,112,97,116,104,32,114,101,116,117,114,110,101,100,32, - 98,121,32,103,101,116,95,102,105,108,101,110,97,109,101,32, - 104,97,115,32,97,32,102,105,108,101,110,97,109,101,32,111, - 102,32,39,95,95,105,110,105,116,95,95,46,112,121,39,46, - 114,3,0,0,0,114,79,0,0,0,114,0,0,0,0,114, - 39,0,0,0,218,8,95,95,105,110,105,116,95,95,78,41, - 4,114,55,0,0,0,114,183,0,0,0,114,51,0,0,0, - 114,49,0,0,0,41,5,114,123,0,0,0,114,143,0,0, - 0,114,101,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 186,0,0,0,47,3,0,0,115,10,0,0,0,18,3,16, - 1,14,1,16,1,255,128,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,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,169,2,122,42,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,7,0,0,0,169,2,114,123,0,0,0,114,191, + 114,101,113,117,105,114,101,100,46,41,10,10,32,32,32,32, + 42,115,111,117,114,99,101,95,104,97,115,104,42,32,105,115, + 32,116,104,101,32,105,109,112,111,114,116,108,105,98,46,117, + 116,105,108,46,115,111,117,114,99,101,95,104,97,115,104,40, + 41,32,111,102,32,116,104,101,32,115,111,117,114,99,101,32, + 102,105,108,101,46,10,10,32,32,32,32,42,110,97,109,101, + 42,32,105,115,32,116,104,101,32,110,97,109,101,32,111,102, + 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, + 103,32,105,109,112,111,114,116,101,100,46,32,73,116,32,105, + 115,32,117,115,101,100,32,102,111,114,32,108,111,103,103,105, + 110,103,46,10,10,32,32,32,32,42,101,120,99,95,100,101, + 116,97,105,108,115,42,32,105,115,32,97,32,100,105,99,116, + 105,111,110,97,114,121,32,112,97,115,115,101,100,32,116,111, + 32,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, + 105,116,32,114,97,105,115,101,100,32,102,111,114,10,32,32, + 32,32,105,109,112,114,111,118,101,100,32,100,101,98,117,103, + 103,105,110,103,46,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,150,0,0,0,114,149,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,122,0,0,0,41,4,114,37,0,0,0,218,11,115,111, + 117,114,99,101,95,104,97,115,104,114,121,0,0,0,114,155, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,55,3,0,0,115,4,0,0,0,4,128,255,128,122,27, - 95,76,111,97,100,101,114,66,97,115,105,99,115,46,99,114, - 101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0, - 67,0,0,0,115,56,0,0,0,124,0,160,0,124,1,106, - 1,161,1,125,2,124,2,100,1,117,0,114,36,116,2,100, - 2,160,3,124,1,106,1,161,1,131,1,130,1,116,4,160, - 5,116,6,124,2,124,1,106,7,161,3,1,0,100,1,83, - 0,41,3,122,19,69,120,101,99,117,116,101,32,116,104,101, - 32,109,111,100,117,108,101,46,78,122,52,99,97,110,110,111, - 116,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,130,0,0,0, - 114,122,0,0,0,114,70,0,0,0,114,139,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,136,0,0,0,41,3,114,123,0,0,0,218,6,109,111, - 100,117,108,101,114,168,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,11,101,120,101,99,95,109, - 111,100,117,108,101,58,3,0,0,115,16,0,0,0,12,2, - 8,1,6,1,4,1,6,255,16,2,4,128,255,128,122,25, - 95,76,111,97,100,101,114,66,97,115,105,99,115,46,101,120, - 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,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,2,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,78,41,2,114,139,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,123, - 0,0,0,114,143,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,11,108,111,97,100,95,109,111, - 100,117,108,101,66,3,0,0,115,4,0,0,0,12,2,255, - 128,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, - 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,186,0,0,0,114,219,0,0,0,114,224,0, - 0,0,114,227,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,215,0,0,0, - 42,3,0,0,115,14,0,0,0,8,0,4,2,8,3,8, - 8,8,3,12,8,255,128,114,215,0,0,0,99,0,0,0, - 0,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,100,6,132,0,90,5,100,7,100,8,132,0, - 90,6,100,9,100,10,132,0,90,7,100,11,100,12,156,1, - 100,13,100,14,132,2,90,8,100,15,100,16,132,0,90,9, - 100,17,83,0,41,18,218,12,83,111,117,114,99,101,76,111, - 97,100,101,114,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, - 0,0,116,0,130,1,41,2,122,165,79,112,116,105,111,110, - 97,108,32,109,101,116,104,111,100,32,116,104,97,116,32,114, - 101,116,117,114,110,115,32,116,104,101,32,109,111,100,105,102, - 105,99,97,116,105,111,110,32,116,105,109,101,32,40,97,110, - 32,105,110,116,41,32,102,111,114,32,116,104,101,10,32,32, - 32,32,32,32,32,32,115,112,101,99,105,102,105,101,100,32, - 112,97,116,104,32,40,97,32,115,116,114,41,46,10,10,32, - 32,32,32,32,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,78, - 41,1,114,58,0,0,0,169,2,114,123,0,0,0,114,52, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,10,112,97,116,104,95,109,116,105,109,101,73,3, - 0,0,115,4,0,0,0,4,6,255,128,122,23,83,111,117, - 114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,109, - 116,105,109,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,4,0,0,0,67,0,0,0,115,14,0, - 0,0,100,1,124,0,160,0,124,1,161,1,105,1,83,0, - 41,3,97,158,1,0,0,79,112,116,105,111,110,97,108,32, - 109,101,116,104,111,100,32,114,101,116,117,114,110,105,110,103, - 32,97,32,109,101,116,97,100,97,116,97,32,100,105,99,116, - 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, - 101,100,10,32,32,32,32,32,32,32,32,112,97,116,104,32, - 40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,32, - 32,32,80,111,115,115,105,98,108,101,32,107,101,121,115,58, - 10,32,32,32,32,32,32,32,32,45,32,39,109,116,105,109, - 101,39,32,40,109,97,110,100,97,116,111,114,121,41,32,105, - 115,32,116,104,101,32,110,117,109,101,114,105,99,32,116,105, - 109,101,115,116,97,109,112,32,111,102,32,108,97,115,116,32, - 115,111,117,114,99,101,10,32,32,32,32,32,32,32,32,32, - 32,99,111,100,101,32,109,111,100,105,102,105,99,97,116,105, - 111,110,59,10,32,32,32,32,32,32,32,32,45,32,39,115, - 105,122,101,39,32,40,111,112,116,105,111,110,97,108,41,32, - 105,115,32,116,104,101,32,115,105,122,101,32,105,110,32,98, - 121,116,101,115,32,111,102,32,116,104,101,32,115,111,117,114, - 99,101,32,99,111,100,101,46,10,10,32,32,32,32,32,32, - 32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,116, - 104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,119, - 115,32,116,104,101,32,108,111,97,100,101,114,32,116,111,32, - 114,101,97,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,115,46,10,32,32,32,32,32,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,173,0,0,0,78,41,1,114,230,0, - 0,0,114,229,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,81,3,0,0,115,4,0,0,0,14,12,255,128,122, - 23,83,111,117,114,99,101,76,111,97,100,101,114,46,112,97, - 116,104,95,115,116,97,116,115,99,4,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0, - 0,115,12,0,0,0,124,0,160,0,124,2,124,3,161,2, - 83,0,41,2,122,228,79,112,116,105,111,110,97,108,32,109, - 101,116,104,111,100,32,119,104,105,99,104,32,119,114,105,116, - 101,115,32,100,97,116,97,32,40,98,121,116,101,115,41,32, - 116,111,32,97,32,102,105,108,101,32,112,97,116,104,32,40, - 97,32,115,116,114,41,46,10,10,32,32,32,32,32,32,32, - 32,73,109,112,108,101,109,101,110,116,105,110,103,32,116,104, - 105,115,32,109,101,116,104,111,100,32,97,108,108,111,119,115, - 32,102,111,114,32,116,104,101,32,119,114,105,116,105,110,103, - 32,111,102,32,98,121,116,101,99,111,100,101,32,102,105,108, - 101,115,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,115,111,117,114,99,101,32,112,97,116,104,32,105,115,32, - 110,101,101,100,101,100,32,105,110,32,111,114,100,101,114,32, - 116,111,32,99,111,114,114,101,99,116,108,121,32,116,114,97, - 110,115,102,101,114,32,112,101,114,109,105,115,115,105,111,110, - 115,10,32,32,32,32,32,32,32,32,78,41,1,218,8,115, - 101,116,95,100,97,116,97,41,4,114,123,0,0,0,114,112, - 0,0,0,90,10,99,97,99,104,101,95,112,97,116,104,114, + 0,0,218,18,95,118,97,108,105,100,97,116,101,95,104,97, + 115,104,95,112,121,99,91,2,0,0,115,16,0,0,0,16, + 17,2,1,8,1,4,255,2,2,6,254,4,255,255,128,114, + 162,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,76,0, + 0,0,116,0,160,1,124,0,161,1,125,4,116,2,124,4, + 116,3,131,2,114,56,116,4,160,5,100,1,124,2,161,2, + 1,0,124,3,100,2,117,1,114,52,116,6,160,7,124,4, + 124,3,161,2,1,0,124,4,83,0,116,8,100,3,160,9, + 124,2,161,1,124,1,124,2,100,4,141,3,130,1,41,5, + 122,35,67,111,109,112,105,108,101,32,98,121,116,101,99,111, + 100,101,32,97,115,32,102,111,117,110,100,32,105,110,32,97, + 32,112,121,99,46,122,21,99,111,100,101,32,111,98,106,101, + 99,116,32,102,114,111,109,32,123,33,114,125,78,122,23,78, + 111,110,45,99,111,100,101,32,111,98,106,101,99,116,32,105, + 110,32,123,33,114,125,169,2,114,121,0,0,0,114,52,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,139,0,0, + 0,114,153,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,122, + 0,0,0,114,70,0,0,0,41,5,114,37,0,0,0,114, + 121,0,0,0,114,111,0,0,0,114,112,0,0,0,218,4, + 99,111,100,101,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,17,95,99,111,109,112,105,108,101,95,98,121, + 116,101,99,111,100,101,115,2,0,0,115,20,0,0,0,10, + 2,10,1,12,1,8,1,12,1,4,1,10,2,4,1,6, + 255,255,128,114,169,0,0,0,99,3,0,0,0,0,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,131,1,161,1,1,0,124,3,160,2, + 116,3,124,1,131,1,161,1,1,0,124,3,160,2,116,3, + 124,2,131,1,161,1,1,0,124,3,160,2,116,4,160,5, + 124,0,161,1,161,1,1,0,124,3,83,0,41,3,122,43, + 80,114,111,100,117,99,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,0,0,0,0, + 78,41,6,218,9,98,121,116,101,97,114,114,97,121,114,152, + 0,0,0,218,6,101,120,116,101,110,100,114,33,0,0,0, + 114,164,0,0,0,218,5,100,117,109,112,115,41,4,114,168, + 0,0,0,218,5,109,116,105,109,101,114,159,0,0,0,114, 37,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,15,95,99,97,99,104,101,95,98,121,116,101, - 99,111,100,101,95,3,0,0,115,4,0,0,0,12,8,255, - 128,122,28,83,111,117,114,99,101,76,111,97,100,101,114,46, - 95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,99, - 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, - 0,41,2,122,150,79,112,116,105,111,110,97,108,32,109,101, - 116,104,111,100,32,119,104,105,99,104,32,119,114,105,116,101, - 115,32,100,97,116,97,32,40,98,121,116,101,115,41,32,116, - 111,32,97,32,102,105,108,101,32,112,97,116,104,32,40,97, - 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32, - 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, - 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32, - 102,111,114,32,116,104,101,32,119,114,105,116,105,110,103,32, - 111,102,32,98,121,116,101,99,111,100,101,32,102,105,108,101, - 115,46,10,32,32,32,32,32,32,32,32,78,114,7,0,0, - 0,41,3,114,123,0,0,0,114,52,0,0,0,114,37,0, + 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,128,2,0,0,115, + 14,0,0,0,8,2,14,1,14,1,14,1,16,1,4,1, + 255,128,114,174,0,0,0,84,99,3,0,0,0,0,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,2,116,3, + 124,4,131,1,161,1,1,0,116,4,124,1,131,1,100,2, + 107,2,115,50,74,0,130,1,124,3,160,2,124,1,161,1, + 1,0,124,3,160,2,116,5,160,6,124,0,161,1,161,1, + 1,0,124,3,83,0,41,4,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,3,0,0,0,114,150,0,0,0,78,41,7,114,170,0, + 0,0,114,152,0,0,0,114,171,0,0,0,114,33,0,0, + 0,114,4,0,0,0,114,164,0,0,0,114,172,0,0,0, + 41,5,114,168,0,0,0,114,161,0,0,0,90,7,99,104, + 101,99,107,101,100,114,37,0,0,0,114,16,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,138,2,0,0,115,16,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,255,128,114,175,0,0,0,99, + 1,0,0,0,0,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,100, + 2,100,3,161,2,125,4,124,4,160,6,124,0,160,6,124, + 3,100,1,25,0,161,1,161,1,83,0,41,4,122,121,68, + 101,99,111,100,101,32,98,121,116,101,115,32,114,101,112,114, + 101,115,101,110,116,105,110,103,32,115,111,117,114,99,101,32, + 99,111,100,101,32,97,110,100,32,114,101,116,117,114,110,32, + 116,104,101,32,115,116,114,105,110,103,46,10,10,32,32,32, + 32,85,110,105,118,101,114,115,97,108,32,110,101,119,108,105, + 110,101,32,115,117,112,112,111,114,116,32,105,115,32,117,115, + 101,100,32,105,110,32,116,104,101,32,100,101,99,111,100,105, + 110,103,46,10,32,32,32,32,114,0,0,0,0,78,84,41, + 7,218,8,116,111,107,101,110,105,122,101,114,72,0,0,0, + 90,7,66,121,116,101,115,73,79,90,8,114,101,97,100,108, + 105,110,101,90,15,100,101,116,101,99,116,95,101,110,99,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,176,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,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,100, + 101,99,111,100,101,95,115,111,117,114,99,101,149,2,0,0, + 115,12,0,0,0,8,5,12,1,10,1,12,1,20,1,255, + 128,114,180,0,0,0,169,2,114,144,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,0,0, + 0,0,2,0,0,0,9,0,0,0,8,0,0,0,67,0, + 0,0,115,8,1,0,0,124,1,100,1,117,0,114,56,100, + 2,125,1,116,0,124,2,100,3,131,2,114,66,122,14,124, + 2,160,1,124,0,161,1,125,1,87,0,110,28,4,0,116, + 2,121,54,1,0,1,0,1,0,89,0,110,12,48,0,116, + 3,160,4,124,1,161,1,125,1,116,5,106,6,124,0,124, + 2,124,1,100,4,141,3,125,4,100,5,124,4,95,7,124, + 2,100,1,117,0,114,148,116,8,131,0,68,0,93,40,92, + 2,125,5,125,6,124,1,160,9,116,10,124,6,131,1,161, + 1,114,102,124,5,124,0,124,1,131,2,125,2,124,2,124, + 4,95,11,1,0,113,148,100,1,83,0,124,3,116,12,117, + 0,114,212,116,0,124,2,100,6,131,2,114,218,122,14,124, + 2,160,13,124,0,161,1,125,7,87,0,110,18,4,0,116, + 2,121,198,1,0,1,0,1,0,89,0,110,20,48,0,124, + 7,114,218,103,0,124,4,95,14,110,6,124,3,124,4,95, + 14,124,4,106,14,103,0,107,2,144,1,114,4,124,1,144, + 1,114,4,116,15,124,1,131,1,100,7,25,0,125,8,124, + 4,106,14,160,16,124,8,161,1,1,0,124,4,83,0,41, + 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109, + 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, + 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116, + 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100, + 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109, + 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, + 103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105,115,116, + 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97, + 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112, + 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105, + 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116, + 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32, + 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32, + 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46, + 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114, + 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101, + 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95, + 105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0,0,0, + 114,183,0,0,0,114,122,0,0,0,114,18,0,0,0,114, + 85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0,0,0, + 218,9,95,80,79,80,85,76,65,84,69,114,186,0,0,0, + 114,182,0,0,0,114,55,0,0,0,218,6,97,112,112,101, + 110,100,41,9,114,121,0,0,0,90,8,108,111,99,97,116, + 105,111,110,114,144,0,0,0,114,182,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,186,0,0,0, + 90,7,100,105,114,110,97,109,101,114,7,0,0,0,114,7, + 0,0,0,114,8,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,166,2,0,0,115,64,0,0,0,8,12,4,4,10,1, + 2,2,14,1,12,1,6,1,10,2,16,8,6,1,8,3, + 14,1,14,1,10,1,6,1,4,1,4,2,8,3,10,2, + 2,1,14,1,12,1,6,1,4,2,8,1,6,2,12,1, + 6,1,12,1,12,1,4,2,255,128,114,194,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,88,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,90, + 5,101,6,111,30,100,4,101,7,118,0,90,8,101,9,100, + 5,100,6,132,0,131,1,90,10,101,11,100,7,100,8,132, + 0,131,1,90,12,101,11,100,14,100,10,100,11,132,1,131, + 1,90,13,101,11,100,15,100,12,100,13,132,1,131,1,90, + 14,100,9,83,0,41,16,218,21,87,105,110,100,111,119,115, + 82,101,103,105,115,116,114,121,70,105,110,100,101,114,122,62, + 77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,114, + 32,102,111,114,32,109,111,100,117,108,101,115,32,100,101,99, + 108,97,114,101,100,32,105,110,32,116,104,101,32,87,105,110, + 100,111,119,115,32,114,101,103,105,115,116,114,121,46,122,59, + 83,111,102,116,119,97,114,101,92,80,121,116,104,111,110,92, + 80,121,116,104,111,110,67,111,114,101,92,123,115,121,115,95, + 118,101,114,115,105,111,110,125,92,77,111,100,117,108,101,115, + 92,123,102,117,108,108,110,97,109,101,125,122,65,83,111,102, + 116,119,97,114,101,92,80,121,116,104,111,110,92,80,121,116, + 104,111,110,67,111,114,101,92,123,115,121,115,95,118,101,114, + 115,105,111,110,125,92,77,111,100,117,108,101,115,92,123,102, + 117,108,108,110,97,109,101,125,92,68,101,98,117,103,122,6, + 95,100,46,112,121,100,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, + 50,0,0,0,122,16,116,0,160,1,116,0,106,2,124,0, + 161,2,87,0,83,0,4,0,116,3,121,48,1,0,1,0, + 1,0,116,0,160,1,116,0,106,4,124,0,161,2,6,0, + 89,0,83,0,48,0,114,114,0,0,0,41,5,218,6,119, + 105,110,114,101,103,90,7,79,112,101,110,75,101,121,90,17, + 72,75,69,89,95,67,85,82,82,69,78,84,95,85,83,69, + 82,114,58,0,0,0,90,18,72,75,69,89,95,76,79,67, + 65,76,95,77,65,67,72,73,78,69,114,19,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14, + 95,111,112,101,110,95,114,101,103,105,115,116,114,121,246,2, + 0,0,115,10,0,0,0,2,2,16,1,12,1,20,1,255, + 128,122,36,87,105,110,100,111,119,115,82,101,103,105,115,116, + 114,121,70,105,110,100,101,114,46,95,111,112,101,110,95,114, + 101,103,105,115,116,114,121,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,8,0,0,0,67,0,0,0, + 115,130,0,0,0,124,0,106,0,114,14,124,0,106,1,125, + 2,110,6,124,0,106,2,125,2,124,2,106,3,124,1,100, + 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, + 3,141,2,125,3,122,60,124,0,160,6,124,3,161,1,143, + 28,125,4,116,7,160,8,124,4,100,4,161,2,125,5,87, + 0,100,0,4,0,4,0,131,3,1,0,110,16,49,0,115, + 94,48,0,1,0,1,0,1,0,89,0,1,0,87,0,124, + 5,83,0,4,0,116,9,121,128,1,0,1,0,1,0,89, + 0,100,0,83,0,48,0,41,5,78,122,5,37,100,46,37, + 100,114,39,0,0,0,41,2,114,143,0,0,0,90,11,115, + 121,115,95,118,101,114,115,105,111,110,114,10,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,70,0,0,0,114,15,0,0,0,218,12,118,101,114,115, + 105,111,110,95,105,110,102,111,114,197,0,0,0,114,196,0, + 0,0,90,10,81,117,101,114,121,86,97,108,117,101,114,58, + 0,0,0,41,6,218,3,99,108,115,114,143,0,0,0,90, + 12,114,101,103,105,115,116,114,121,95,107,101,121,114,20,0, + 0,0,90,4,104,107,101,121,218,8,102,105,108,101,112,97, + 116,104,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,16,95,115,101,97,114,99,104,95,114,101,103,105,115, + 116,114,121,253,2,0,0,115,26,0,0,0,6,2,8,1, + 6,2,6,1,16,1,6,255,2,2,12,1,44,1,4,3, + 12,254,8,1,255,128,122,38,87,105,110,100,111,119,115,82, + 101,103,105,115,116,114,121,70,105,110,100,101,114,46,95,115, + 101,97,114,99,104,95,114,101,103,105,115,116,114,121,78,99, + 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 8,0,0,0,67,0,0,0,115,118,0,0,0,124,0,160, + 0,124,1,161,1,125,4,124,4,100,0,117,0,114,22,100, + 0,83,0,122,12,116,1,124,4,131,1,1,0,87,0,110, + 20,4,0,116,2,121,54,1,0,1,0,1,0,89,0,100, + 0,83,0,48,0,116,3,131,0,68,0,93,50,92,2,125, + 5,125,6,124,4,160,4,116,5,124,6,131,1,161,1,114, + 62,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,100, + 0,83,0,41,2,78,114,184,0,0,0,41,8,114,204,0, + 0,0,114,57,0,0,0,114,58,0,0,0,114,188,0,0, + 0,114,115,0,0,0,114,116,0,0,0,114,139,0,0,0, + 218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, + 101,114,41,8,114,202,0,0,0,114,143,0,0,0,114,52, + 0,0,0,218,6,116,97,114,103,101,116,114,203,0,0,0, + 114,144,0,0,0,114,193,0,0,0,114,191,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,12,3,0,0,115,32,0, + 0,0,10,2,8,1,4,1,2,1,12,1,12,1,8,1, + 14,1,14,1,6,1,8,1,2,1,6,254,8,3,4,251, + 255,128,122,31,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,115, + 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0, + 0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100, + 1,117,1,114,26,124,3,106,1,83,0,100,1,83,0,41, + 2,122,108,70,105,110,100,32,109,111,100,117,108,101,32,110, + 97,109,101,100,32,105,110,32,116,104,101,32,114,101,103,105, + 115,116,114,121,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,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,78, + 169,2,114,207,0,0,0,114,144,0,0,0,169,4,114,202, + 0,0,0,114,143,0,0,0,114,52,0,0,0,114,191,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,232,0,0,0,105,3,0,0,115,4,0,0,0,4, - 128,255,128,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,0,0,0,0,5,0,0,0,10,0,0,0,67, - 0,0,0,115,70,0,0,0,124,0,160,0,124,1,161,1, - 125,2,122,20,124,0,160,1,124,2,161,1,125,3,87,0, - 116,4,124,3,131,1,83,0,4,0,116,2,121,68,1,0, - 125,4,1,0,122,14,116,3,100,1,124,1,100,2,141,2, - 124,4,130,2,100,3,125,4,126,4,48,0,48,0,41,4, - 122,52,67,111,110,99,114,101,116,101,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,115, - 112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,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, - 120,0,0,0,78,41,5,114,183,0,0,0,218,8,103,101, - 116,95,100,97,116,97,114,58,0,0,0,114,122,0,0,0, - 114,180,0,0,0,41,5,114,123,0,0,0,114,143,0,0, - 0,114,52,0,0,0,114,178,0,0,0,218,3,101,120,99, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,112,3,0,0,115, - 24,0,0,0,10,2,2,1,12,1,8,4,14,253,4,1, - 2,1,4,255,2,1,2,255,10,128,255,128,122,23,83,111, - 117,114,99,101,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,114,99,101,114,109,0,0,0,41,1,218,9,95,111, - 112,116,105,109,105,122,101,99,3,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, - 115,22,0,0,0,116,0,106,1,116,2,124,1,124,2,100, - 1,100,2,124,3,100,3,141,6,83,0,41,5,122,130,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,99,111,109,112,105,108,101,100,32,102, - 114,111,109,32,115,111,117,114,99,101,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,39,100,97,116,97,39,32, - 97,114,103,117,109,101,110,116,32,99,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,222,0,0,0,84,41,2,218,12,100,111,110,116,95, - 105,110,104,101,114,105,116,114,89,0,0,0,78,41,3,114, - 139,0,0,0,114,221,0,0,0,218,7,99,111,109,112,105, - 108,101,41,4,114,123,0,0,0,114,37,0,0,0,114,52, - 0,0,0,114,237,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,14,115,111,117,114,99,101,95, - 116,111,95,99,111,100,101,122,3,0,0,115,8,0,0,0, - 12,5,4,1,6,255,255,128,122,27,83,111,117,114,99,101, - 76,111,97,100,101,114,46,115,111,117,114,99,101,95,116,111, - 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,15,0,0,0,9,0,0,0,67,0,0,0,115,28, - 2,0,0,124,0,160,0,124,1,161,1,125,2,100,1,125, - 3,100,1,125,4,100,1,125,5,100,2,125,6,100,3,125, - 7,122,12,116,1,124,2,131,1,125,8,87,0,110,24,4, - 0,116,2,121,66,1,0,1,0,1,0,100,1,125,8,89, - 0,144,1,110,42,48,0,122,14,124,0,160,3,124,2,161, - 1,125,9,87,0,110,20,4,0,116,4,121,102,1,0,1, - 0,1,0,89,0,144,1,110,6,48,0,116,5,124,9,100, - 4,25,0,131,1,125,3,122,14,124,0,160,6,124,8,161, - 1,125,10,87,0,110,18,4,0,116,4,121,148,1,0,1, - 0,1,0,89,0,110,216,48,0,124,1,124,8,100,5,156, - 2,125,11,122,148,116,7,124,10,124,1,124,11,131,3,125, - 12,116,8,124,10,131,1,100,6,100,1,133,2,25,0,125, - 13,124,12,100,7,64,0,100,8,107,3,125,6,124,6,144, - 1,114,30,124,12,100,9,64,0,100,8,107,3,125,7,116, - 9,106,10,100,10,107,3,144,1,114,50,124,7,115,248,116, - 9,106,10,100,11,107,2,144,1,114,50,124,0,160,6,124, - 2,161,1,125,4,116,9,160,11,116,12,124,4,161,2,125, - 5,116,13,124,10,124,5,124,1,124,11,131,4,1,0,110, - 20,116,14,124,10,124,3,124,9,100,12,25,0,124,1,124, - 11,131,5,1,0,87,0,110,24,4,0,116,15,116,16,102, - 2,144,1,121,76,1,0,1,0,1,0,89,0,110,32,48, - 0,116,17,160,18,100,13,124,8,124,2,161,3,1,0,116, - 19,124,13,124,1,124,8,124,2,100,14,141,4,83,0,124, - 4,100,1,117,0,144,1,114,128,124,0,160,6,124,2,161, - 1,125,4,124,0,160,20,124,4,124,2,161,2,125,14,116, - 17,160,18,100,15,124,2,161,2,1,0,116,21,106,22,144, - 2,115,24,124,8,100,1,117,1,144,2,114,24,124,3,100, - 1,117,1,144,2,114,24,124,6,144,1,114,220,124,5,100, - 1,117,0,144,1,114,206,116,9,160,11,124,4,161,1,125, - 5,116,23,124,14,124,5,124,7,131,3,125,10,110,16,116, - 24,124,14,124,3,116,25,124,4,131,1,131,3,125,10,122, - 20,124,0,160,26,124,2,124,8,124,10,161,3,1,0,87, - 0,124,14,83,0,4,0,116,2,144,2,121,22,1,0,1, - 0,1,0,89,0,124,14,83,0,48,0,124,14,83,0,41, - 16,122,190,67,111,110,99,114,101,116,101,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110, - 115,112,101,99,116,76,111,97,100,101,114,46,103,101,116,95, - 99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,82, - 101,97,100,105,110,103,32,111,102,32,98,121,116,101,99,111, - 100,101,32,114,101,113,117,105,114,101,115,32,112,97,116,104, - 95,115,116,97,116,115,32,116,111,32,98,101,32,105,109,112, - 108,101,109,101,110,116,101,100,46,32,84,111,32,119,114,105, - 116,101,10,32,32,32,32,32,32,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,173,0,0,0,114,163,0,0,0,114,149, - 0,0,0,114,3,0,0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0, - 0,0,114,112,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,183, - 0,0,0,114,102,0,0,0,114,88,0,0,0,114,231,0, - 0,0,114,58,0,0,0,114,30,0,0,0,114,234,0,0, - 0,114,156,0,0,0,218,10,109,101,109,111,114,121,118,105, - 101,119,114,167,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,161, - 0,0,0,218,17,95,82,65,87,95,77,65,71,73,67,95, - 78,85,77,66,69,82,114,162,0,0,0,114,160,0,0,0, - 114,122,0,0,0,114,154,0,0,0,114,139,0,0,0,114, - 153,0,0,0,114,169,0,0,0,114,240,0,0,0,114,15, - 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,175,0,0,0,114,174,0, - 0,0,114,4,0,0,0,114,233,0,0,0,41,15,114,123, - 0,0,0,114,143,0,0,0,114,112,0,0,0,114,158,0, - 0,0,114,178,0,0,0,114,161,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,111,0,0,0,218,2,115,116,114, - 37,0,0,0,114,155,0,0,0,114,16,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,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,220,0,0,0,130,3,0,0,115, - 160,0,0,0,10,7,4,1,4,1,4,1,4,1,4,1, - 2,1,12,1,12,1,12,1,2,2,14,1,12,1,8,1, - 12,2,2,1,14,1,12,1,6,1,2,3,2,1,6,254, - 2,4,12,1,16,1,12,1,6,1,12,1,12,1,2,1, - 2,255,8,2,4,254,10,3,4,1,2,1,2,1,4,254, - 8,4,2,1,6,255,2,3,2,1,2,1,6,1,2,1, - 2,1,8,251,18,7,6,1,8,2,2,1,4,255,6,2, - 2,1,2,1,6,254,10,3,10,1,12,1,12,1,18,1, - 6,1,4,255,6,2,10,1,10,1,14,1,6,2,6,1, - 4,255,2,2,16,1,4,3,14,254,2,1,4,1,2,255, - 4,1,255,128,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,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,230,0, - 0,0,114,231,0,0,0,114,233,0,0,0,114,232,0,0, - 0,114,236,0,0,0,114,240,0,0,0,114,220,0,0,0, + 0,218,11,102,105,110,100,95,109,111,100,117,108,101,28,3, + 0,0,115,10,0,0,0,12,7,8,1,6,1,4,2,255, + 128,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,2,78,78,41,1,78,41,15,114,130,0, + 0,0,114,129,0,0,0,114,131,0,0,0,114,132,0,0, + 0,114,200,0,0,0,114,199,0,0,0,218,11,95,77,83, + 95,87,73,78,68,79,87,83,218,18,69,88,84,69,78,83, + 73,79,78,95,83,85,70,70,73,88,69,83,114,198,0,0, + 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, + 197,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, + 100,114,204,0,0,0,114,207,0,0,0,114,210,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,228,0,0,0,71,3,0,0,115,18,0, - 0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10, - 12,8,255,128,114,228,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,4,100,5,132, - 0,90,5,100,6,100,7,132,0,90,6,101,7,135,0,102, - 1,100,8,100,9,132,8,131,1,90,8,101,7,100,10,100, - 11,132,0,131,1,90,9,100,12,100,13,132,0,90,10,101, - 7,100,14,100,15,132,0,131,1,90,11,135,0,4,0,90, - 12,83,0,41,16,218,10,70,105,108,101,76,111,97,100,101, - 114,122,103,66,97,115,101,32,102,105,108,101,32,108,111,97, - 100,101,114,32,99,108,97,115,115,32,119,104,105,99,104,32, - 105,109,112,108,101,109,101,110,116,115,32,116,104,101,32,108, - 111,97,100,101,114,32,112,114,111,116,111,99,111,108,32,109, - 101,116,104,111,100,115,32,116,104,97,116,10,32,32,32,32, - 114,101,113,117,105,114,101,32,102,105,108,101,32,115,121,115, - 116,101,109,32,117,115,97,103,101,46,99,3,0,0,0,0, - 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,1,83,0,41,2,122,75,67,97,99,104, - 101,32,116,104,101,32,109,111,100,117,108,101,32,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,163,0,0,0,41,3,114, - 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,220,3,0,0,115,8,0,0,0,6,3,6,1,4, - 128,255,128,122,19,70,105,108,101,76,111,97,100,101,114,46, + 8,0,0,0,114,195,0,0,0,234,2,0,0,115,32,0, + 0,0,8,0,4,2,2,3,2,255,2,4,2,255,12,3, + 2,2,10,1,2,6,10,1,2,14,12,1,2,15,16,1, + 255,128,114,195,0,0,0,99,0,0,0,0,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,4,100,5,132,0,90, + 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, + 7,100,10,83,0,41,11,218,13,95,76,111,97,100,101,114, + 66,97,115,105,99,115,122,83,66,97,115,101,32,99,108,97, + 115,115,32,111,102,32,99,111,109,109,111,110,32,99,111,100, + 101,32,110,101,101,100,101,100,32,98,121,32,98,111,116,104, + 32,83,111,117,114,99,101,76,111,97,100,101,114,32,97,110, + 100,10,32,32,32,32,83,111,117,114,99,101,108,101,115,115, + 70,105,108,101,76,111,97,100,101,114,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, + 67,0,0,0,115,64,0,0,0,116,0,124,0,160,1,124, + 1,161,1,131,1,100,1,25,0,125,2,124,2,160,2,100, + 2,100,1,161,2,100,3,25,0,125,3,124,1,160,3,100, + 2,161,1,100,4,25,0,125,4,124,3,100,5,107,2,111, + 62,124,4,100,5,107,3,83,0,41,7,122,141,67,111,110, + 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, + 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, + 32,98,121,32,99,104,101,99,107,105,110,103,32,105,102,10, + 32,32,32,32,32,32,32,32,116,104,101,32,112,97,116,104, + 32,114,101,116,117,114,110,101,100,32,98,121,32,103,101,116, + 95,102,105,108,101,110,97,109,101,32,104,97,115,32,97,32, + 102,105,108,101,110,97,109,101,32,111,102,32,39,95,95,105, + 110,105,116,95,95,46,112,121,39,46,114,3,0,0,0,114, + 79,0,0,0,114,0,0,0,0,114,39,0,0,0,218,8, + 95,95,105,110,105,116,95,95,78,41,4,114,55,0,0,0, + 114,183,0,0,0,114,51,0,0,0,114,49,0,0,0,41, + 5,114,123,0,0,0,114,143,0,0,0,114,101,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,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,186,0,0,0,47,3, + 0,0,115,10,0,0,0,18,3,16,1,14,1,16,1,255, + 128,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,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,169,2,122, + 42,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,7,0,0, + 0,169,2,114,123,0,0,0,114,191,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,13,99,114, + 101,97,116,101,95,109,111,100,117,108,101,55,3,0,0,115, + 4,0,0,0,4,128,255,128,122,27,95,76,111,97,100,101, + 114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,56, + 0,0,0,124,0,160,0,124,1,106,1,161,1,125,2,124, + 2,100,1,117,0,114,36,116,2,100,2,160,3,124,1,106, + 1,161,1,131,1,130,1,116,4,160,5,116,6,124,2,124, + 1,106,7,161,3,1,0,100,1,83,0,41,3,122,19,69, + 120,101,99,117,116,101,32,116,104,101,32,109,111,100,117,108, + 101,46,78,122,52,99,97,110,110,111,116,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,130,0,0,0,114,122,0,0,0,114, + 70,0,0,0,114,139,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,136,0,0,0,41, + 3,114,123,0,0,0,218,6,109,111,100,117,108,101,114,168, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,11,101,120,101,99,95,109,111,100,117,108,101,58, + 3,0,0,115,14,0,0,0,12,2,8,1,6,1,4,1, + 6,255,20,2,255,128,122,25,95,76,111,97,100,101,114,66, + 97,115,105,99,115,46,101,120,101,99,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,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,2,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,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,108,111,97,100,95,109,111,100,117,108,101,66,3,0,0, + 115,4,0,0,0,12,2,255,128,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,130,0,0,0,114,129,0,0, + 0,114,131,0,0,0,114,132,0,0,0,114,186,0,0,0, + 114,219,0,0,0,114,224,0,0,0,114,227,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,215,0,0,0,42,3,0,0,115,14,0,0, + 0,8,0,4,2,8,3,8,8,8,3,12,8,255,128,114, + 215,0,0,0,99,0,0,0,0,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,100,6,132,0, + 90,5,100,7,100,8,132,0,90,6,100,9,100,10,132,0, + 90,7,100,11,100,12,156,1,100,13,100,14,132,2,90,8, + 100,15,100,16,132,0,90,9,100,17,83,0,41,18,218,12, + 83,111,117,114,99,101,76,111,97,100,101,114,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,115,4,0,0,0,116,0,130,1,41,2, + 122,165,79,112,116,105,111,110,97,108,32,109,101,116,104,111, + 100,32,116,104,97,116,32,114,101,116,117,114,110,115,32,116, + 104,101,32,109,111,100,105,102,105,99,97,116,105,111,110,32, + 116,105,109,101,32,40,97,110,32,105,110,116,41,32,102,111, + 114,32,116,104,101,10,32,32,32,32,32,32,32,32,115,112, + 101,99,105,102,105,101,100,32,112,97,116,104,32,40,97,32, + 115,116,114,41,46,10,10,32,32,32,32,32,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,78,41,1,114,58,0,0,0,169, + 2,114,123,0,0,0,114,52,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,10,112,97,116,104, + 95,109,116,105,109,101,73,3,0,0,115,4,0,0,0,4, + 6,255,128,122,23,83,111,117,114,99,101,76,111,97,100,101, + 114,46,112,97,116,104,95,109,116,105,109,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,67,0,0,0,115,14,0,0,0,100,1,124,0,160,0, + 124,1,161,1,105,1,83,0,41,3,97,158,1,0,0,79, + 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,114, + 101,116,117,114,110,105,110,103,32,97,32,109,101,116,97,100, + 97,116,97,32,100,105,99,116,32,102,111,114,32,116,104,101, + 32,115,112,101,99,105,102,105,101,100,10,32,32,32,32,32, + 32,32,32,112,97,116,104,32,40,97,32,115,116,114,41,46, + 10,10,32,32,32,32,32,32,32,32,80,111,115,115,105,98, + 108,101,32,107,101,121,115,58,10,32,32,32,32,32,32,32, + 32,45,32,39,109,116,105,109,101,39,32,40,109,97,110,100, + 97,116,111,114,121,41,32,105,115,32,116,104,101,32,110,117, + 109,101,114,105,99,32,116,105,109,101,115,116,97,109,112,32, + 111,102,32,108,97,115,116,32,115,111,117,114,99,101,10,32, + 32,32,32,32,32,32,32,32,32,99,111,100,101,32,109,111, + 100,105,102,105,99,97,116,105,111,110,59,10,32,32,32,32, + 32,32,32,32,45,32,39,115,105,122,101,39,32,40,111,112, + 116,105,111,110,97,108,41,32,105,115,32,116,104,101,32,115, + 105,122,101,32,105,110,32,98,121,116,101,115,32,111,102,32, + 116,104,101,32,115,111,117,114,99,101,32,99,111,100,101,46, + 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, + 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, + 111,100,32,97,108,108,111,119,115,32,116,104,101,32,108,111, + 97,100,101,114,32,116,111,32,114,101,97,100,32,98,121,116, + 101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,32, + 32,32,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,173,0, + 0,0,78,41,1,114,230,0,0,0,114,229,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, + 112,97,116,104,95,115,116,97,116,115,81,3,0,0,115,4, + 0,0,0,14,12,255,128,122,23,83,111,117,114,99,101,76, + 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, + 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,67,0,0,0,115,12,0,0,0,124,0, + 160,0,124,2,124,3,161,2,83,0,41,2,122,228,79,112, + 116,105,111,110,97,108,32,109,101,116,104,111,100,32,119,104, + 105,99,104,32,119,114,105,116,101,115,32,100,97,116,97,32, + 40,98,121,116,101,115,41,32,116,111,32,97,32,102,105,108, + 101,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, + 10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,101, + 110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,111, + 100,32,97,108,108,111,119,115,32,102,111,114,32,116,104,101, + 32,119,114,105,116,105,110,103,32,111,102,32,98,121,116,101, + 99,111,100,101,32,102,105,108,101,115,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,115,111,117,114,99,101,32, + 112,97,116,104,32,105,115,32,110,101,101,100,101,100,32,105, + 110,32,111,114,100,101,114,32,116,111,32,99,111,114,114,101, + 99,116,108,121,32,116,114,97,110,115,102,101,114,32,112,101, + 114,109,105,115,115,105,111,110,115,10,32,32,32,32,32,32, + 32,32,78,41,1,218,8,115,101,116,95,100,97,116,97,41, + 4,114,123,0,0,0,114,112,0,0,0,90,10,99,97,99, + 104,101,95,112,97,116,104,114,37,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,15,95,99,97, + 99,104,101,95,98,121,116,101,99,111,100,101,95,3,0,0, + 115,4,0,0,0,12,8,255,128,122,28,83,111,117,114,99, + 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98, + 121,116,101,99,111,100,101,99,3,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,83,0,41,2,122,150,79,112,116, + 105,111,110,97,108,32,109,101,116,104,111,100,32,119,104,105, + 99,104,32,119,114,105,116,101,115,32,100,97,116,97,32,40, + 98,121,116,101,115,41,32,116,111,32,97,32,102,105,108,101, + 32,112,97,116,104,32,40,97,32,115,116,114,41,46,10,10, + 32,32,32,32,32,32,32,32,73,109,112,108,101,109,101,110, + 116,105,110,103,32,116,104,105,115,32,109,101,116,104,111,100, + 32,97,108,108,111,119,115,32,102,111,114,32,116,104,101,32, + 119,114,105,116,105,110,103,32,111,102,32,98,121,116,101,99, + 111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32, + 32,32,32,78,114,7,0,0,0,41,3,114,123,0,0,0, + 114,52,0,0,0,114,37,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,232,0,0,0,105,3, + 0,0,115,4,0,0,0,4,128,255,128,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,0,0,0,0,5, + 0,0,0,10,0,0,0,67,0,0,0,115,70,0,0,0, + 124,0,160,0,124,1,161,1,125,2,122,20,124,0,160,1, + 124,2,161,1,125,3,87,0,116,4,124,3,131,1,83,0, + 4,0,116,2,121,68,1,0,125,4,1,0,122,14,116,3, + 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, + 126,4,48,0,48,0,41,4,122,52,67,111,110,99,114,101, + 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, + 110,32,111,102,32,73,110,115,112,101,99,116,76,111,97,100, + 101,114,46,103,101,116,95,115,111,117,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,120,0,0,0,78,41,5,114, + 183,0,0,0,218,8,103,101,116,95,100,97,116,97,114,58, + 0,0,0,114,122,0,0,0,114,180,0,0,0,41,5,114, + 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,178, + 0,0,0,218,3,101,120,99,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,112,3,0,0,115,26,0,0,0,10,2,2,1, + 12,1,8,4,14,253,4,1,2,1,4,255,2,1,2,255, + 8,128,2,255,255,128,122,23,83,111,117,114,99,101,76,111, + 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,114, + 109,0,0,0,41,1,218,9,95,111,112,116,105,109,105,122, + 101,99,3,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,8,0,0,0,67,0,0,0,115,22,0,0,0,116, + 0,106,1,116,2,124,1,124,2,100,1,100,2,124,3,100, + 3,141,6,83,0,41,5,122,130,82,101,116,117,114,110,32, + 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, + 99,111,109,112,105,108,101,100,32,102,114,111,109,32,115,111, + 117,114,99,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,39,100,97,116,97,39,32,97,114,103,117,109,101, + 110,116,32,99,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,222,0,0,0, + 84,41,2,218,12,100,111,110,116,95,105,110,104,101,114,105, + 116,114,89,0,0,0,78,41,3,114,139,0,0,0,114,221, + 0,0,0,218,7,99,111,109,112,105,108,101,41,4,114,123, + 0,0,0,114,37,0,0,0,114,52,0,0,0,114,237,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,14,115,111,117,114,99,101,95,116,111,95,99,111,100, + 101,122,3,0,0,115,8,0,0,0,12,5,4,1,6,255, + 255,128,122,27,83,111,117,114,99,101,76,111,97,100,101,114, + 46,115,111,117,114,99,101,95,116,111,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0, + 9,0,0,0,67,0,0,0,115,28,2,0,0,124,0,160, + 0,124,1,161,1,125,2,100,1,125,3,100,1,125,4,100, + 1,125,5,100,2,125,6,100,3,125,7,122,12,116,1,124, + 2,131,1,125,8,87,0,110,24,4,0,116,2,121,66,1, + 0,1,0,1,0,100,1,125,8,89,0,144,1,110,42,48, + 0,122,14,124,0,160,3,124,2,161,1,125,9,87,0,110, + 20,4,0,116,4,121,102,1,0,1,0,1,0,89,0,144, + 1,110,6,48,0,116,5,124,9,100,4,25,0,131,1,125, + 3,122,14,124,0,160,6,124,8,161,1,125,10,87,0,110, + 18,4,0,116,4,121,148,1,0,1,0,1,0,89,0,110, + 216,48,0,124,1,124,8,100,5,156,2,125,11,122,148,116, + 7,124,10,124,1,124,11,131,3,125,12,116,8,124,10,131, + 1,100,6,100,1,133,2,25,0,125,13,124,12,100,7,64, + 0,100,8,107,3,125,6,124,6,144,1,114,30,124,12,100, + 9,64,0,100,8,107,3,125,7,116,9,106,10,100,10,107, + 3,144,1,114,50,124,7,115,248,116,9,106,10,100,11,107, + 2,144,1,114,50,124,0,160,6,124,2,161,1,125,4,116, + 9,160,11,116,12,124,4,161,2,125,5,116,13,124,10,124, + 5,124,1,124,11,131,4,1,0,110,20,116,14,124,10,124, + 3,124,9,100,12,25,0,124,1,124,11,131,5,1,0,87, + 0,110,24,4,0,116,15,116,16,102,2,144,1,121,76,1, + 0,1,0,1,0,89,0,110,32,48,0,116,17,160,18,100, + 13,124,8,124,2,161,3,1,0,116,19,124,13,124,1,124, + 8,124,2,100,14,141,4,83,0,124,4,100,1,117,0,144, + 1,114,128,124,0,160,6,124,2,161,1,125,4,124,0,160, + 20,124,4,124,2,161,2,125,14,116,17,160,18,100,15,124, + 2,161,2,1,0,116,21,106,22,144,2,115,24,124,8,100, + 1,117,1,144,2,114,24,124,3,100,1,117,1,144,2,114, + 24,124,6,144,1,114,220,124,5,100,1,117,0,144,1,114, + 206,116,9,160,11,124,4,161,1,125,5,116,23,124,14,124, + 5,124,7,131,3,125,10,110,16,116,24,124,14,124,3,116, + 25,124,4,131,1,131,3,125,10,122,20,124,0,160,26,124, + 2,124,8,124,10,161,3,1,0,87,0,124,14,83,0,4, + 0,116,2,144,2,121,22,1,0,1,0,1,0,89,0,124, + 14,83,0,48,0,124,14,83,0,41,16,122,190,67,111,110, + 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, + 111,97,100,101,114,46,103,101,116,95,99,111,100,101,46,10, + 10,32,32,32,32,32,32,32,32,82,101,97,100,105,110,103, + 32,111,102,32,98,121,116,101,99,111,100,101,32,114,101,113, + 117,105,114,101,115,32,112,97,116,104,95,115,116,97,116,115, + 32,116,111,32,98,101,32,105,109,112,108,101,109,101,110,116, + 101,100,46,32,84,111,32,119,114,105,116,101,10,32,32,32, + 32,32,32,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,173, + 0,0,0,114,163,0,0,0,114,149,0,0,0,114,3,0, + 0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112,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,183,0,0,0,114,102,0, + 0,0,114,88,0,0,0,114,231,0,0,0,114,58,0,0, + 0,114,30,0,0,0,114,234,0,0,0,114,156,0,0,0, + 218,10,109,101,109,111,114,121,118,105,101,119,114,167,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,161,0,0,0,218,17,95, + 82,65,87,95,77,65,71,73,67,95,78,85,77,66,69,82, + 114,162,0,0,0,114,160,0,0,0,114,122,0,0,0,114, + 154,0,0,0,114,139,0,0,0,114,153,0,0,0,114,169, + 0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4,0,0, + 0,114,233,0,0,0,41,15,114,123,0,0,0,114,143,0, + 0,0,114,112,0,0,0,114,158,0,0,0,114,178,0,0, + 0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0,114,155, + 0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,220,0,0,0,130,3,0,0,115,160,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,12,1,12,1, + 12,1,2,2,14,1,12,1,8,1,12,2,2,1,14,1, + 12,1,6,1,2,3,2,1,6,254,2,4,12,1,16,1, + 12,1,6,1,12,1,12,1,2,1,2,255,8,2,4,254, + 10,3,4,1,2,1,2,1,4,254,8,4,2,1,6,255, + 2,3,2,1,2,1,6,1,2,1,2,1,8,251,18,7, + 6,1,8,2,2,1,4,255,6,2,2,1,2,1,6,254, + 10,3,10,1,12,1,12,1,18,1,6,1,4,255,6,2, + 10,1,10,1,14,1,6,2,6,1,4,255,2,2,16,1, + 4,3,14,254,2,1,4,1,2,255,4,1,255,128,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,130,0,0,0,114,129,0, + 0,0,114,131,0,0,0,114,230,0,0,0,114,231,0,0, + 0,114,233,0,0,0,114,232,0,0,0,114,236,0,0,0, + 114,240,0,0,0,114,220,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,228, + 0,0,0,71,3,0,0,115,18,0,0,0,8,0,8,2, + 8,8,8,14,8,10,8,7,14,10,12,8,255,128,114,228, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,101,7,135,0,102,1,100,8,100,9,132, + 8,131,1,90,8,101,7,100,10,100,11,132,0,131,1,90, + 9,100,12,100,13,132,0,90,10,101,7,100,14,100,15,132, + 0,131,1,90,11,135,0,4,0,90,12,83,0,41,16,218, + 10,70,105,108,101,76,111,97,100,101,114,122,103,66,97,115, + 101,32,102,105,108,101,32,108,111,97,100,101,114,32,99,108, + 97,115,115,32,119,104,105,99,104,32,105,109,112,108,101,109, + 101,110,116,115,32,116,104,101,32,108,111,97,100,101,114,32, + 112,114,111,116,111,99,111,108,32,109,101,116,104,111,100,115, + 32,116,104,97,116,10,32,32,32,32,114,101,113,117,105,114, + 101,32,102,105,108,101,32,115,121,115,116,101,109,32,117,115, + 97,103,101,46,99,3,0,0,0,0,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,1, + 83,0,41,2,122,75,67,97,99,104,101,32,116,104,101,32, + 109,111,100,117,108,101,32,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,163,0,0,0,41,3,114,123,0,0,0,114,143, + 0,0,0,114,52,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,216,0,0,0,220,3,0,0, + 115,6,0,0,0,6,3,10,1,255,128,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,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,114,0,0,0,169,2,218,9,95, + 95,99,108,97,115,115,95,95,114,136,0,0,0,169,2,114, + 123,0,0,0,90,5,111,116,104,101,114,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,6,95,95,101,113, + 95,95,226,3,0,0,115,8,0,0,0,12,1,10,1,2, + 255,255,128,122,17,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,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,114,0,0,0,169,3,218, + 4,104,97,115,104,114,121,0,0,0,114,52,0,0,0,169, + 1,114,123,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,8,95,95,104,97,115,104,95,95,230, + 3,0,0,115,4,0,0,0,20,1,255,128,122,19,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,0,0,0,0,2,0, + 0,0,3,0,0,0,3,0,0,0,115,16,0,0,0,116, + 0,116,1,124,0,131,2,160,2,124,1,161,1,83,0,41, + 2,122,100,76,111,97,100,32,97,32,109,111,100,117,108,101, + 32,102,114,111,109,32,97,32,102,105,108,101,46,10,10,32, + 32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,3,218,5,115,117,112,101, + 114,114,246,0,0,0,114,227,0,0,0,114,226,0,0,0, + 169,1,114,248,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,227,0,0,0,233,3,0,0,115,4,0,0,0,16, + 10,255,128,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,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,169, + 2,122,58,82,101,116,117,114,110,32,116,104,101,32,112,97, + 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,78,114,56, + 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,183,0,0,0,245,3,0,0, + 115,4,0,0,0,6,3,255,128,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,0,0,0,0,3, + 0,0,0,8,0,0,0,67,0,0,0,115,128,0,0,0, + 116,0,124,0,116,1,116,2,102,2,131,2,114,72,116,3, + 160,4,116,5,124,1,131,1,161,1,143,24,125,2,124,2, + 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,49,0,115,58,48,0,1,0,1,0,1,0, + 89,0,1,0,100,1,83,0,116,3,160,7,124,1,100,2, + 161,2,143,24,125,2,124,2,160,6,161,0,87,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,114, + 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, + 41,3,122,39,82,101,116,117,114,110,32,116,104,101,32,100, + 97,116,97,32,102,114,111,109,32,112,97,116,104,32,97,115, + 32,114,97,119,32,98,121,116,101,115,46,78,218,1,114,41, + 8,114,165,0,0,0,114,228,0,0,0,218,19,69,120,116, + 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, + 114,72,0,0,0,90,9,111,112,101,110,95,99,111,100,101, + 114,90,0,0,0,90,4,114,101,97,100,114,73,0,0,0, + 41,3,114,123,0,0,0,114,52,0,0,0,114,76,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,234,0,0,0,250,3,0,0,115,14,0,0,0,14,2, + 16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0,3,0, + 0,0,2,0,0,0,67,0,0,0,115,20,0,0,0,100, + 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, + 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, + 105,108,101,82,101,97,100,101,114,41,2,90,17,105,109,112, + 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,4, + 1,0,0,41,3,114,123,0,0,0,114,223,0,0,0,114, + 4,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,19,103,101,116,95,114,101,115,111,117,114,99, + 101,95,114,101,97,100,101,114,3,4,0,0,115,6,0,0, + 0,12,2,8,1,255,128,122,30,70,105,108,101,76,111,97, + 100,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, + 95,114,101,97,100,101,114,41,13,114,130,0,0,0,114,129, + 0,0,0,114,131,0,0,0,114,132,0,0,0,114,216,0, + 0,0,114,250,0,0,0,114,254,0,0,0,114,140,0,0, + 0,114,227,0,0,0,114,183,0,0,0,114,234,0,0,0, + 114,5,1,0,0,90,13,95,95,99,108,97,115,115,99,101, + 108,108,95,95,114,7,0,0,0,114,7,0,0,0,114,0, + 1,0,0,114,8,0,0,0,114,246,0,0,0,215,3,0, + 0,115,26,0,0,0,8,0,4,2,8,3,8,6,8,4, + 2,3,14,1,2,11,10,1,8,4,2,9,18,1,255,128, + 114,246,0,0,0,99,0,0,0,0,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,7,156,1,100,8,100,9,132,2,90,6,100,10,83, + 0,41,11,218,16,83,111,117,114,99,101,70,105,108,101,76, + 111,97,100,101,114,122,62,67,111,110,99,114,101,116,101,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, + 102,32,83,111,117,114,99,101,76,111,97,100,101,114,32,117, + 115,105,110,103,32,116,104,101,32,102,105,108,101,32,115,121, + 115,116,101,109,46,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,22, + 0,0,0,116,0,124,1,131,1,125,2,124,2,106,1,124, + 2,106,2,100,1,156,2,83,0,41,3,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,173,0,0,0,114,241,0,0,0,78,41,3,114,57,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,123,0,0,0,114,52,0,0, + 0,114,245,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,231,0,0,0,13,4,0,0,115,6, + 0,0,0,8,2,14,1,255,128,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,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,5,0,0,0,67,0,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,119,0,0,0,114, + 232,0,0,0,41,5,114,123,0,0,0,114,112,0,0,0, + 114,111,0,0,0,114,37,0,0,0,114,60,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,233, + 0,0,0,18,4,0,0,115,6,0,0,0,8,2,16,1, + 255,128,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,68,0,0,0,114,8,1,0,0,99,3, + 0,0,0,0,0,0,0,1,0,0,0,9,0,0,0,11, + 0,0,0,67,0,0,0,115,248,0,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,4,131,1,115,52,116,0,124,4,131,1,92,2, + 125,4,125,7,124,6,160,2,124,7,161,1,1,0,113,16, + 116,3,124,6,131,1,68,0,93,96,125,7,116,4,124,4, + 124,7,131,2,125,4,122,14,116,5,160,6,124,4,161,1, + 1,0,87,0,113,60,4,0,116,7,121,106,1,0,1,0, + 1,0,89,0,113,60,4,0,116,8,121,246,1,0,125,8, + 1,0,122,30,116,9,160,10,100,1,124,4,124,8,161,3, + 1,0,87,0,89,0,100,2,125,8,126,8,1,0,100,2, + 83,0,100,2,125,8,126,8,48,0,122,30,116,11,124,1, + 124,2,124,3,131,3,1,0,116,9,160,10,100,3,124,1, + 161,2,1,0,87,0,100,2,83,0,4,0,116,8,121,240, + 1,0,125,8,1,0,122,28,116,9,160,10,100,1,124,1, + 124,8,161,3,1,0,87,0,89,0,100,2,125,8,126,8, + 100,2,83,0,100,2,125,8,126,8,48,0,48,0,100,2, + 83,0,48,0,41,4,122,27,87,114,105,116,101,32,98,121, + 116,101,115,32,100,97,116,97,32,116,111,32,97,32,102,105, + 108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0,0,0, + 114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139,0,0, + 0,114,153,0,0,0,114,77,0,0,0,41,9,114,123,0, + 0,0,114,52,0,0,0,114,37,0,0,0,114,9,1,0, + 0,218,6,112,97,114,101,110,116,114,101,0,0,0,114,47, + 0,0,0,114,43,0,0,0,114,235,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,232,0,0, + 0,23,4,0,0,115,58,0,0,0,12,2,4,1,12,2, + 12,1,12,1,12,2,10,1,2,1,14,1,12,1,4,2, + 14,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, + 18,1,14,1,8,2,2,1,18,255,8,128,2,254,4,255, + 2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0, + 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, + 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,6,1,0,0,9,4, + 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, + 5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114,99,101, + 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, + 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, + 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, + 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, + 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,124, + 1,161,1,125,2,124,0,160,1,124,2,161,1,125,3,124, + 1,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,163,0,0,0,114,149,0,0,0,41,2,114,121, + 0,0,0,114,111,0,0,0,41,5,114,183,0,0,0,114, + 234,0,0,0,114,156,0,0,0,114,169,0,0,0,114,242, + 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, + 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, + 0,0,58,4,0,0,115,24,0,0,0,10,1,10,1,2, + 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, + 253,255,128,122,29,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,99,111, + 100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,236,0,0,0,74,4, + 0,0,115,4,0,0,0,4,2,255,128,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, + 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, + 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,12,1,0,0,54,4,0,0,115,10,0,0,0,8, + 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, + 0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, + 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, + 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, + 100,16,100,17,132,0,90,11,101,12,100,18,100,19,132,0, + 131,1,90,13,100,20,83,0,41,21,114,3,1,0,0,122, + 93,76,111,97,100,101,114,32,102,111,114,32,101,120,116,101, + 110,115,105,111,110,32,109,111,100,117,108,101,115,46,10,10, + 32,32,32,32,84,104,101,32,99,111,110,115,116,114,117,99, + 116,111,114,32,105,115,32,100,101,115,105,103,110,101,100,32, + 116,111,32,119,111,114,107,32,119,105,116,104,32,70,105,108, + 101,70,105,110,100,101,114,46,10,10,32,32,32,32,99,3, + 0,0,0,0,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,114,0,0, + 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, + 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,216,0,0,0,87,4,0,0,115, + 6,0,0,0,6,1,10,1,255,128,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,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,114, - 0,0,0,169,2,218,9,95,95,99,108,97,115,115,95,95, - 114,136,0,0,0,169,2,114,123,0,0,0,90,5,111,116, - 104,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,6,95,95,101,113,95,95,226,3,0,0,115,8, - 0,0,0,12,1,10,1,2,255,255,128,122,17,70,105,108, + 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, + 0,91,4,0,0,115,8,0,0,0,12,1,10,1,2,255, + 255,128,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,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,114,0,0,0,169,3,218,4,104,97,115,104,114,121,0, - 0,0,114,52,0,0,0,169,1,114,123,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,8,95, - 95,104,97,115,104,95,95,230,3,0,0,115,4,0,0,0, - 20,1,255,128,122,19,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,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,115,16,0,0,0,116,0,116,1,124,0,131,2,160, - 2,124,1,161,1,83,0,41,2,122,100,76,111,97,100,32, - 97,32,109,111,100,117,108,101,32,102,114,111,109,32,97,32, - 102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,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,78, - 41,3,218,5,115,117,112,101,114,114,246,0,0,0,114,227, - 0,0,0,114,226,0,0,0,169,1,114,248,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,227,0,0,0,233,3, - 0,0,115,4,0,0,0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114, - 110,32,116,104,101,32,112,97,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,78,114,56,0,0,0,114,226,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 183,0,0,0,245,3,0,0,115,4,0,0,0,6,3,255, - 128,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,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,128,0,0,0,116,0,124,0,116,1,116,2, - 102,2,131,2,114,72,116,3,160,4,116,5,124,1,131,1, - 161,1,143,24,125,2,124,2,160,6,161,0,87,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,58, - 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, - 116,3,160,7,124,1,100,2,161,2,143,24,125,2,124,2, - 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,49,0,115,114,48,0,1,0,1,0,1,0, - 89,0,1,0,100,1,83,0,41,3,122,39,82,101,116,117, - 114,110,32,116,104,101,32,100,97,116,97,32,102,114,111,109, - 32,112,97,116,104,32,97,115,32,114,97,119,32,98,121,116, - 101,115,46,78,218,1,114,41,8,114,165,0,0,0,114,228, - 0,0,0,218,19,69,120,116,101,110,115,105,111,110,70,105, - 108,101,76,111,97,100,101,114,114,72,0,0,0,90,9,111, - 112,101,110,95,99,111,100,101,114,90,0,0,0,90,4,114, - 101,97,100,114,73,0,0,0,41,3,114,123,0,0,0,114, - 52,0,0,0,114,76,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,234,0,0,0,250,3,0, - 0,115,16,0,0,0,14,2,16,1,38,1,4,128,14,2, - 38,1,4,128,255,128,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,0,0,0,0,3,0,0,0,2,0,0,0, - 67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, - 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, - 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, - 100,101,114,41,2,90,17,105,109,112,111,114,116,108,105,98, - 46,114,101,97,100,101,114,115,114,4,1,0,0,41,3,114, - 123,0,0,0,114,223,0,0,0,114,4,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,19,103, - 101,116,95,114,101,115,111,117,114,99,101,95,114,101,97,100, - 101,114,3,4,0,0,115,6,0,0,0,12,2,8,1,255, - 128,122,30,70,105,108,101,76,111,97,100,101,114,46,103,101, - 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, - 114,41,13,114,130,0,0,0,114,129,0,0,0,114,131,0, - 0,0,114,132,0,0,0,114,216,0,0,0,114,250,0,0, - 0,114,254,0,0,0,114,140,0,0,0,114,227,0,0,0, - 114,183,0,0,0,114,234,0,0,0,114,5,1,0,0,90, - 13,95,95,99,108,97,115,115,99,101,108,108,95,95,114,7, - 0,0,0,114,7,0,0,0,114,0,1,0,0,114,8,0, - 0,0,114,246,0,0,0,215,3,0,0,115,26,0,0,0, - 8,0,4,2,8,3,8,6,8,4,2,3,14,1,2,11, - 10,1,8,4,2,9,18,1,255,128,114,246,0,0,0,99, - 0,0,0,0,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,7,156,1,100, - 8,100,9,132,2,90,6,100,10,83,0,41,11,218,16,83, - 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,122, - 62,67,111,110,99,114,101,116,101,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,111,102,32,83,111,117,114, - 99,101,76,111,97,100,101,114,32,117,115,105,110,103,32,116, - 104,101,32,102,105,108,101,32,115,121,115,116,101,109,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,22,0,0,0,116,0,124, - 1,131,1,125,2,124,2,106,1,124,2,106,2,100,1,156, - 2,83,0,41,3,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,173,0,0,0,114, - 241,0,0,0,78,41,3,114,57,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,123,0,0,0,114,52,0,0,0,114,245,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 231,0,0,0,13,4,0,0,115,6,0,0,0,8,2,14, - 1,255,128,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,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,5,0,0,0,67,0,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,119,0,0,0,114,232,0,0,0,41,5, - 114,123,0,0,0,114,112,0,0,0,114,111,0,0,0,114, - 37,0,0,0,114,60,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,233,0,0,0,18,4,0, - 0,115,6,0,0,0,8,2,16,1,255,128,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,68, - 0,0,0,114,8,1,0,0,99,3,0,0,0,0,0,0, - 0,1,0,0,0,9,0,0,0,11,0,0,0,67,0,0, - 0,115,244,0,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,4,131,1, - 115,52,116,0,124,4,131,1,92,2,125,4,125,7,124,6, - 160,2,124,7,161,1,1,0,113,16,116,3,124,6,131,1, - 68,0,93,98,125,7,116,4,124,4,124,7,131,2,125,4, - 122,14,116,5,160,6,124,4,161,1,1,0,87,0,113,60, - 4,0,116,7,121,106,1,0,1,0,1,0,89,0,113,60, - 4,0,116,8,121,158,1,0,125,8,1,0,122,30,116,9, - 160,10,100,1,124,4,124,8,161,3,1,0,87,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,48,0,48,0,122,30,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 87,0,100,2,83,0,4,0,116,8,121,242,1,0,125,8, - 1,0,122,28,116,9,160,10,100,1,124,1,124,8,161,3, - 1,0,87,0,89,0,100,2,125,8,126,8,100,2,83,0, - 100,2,125,8,126,8,48,0,48,0,41,4,122,27,87,114, - 105,116,101,32,98,121,116,101,115,32,100,97,116,97,32,116, - 111,32,97,32,102,105,108,101,46,122,27,99,111,117,108,100, - 32,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,55,0,0,0,114,64,0,0, - 0,114,190,0,0,0,114,50,0,0,0,114,48,0,0,0, - 114,18,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,58,0, - 0,0,114,139,0,0,0,114,153,0,0,0,114,77,0,0, - 0,41,9,114,123,0,0,0,114,52,0,0,0,114,37,0, - 0,0,114,9,1,0,0,218,6,112,97,114,101,110,116,114, - 101,0,0,0,114,47,0,0,0,114,43,0,0,0,114,235, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,232,0,0,0,23,4,0,0,115,54,0,0,0, - 12,2,4,1,12,2,12,1,12,1,12,2,10,1,2,1, - 14,1,12,1,4,2,14,1,6,3,4,1,4,255,16,2, - 10,128,2,1,12,1,14,1,4,128,14,1,8,2,2,1, - 8,255,20,128,255,128,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,130,0,0,0,114,129,0,0,0,114,131, - 0,0,0,114,132,0,0,0,114,231,0,0,0,114,233,0, - 0,0,114,232,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,6,1,0,0, - 9,4,0,0,115,12,0,0,0,8,0,4,2,8,2,8, - 5,18,5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114, - 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, - 122,45,76,111,97,100,101,114,32,119,104,105,99,104,32,104, - 97,110,100,108,101,115,32,115,111,117,114,99,101,108,101,115, - 115,32,102,105,108,101,32,105,109,112,111,114,116,115,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 5,0,0,0,67,0,0,0,115,68,0,0,0,124,0,160, - 0,124,1,161,1,125,2,124,0,160,1,124,2,161,1,125, - 3,124,1,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,163,0,0,0,114,149,0,0,0,41,2, - 114,121,0,0,0,114,111,0,0,0,41,5,114,183,0,0, - 0,114,234,0,0,0,114,156,0,0,0,114,169,0,0,0, - 114,242,0,0,0,41,5,114,123,0,0,0,114,143,0,0, - 0,114,52,0,0,0,114,37,0,0,0,114,155,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 220,0,0,0,58,4,0,0,115,24,0,0,0,10,1,10, - 1,2,4,2,1,6,254,12,4,2,1,14,1,2,1,2, - 1,6,253,255,128,122,29,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, - 99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,236,0,0,0, - 74,4,0,0,115,4,0,0,0,4,2,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0, - 114,132,0,0,0,114,220,0,0,0,114,236,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,12,1,0,0,54,4,0,0,115,10,0,0, - 0,8,0,4,2,8,2,12,16,255,128,114,12,1,0,0, - 99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0, - 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, - 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, - 90,10,100,16,100,17,132,0,90,11,101,12,100,18,100,19, - 132,0,131,1,90,13,100,20,83,0,41,21,114,3,1,0, - 0,122,93,76,111,97,100,101,114,32,102,111,114,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,115,46, - 10,10,32,32,32,32,84,104,101,32,99,111,110,115,116,114, - 117,99,116,111,114,32,105,115,32,100,101,115,105,103,110,101, - 100,32,116,111,32,119,111,114,107,32,119,105,116,104,32,70, - 105,108,101,70,105,110,100,101,114,46,10,10,32,32,32,32, - 99,3,0,0,0,0,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,114, - 0,0,0,114,163,0,0,0,41,3,114,123,0,0,0,114, - 121,0,0,0,114,52,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,216,0,0,0,87,4,0, - 0,115,8,0,0,0,6,1,6,1,4,128,255,128,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,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,114,0,0,0,114,247,0,0,0,114,249,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,250,0,0,0,91,4,0,0,115,8,0,0,0,12,1, - 10,1,2,255,255,128,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,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,114,0,0,0,114,251,0,0,0,114,253, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,254,0,0,0,95,4,0,0,115,4,0,0,0, - 20,1,255,128,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,0,0,0,0,3, - 0,0,0,5,0,0,0,67,0,0,0,115,36,0,0,0, - 116,0,160,1,116,2,106,3,124,1,161,2,125,2,116,0, - 160,4,100,1,124,1,106,5,124,0,106,6,161,3,1,0, - 124,2,83,0,41,3,122,38,67,114,101,97,116,101,32,97, - 110,32,117,110,105,116,105,97,108,105,122,101,100,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,38, + 114,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, + 0,0,0,95,4,0,0,115,4,0,0,0,20,1,255,128, + 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,0,0,0,0,3,0,0,0,5, + 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, + 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, + 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, + 41,3,122,38,67,114,101,97,116,101,32,97,110,32,117,110, + 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, + 105,111,110,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,78,41,7,114,139,0,0,0,114,221,0,0,0,114, + 167,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, + 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, + 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, + 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,219,0,0,0,98,4,0,0,115,16,0,0, + 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, + 128,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,108,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, + 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, + 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, + 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, + 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, + 110,32,109,111,100,117,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,139,0,0,0,114,221,0,0,0,114, + 167,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, + 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, + 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, + 0,106,4,0,0,115,10,0,0,0,14,2,6,1,8,1, + 8,255,255,128,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,0,0,0, + 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,36, + 0,0,0,116,0,124,0,106,1,131,1,100,1,25,0,137, + 0,116,2,135,0,102,1,100,2,100,3,132,8,116,3,68, + 0,131,1,131,1,83,0,41,5,122,49,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,105, + 115,32,97,32,112,97,99,107,97,103,101,46,114,3,0,0, + 0,99,1,0,0,0,0,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,216,0,0,0, + 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, + 0,115,4,0,0,115,8,0,0,0,4,0,2,1,20,255, + 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, + 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, + 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, + 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, + 114,186,0,0,0,112,4,0,0,115,10,0,0,0,14,2, + 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,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,122,63,82,101, + 116,117,114,110,32,78,111,110,101,32,97,115,32,97,110,32, 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,78,41,7,114,139,0,0,0,114,221, - 0,0,0,114,167,0,0,0,90,14,99,114,101,97,116,101, - 95,100,121,110,97,109,105,99,114,153,0,0,0,114,121,0, - 0,0,114,52,0,0,0,41,3,114,123,0,0,0,114,191, - 0,0,0,114,223,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,219,0,0,0,98,4,0,0, - 115,16,0,0,0,4,2,6,1,4,255,6,2,8,1,4, - 255,4,2,255,128,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,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0, - 0,115,36,0,0,0,116,0,160,1,116,2,106,3,124,1, - 161,2,1,0,116,0,160,4,100,1,124,0,106,5,124,0, - 106,6,161,3,1,0,100,2,83,0,41,3,122,30,73,110, - 105,116,105,97,108,105,122,101,32,97,110,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,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,139,0,0,0,114,221, - 0,0,0,114,167,0,0,0,90,12,101,120,101,99,95,100, - 121,110,97,109,105,99,114,153,0,0,0,114,121,0,0,0, - 114,52,0,0,0,169,2,114,123,0,0,0,114,223,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,224,0,0,0,106,4,0,0,115,12,0,0,0,14,2, - 6,1,8,1,4,255,4,128,255,128,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,0,0,0,0,0,2,0,0,0,4,0,0,0, - 3,0,0,0,115,36,0,0,0,116,0,124,0,106,1,131, - 1,100,1,25,0,137,0,116,2,135,0,102,1,100,2,100, - 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,122, - 49,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, - 116,104,101,32,101,120,116,101,110,115,105,111,110,32,109,111, - 100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,103, - 101,46,114,3,0,0,0,99,1,0,0,0,0,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,216,0,0,0,78,114,7,0,0,0,169,2,114,5, - 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,7,0,0,0,114,8,0, - 0,0,114,9,0,0,0,115,4,0,0,115,10,0,0,0, - 4,0,2,1,16,255,4,128,255,128,122,49,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,101,46,60,108,111,99,97, - 108,115,62,46,60,103,101,110,101,120,112,114,62,78,41,4, - 114,55,0,0,0,114,52,0,0,0,218,3,97,110,121,114, - 212,0,0,0,114,226,0,0,0,114,7,0,0,0,114,16, - 1,0,0,114,8,0,0,0,114,186,0,0,0,112,4,0, - 0,115,10,0,0,0,14,2,12,1,2,1,8,255,255,128, - 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,101, - 99,2,0,0,0,0,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,122,63,82,101,116,117,114,110,32,78,111,110, - 101,32,97,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,7,0,0,0,114,226,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 220,0,0,0,118,4,0,0,115,4,0,0,0,4,2,255, - 128,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,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,122,53,82,101,116,117,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,7,0,0,0, - 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,236,0,0,0,122,4,0,0,115,4,0, - 0,0,4,2,255,128,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,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,1,1,0,0,114, - 56,0,0,0,114,226,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,183,0,0,0,126,4,0, - 0,115,4,0,0,0,6,3,255,128,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, - 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,216,0,0,0,114,250,0,0,0,114,254,0, - 0,0,114,219,0,0,0,114,224,0,0,0,114,186,0,0, - 0,114,220,0,0,0,114,236,0,0,0,114,140,0,0,0, - 114,183,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,3,1,0,0,79,4, - 0,0,115,26,0,0,0,8,0,4,2,8,6,8,4,8, - 4,8,3,8,8,8,6,8,6,8,4,2,4,14,1,255, - 128,114,3,1,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, - 104,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,90,6,100,8,100,9,132,0,90,7, - 100,10,100,11,132,0,90,8,100,12,100,13,132,0,90,9, - 100,14,100,15,132,0,90,10,100,16,100,17,132,0,90,11, - 100,18,100,19,132,0,90,12,100,20,100,21,132,0,90,13, - 100,22,100,23,132,0,90,14,100,24,83,0,41,25,218,14, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,97,38, - 1,0,0,82,101,112,114,101,115,101,110,116,115,32,97,32, - 110,97,109,101,115,112,97,99,101,32,112,97,99,107,97,103, - 101,39,115,32,112,97,116,104,46,32,32,73,116,32,117,115, - 101,115,32,116,104,101,32,109,111,100,117,108,101,32,110,97, - 109,101,10,32,32,32,32,116,111,32,102,105,110,100,32,105, - 116,115,32,112,97,114,101,110,116,32,109,111,100,117,108,101, - 44,32,97,110,100,32,102,114,111,109,32,116,104,101,114,101, - 32,105,116,32,108,111,111,107,115,32,117,112,32,116,104,101, - 32,112,97,114,101,110,116,39,115,10,32,32,32,32,95,95, - 112,97,116,104,95,95,46,32,32,87,104,101,110,32,116,104, - 105,115,32,99,104,97,110,103,101,115,44,32,116,104,101,32, - 109,111,100,117,108,101,39,115,32,111,119,110,32,112,97,116, - 104,32,105,115,32,114,101,99,111,109,112,117,116,101,100,44, - 10,32,32,32,32,117,115,105,110,103,32,112,97,116,104,95, - 102,105,110,100,101,114,46,32,32,70,111,114,32,116,111,112, - 45,108,101,118,101,108,32,109,111,100,117,108,101,115,44,32, - 116,104,101,32,112,97,114,101,110,116,32,109,111,100,117,108, - 101,39,115,32,112,97,116,104,10,32,32,32,32,105,115,32, - 115,121,115,46,112,97,116,104,46,99,4,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0, - 0,0,115,36,0,0,0,124,1,124,0,95,0,124,2,124, - 0,95,1,116,2,124,0,160,3,161,0,131,1,124,0,95, - 4,124,3,124,0,95,5,100,0,83,0,114,114,0,0,0, - 41,6,218,5,95,110,97,109,101,218,5,95,112,97,116,104, - 114,116,0,0,0,218,16,95,103,101,116,95,112,97,114,101, - 110,116,95,112,97,116,104,218,17,95,108,97,115,116,95,112, - 97,114,101,110,116,95,112,97,116,104,218,12,95,112,97,116, - 104,95,102,105,110,100,101,114,169,4,114,123,0,0,0,114, - 121,0,0,0,114,52,0,0,0,90,11,112,97,116,104,95, - 102,105,110,100,101,114,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,216,0,0,0,139,4,0,0,115,12, - 0,0,0,6,1,6,1,14,1,6,1,4,128,255,128,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,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0, - 0,115,38,0,0,0,124,0,106,0,160,1,100,1,161,1, - 92,3,125,1,125,2,125,3,124,2,100,2,107,2,114,30, - 100,3,83,0,124,1,100,4,102,2,83,0,41,6,122,62, - 82,101,116,117,114,110,115,32,97,32,116,117,112,108,101,32, - 111,102,32,40,112,97,114,101,110,116,45,109,111,100,117,108, - 101,45,110,97,109,101,44,32,112,97,114,101,110,116,45,112, - 97,116,104,45,97,116,116,114,45,110,97,109,101,41,114,79, - 0,0,0,114,10,0,0,0,41,2,114,15,0,0,0,114, - 52,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, - 2,114,19,1,0,0,114,49,0,0,0,41,4,114,123,0, - 0,0,114,11,1,0,0,218,3,100,111,116,90,2,109,101, - 114,7,0,0,0,114,7,0,0,0,114,8,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,145,4,0,0,115,10,0,0, - 0,18,2,8,1,4,2,8,3,255,128,122,38,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,102,105,110, - 100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,97, - 109,101,115,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,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,114,0, - 0,0,41,4,114,26,1,0,0,114,135,0,0,0,114,15, - 0,0,0,218,7,109,111,100,117,108,101,115,41,3,114,123, - 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,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,21,1,0,0,155,4,0,0,115, - 6,0,0,0,12,1,16,1,255,128,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,0,0,0,0,3,0,0,0,4,0,0,0, - 67,0,0,0,115,80,0,0,0,116,0,124,0,160,1,161, - 0,131,1,125,1,124,1,124,0,106,2,107,3,114,74,124, - 0,160,3,124,0,106,4,124,1,161,2,125,2,124,2,100, - 0,117,1,114,68,124,2,106,5,100,0,117,0,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,114,0,0,0,41,8, - 114,116,0,0,0,114,21,1,0,0,114,22,1,0,0,114, - 23,1,0,0,114,19,1,0,0,114,144,0,0,0,114,182, - 0,0,0,114,20,1,0,0,41,3,114,123,0,0,0,90, - 11,112,97,114,101,110,116,95,112,97,116,104,114,191,0,0, + 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,7, + 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,220,0,0,0,118,4,0,0, + 115,4,0,0,0,4,2,255,128,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,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,122,53,82,101,116, + 117,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,7,0,0,0,114,226,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, + 0,122,4,0,0,115,4,0,0,0,4,2,255,128,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,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,1,1,0,0,114,56,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,159,4, - 0,0,115,18,0,0,0,12,2,10,1,14,1,18,3,6, - 1,8,1,6,1,6,1,255,128,122,27,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,108, - 99,117,108,97,116,101,99,1,0,0,0,0,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,114,0,0,0,41,2,218,4,105,116,101,114,114,28,1, - 0,0,114,253,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,95,95,105,116,101,114,95,95, - 172,4,0,0,115,4,0,0,0,12,1,255,128,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,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 12,0,0,0,124,0,160,0,161,0,124,1,25,0,83,0, - 114,114,0,0,0,169,1,114,28,1,0,0,41,2,114,123, - 0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,116, - 105,116,101,109,95,95,175,4,0,0,115,4,0,0,0,12, - 1,255,128,122,26,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,95,103,101,116,105,116,101,109,95,95,99, - 3,0,0,0,0,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,114,0,0,0, - 41,1,114,20,1,0,0,41,3,114,123,0,0,0,114,32, - 1,0,0,114,52,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,11,95,95,115,101,116,105,116, - 101,109,95,95,178,4,0,0,115,6,0,0,0,10,1,4, - 128,255,128,122,26,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,95,115,101,116,105,116,101,109,95,95,99, - 1,0,0,0,0,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,114,0,0,0,41,2, - 114,4,0,0,0,114,28,1,0,0,114,253,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,7, - 95,95,108,101,110,95,95,181,4,0,0,115,4,0,0,0, - 12,1,255,128,122,22,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,46,95,95,108,101,110,95,95,99,1,0,0, + 114,183,0,0,0,126,4,0,0,115,4,0,0,0,6,3, + 255,128,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,130,0,0,0,114,129,0,0, + 0,114,131,0,0,0,114,132,0,0,0,114,216,0,0,0, + 114,250,0,0,0,114,254,0,0,0,114,219,0,0,0,114, + 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, + 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,3,1,0,0,79,4,0,0,115,26,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,64,0,0,0,115,104,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,90,6, + 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, + 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, + 100,16,100,17,132,0,90,11,100,18,100,19,132,0,90,12, + 100,20,100,21,132,0,90,13,100,22,100,23,132,0,90,14, + 100,24,83,0,41,25,218,14,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,97,38,1,0,0,82,101,112,114,101, + 115,101,110,116,115,32,97,32,110,97,109,101,115,112,97,99, + 101,32,112,97,99,107,97,103,101,39,115,32,112,97,116,104, + 46,32,32,73,116,32,117,115,101,115,32,116,104,101,32,109, + 111,100,117,108,101,32,110,97,109,101,10,32,32,32,32,116, + 111,32,102,105,110,100,32,105,116,115,32,112,97,114,101,110, + 116,32,109,111,100,117,108,101,44,32,97,110,100,32,102,114, + 111,109,32,116,104,101,114,101,32,105,116,32,108,111,111,107, + 115,32,117,112,32,116,104,101,32,112,97,114,101,110,116,39, + 115,10,32,32,32,32,95,95,112,97,116,104,95,95,46,32, + 32,87,104,101,110,32,116,104,105,115,32,99,104,97,110,103, + 101,115,44,32,116,104,101,32,109,111,100,117,108,101,39,115, + 32,111,119,110,32,112,97,116,104,32,105,115,32,114,101,99, + 111,109,112,117,116,101,100,44,10,32,32,32,32,117,115,105, + 110,103,32,112,97,116,104,95,102,105,110,100,101,114,46,32, + 32,70,111,114,32,116,111,112,45,108,101,118,101,108,32,109, + 111,100,117,108,101,115,44,32,116,104,101,32,112,97,114,101, + 110,116,32,109,111,100,117,108,101,39,115,32,112,97,116,104, + 10,32,32,32,32,105,115,32,115,121,115,46,112,97,116,104, + 46,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124, + 1,124,0,95,0,124,2,124,0,95,1,116,2,124,0,160, + 3,161,0,131,1,124,0,95,4,124,3,124,0,95,5,100, + 0,83,0,114,114,0,0,0,41,6,218,5,95,110,97,109, + 101,218,5,95,112,97,116,104,114,116,0,0,0,218,16,95, + 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,218, + 17,95,108,97,115,116,95,112,97,114,101,110,116,95,112,97, + 116,104,218,12,95,112,97,116,104,95,102,105,110,100,101,114, + 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, + 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, + 0,0,139,4,0,0,115,10,0,0,0,6,1,6,1,14, + 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,38,0,0,0,124,0,106,0, + 160,1,100,1,161,1,92,3,125,1,125,2,125,3,124,2, + 100,2,107,2,114,30,100,3,83,0,124,1,100,4,102,2, + 83,0,41,6,122,62,82,101,116,117,114,110,115,32,97,32, + 116,117,112,108,101,32,111,102,32,40,112,97,114,101,110,116, + 45,109,111,100,117,108,101,45,110,97,109,101,44,32,112,97, + 114,101,110,116,45,112,97,116,104,45,97,116,116,114,45,110, + 97,109,101,41,114,79,0,0,0,114,10,0,0,0,41,2, + 114,15,0,0,0,114,52,0,0,0,90,8,95,95,112,97, + 116,104,95,95,78,41,2,114,19,1,0,0,114,49,0,0, + 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, + 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, + 114,8,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,145,4, + 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, + 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, + 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, + 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0,0,114, + 135,0,0,0,114,15,0,0,0,218,7,109,111,100,117,108, + 101,115,41,3,114,123,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,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, + 0,155,4,0,0,115,6,0,0,0,12,1,16,1,255,128, + 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,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,80,0,0,0,116, + 0,124,0,160,1,161,0,131,1,125,1,124,1,124,0,106, + 2,107,3,114,74,124,0,160,3,124,0,106,4,124,1,161, + 2,125,2,124,2,100,0,117,1,114,68,124,2,106,5,100, + 0,117,0,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, + 114,0,0,0,41,8,114,116,0,0,0,114,21,1,0,0, + 114,22,1,0,0,114,23,1,0,0,114,19,1,0,0,114, + 144,0,0,0,114,182,0,0,0,114,20,1,0,0,41,3, + 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, + 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, + 108,97,116,101,159,4,0,0,115,18,0,0,0,12,2,10, + 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, + 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, 0,0,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,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,70,0,0,0,114,20,1,0,0,114,253,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 8,95,95,114,101,112,114,95,95,184,4,0,0,115,4,0, - 0,0,12,1,255,128,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,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,118,0,83,0,114,114,0,0,0,114,31, - 1,0,0,169,2,114,123,0,0,0,218,4,105,116,101,109, + 0,67,0,0,0,115,12,0,0,0,116,0,124,0,160,1, + 161,0,131,1,83,0,114,114,0,0,0,41,2,218,4,105, + 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, + 105,116,101,114,95,95,172,4,0,0,115,4,0,0,0,12, + 1,255,128,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,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,115,12,0,0,0,124,0,160,0,161,0, + 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, + 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 12,95,95,99,111,110,116,97,105,110,115,95,95,187,4,0, - 0,115,4,0,0,0,12,1,255,128,122,27,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,95,99,111,110, - 116,97,105,110,115,95,95,99,2,0,0,0,0,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,114,0,0,0,41,2,114,20,1,0, - 0,114,190,0,0,0,114,37,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,190,0,0,0,190, - 4,0,0,115,6,0,0,0,12,1,4,128,255,128,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,15,114,130,0,0,0,114,129,0, - 0,0,114,131,0,0,0,114,132,0,0,0,114,216,0,0, - 0,114,26,1,0,0,114,21,1,0,0,114,28,1,0,0, - 114,30,1,0,0,114,33,1,0,0,114,34,1,0,0,114, - 35,1,0,0,114,36,1,0,0,114,39,1,0,0,114,190, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,18,1,0,0,132,4,0,0, - 115,28,0,0,0,8,0,4,1,8,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,255, - 128,114,18,1,0,0,99,0,0,0,0,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,4,132,0,131,1,90,5, - 100,5,100,6,132,0,90,6,100,7,100,8,132,0,90,7, - 100,9,100,10,132,0,90,8,100,11,100,12,132,0,90,9, - 100,13,100,14,132,0,90,10,100,15,100,16,132,0,90,11, - 100,17,83,0,41,18,218,16,95,78,97,109,101,115,112,97, - 99,101,76,111,97,100,101,114,99,4,0,0,0,0,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,114,0,0,0,41,2,114, - 18,1,0,0,114,20,1,0,0,114,24,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,196,4,0,0,115,6,0,0,0,14,1,4,128,255, + 11,95,95,103,101,116,105,116,101,109,95,95,175,4,0,0, + 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, + 116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41,3,114, + 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, + 95,115,101,116,105,116,101,109,95,95,178,4,0,0,115,4, + 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, + 109,95,95,99,1,0,0,0,0,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,114,0, + 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,7,95,95,108,101,110,95,95,181,4,0,0,115, + 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, + 99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0,0,114, + 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,8,95,95,114,101,112,114,95,95,184,4,0, + 0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114,114,0, + 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, + 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, + 95,187,4,0,0,115,4,0,0,0,12,1,255,128,122,27, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, + 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, + 0,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,114,0,0,0,41,2, + 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, + 0,0,0,190,4,0,0,115,4,0,0,0,16,1,255,128, + 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,15,114,130,0,0,0,114, + 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, + 0,0,0,114,26,1,0,0,114,21,1,0,0,114,28,1, + 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, + 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, + 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,18,1,0,0,132,4, + 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0,131,1, + 90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, + 90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, + 90,9,100,13,100,14,132,0,90,10,100,15,100,16,132,0, + 90,11,100,17,83,0,41,18,218,16,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,99,4,0,0,0,0, + 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,114,0,0,0,41, + 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 216,0,0,0,196,4,0,0,115,4,0,0,0,18,1,255, 128,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,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, @@ -2027,644 +2026,643 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,115,4,0,0,0,100,0,83,0,114,114,0,0, 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,220, - 4,0,0,115,6,0,0,0,2,1,2,128,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1, - 124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1, - 161,2,83,0,41,3,122,98,76,111,97,100,32,97,32,110, - 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,78,41,4,114,139,0,0,0,114,153,0,0,0,114, - 20,1,0,0,114,225,0,0,0,114,226,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, - 0,0,223,4,0,0,115,10,0,0,0,6,7,4,1,4, - 255,12,2,255,128,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,130,0,0,0,114,129,0,0,0, - 114,131,0,0,0,114,216,0,0,0,114,213,0,0,0,114, - 41,1,0,0,114,186,0,0,0,114,236,0,0,0,114,220, - 0,0,0,114,219,0,0,0,114,224,0,0,0,114,227,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,40,1,0,0,195,4,0,0,115, - 22,0,0,0,8,0,8,1,2,3,10,1,8,8,8,3, - 8,3,8,3,8,3,12,3,255,128,114,40,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90, - 6,101,7,100,6,100,7,132,0,131,1,90,8,101,7,100, - 8,100,9,132,0,131,1,90,9,101,7,100,19,100,11,100, - 12,132,1,131,1,90,10,101,7,100,20,100,13,100,14,132, - 1,131,1,90,11,101,7,100,21,100,15,100,16,132,1,131, - 1,90,12,101,4,100,17,100,18,132,0,131,1,90,13,100, - 10,83,0,41,22,218,10,80,97,116,104,70,105,110,100,101, - 114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110, - 100,101,114,32,102,111,114,32,115,121,115,46,112,97,116,104, - 32,97,110,100,32,112,97,99,107,97,103,101,32,95,95,112, - 97,116,104,95,95,32,97,116,116,114,105,98,117,116,101,115, - 46,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116, - 0,116,1,106,2,160,3,161,0,131,1,68,0,93,44,92, - 2,125,0,125,1,124,1,100,1,117,0,114,40,116,1,106, - 2,124,0,61,0,113,14,116,4,124,1,100,2,131,2,114, - 14,124,1,160,5,161,0,1,0,113,14,100,1,83,0,41, - 3,122,125,67,97,108,108,32,116,104,101,32,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,32, - 109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,97, - 116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,115, - 10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,32, - 105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,101, - 114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,46, - 78,218,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,15,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,133,0, - 0,0,114,43,1,0,0,41,2,114,121,0,0,0,218,6, - 102,105,110,100,101,114,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,43,1,0,0,241,4,0,0,115,14, - 0,0,0,22,4,8,1,10,1,10,1,10,1,4,128,255, - 128,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, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 9,0,0,0,67,0,0,0,115,76,0,0,0,116,0,106, - 1,100,1,117,1,114,28,116,0,106,1,115,28,116,2,160, - 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, - 36,125,1,122,14,124,1,124,0,131,1,87,0,2,0,1, - 0,83,0,4,0,116,5,121,70,1,0,1,0,1,0,89, - 0,113,34,48,0,100,1,83,0,41,3,122,46,83,101,97, - 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, - 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, - 102,111,114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10,112,97, - 116,104,95,104,111,111,107,115,114,81,0,0,0,114,82,0, - 0,0,114,142,0,0,0,114,122,0,0,0,41,2,114,52, - 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, - 104,111,111,107,115,251,4,0,0,115,18,0,0,0,16,3, - 12,1,10,1,2,1,14,1,12,1,6,1,4,2,255,128, - 122,22,80,97,116,104,70,105,110,100,101,114,46,95,112,97, - 116,104,95,104,111,111,107,115,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,100,0,0,0,124,1,100,1,107,2,114,42,122,12, - 116,0,160,1,161,0,125,1,87,0,110,20,4,0,116,2, - 121,40,1,0,1,0,1,0,89,0,100,2,83,0,48,0, - 122,16,116,3,106,4,124,1,25,0,125,2,87,0,124,2, - 83,0,4,0,116,5,121,98,1,0,1,0,1,0,124,0, - 160,6,124,1,161,1,125,2,124,2,116,3,106,4,124,1, - 60,0,89,0,124,2,83,0,48,0,41,3,122,210,71,101, - 116,32,116,104,101,32,102,105,110,100,101,114,32,102,111,114, - 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32, - 102,114,111,109,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,10,32, - 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, - 116,104,32,101,110,116,114,121,32,105,115,32,110,111,116,32, - 105,110,32,116,104,101,32,99,97,99,104,101,44,32,102,105, - 110,100,32,116,104,101,32,97,112,112,114,111,112,114,105,97, - 116,101,32,102,105,110,100,101,114,10,32,32,32,32,32,32, - 32,32,97,110,100,32,99,97,99,104,101,32,105,116,46,32, - 73,102,32,110,111,32,102,105,110,100,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,10,0,0,0,78,41,7,114,18,0,0,0,114,63,0, - 0,0,218,17,70,105,108,101,78,111,116,70,111,117,110,100, - 69,114,114,111,114,114,15,0,0,0,114,45,1,0,0,218, - 8,75,101,121,69,114,114,111,114,114,49,1,0,0,41,3, - 114,202,0,0,0,114,52,0,0,0,114,47,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,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,8,5,0,0,115,28,0,0,0,8,8,2, - 1,12,1,12,1,8,3,2,1,12,1,4,4,12,253,10, - 1,12,1,4,1,2,255,255,128,122,31,80,97,116,104,70, - 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,99,3,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,67, - 0,0,0,115,82,0,0,0,116,0,124,2,100,1,131,2, - 114,26,124,2,160,1,124,1,161,1,92,2,125,3,125,4, - 110,14,124,2,160,2,124,1,161,1,125,3,103,0,125,4, - 124,3,100,0,117,1,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,141,0, - 0,0,41,7,114,133,0,0,0,114,141,0,0,0,114,210, - 0,0,0,114,139,0,0,0,114,205,0,0,0,114,187,0, - 0,0,114,182,0,0,0,41,6,114,202,0,0,0,114,143, - 0,0,0,114,47,1,0,0,114,144,0,0,0,114,145,0, - 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,30,5,0,0,115,20,0,0, - 0,10,4,16,1,10,2,4,1,8,1,12,1,12,1,6, - 1,4,1,255,128,122,27,80,97,116,104,70,105,110,100,101, - 114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112, - 101,99,78,99,4,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,5,0,0,0,67,0,0,0,115,166,0,0, - 0,103,0,125,4,124,2,68,0,93,134,125,5,116,0,124, - 5,116,1,116,2,102,2,131,2,115,28,113,8,124,0,160, - 3,124,5,161,1,125,6,124,6,100,1,117,1,114,8,116, - 4,124,6,100,2,131,2,114,70,124,6,160,5,124,1,124, - 3,161,2,125,7,110,12,124,0,160,6,124,1,124,6,161, - 2,125,7,124,7,100,1,117,0,114,92,113,8,124,7,106, - 7,100,1,117,1,114,110,124,7,2,0,1,0,83,0,124, - 7,106,8,125,8,124,8,100,1,117,0,114,132,116,9,100, - 3,131,1,130,1,124,4,160,10,124,8,161,1,1,0,113, - 8,116,11,160,12,124,1,100,1,161,2,125,7,124,4,124, - 7,95,8,124,7,83,0,41,4,122,63,70,105,110,100,32, - 116,104,101,32,108,111,97,100,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,207,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,165,0,0,0,114,90,0,0, - 0,218,5,98,121,116,101,115,114,52,1,0,0,114,133,0, - 0,0,114,207,0,0,0,114,53,1,0,0,114,144,0,0, - 0,114,182,0,0,0,114,122,0,0,0,114,171,0,0,0, - 114,139,0,0,0,114,187,0,0,0,41,9,114,202,0,0, - 0,114,143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0, - 0,114,145,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,9,95,103,101,116,95,115,112,101,99, - 45,5,0,0,115,42,0,0,0,4,5,8,1,14,1,2, - 1,10,1,8,1,10,1,14,1,12,2,8,1,2,1,10, - 1,8,1,6,1,8,1,8,1,12,5,12,2,6,1,4, - 1,255,128,122,20,80,97,116,104,70,105,110,100,101,114,46, - 95,103,101,116,95,115,112,101,99,99,4,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,5,0,0,0,67,0, - 0,0,115,94,0,0,0,124,2,100,1,117,0,114,14,116, - 0,106,1,125,2,124,0,160,2,124,1,124,2,124,3,161, - 3,125,4,124,4,100,1,117,0,114,40,100,1,83,0,124, - 4,106,3,100,1,117,0,114,90,124,4,106,4,125,5,124, - 5,114,86,100,1,124,4,95,5,116,6,124,1,124,5,124, - 0,106,2,131,3,124,4,95,4,124,4,83,0,100,1,83, - 0,124,4,83,0,41,2,122,141,84,114,121,32,116,111,32, - 102,105,110,100,32,97,32,115,112,101,99,32,102,111,114,32, - 39,102,117,108,108,110,97,109,101,39,32,111,110,32,115,121, - 115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,39, - 46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,115, - 101,97,114,99,104,32,105,115,32,98,97,115,101,100,32,111, - 110,32,115,121,115,46,112,97,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,15,0,0,0,114,52, - 0,0,0,114,56,1,0,0,114,144,0,0,0,114,182,0, - 0,0,114,185,0,0,0,114,18,1,0,0,41,6,114,202, - 0,0,0,114,143,0,0,0,114,52,0,0,0,114,206,0, - 0,0,114,191,0,0,0,114,55,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,207,0,0,0, - 77,5,0,0,115,28,0,0,0,8,6,6,1,14,1,8, - 1,4,1,10,1,6,1,4,1,6,3,16,1,4,1,4, - 2,4,2,255,128,122,20,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, - 67,0,0,0,115,30,0,0,0,124,0,160,0,124,1,124, - 2,161,2,125,3,124,3,100,1,117,0,114,24,100,1,83, - 0,124,3,106,1,83,0,41,2,122,170,102,105,110,100,32, - 116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,121, - 115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,39, - 32,98,97,115,101,100,32,111,110,32,115,121,115,46,112,97, - 116,104,95,104,111,111,107,115,32,97,110,100,10,32,32,32, - 32,32,32,32,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,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 210,0,0,0,101,5,0,0,115,10,0,0,0,12,8,8, - 1,4,1,6,1,255,128,122,22,80,97,116,104,70,105,110, - 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,79,0,0,0,115,28,0,0,0,100,1,100, - 2,108,0,109,1,125,2,1,0,124,2,106,2,124,0,105, - 0,124,1,164,1,142,1,83,0,41,4,97,32,1,0,0, - 10,32,32,32,32,32,32,32,32,70,105,110,100,32,100,105, - 115,116,114,105,98,117,116,105,111,110,115,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,32,97,110,32, - 105,116,101,114,97,98,108,101,32,111,102,32,97,108,108,32, - 68,105,115,116,114,105,98,117,116,105,111,110,32,105,110,115, - 116,97,110,99,101,115,32,99,97,112,97,98,108,101,32,111, - 102,10,32,32,32,32,32,32,32,32,108,111,97,100,105,110, - 103,32,116,104,101,32,109,101,116,97,100,97,116,97,32,102, - 111,114,32,112,97,99,107,97,103,101,115,32,109,97,116,99, - 104,105,110,103,32,96,96,99,111,110,116,101,120,116,46,110, - 97,109,101,96,96,10,32,32,32,32,32,32,32,32,40,111, - 114,32,97,108,108,32,110,97,109,101,115,32,105,102,32,96, - 96,78,111,110,101,96,96,32,105,110,100,105,99,97,116,101, - 100,41,32,97,108,111,110,103,32,116,104,101,32,112,97,116, - 104,115,32,105,110,32,116,104,101,32,108,105,115,116,10,32, - 32,32,32,32,32,32,32,111,102,32,100,105,114,101,99,116, - 111,114,105,101,115,32,96,96,99,111,110,116,101,120,116,46, - 112,97,116,104,96,96,46,10,32,32,32,32,32,32,32,32, - 114,0,0,0,0,41,1,218,18,77,101,116,97,100,97,116, - 97,80,97,116,104,70,105,110,100,101,114,78,41,3,90,18, - 105,109,112,111,114,116,108,105,98,46,109,101,116,97,100,97, - 116,97,114,57,1,0,0,218,18,102,105,110,100,95,100,105, - 115,116,114,105,98,117,116,105,111,110,115,41,3,114,124,0, - 0,0,114,125,0,0,0,114,57,1,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,58,1,0,0, - 114,5,0,0,115,6,0,0,0,12,10,16,1,255,128,122, - 29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100, - 95,100,105,115,116,114,105,98,117,116,105,111,110,115,41,1, - 78,41,2,78,78,41,1,78,41,14,114,130,0,0,0,114, - 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,213, - 0,0,0,114,43,1,0,0,114,49,1,0,0,114,214,0, - 0,0,114,52,1,0,0,114,53,1,0,0,114,56,1,0, - 0,114,207,0,0,0,114,210,0,0,0,114,58,1,0,0, + 4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, + 0,0,0,115,26,0,0,0,116,0,160,1,100,1,124,0, + 106,2,161,2,1,0,116,0,160,3,124,0,124,1,161,2, + 83,0,41,3,122,98,76,111,97,100,32,97,32,110,97,109, + 101,115,112,97,99,101,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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, + 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, + 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, + 223,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, + 2,255,128,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,130,0,0,0,114,129,0,0,0,114,131, + 0,0,0,114,216,0,0,0,114,213,0,0,0,114,41,1, + 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, + 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,42,1,0,0,237,4,0,0,115,38,0, - 0,0,8,0,4,2,2,2,10,1,2,9,10,1,2,12, - 10,1,2,21,10,1,2,14,12,1,2,31,12,1,2,23, - 12,1,2,12,14,1,255,128,114,42,1,0,0,99,0,0, - 0,0,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,90,5,101,6,90,7,100,6,100,7,132, - 0,90,8,100,8,100,9,132,0,90,9,100,19,100,11,100, - 12,132,1,90,10,100,13,100,14,132,0,90,11,101,12,100, - 15,100,16,132,0,131,1,90,13,100,17,100,18,132,0,90, - 14,100,10,83,0,41,20,218,10,70,105,108,101,70,105,110, - 100,101,114,122,172,70,105,108,101,45,98,97,115,101,100,32, - 102,105,110,100,101,114,46,10,10,32,32,32,32,73,110,116, - 101,114,97,99,116,105,111,110,115,32,119,105,116,104,32,116, - 104,101,32,102,105,108,101,32,115,121,115,116,101,109,32,97, - 114,101,32,99,97,99,104,101,100,32,102,111,114,32,112,101, - 114,102,111,114,109,97,110,99,101,44,32,98,101,105,110,103, - 10,32,32,32,32,114,101,102,114,101,115,104,101,100,32,119, - 104,101,110,32,116,104,101,32,100,105,114,101,99,116,111,114, - 121,32,116,104,101,32,102,105,110,100,101,114,32,105,115,32, - 104,97,110,100,108,105,110,103,32,104,97,115,32,98,101,101, - 110,32,109,111,100,105,102,105,101,100,46,10,10,32,32,32, - 32,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,6,0,0,0,7,0,0,0,115,84,0,0,0,103, - 0,125,3,124,2,68,0,93,32,92,2,137,0,125,4,124, - 3,160,0,135,0,102,1,100,1,100,2,132,8,124,4,68, - 0,131,1,161,1,1,0,113,8,124,3,124,0,95,1,124, - 1,112,54,100,3,124,0,95,2,100,4,124,0,95,3,116, - 4,131,0,124,0,95,5,116,4,131,0,124,0,95,6,100, - 5,83,0,41,6,122,154,73,110,105,116,105,97,108,105,122, - 101,32,119,105,116,104,32,116,104,101,32,112,97,116,104,32, - 116,111,32,115,101,97,114,99,104,32,111,110,32,97,110,100, - 32,97,32,118,97,114,105,97,98,108,101,32,110,117,109,98, - 101,114,32,111,102,10,32,32,32,32,32,32,32,32,50,45, - 116,117,112,108,101,115,32,99,111,110,116,97,105,110,105,110, - 103,32,116,104,101,32,108,111,97,100,101,114,32,97,110,100, - 32,116,104,101,32,102,105,108,101,32,115,117,102,102,105,120, - 101,115,32,116,104,101,32,108,111,97,100,101,114,10,32,32, - 32,32,32,32,32,32,114,101,99,111,103,110,105,122,101,115, - 46,99,1,0,0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0,0,114, - 14,1,0,0,169,1,114,144,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,9,0,0,0,143,5,0,0,115,6, - 0,0,0,18,0,4,128,255,128,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,79,0,0,0,114,109,0,0,0,78,41,7,114,171, - 0,0,0,218,8,95,108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0, - 114,7,0,0,0,114,60,1,0,0,114,8,0,0,0,114, - 216,0,0,0,137,5,0,0,115,20,0,0,0,4,4,12, - 1,26,1,6,1,10,2,6,1,8,1,8,1,4,128,255, - 128,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,0, - 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, - 10,0,0,0,100,1,124,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,109,0,0,0,78,41,1,114,62,1,0,0,114,253, + 8,0,0,0,114,40,1,0,0,195,4,0,0,115,22,0, + 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, + 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90,6,101, + 7,100,6,100,7,132,0,131,1,90,8,101,7,100,8,100, + 9,132,0,131,1,90,9,101,7,100,19,100,11,100,12,132, + 1,131,1,90,10,101,7,100,20,100,13,100,14,132,1,131, + 1,90,11,101,7,100,21,100,15,100,16,132,1,131,1,90, + 12,101,4,100,17,100,18,132,0,131,1,90,13,100,10,83, + 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, + 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, + 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, + 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, + 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, + 1,106,2,160,3,161,0,131,1,68,0,93,44,92,2,125, + 0,125,1,124,1,100,1,117,0,114,40,116,1,106,2,124, + 0,61,0,113,14,116,4,124,1,100,2,131,2,114,14,124, + 1,160,5,161,0,1,0,113,14,100,1,83,0,41,3,122, + 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, + 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, + 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, + 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, + 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, + 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, + 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, + 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,15,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,133,0,0,0, + 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, + 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,43,1,0,0,241,4,0,0,115,14,0,0, + 0,22,4,8,1,10,1,10,1,10,1,4,252,255,128,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,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,9,0, + 0,0,67,0,0,0,115,76,0,0,0,116,0,106,1,100, + 1,117,1,114,28,116,0,106,1,115,28,116,2,160,3,100, + 2,116,4,161,2,1,0,116,0,106,1,68,0,93,36,125, + 1,122,14,124,1,124,0,131,1,87,0,2,0,1,0,83, + 0,4,0,116,5,121,70,1,0,1,0,1,0,89,0,113, + 34,48,0,100,1,83,0,41,3,122,46,83,101,97,114,99, + 104,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115, + 32,102,111,114,32,97,32,102,105,110,100,101,114,32,102,111, + 114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10,112,97,116,104, + 95,104,111,111,107,115,114,81,0,0,0,114,82,0,0,0, + 114,142,0,0,0,114,122,0,0,0,41,2,114,52,0,0, + 0,90,4,104,111,111,107,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,11,95,112,97,116,104,95,104,111, + 111,107,115,251,4,0,0,115,18,0,0,0,16,3,12,1, + 10,1,2,1,14,1,12,1,6,1,4,2,255,128,122,22, + 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, + 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, + 100,0,0,0,124,1,100,1,107,2,114,42,122,12,116,0, + 160,1,161,0,125,1,87,0,110,20,4,0,116,2,121,40, + 1,0,1,0,1,0,89,0,100,2,83,0,48,0,122,16, + 116,3,106,4,124,1,25,0,125,2,87,0,124,2,83,0, + 4,0,116,5,121,98,1,0,1,0,1,0,124,0,160,6, + 124,1,161,1,125,2,124,2,116,3,106,4,124,1,60,0, + 89,0,124,2,83,0,48,0,41,3,122,210,71,101,116,32, + 116,104,101,32,102,105,110,100,101,114,32,102,111,114,32,116, + 104,101,32,112,97,116,104,32,101,110,116,114,121,32,102,114, + 111,109,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,10,32,32,32, + 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104, + 32,101,110,116,114,121,32,105,115,32,110,111,116,32,105,110, + 32,116,104,101,32,99,97,99,104,101,44,32,102,105,110,100, + 32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,101, + 32,102,105,110,100,101,114,10,32,32,32,32,32,32,32,32, + 97,110,100,32,99,97,99,104,101,32,105,116,46,32,73,102, + 32,110,111,32,102,105,110,100,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,10, + 0,0,0,78,41,7,114,18,0,0,0,114,63,0,0,0, + 218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,114, + 114,111,114,114,15,0,0,0,114,45,1,0,0,218,8,75, + 101,121,69,114,114,111,114,114,49,1,0,0,41,3,114,202, + 0,0,0,114,52,0,0,0,114,47,1,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,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,8,5,0,0,115,28,0,0,0,8,8,2,1,12, + 1,12,1,8,3,2,1,12,1,4,4,12,253,10,1,12, + 1,4,1,2,255,255,128,122,31,80,97,116,104,70,105,110, + 100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,99,3,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, + 0,115,82,0,0,0,116,0,124,2,100,1,131,2,114,26, + 124,2,160,1,124,1,161,1,92,2,125,3,125,4,110,14, + 124,2,160,2,124,1,161,1,125,3,103,0,125,4,124,3, + 100,0,117,1,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,141,0,0,0, + 41,7,114,133,0,0,0,114,141,0,0,0,114,210,0,0, + 0,114,139,0,0,0,114,205,0,0,0,114,187,0,0,0, + 114,182,0,0,0,41,6,114,202,0,0,0,114,143,0,0, + 0,114,47,1,0,0,114,144,0,0,0,114,145,0,0,0, + 114,191,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,30,5,0,0,115,20,0,0,0,10, + 4,16,1,10,2,4,1,8,1,12,1,12,1,6,1,4, + 1,255,128,122,27,80,97,116,104,70,105,110,100,101,114,46, + 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, + 78,99,4,0,0,0,0,0,0,0,0,0,0,0,9,0, + 0,0,5,0,0,0,67,0,0,0,115,166,0,0,0,103, + 0,125,4,124,2,68,0,93,134,125,5,116,0,124,5,116, + 1,116,2,102,2,131,2,115,28,113,8,124,0,160,3,124, + 5,161,1,125,6,124,6,100,1,117,1,114,8,116,4,124, + 6,100,2,131,2,114,70,124,6,160,5,124,1,124,3,161, + 2,125,7,110,12,124,0,160,6,124,1,124,6,161,2,125, + 7,124,7,100,1,117,0,114,92,113,8,124,7,106,7,100, + 1,117,1,114,110,124,7,2,0,1,0,83,0,124,7,106, + 8,125,8,124,8,100,1,117,0,114,132,116,9,100,3,131, + 1,130,1,124,4,160,10,124,8,161,1,1,0,113,8,116, + 11,160,12,124,1,100,1,161,2,125,7,124,4,124,7,95, + 8,124,7,83,0,41,4,122,63,70,105,110,100,32,116,104, + 101,32,108,111,97,100,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,207,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,165,0,0,0,114,90,0,0,0,218, + 5,98,121,116,101,115,114,52,1,0,0,114,133,0,0,0, + 114,207,0,0,0,114,53,1,0,0,114,144,0,0,0,114, + 182,0,0,0,114,122,0,0,0,114,171,0,0,0,114,139, + 0,0,0,114,187,0,0,0,41,9,114,202,0,0,0,114, + 143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0,0,114, + 145,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,9,95,103,101,116,95,115,112,101,99,45,5, + 0,0,115,42,0,0,0,4,5,8,1,14,1,2,1,10, + 1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,8, + 1,6,1,8,1,8,1,12,5,12,2,6,1,4,1,255, + 128,122,20,80,97,116,104,70,105,110,100,101,114,46,95,103, + 101,116,95,115,112,101,99,99,4,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,5,0,0,0,67,0,0,0, + 115,94,0,0,0,124,2,100,1,117,0,114,14,116,0,106, + 1,125,2,124,0,160,2,124,1,124,2,124,3,161,3,125, + 4,124,4,100,1,117,0,114,40,100,1,83,0,124,4,106, + 3,100,1,117,0,114,90,124,4,106,4,125,5,124,5,114, + 86,100,1,124,4,95,5,116,6,124,1,124,5,124,0,106, + 2,131,3,124,4,95,4,124,4,83,0,100,1,83,0,124, + 4,83,0,41,2,122,141,84,114,121,32,116,111,32,102,105, + 110,100,32,97,32,115,112,101,99,32,102,111,114,32,39,102, + 117,108,108,110,97,109,101,39,32,111,110,32,115,121,115,46, + 112,97,116,104,32,111,114,32,39,112,97,116,104,39,46,10, + 10,32,32,32,32,32,32,32,32,84,104,101,32,115,101,97, + 114,99,104,32,105,115,32,98,97,115,101,100,32,111,110,32, + 115,121,115,46,112,97,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,15,0,0,0,114,52,0,0, + 0,114,56,1,0,0,114,144,0,0,0,114,182,0,0,0, + 114,185,0,0,0,114,18,1,0,0,41,6,114,202,0,0, + 0,114,143,0,0,0,114,52,0,0,0,114,206,0,0,0, + 114,191,0,0,0,114,55,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,207,0,0,0,77,5, + 0,0,115,28,0,0,0,8,6,6,1,14,1,8,1,4, + 1,10,1,6,1,4,1,6,3,16,1,4,1,4,2,4, + 2,255,128,122,20,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, + 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, + 2,125,3,124,3,100,1,117,0,114,24,100,1,83,0,124, + 3,106,1,83,0,41,2,122,170,102,105,110,100,32,116,104, + 101,32,109,111,100,117,108,101,32,111,110,32,115,121,115,46, + 112,97,116,104,32,111,114,32,39,112,97,116,104,39,32,98, + 97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,104, + 95,104,111,111,107,115,32,97,110,100,10,32,32,32,32,32, + 32,32,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,10,32,32,32, + 32,32,32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,210,0, + 0,0,101,5,0,0,115,10,0,0,0,12,8,8,1,4, + 1,6,1,255,128,122,22,80,97,116,104,70,105,110,100,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,99,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, + 0,0,79,0,0,0,115,28,0,0,0,100,1,100,2,108, + 0,109,1,125,2,1,0,124,2,106,2,124,0,105,0,124, + 1,164,1,142,1,83,0,41,4,97,32,1,0,0,10,32, + 32,32,32,32,32,32,32,70,105,110,100,32,100,105,115,116, + 114,105,98,117,116,105,111,110,115,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,97,110,32,105,116, + 101,114,97,98,108,101,32,111,102,32,97,108,108,32,68,105, + 115,116,114,105,98,117,116,105,111,110,32,105,110,115,116,97, + 110,99,101,115,32,99,97,112,97,98,108,101,32,111,102,10, + 32,32,32,32,32,32,32,32,108,111,97,100,105,110,103,32, + 116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,114, + 32,112,97,99,107,97,103,101,115,32,109,97,116,99,104,105, + 110,103,32,96,96,99,111,110,116,101,120,116,46,110,97,109, + 101,96,96,10,32,32,32,32,32,32,32,32,40,111,114,32, + 97,108,108,32,110,97,109,101,115,32,105,102,32,96,96,78, + 111,110,101,96,96,32,105,110,100,105,99,97,116,101,100,41, + 32,97,108,111,110,103,32,116,104,101,32,112,97,116,104,115, + 32,105,110,32,116,104,101,32,108,105,115,116,10,32,32,32, + 32,32,32,32,32,111,102,32,100,105,114,101,99,116,111,114, + 105,101,115,32,96,96,99,111,110,116,101,120,116,46,112,97, + 116,104,96,96,46,10,32,32,32,32,32,32,32,32,114,0, + 0,0,0,41,1,218,18,77,101,116,97,100,97,116,97,80, + 97,116,104,70,105,110,100,101,114,78,41,3,90,18,105,109, + 112,111,114,116,108,105,98,46,109,101,116,97,100,97,116,97, + 114,57,1,0,0,218,18,102,105,110,100,95,100,105,115,116, + 114,105,98,117,116,105,111,110,115,41,3,114,124,0,0,0, + 114,125,0,0,0,114,57,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,58,1,0,0,114,5, + 0,0,115,6,0,0,0,12,10,16,1,255,128,122,29,80, + 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,100, + 105,115,116,114,105,98,117,116,105,111,110,115,41,1,78,41, + 2,78,78,41,1,78,41,14,114,130,0,0,0,114,129,0, + 0,0,114,131,0,0,0,114,132,0,0,0,114,213,0,0, + 0,114,43,1,0,0,114,49,1,0,0,114,214,0,0,0, + 114,52,1,0,0,114,53,1,0,0,114,56,1,0,0,114, + 207,0,0,0,114,210,0,0,0,114,58,1,0,0,114,7, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,43,1,0,0,151,5,0,0,115,6,0,0,0, - 6,2,4,128,255,128,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,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,67,0,0,0,115,42,0, - 0,0,124,0,160,0,124,1,161,1,125,2,124,2,100,1, - 117,0,114,26,100,1,103,0,102,2,83,0,124,2,106,1, - 124,2,106,2,112,38,103,0,102,2,83,0,41,2,122,197, - 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, - 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, - 99,105,102,105,101,100,32,109,111,100,117,108,101,44,32,111, - 114,32,116,104,101,32,110,97,109,101,115,112,97,99,101,10, - 32,32,32,32,32,32,32,32,112,97,99,107,97,103,101,32, - 112,111,114,116,105,111,110,115,46,32,82,101,116,117,114,110, - 115,32,40,108,111,97,100,101,114,44,32,108,105,115,116,45, - 111,102,45,112,111,114,116,105,111,110,115,41,46,10,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,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,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,207,0,0,0,114,144,0, - 0,0,114,182,0,0,0,41,3,114,123,0,0,0,114,143, + 0,0,114,42,1,0,0,237,4,0,0,115,38,0,0,0, + 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, + 2,21,10,1,2,14,12,1,2,31,12,1,2,23,12,1, + 2,12,14,1,255,128,114,42,1,0,0,99,0,0,0,0, + 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,90,5,101,6,90,7,100,6,100,7,132,0,90, + 8,100,8,100,9,132,0,90,9,100,19,100,11,100,12,132, + 1,90,10,100,13,100,14,132,0,90,11,101,12,100,15,100, + 16,132,0,131,1,90,13,100,17,100,18,132,0,90,14,100, + 10,83,0,41,20,218,10,70,105,108,101,70,105,110,100,101, + 114,122,172,70,105,108,101,45,98,97,115,101,100,32,102,105, + 110,100,101,114,46,10,10,32,32,32,32,73,110,116,101,114, + 97,99,116,105,111,110,115,32,119,105,116,104,32,116,104,101, + 32,102,105,108,101,32,115,121,115,116,101,109,32,97,114,101, + 32,99,97,99,104,101,100,32,102,111,114,32,112,101,114,102, + 111,114,109,97,110,99,101,44,32,98,101,105,110,103,10,32, + 32,32,32,114,101,102,114,101,115,104,101,100,32,119,104,101, + 110,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, + 116,104,101,32,102,105,110,100,101,114,32,105,115,32,104,97, + 110,100,108,105,110,103,32,104,97,115,32,98,101,101,110,32, + 109,111,100,105,102,105,101,100,46,10,10,32,32,32,32,99, + 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 6,0,0,0,7,0,0,0,115,84,0,0,0,103,0,125, + 3,124,2,68,0,93,32,92,2,137,0,125,4,124,3,160, + 0,135,0,102,1,100,1,100,2,132,8,124,4,68,0,131, + 1,161,1,1,0,113,8,124,3,124,0,95,1,124,1,112, + 54,100,3,124,0,95,2,100,4,124,0,95,3,116,4,131, + 0,124,0,95,5,116,4,131,0,124,0,95,6,100,5,83, + 0,41,6,122,154,73,110,105,116,105,97,108,105,122,101,32, + 119,105,116,104,32,116,104,101,32,112,97,116,104,32,116,111, + 32,115,101,97,114,99,104,32,111,110,32,97,110,100,32,97, + 32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114, + 32,111,102,10,32,32,32,32,32,32,32,32,50,45,116,117, + 112,108,101,115,32,99,111,110,116,97,105,110,105,110,103,32, + 116,104,101,32,108,111,97,100,101,114,32,97,110,100,32,116, + 104,101,32,102,105,108,101,32,115,117,102,102,105,120,101,115, + 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32, + 32,32,32,32,114,101,99,111,103,110,105,122,101,115,46,99, + 1,0,0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0,0,114,14,1, + 0,0,169,1,114,144,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,9,0,0,0,143,5,0,0,115,4,0,0, + 0,22,0,255,128,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,79,0, + 0,0,114,109,0,0,0,78,41,7,114,171,0,0,0,218, + 8,95,108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0,114,7,0,0, + 0,114,60,1,0,0,114,8,0,0,0,114,216,0,0,0, + 137,5,0,0,115,18,0,0,0,4,4,12,1,26,1,6, + 1,10,2,6,1,8,1,12,1,255,128,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,0,0,0,0,1,0,0, + 0,2,0,0,0,67,0,0,0,115,10,0,0,0,100,1, + 124,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,109,0,0,0, + 78,41,1,114,62,1,0,0,114,253,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,43,1,0, + 0,151,5,0,0,115,4,0,0,0,10,2,255,128,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,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,67,0,0,0,115,42,0,0,0,124,0,160,0,124,1, + 161,1,125,2,124,2,100,1,117,0,114,26,100,1,103,0, + 102,2,83,0,124,2,106,1,124,2,106,2,112,38,103,0, + 102,2,83,0,41,2,122,197,84,114,121,32,116,111,32,102, + 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,97, + 109,101,115,112,97,99,101,10,32,32,32,32,32,32,32,32, + 112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,115, + 46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,101, + 114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,105, + 111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,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,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,207,0,0,0,114,144,0,0,0,114,182,0,0,0,41, + 3,114,123,0,0,0,114,143,0,0,0,114,191,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 141,0,0,0,157,5,0,0,115,10,0,0,0,10,7,8, + 1,8,1,16,1,255,128,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,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,181,0,0,0,41, + 1,114,194,0,0,0,41,7,114,123,0,0,0,114,192,0, + 0,0,114,143,0,0,0,114,52,0,0,0,90,4,115,109, + 115,108,114,206,0,0,0,114,144,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,56,1,0,0, + 169,5,0,0,115,10,0,0,0,10,1,8,1,2,1,6, + 255,255,128,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,0, + 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, + 0,0,0,115,92,1,0,0,100,1,125,3,124,1,160,0, + 100,2,161,1,100,3,25,0,125,4,122,24,116,1,124,0, + 106,2,112,34,116,3,160,4,161,0,131,1,106,5,125,5, + 87,0,110,22,4,0,116,6,121,64,1,0,1,0,1,0, + 100,4,125,5,89,0,110,2,48,0,124,5,124,0,106,7, + 107,3,114,90,124,0,160,8,161,0,1,0,124,5,124,0, + 95,7,116,9,131,0,114,112,124,0,106,10,125,6,124,4, + 160,11,161,0,125,7,110,10,124,0,106,12,125,6,124,4, + 125,7,124,7,124,6,118,0,114,214,116,13,124,0,106,2, + 124,4,131,2,125,8,124,0,106,14,68,0,93,56,92,2, + 125,9,125,10,100,5,124,9,23,0,125,11,116,13,124,8, + 124,11,131,2,125,12,116,15,124,12,131,1,114,148,124,0, + 160,16,124,10,124,1,124,12,124,8,103,1,124,2,161,5, + 2,0,1,0,83,0,116,17,124,8,131,1,125,3,124,0, + 106,14,68,0,93,80,92,2,125,9,125,10,116,13,124,0, + 106,2,124,4,124,9,23,0,131,2,125,12,116,18,106,19, + 100,6,124,12,100,3,100,7,141,3,1,0,124,7,124,9, + 23,0,124,6,118,0,114,220,116,15,124,12,131,1,114,220, + 124,0,160,16,124,10,124,1,124,12,100,8,124,2,161,5, + 2,0,1,0,83,0,124,3,144,1,114,88,116,18,160,19, + 100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,8, + 161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,0, + 100,8,83,0,41,10,122,111,84,114,121,32,116,111,32,102, + 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,115,32,116,104,101,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,79,0,0,0,114,39,0, + 0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0,0,0,114,52,0,0, + 0,114,18,0,0,0,114,63,0,0,0,114,7,1,0,0, + 114,58,0,0,0,114,62,1,0,0,218,11,95,102,105,108, + 108,95,99,97,99,104,101,114,21,0,0,0,114,65,1,0, + 0,114,110,0,0,0,114,64,1,0,0,114,48,0,0,0, + 114,61,1,0,0,114,62,0,0,0,114,56,1,0,0,114, + 64,0,0,0,114,139,0,0,0,114,153,0,0,0,114,187, + 0,0,0,114,182,0,0,0,41,14,114,123,0,0,0,114, + 143,0,0,0,114,206,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,173,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,15,1,0,0,114,192, + 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,191,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,207,0,0,0,174,5,0,0,115,74,0,0,0,4, + 5,14,1,2,1,24,1,12,1,10,1,10,1,8,1,6, + 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, + 1,8,1,10,1,8,1,24,1,8,4,14,2,16,1,16, + 1,12,1,8,1,10,1,4,1,8,255,6,2,12,1,12, + 1,8,1,4,1,4,1,255,128,122,20,70,105,108,101,70, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 10,0,0,0,67,0,0,0,115,192,0,0,0,124,0,106, + 0,125,1,122,22,116,1,160,2,124,1,112,22,116,1,160, + 3,161,0,161,1,125,2,87,0,110,28,4,0,116,4,116, + 5,116,6,102,3,121,56,1,0,1,0,1,0,103,0,125, + 2,89,0,110,2,48,0,116,7,106,8,160,9,100,1,161, + 1,115,82,116,10,124,2,131,1,124,0,95,11,110,74,116, + 10,131,0,125,3,124,2,68,0,93,56,125,4,124,4,160, + 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, + 134,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, + 8,110,4,124,5,125,8,124,3,160,15,124,8,161,1,1, + 0,113,92,124,3,124,0,95,11,116,7,106,8,160,9,116, + 16,161,1,114,188,100,4,100,5,132,0,124,2,68,0,131, + 1,124,0,95,17,100,6,83,0,100,6,83,0,41,7,122, + 68,70,105,108,108,32,116,104,101,32,99,97,99,104,101,32, + 111,102,32,112,111,116,101,110,116,105,97,108,32,109,111,100, + 117,108,101,115,32,97,110,100,32,112,97,99,107,97,103,101, + 115,32,102,111,114,32,116,104,105,115,32,100,105,114,101,99, + 116,111,114,121,46,114,14,0,0,0,114,79,0,0,0,114, + 69,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,83,0,0,0,115,20,0, + 0,0,104,0,124,0,93,12,125,1,124,1,160,0,161,0, + 146,2,113,4,83,0,114,7,0,0,0,41,1,114,110,0, + 0,0,41,2,114,5,0,0,0,90,2,102,110,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,13,0,0, + 0,251,5,0,0,115,4,0,0,0,20,0,255,128,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,52,0,0, + 0,114,18,0,0,0,90,7,108,105,115,116,100,105,114,114, + 63,0,0,0,114,50,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,15, + 0,0,0,114,22,0,0,0,114,23,0,0,0,114,63,1, + 0,0,114,64,1,0,0,114,105,0,0,0,114,70,0,0, + 0,114,110,0,0,0,218,3,97,100,100,114,24,0,0,0, + 114,65,1,0,0,41,9,114,123,0,0,0,114,52,0,0, + 0,90,8,99,111,110,116,101,110,116,115,90,21,108,111,119, + 101,114,95,115,117,102,102,105,120,95,99,111,110,116,101,110, + 116,115,114,38,1,0,0,114,121,0,0,0,114,25,1,0, + 0,114,15,1,0,0,90,8,110,101,119,95,110,97,109,101, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 67,1,0,0,222,5,0,0,115,38,0,0,0,6,2,2, + 1,22,1,18,1,10,3,12,3,12,1,6,7,8,1,16, + 1,4,1,18,1,4,2,12,1,6,1,12,1,20,1,4, + 255,255,128,122,22,70,105,108,101,70,105,110,100,101,114,46, + 95,102,105,108,108,95,99,97,99,104,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, + 7,0,0,0,115,18,0,0,0,135,0,135,1,102,2,100, + 1,100,2,132,8,125,2,124,2,83,0,41,4,97,20,1, + 0,0,65,32,99,108,97,115,115,32,109,101,116,104,111,100, + 32,119,104,105,99,104,32,114,101,116,117,114,110,115,32,97, + 32,99,108,111,115,117,114,101,32,116,111,32,117,115,101,32, + 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107, + 10,32,32,32,32,32,32,32,32,119,104,105,99,104,32,119, + 105,108,108,32,114,101,116,117,114,110,32,97,110,32,105,110, + 115,116,97,110,99,101,32,117,115,105,110,103,32,116,104,101, + 32,115,112,101,99,105,102,105,101,100,32,108,111,97,100,101, + 114,115,32,97,110,100,32,116,104,101,32,112,97,116,104,10, + 32,32,32,32,32,32,32,32,99,97,108,108,101,100,32,111, + 110,32,116,104,101,32,99,108,111,115,117,114,101,46,10,10, + 32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,112, + 97,116,104,32,99,97,108,108,101,100,32,111,110,32,116,104, + 101,32,99,108,111,115,117,114,101,32,105,115,32,110,111,116, + 32,97,32,100,105,114,101,99,116,111,114,121,44,32,73,109, + 112,111,114,116,69,114,114,111,114,32,105,115,10,32,32,32, + 32,32,32,32,32,114,97,105,115,101,100,46,10,10,32,32, + 32,32,32,32,32,32,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,4,0,0,0,19,0,0,0,115, + 36,0,0,0,116,0,124,0,131,1,115,20,116,1,100,1, + 124,0,100,2,141,2,130,1,136,0,124,0,103,1,136,1, + 162,1,82,0,142,0,83,0,41,4,122,45,80,97,116,104, + 32,104,111,111,107,32,102,111,114,32,105,109,112,111,114,116, + 108,105,98,46,109,97,99,104,105,110,101,114,121,46,70,105, + 108,101,70,105,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,56,0,0,0,78,41, + 2,114,64,0,0,0,114,122,0,0,0,114,56,0,0,0, + 169,2,114,202,0,0,0,114,66,1,0,0,114,7,0,0, + 0,114,8,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, + 7,6,0,0,115,8,0,0,0,8,2,12,1,16,1,255, + 128,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,78,114,7,0,0,0,41, + 3,114,202,0,0,0,114,66,1,0,0,114,72,1,0,0, + 114,7,0,0,0,114,71,1,0,0,114,8,0,0,0,218, + 9,112,97,116,104,95,104,111,111,107,253,5,0,0,115,6, + 0,0,0,14,10,4,6,255,128,122,20,70,105,108,101,70, + 105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,99, + 1,0,0,0,0,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,78,122,16,70,105, + 108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2, + 114,70,0,0,0,114,52,0,0,0,114,253,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,36, + 1,0,0,15,6,0,0,115,4,0,0,0,12,1,255,128, + 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,130,0,0,0,114, + 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, + 0,0,0,114,43,1,0,0,114,147,0,0,0,114,210,0, + 0,0,114,141,0,0,0,114,56,1,0,0,114,207,0,0, + 0,114,67,1,0,0,114,214,0,0,0,114,73,1,0,0, + 114,36,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,59,1,0,0,128,5, + 0,0,115,26,0,0,0,8,0,4,2,8,7,8,14,4, + 4,8,2,8,12,10,5,8,48,2,31,10,1,12,17,255, + 128,114,59,1,0,0,99,4,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, + 144,0,0,0,124,0,160,0,100,1,161,1,125,4,124,0, + 160,0,100,2,161,1,125,5,124,4,115,66,124,5,114,36, + 124,5,106,1,125,4,110,30,124,2,124,3,107,2,114,56, + 116,2,124,1,124,2,131,2,125,4,110,10,116,3,124,1, + 124,2,131,2,125,4,124,5,115,84,116,4,124,1,124,2, + 124,4,100,3,141,3,125,5,122,38,124,5,124,0,100,2, + 60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,4, + 60,0,124,3,124,0,100,5,60,0,87,0,100,0,83,0, + 4,0,116,5,121,142,1,0,1,0,1,0,89,0,100,0, + 83,0,48,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,60,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, + 144,0,0,0,114,12,1,0,0,114,6,1,0,0,114,194, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6, + 90,2,110,115,114,121,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,144, 0,0,0,114,191,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,141,0,0,0,157,5,0,0, - 115,10,0,0,0,10,7,8,1,8,1,16,1,255,128,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, - 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,181,0,0,0,41,1,114,194,0,0,0,41,7, - 114,123,0,0,0,114,192,0,0,0,114,143,0,0,0,114, - 52,0,0,0,90,4,115,109,115,108,114,206,0,0,0,114, - 144,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,56,1,0,0,169,5,0,0,115,10,0,0, - 0,10,1,8,1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14, - 0,0,0,8,0,0,0,67,0,0,0,115,92,1,0,0, - 100,1,125,3,124,1,160,0,100,2,161,1,100,3,25,0, - 125,4,122,24,116,1,124,0,106,2,112,34,116,3,160,4, - 161,0,131,1,106,5,125,5,87,0,110,22,4,0,116,6, - 121,64,1,0,1,0,1,0,100,4,125,5,89,0,110,2, - 48,0,124,5,124,0,106,7,107,3,114,90,124,0,160,8, - 161,0,1,0,124,5,124,0,95,7,116,9,131,0,114,112, - 124,0,106,10,125,6,124,4,160,11,161,0,125,7,110,10, - 124,0,106,12,125,6,124,4,125,7,124,7,124,6,118,0, - 114,214,116,13,124,0,106,2,124,4,131,2,125,8,124,0, - 106,14,68,0,93,56,92,2,125,9,125,10,100,5,124,9, - 23,0,125,11,116,13,124,8,124,11,131,2,125,12,116,15, - 124,12,131,1,114,148,124,0,160,16,124,10,124,1,124,12, - 124,8,103,1,124,2,161,5,2,0,1,0,83,0,116,17, - 124,8,131,1,125,3,124,0,106,14,68,0,93,80,92,2, - 125,9,125,10,116,13,124,0,106,2,124,4,124,9,23,0, - 131,2,125,12,116,18,106,19,100,6,124,12,100,3,100,7, - 141,3,1,0,124,7,124,9,23,0,124,6,118,0,114,220, - 116,15,124,12,131,1,114,220,124,0,160,16,124,10,124,1, - 124,12,100,8,124,2,161,5,2,0,1,0,83,0,124,3, - 144,1,114,88,116,18,160,19,100,9,124,8,161,2,1,0, - 116,18,160,20,124,1,100,8,161,2,125,13,124,8,103,1, - 124,13,95,21,124,13,83,0,100,8,83,0,41,10,122,111, - 84,114,121,32,116,111,32,102,105,110,100,32,97,32,115,112, - 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,115,32,116,104, - 101,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,79,0,0,0,114,39,0,0,0,114,109,0,0,0,114, - 216,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,49,0,0,0,114, - 57,0,0,0,114,52,0,0,0,114,18,0,0,0,114,63, - 0,0,0,114,7,1,0,0,114,58,0,0,0,114,62,1, - 0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,114, - 21,0,0,0,114,65,1,0,0,114,110,0,0,0,114,64, - 1,0,0,114,48,0,0,0,114,61,1,0,0,114,62,0, - 0,0,114,56,1,0,0,114,64,0,0,0,114,139,0,0, - 0,114,153,0,0,0,114,187,0,0,0,114,182,0,0,0, - 41,14,114,123,0,0,0,114,143,0,0,0,114,206,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,173,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,15,1,0,0,114,192,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,191,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,207,0,0,0,174,5, - 0,0,115,74,0,0,0,4,5,14,1,2,1,24,1,12, - 1,10,1,10,1,8,1,6,1,6,2,6,1,10,1,6, - 2,4,1,8,2,12,1,14,1,8,1,10,1,8,1,24, - 1,8,4,14,2,16,1,16,1,12,1,8,1,10,1,4, - 1,8,255,6,2,12,1,12,1,8,1,4,1,4,1,255, - 128,122,20,70,105,108,101,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,1,0,0,0,0,0,0,0, - 0,0,0,0,9,0,0,0,10,0,0,0,67,0,0,0, - 115,188,0,0,0,124,0,106,0,125,1,122,22,116,1,160, - 2,124,1,112,22,116,1,160,3,161,0,161,1,125,2,87, - 0,110,28,4,0,116,4,116,5,116,6,102,3,121,56,1, - 0,1,0,1,0,103,0,125,2,89,0,110,2,48,0,116, - 7,106,8,160,9,100,1,161,1,115,82,116,10,124,2,131, - 1,124,0,95,11,110,74,116,10,131,0,125,3,124,2,68, - 0,93,56,125,4,124,4,160,12,100,2,161,1,92,3,125, - 5,125,6,125,7,124,6,114,134,100,3,160,13,124,5,124, - 7,160,14,161,0,161,2,125,8,110,4,124,5,125,8,124, - 3,160,15,124,8,161,1,1,0,113,92,124,3,124,0,95, - 11,116,7,106,8,160,9,116,16,161,1,114,184,100,4,100, - 5,132,0,124,2,68,0,131,1,124,0,95,17,100,6,83, - 0,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97, - 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108, - 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99, - 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100, - 105,114,101,99,116,111,114,121,46,114,14,0,0,0,114,79, - 0,0,0,114,69,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0, - 0,115,20,0,0,0,104,0,124,0,93,12,125,1,124,1, - 160,0,161,0,146,2,113,4,83,0,114,7,0,0,0,41, - 1,114,110,0,0,0,41,2,114,5,0,0,0,90,2,102, - 110,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,13,0,0,0,251,5,0,0,115,4,0,0,0,20,0, - 255,128,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,52,0,0,0,114,18,0,0,0,90,7,108,105,115,116, - 100,105,114,114,63,0,0,0,114,50,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,15,0,0,0,114,22,0,0,0,114,23,0,0, - 0,114,63,1,0,0,114,64,1,0,0,114,105,0,0,0, - 114,70,0,0,0,114,110,0,0,0,218,3,97,100,100,114, - 24,0,0,0,114,65,1,0,0,41,9,114,123,0,0,0, - 114,52,0,0,0,90,8,99,111,110,116,101,110,116,115,90, - 21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,111, - 110,116,101,110,116,115,114,38,1,0,0,114,121,0,0,0, - 114,25,1,0,0,114,15,1,0,0,90,8,110,101,119,95, - 110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,67,1,0,0,222,5,0,0,115,38,0,0, - 0,6,2,2,1,22,1,18,1,10,3,12,3,12,1,6, - 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, - 1,16,1,4,128,255,128,122,22,70,105,108,101,70,105,110, - 100,101,114,46,95,102,105,108,108,95,99,97,99,104,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,7,0,0,0,115,18,0,0,0,135,0,135, - 1,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,97,20,1,0,0,65,32,99,108,97,115,115,32,109,101, - 116,104,111,100,32,119,104,105,99,104,32,114,101,116,117,114, - 110,115,32,97,32,99,108,111,115,117,114,101,32,116,111,32, - 117,115,101,32,111,110,32,115,121,115,46,112,97,116,104,95, - 104,111,111,107,10,32,32,32,32,32,32,32,32,119,104,105, - 99,104,32,119,105,108,108,32,114,101,116,117,114,110,32,97, - 110,32,105,110,115,116,97,110,99,101,32,117,115,105,110,103, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,108, - 111,97,100,101,114,115,32,97,110,100,32,116,104,101,32,112, - 97,116,104,10,32,32,32,32,32,32,32,32,99,97,108,108, - 101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,114, - 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,116, - 104,101,32,112,97,116,104,32,99,97,108,108,101,100,32,111, - 110,32,116,104,101,32,99,108,111,115,117,114,101,32,105,115, - 32,110,111,116,32,97,32,100,105,114,101,99,116,111,114,121, - 44,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, - 10,32,32,32,32,32,32,32,32,114,97,105,115,101,100,46, - 10,10,32,32,32,32,32,32,32,32,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,19, - 0,0,0,115,36,0,0,0,116,0,124,0,131,1,115,20, - 116,1,100,1,124,0,100,2,141,2,130,1,136,0,124,0, - 103,1,136,1,162,1,82,0,142,0,83,0,41,4,122,45, - 80,97,116,104,32,104,111,111,107,32,102,111,114,32,105,109, - 112,111,114,116,108,105,98,46,109,97,99,104,105,110,101,114, - 121,46,70,105,108,101,70,105,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,56,0, - 0,0,78,41,2,114,64,0,0,0,114,122,0,0,0,114, - 56,0,0,0,169,2,114,202,0,0,0,114,66,1,0,0, - 114,7,0,0,0,114,8,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,7,6,0,0,115,8,0,0,0,8,2,12, - 1,16,1,255,128,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,78,114,7, - 0,0,0,41,3,114,202,0,0,0,114,66,1,0,0,114, - 72,1,0,0,114,7,0,0,0,114,71,1,0,0,114,8, - 0,0,0,218,9,112,97,116,104,95,104,111,111,107,253,5, - 0,0,115,6,0,0,0,14,10,4,6,255,128,122,20,70, - 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, - 111,111,107,99,1,0,0,0,0,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,78, - 122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114, - 125,41,41,2,114,70,0,0,0,114,52,0,0,0,114,253, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,36,1,0,0,15,6,0,0,115,4,0,0,0, - 12,1,255,128,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,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, - 0,0,114,216,0,0,0,114,43,1,0,0,114,147,0,0, - 0,114,210,0,0,0,114,141,0,0,0,114,56,1,0,0, - 114,207,0,0,0,114,67,1,0,0,114,214,0,0,0,114, - 73,1,0,0,114,36,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,59,1, - 0,0,128,5,0,0,115,26,0,0,0,8,0,4,2,8, - 7,8,14,4,4,8,2,8,12,10,5,8,48,2,31,10, - 1,12,17,255,128,114,59,1,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, - 0,0,0,115,144,0,0,0,124,0,160,0,100,1,161,1, - 125,4,124,0,160,0,100,2,161,1,125,5,124,4,115,66, - 124,5,114,36,124,5,106,1,125,4,110,30,124,2,124,3, - 107,2,114,56,116,2,124,1,124,2,131,2,125,4,110,10, - 116,3,124,1,124,2,131,2,125,4,124,5,115,84,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,122,38,124,5, - 124,0,100,2,60,0,124,4,124,0,100,1,60,0,124,2, - 124,0,100,4,60,0,124,3,124,0,100,5,60,0,87,0, - 100,0,83,0,4,0,116,5,121,142,1,0,1,0,1,0, - 89,0,100,0,83,0,48,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,60,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,144,0,0,0,114,12,1,0,0,114,6,1, - 0,0,114,194,0,0,0,218,9,69,120,99,101,112,116,105, - 111,110,41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,21,6,0,0,115, - 42,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, - 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, - 10,1,4,128,12,1,2,2,4,128,2,0,255,128,114,78, - 1,0,0,99,0,0,0,0,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,5,116,6,102,2,125,2,124,0,124, - 1,124,2,103,3,83,0,41,2,122,95,82,101,116,117,114, - 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, - 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, - 111,97,100,101,114,115,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,78,41,7,114,3,1, - 0,0,114,167,0,0,0,218,18,101,120,116,101,110,115,105, - 111,110,95,115,117,102,102,105,120,101,115,114,6,1,0,0, - 114,106,0,0,0,114,12,1,0,0,114,94,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, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,188, - 0,0,0,44,6,0,0,115,10,0,0,0,12,5,8,1, - 8,1,10,1,255,128,114,188,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, - 67,0,0,0,115,8,0,0,0,124,0,97,0,100,0,83, - 0,114,114,0,0,0,41,1,114,139,0,0,0,41,1,218, - 17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, - 108,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,21,95,115,101,116,95,98,111,111,116,115,116,114,97, - 112,95,109,111,100,117,108,101,55,6,0,0,115,6,0,0, - 0,4,2,4,128,255,128,114,81,1,0,0,99,1,0,0, - 0,0,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,1,161,1,1,0,116,2,106,7, - 160,8,116,9,161,1,1,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,81,1,0, - 0,114,188,0,0,0,114,15,0,0,0,114,48,1,0,0, - 114,171,0,0,0,114,59,1,0,0,114,73,1,0,0,218, - 9,109,101,116,97,95,112,97,116,104,114,190,0,0,0,114, - 42,1,0,0,41,2,114,80,1,0,0,90,17,115,117,112, - 112,111,114,116,101,100,95,108,111,97,100,101,114,115,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,8,95, - 105,110,115,116,97,108,108,60,6,0,0,115,12,0,0,0, - 8,2,6,1,20,1,12,1,4,128,255,128,114,83,1,0, - 0,41,1,114,68,0,0,0,41,1,78,41,3,78,78,78, - 41,2,114,0,0,0,0,114,0,0,0,0,41,1,84,41, - 1,78,41,1,78,41,83,114,132,0,0,0,114,139,0,0, - 0,114,167,0,0,0,114,72,0,0,0,114,15,0,0,0, - 114,81,0,0,0,114,164,0,0,0,114,22,0,0,0,114, - 211,0,0,0,90,2,110,116,114,18,0,0,0,114,196,0, - 0,0,90,5,112,111,115,105,120,114,42,0,0,0,218,3, - 97,108,108,114,45,0,0,0,114,46,0,0,0,114,66,0, - 0,0,114,25,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,24, - 0,0,0,114,26,0,0,0,114,21,0,0,0,114,33,0, - 0,0,114,38,0,0,0,114,40,0,0,0,114,48,0,0, - 0,114,55,0,0,0,114,57,0,0,0,114,61,0,0,0, - 114,62,0,0,0,114,64,0,0,0,114,67,0,0,0,114, - 77,0,0,0,218,4,116,121,112,101,218,8,95,95,99,111, - 100,101,95,95,114,166,0,0,0,114,31,0,0,0,114,152, - 0,0,0,114,30,0,0,0,114,35,0,0,0,114,243,0, - 0,0,114,97,0,0,0,114,93,0,0,0,114,106,0,0, - 0,114,190,0,0,0,114,79,1,0,0,114,212,0,0,0, - 114,94,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,102,0,0,0, - 114,107,0,0,0,114,113,0,0,0,114,117,0,0,0,114, - 119,0,0,0,114,140,0,0,0,114,147,0,0,0,114,156, - 0,0,0,114,160,0,0,0,114,162,0,0,0,114,169,0, - 0,0,114,174,0,0,0,114,175,0,0,0,114,180,0,0, - 0,218,6,111,98,106,101,99,116,114,189,0,0,0,114,194, - 0,0,0,114,195,0,0,0,114,215,0,0,0,114,228,0, - 0,0,114,246,0,0,0,114,6,1,0,0,114,12,1,0, - 0,114,3,1,0,0,114,18,1,0,0,114,40,1,0,0, - 114,42,1,0,0,114,59,1,0,0,114,78,1,0,0,114, - 188,0,0,0,114,81,1,0,0,114,83,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, - 115,174,0,0,0,4,0,4,22,8,3,8,1,8,1,8, - 1,8,1,10,3,4,1,8,1,10,1,8,2,4,3,10, - 1,6,2,22,2,8,1,10,1,14,1,4,4,4,1,2, - 1,2,1,4,255,8,4,6,16,8,3,8,5,8,5,8, - 6,8,6,8,12,8,10,8,9,8,5,8,7,10,9,10, - 22,0,127,16,23,12,1,4,2,4,1,6,2,6,1,10, - 1,8,2,6,2,8,2,16,2,8,71,8,40,8,19,8, - 12,8,12,8,31,8,17,8,33,8,28,10,24,10,13,10, - 10,8,11,6,14,4,3,2,1,12,255,14,68,14,64,16, - 29,0,127,14,17,18,50,18,45,18,25,14,53,14,63,14, - 42,0,127,14,20,0,127,10,22,8,23,8,11,8,5,4, - 128,255,128, + 0,0,114,8,0,0,0,218,14,95,102,105,120,95,117,112, + 95,109,111,100,117,108,101,21,6,0,0,115,36,0,0,0, + 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, + 4,1,14,1,2,1,8,1,8,1,8,1,14,1,12,1, + 8,2,255,128,114,78,1,0,0,99,0,0,0,0,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,5,116,6,102, + 2,125,2,124,0,124,1,124,2,103,3,83,0,41,2,122, + 95,82,101,116,117,114,110,115,32,97,32,108,105,115,116,32, + 111,102,32,102,105,108,101,45,98,97,115,101,100,32,109,111, + 100,117,108,101,32,108,111,97,100,101,114,115,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, + 78,41,7,114,3,1,0,0,114,167,0,0,0,218,18,101, + 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101, + 115,114,6,1,0,0,114,106,0,0,0,114,12,1,0,0, + 114,94,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,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,188,0,0,0,44,6,0,0,115,10,0, + 0,0,12,5,8,1,8,1,10,1,255,128,114,188,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, + 0,97,0,100,0,83,0,114,114,0,0,0,41,1,114,139, + 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, + 112,95,109,111,100,117,108,101,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,21,95,115,101,116,95,98,111, + 111,116,115,116,114,97,112,95,109,111,100,117,108,101,55,6, + 0,0,115,4,0,0,0,8,2,255,128,114,81,1,0,0, + 99,1,0,0,0,0,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,1,161,1,1,0, + 116,2,106,7,160,8,116,9,161,1,1,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,81,1,0,0,114,188,0,0,0,114,15,0,0,0,114, + 48,1,0,0,114,171,0,0,0,114,59,1,0,0,114,73, + 1,0,0,218,9,109,101,116,97,95,112,97,116,104,114,190, + 0,0,0,114,42,1,0,0,41,2,114,80,1,0,0,90, + 17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, + 114,115,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,8,95,105,110,115,116,97,108,108,60,6,0,0,115, + 10,0,0,0,8,2,6,1,20,1,16,1,255,128,114,83, + 1,0,0,41,1,114,68,0,0,0,41,1,78,41,3,78, + 78,78,41,2,114,0,0,0,0,114,0,0,0,0,41,1, + 84,41,1,78,41,1,78,41,83,114,132,0,0,0,114,139, + 0,0,0,114,167,0,0,0,114,72,0,0,0,114,15,0, + 0,0,114,81,0,0,0,114,164,0,0,0,114,22,0,0, + 0,114,211,0,0,0,90,2,110,116,114,18,0,0,0,114, + 196,0,0,0,90,5,112,111,115,105,120,114,42,0,0,0, + 218,3,97,108,108,114,45,0,0,0,114,46,0,0,0,114, + 66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0,114,21,0,0,0,114, + 33,0,0,0,114,38,0,0,0,114,40,0,0,0,114,48, + 0,0,0,114,55,0,0,0,114,57,0,0,0,114,61,0, + 0,0,114,62,0,0,0,114,64,0,0,0,114,67,0,0, + 0,114,77,0,0,0,218,4,116,121,112,101,218,8,95,95, + 99,111,100,101,95,95,114,166,0,0,0,114,31,0,0,0, + 114,152,0,0,0,114,30,0,0,0,114,35,0,0,0,114, + 243,0,0,0,114,97,0,0,0,114,93,0,0,0,114,106, + 0,0,0,114,190,0,0,0,114,79,1,0,0,114,212,0, + 0,0,114,94,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,102,0, + 0,0,114,107,0,0,0,114,113,0,0,0,114,117,0,0, + 0,114,119,0,0,0,114,140,0,0,0,114,147,0,0,0, + 114,156,0,0,0,114,160,0,0,0,114,162,0,0,0,114, + 169,0,0,0,114,174,0,0,0,114,175,0,0,0,114,180, + 0,0,0,218,6,111,98,106,101,99,116,114,189,0,0,0, + 114,194,0,0,0,114,195,0,0,0,114,215,0,0,0,114, + 228,0,0,0,114,246,0,0,0,114,6,1,0,0,114,12, + 1,0,0,114,3,1,0,0,114,18,1,0,0,114,40,1, + 0,0,114,42,1,0,0,114,59,1,0,0,114,78,1,0, + 0,114,188,0,0,0,114,81,1,0,0,114,83,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, + 0,0,115,172,0,0,0,4,0,4,22,8,3,8,1,8, + 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, + 3,10,1,6,2,22,2,8,1,10,1,14,1,4,4,4, + 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, + 5,8,6,8,6,8,12,8,10,8,9,8,5,8,7,10, + 9,10,22,0,127,16,23,12,1,4,2,4,1,6,2,6, + 1,10,1,8,2,6,2,8,2,16,2,8,71,8,40,8, + 19,8,12,8,12,8,31,8,17,8,33,8,28,10,24,10, + 13,10,10,8,11,6,14,4,3,2,1,12,255,14,68,14, + 64,16,29,0,127,14,17,18,50,18,45,18,25,14,53,14, + 63,14,42,0,127,14,20,0,127,10,22,8,23,8,11,12, + 5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 87f787c84a404..79f9741b770fc 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -117,7 +117,7 @@ const unsigned char _Py_M__zipimport[] = { 97,109,101,32,111,102,32,116,104,101,10,32,32,32,32,122, 105,112,102,105,108,101,32,116,97,114,103,101,116,101,100,46, 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,9,0,0,0,67,0,0,0,115,28, + 0,0,8,0,0,0,9,0,0,0,67,0,0,0,115,32, 1,0,0,116,0,124,1,116,1,131,2,115,28,100,1,100, 0,108,2,125,2,124,2,160,3,124,1,161,1,125,1,124, 1,115,44,116,4,100,2,124,1,100,3,141,2,130,1,116, @@ -134,874 +134,874 @@ const unsigned char _Py_M__zipimport[] = { 1,131,1,125,7,124,7,116,15,124,1,60,0,89,0,110, 2,48,0,124,7,124,0,95,18,124,1,124,0,95,19,116, 8,106,20,124,3,100,0,100,0,100,7,133,3,25,0,142, - 0,124,0,95,21,124,0,106,21,144,1,114,24,124,0,4, - 0,106,21,116,7,55,0,2,0,95,21,100,0,83,0,41, - 8,78,114,0,0,0,0,122,21,97,114,99,104,105,118,101, - 32,112,97,116,104,32,105,115,32,101,109,112,116,121,169,1, - 218,4,112,97,116,104,122,14,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, - 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, - 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, - 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, - 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, - 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, - 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, - 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, - 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, - 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, - 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, - 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, - 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, - 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, - 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, - 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,13, - 0,0,0,114,17,0,0,0,114,31,0,0,0,90,2,115, - 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, - 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, - 105,116,95,95,63,0,0,0,115,60,0,0,0,10,1,8, - 1,10,1,4,1,12,1,4,1,12,1,4,2,2,2,14, - 1,16,1,14,3,8,1,12,1,4,1,16,1,14,3,12, - 2,2,3,12,1,12,1,8,1,14,1,6,1,6,1,22, - 2,8,1,14,1,4,128,255,128,122,20,122,105,112,105,109, - 112,111,114,116,101,114,46,95,95,105,110,105,116,95,95,78, - 99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,4,0,0,0,67,0,0,0,115,78,0,0,0,116,0, - 124,0,124,1,131,2,125,3,124,3,100,1,117,1,114,26, - 124,0,103,0,102,2,83,0,116,1,124,0,124,1,131,2, - 125,4,116,2,124,0,124,4,131,2,114,70,100,1,124,0, - 106,3,155,0,116,4,155,0,124,4,155,0,157,3,103,1, - 102,2,83,0,100,1,103,0,102,2,83,0,41,2,97,47, - 2,0,0,102,105,110,100,95,108,111,97,100,101,114,40,102, - 117,108,108,110,97,109,101,44,32,112,97,116,104,61,78,111, - 110,101,41,32,45,62,32,115,101,108,102,44,32,115,116,114, - 32,111,114,32,78,111,110,101,46,10,10,32,32,32,32,32, - 32,32,32,83,101,97,114,99,104,32,102,111,114,32,97,32, - 109,111,100,117,108,101,32,115,112,101,99,105,102,105,101,100, - 32,98,121,32,39,102,117,108,108,110,97,109,101,39,46,32, - 39,102,117,108,108,110,97,109,101,39,32,109,117,115,116,32, - 98,101,32,116,104,101,10,32,32,32,32,32,32,32,32,102, - 117,108,108,121,32,113,117,97,108,105,102,105,101,100,32,40, - 100,111,116,116,101,100,41,32,109,111,100,117,108,101,32,110, - 97,109,101,46,32,73,116,32,114,101,116,117,114,110,115,32, - 116,104,101,32,122,105,112,105,109,112,111,114,116,101,114,10, - 32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101, - 32,105,116,115,101,108,102,32,105,102,32,116,104,101,32,109, - 111,100,117,108,101,32,119,97,115,32,102,111,117,110,100,44, - 32,97,32,115,116,114,105,110,103,32,99,111,110,116,97,105, - 110,105,110,103,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,32,112,97,116,104,32,110,97,109,101,32, - 105,102,32,105,116,39,115,32,112,111,115,115,105,98,108,121, - 32,97,32,112,111,114,116,105,111,110,32,111,102,32,97,32, - 110,97,109,101,115,112,97,99,101,32,112,97,99,107,97,103, - 101,44,10,32,32,32,32,32,32,32,32,111,114,32,78,111, - 110,101,32,111,116,104,101,114,119,105,115,101,46,32,84,104, - 101,32,111,112,116,105,111,110,97,108,32,39,112,97,116,104, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, - 110,111,114,101,100,32,45,45,32,105,116,39,115,10,32,32, - 32,32,32,32,32,32,116,104,101,114,101,32,102,111,114,32, - 99,111,109,112,97,116,105,98,105,108,105,116,121,32,119,105, - 116,104,32,116,104,101,32,105,109,112,111,114,116,101,114,32, - 112,114,111,116,111,99,111,108,46,10,10,32,32,32,32,32, - 32,32,32,68,101,112,114,101,99,97,116,101,100,32,115,105, - 110,99,101,32,80,121,116,104,111,110,32,51,46,49,48,46, - 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,32,32,32,32,32,32, - 32,32,78,41,5,218,16,95,103,101,116,95,109,111,100,117, - 108,101,95,105,110,102,111,218,16,95,103,101,116,95,109,111, - 100,117,108,101,95,112,97,116,104,218,7,95,105,115,95,100, - 105,114,114,29,0,0,0,114,20,0,0,0,41,5,114,32, - 0,0,0,218,8,102,117,108,108,110,97,109,101,114,13,0, - 0,0,218,2,109,105,218,7,109,111,100,112,97,116,104,114, + 0,124,0,95,21,124,0,106,21,144,1,114,28,124,0,4, + 0,106,21,116,7,55,0,2,0,95,21,100,0,83,0,100, + 0,83,0,41,8,78,114,0,0,0,0,122,21,97,114,99, + 104,105,118,101,32,112,97,116,104,32,105,115,32,101,109,112, + 116,121,169,1,218,4,112,97,116,104,122,14,110,111,116,32, + 97,32,90,105,112,32,102,105,108,101,105,0,240,0,0,105, + 0,128,0,0,233,255,255,255,255,41,22,218,10,105,115,105, + 110,115,116,97,110,99,101,218,3,115,116,114,218,2,111,115, + 90,8,102,115,100,101,99,111,100,101,114,3,0,0,0,218, + 12,97,108,116,95,112,97,116,104,95,115,101,112,218,7,114, + 101,112,108,97,99,101,218,8,112,97,116,104,95,115,101,112, + 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, + 101,114,110,97,108,90,10,95,112,97,116,104,95,115,116,97, + 116,218,7,79,83,69,114,114,111,114,218,10,86,97,108,117, + 101,69,114,114,111,114,90,11,95,112,97,116,104,95,115,112, + 108,105,116,218,6,97,112,112,101,110,100,90,7,115,116,95, + 109,111,100,101,218,20,95,122,105,112,95,100,105,114,101,99, + 116,111,114,121,95,99,97,99,104,101,218,8,75,101,121,69, + 114,114,111,114,218,15,95,114,101,97,100,95,100,105,114,101, + 99,116,111,114,121,218,6,95,102,105,108,101,115,218,7,97, + 114,99,104,105,118,101,218,10,95,112,97,116,104,95,106,111, + 105,110,218,6,112,114,101,102,105,120,41,8,218,4,115,101, + 108,102,114,13,0,0,0,114,17,0,0,0,114,31,0,0, + 0,90,2,115,116,90,7,100,105,114,110,97,109,101,90,8, + 98,97,115,101,110,97,109,101,218,5,102,105,108,101,115,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, + 95,95,105,110,105,116,95,95,63,0,0,0,115,60,0,0, + 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, + 2,2,2,14,1,16,1,14,3,8,1,12,1,4,1,16, + 1,14,3,12,2,2,3,12,1,12,1,8,1,14,1,6, + 1,6,1,22,2,8,1,18,1,4,255,255,128,122,20,122, + 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, + 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,4,0,0,0,67,0,0,0,115,78,0, + 0,0,116,0,124,0,124,1,131,2,125,3,124,3,100,1, + 117,1,114,26,124,0,103,0,102,2,83,0,116,1,124,0, + 124,1,131,2,125,4,116,2,124,0,124,4,131,2,114,70, + 100,1,124,0,106,3,155,0,116,4,155,0,124,4,155,0, + 157,3,103,1,102,2,83,0,100,1,103,0,102,2,83,0, + 41,2,97,47,2,0,0,102,105,110,100,95,108,111,97,100, + 101,114,40,102,117,108,108,110,97,109,101,44,32,112,97,116, + 104,61,78,111,110,101,41,32,45,62,32,115,101,108,102,44, + 32,115,116,114,32,111,114,32,78,111,110,101,46,10,10,32, + 32,32,32,32,32,32,32,83,101,97,114,99,104,32,102,111, + 114,32,97,32,109,111,100,117,108,101,32,115,112,101,99,105, + 102,105,101,100,32,98,121,32,39,102,117,108,108,110,97,109, + 101,39,46,32,39,102,117,108,108,110,97,109,101,39,32,109, + 117,115,116,32,98,101,32,116,104,101,10,32,32,32,32,32, + 32,32,32,102,117,108,108,121,32,113,117,97,108,105,102,105, + 101,100,32,40,100,111,116,116,101,100,41,32,109,111,100,117, + 108,101,32,110,97,109,101,46,32,73,116,32,114,101,116,117, + 114,110,115,32,116,104,101,32,122,105,112,105,109,112,111,114, + 116,101,114,10,32,32,32,32,32,32,32,32,105,110,115,116, + 97,110,99,101,32,105,116,115,101,108,102,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,119,97,115,32,102,111, + 117,110,100,44,32,97,32,115,116,114,105,110,103,32,99,111, + 110,116,97,105,110,105,110,103,32,116,104,101,10,32,32,32, + 32,32,32,32,32,102,117,108,108,32,112,97,116,104,32,110, + 97,109,101,32,105,102,32,105,116,39,115,32,112,111,115,115, + 105,98,108,121,32,97,32,112,111,114,116,105,111,110,32,111, + 102,32,97,32,110,97,109,101,115,112,97,99,101,32,112,97, + 99,107,97,103,101,44,10,32,32,32,32,32,32,32,32,111, + 114,32,78,111,110,101,32,111,116,104,101,114,119,105,115,101, + 46,32,84,104,101,32,111,112,116,105,111,110,97,108,32,39, + 112,97,116,104,39,32,97,114,103,117,109,101,110,116,32,105, + 115,32,105,103,110,111,114,101,100,32,45,45,32,105,116,39, + 115,10,32,32,32,32,32,32,32,32,116,104,101,114,101,32, + 102,111,114,32,99,111,109,112,97,116,105,98,105,108,105,116, + 121,32,119,105,116,104,32,116,104,101,32,105,109,112,111,114, + 116,101,114,32,112,114,111,116,111,99,111,108,46,10,10,32, + 32,32,32,32,32,32,32,68,101,112,114,101,99,97,116,101, + 100,32,115,105,110,99,101,32,80,121,116,104,111,110,32,51, + 46,49,48,46,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,32,32, + 32,32,32,32,32,32,78,41,5,218,16,95,103,101,116,95, + 109,111,100,117,108,101,95,105,110,102,111,218,16,95,103,101, + 116,95,109,111,100,117,108,101,95,112,97,116,104,218,7,95, + 105,115,95,100,105,114,114,29,0,0,0,114,20,0,0,0, + 41,5,114,32,0,0,0,218,8,102,117,108,108,110,97,109, + 101,114,13,0,0,0,218,2,109,105,218,7,109,111,100,112, + 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,11,102,105,110,100,95,108,111,97,100,101,114,109, + 0,0,0,115,16,0,0,0,10,12,8,1,8,2,10,7, + 10,1,24,4,8,2,255,128,122,23,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,108,111,97,100,101, + 114,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,16,0,0,0,124, + 0,160,0,124,1,124,2,161,2,100,1,25,0,83,0,41, + 3,97,203,1,0,0,102,105,110,100,95,109,111,100,117,108, + 101,40,102,117,108,108,110,97,109,101,44,32,112,97,116,104, + 61,78,111,110,101,41,32,45,62,32,115,101,108,102,32,111, + 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, + 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, + 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, + 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, + 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, + 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, + 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, + 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, + 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, + 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, + 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,111, + 114,32,78,111,110,101,32,105,102,32,105,116,32,119,97,115, + 110,39,116,46,10,32,32,32,32,32,32,32,32,84,104,101, + 32,111,112,116,105,111,110,97,108,32,39,112,97,116,104,39, + 32,97,114,103,117,109,101,110,116,32,105,115,32,105,103,110, + 111,114,101,100,32,45,45,32,105,116,39,115,32,116,104,101, + 114,101,32,102,111,114,32,99,111,109,112,97,116,105,98,105, + 108,105,116,121,10,32,32,32,32,32,32,32,32,119,105,116, + 104,32,116,104,101,32,105,109,112,111,114,116,101,114,32,112, + 114,111,116,111,99,111,108,46,10,10,32,32,32,32,32,32, + 32,32,68,101,112,114,101,99,97,116,101,100,32,115,105,110, + 99,101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32, + 32,114,0,0,0,0,78,41,1,114,41,0,0,0,41,3, + 114,32,0,0,0,114,38,0,0,0,114,13,0,0,0,114, 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,11, - 102,105,110,100,95,108,111,97,100,101,114,109,0,0,0,115, - 16,0,0,0,10,12,8,1,8,2,10,7,10,1,24,4, - 8,2,255,128,122,23,122,105,112,105,109,112,111,114,116,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,99,3,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,67,0,0,0,115,16,0,0,0,124,0,160,0,124, - 1,124,2,161,2,100,1,25,0,83,0,41,3,97,203,1, - 0,0,102,105,110,100,95,109,111,100,117,108,101,40,102,117, - 108,108,110,97,109,101,44,32,112,97,116,104,61,78,111,110, - 101,41,32,45,62,32,115,101,108,102,32,111,114,32,78,111, - 110,101,46,10,10,32,32,32,32,32,32,32,32,83,101,97, - 114,99,104,32,102,111,114,32,97,32,109,111,100,117,108,101, + 102,105,110,100,95,109,111,100,117,108,101,143,0,0,0,115, + 4,0,0,0,16,11,255,128,122,23,122,105,112,105,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,3,0,0,0,0,0,0,0,0,0,0,0,7,0, + 0,0,5,0,0,0,67,0,0,0,115,108,0,0,0,116, + 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, + 34,116,1,106,2,124,1,124,0,124,3,100,2,141,3,83, + 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, + 4,131,2,114,104,124,0,106,5,155,0,116,6,155,0,124, + 4,155,0,157,3,125,5,116,1,106,7,124,1,100,1,100, + 3,100,4,141,3,125,6,124,6,106,8,160,9,124,5,161, + 1,1,0,124,6,83,0,100,1,83,0,41,5,122,107,67, + 114,101,97,116,101,32,97,32,77,111,100,117,108,101,83,112, + 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,115,32,78,111, + 110,101,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,99,97,110,110,111,116,32,98,101,32,102,111,117,110,100, + 46,10,32,32,32,32,32,32,32,32,78,41,1,218,10,105, + 115,95,112,97,99,107,97,103,101,84,41,3,218,4,110,97, + 109,101,90,6,108,111,97,100,101,114,114,43,0,0,0,41, + 10,114,35,0,0,0,218,10,95,98,111,111,116,115,116,114, + 97,112,90,16,115,112,101,99,95,102,114,111,109,95,108,111, + 97,100,101,114,114,36,0,0,0,114,37,0,0,0,114,29, + 0,0,0,114,20,0,0,0,90,10,77,111,100,117,108,101, + 83,112,101,99,90,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, + 114,24,0,0,0,41,7,114,32,0,0,0,114,38,0,0, + 0,90,6,116,97,114,103,101,116,90,11,109,111,100,117,108, + 101,95,105,110,102,111,114,40,0,0,0,114,13,0,0,0, + 90,4,115,112,101,99,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,9,102,105,110,100,95,115,112,101,99, + 156,0,0,0,115,26,0,0,0,10,5,8,1,16,1,10, + 7,10,1,18,4,8,1,2,1,6,255,12,2,4,1,4, + 2,255,128,122,21,122,105,112,105,109,112,111,114,116,101,114, + 46,102,105,110,100,95,115,112,101,99,99,2,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,67, + 0,0,0,115,20,0,0,0,116,0,124,0,124,1,131,2, + 92,3,125,2,125,3,125,4,124,2,83,0,41,2,122,163, + 103,101,116,95,99,111,100,101,40,102,117,108,108,110,97,109, + 101,41,32,45,62,32,99,111,100,101,32,111,98,106,101,99, + 116,46,10,10,32,32,32,32,32,32,32,32,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,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,46,32,82,97,105, + 115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,111, + 114,10,32,32,32,32,32,32,32,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,99,111,117,108,100,110,39,116, + 32,98,101,32,102,111,117,110,100,46,10,32,32,32,32,32, + 32,32,32,78,169,1,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,99,111,100,101,169,5,114,32,0,0,0,114, + 38,0,0,0,218,4,99,111,100,101,218,9,105,115,112,97, + 99,107,97,103,101,114,40,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,103,101,116,95,99, + 111,100,101,183,0,0,0,115,6,0,0,0,16,6,4,1, + 255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0,0,67,0,0, + 0,115,112,0,0,0,116,0,114,16,124,1,160,1,116,0, + 116,2,161,2,125,1,124,1,125,2,124,1,160,3,124,0, + 106,4,116,2,23,0,161,1,114,58,124,1,116,5,124,0, + 106,4,116,2,23,0,131,1,100,1,133,2,25,0,125,2, + 122,14,124,0,106,6,124,2,25,0,125,3,87,0,110,26, + 4,0,116,7,121,98,1,0,1,0,1,0,116,8,100,2, + 100,3,124,2,131,3,130,1,48,0,116,9,124,0,106,4, + 124,3,131,2,83,0,41,4,122,154,103,101,116,95,100,97, + 116,97,40,112,97,116,104,110,97,109,101,41,32,45,62,32, + 115,116,114,105,110,103,32,119,105,116,104,32,102,105,108,101, + 32,100,97,116,97,46,10,10,32,32,32,32,32,32,32,32, + 82,101,116,117,114,110,32,116,104,101,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 39,112,97,116,104,110,97,109,101,39,46,32,82,97,105,115, + 101,32,79,83,69,114,114,111,114,32,105,102,10,32,32,32, + 32,32,32,32,32,116,104,101,32,102,105,108,101,32,119,97, + 115,110,39,116,32,102,111,117,110,100,46,10,32,32,32,32, + 32,32,32,32,78,114,0,0,0,0,218,0,41,10,114,18, + 0,0,0,114,19,0,0,0,114,20,0,0,0,218,10,115, + 116,97,114,116,115,119,105,116,104,114,29,0,0,0,218,3, + 108,101,110,114,28,0,0,0,114,26,0,0,0,114,22,0, + 0,0,218,9,95,103,101,116,95,100,97,116,97,41,4,114, + 32,0,0,0,218,8,112,97,116,104,110,97,109,101,90,3, + 107,101,121,218,9,116,111,99,95,101,110,116,114,121,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,103, + 101,116,95,100,97,116,97,193,0,0,0,115,22,0,0,0, + 4,6,12,1,4,2,16,1,22,1,2,2,14,1,12,1, + 14,1,12,1,255,128,122,20,122,105,112,105,109,112,111,114, + 116,101,114,46,103,101,116,95,100,97,116,97,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, + 0,67,0,0,0,115,20,0,0,0,116,0,124,0,124,1, + 131,2,92,3,125,2,125,3,125,4,124,4,83,0,41,2, + 122,106,103,101,116,95,102,105,108,101,110,97,109,101,40,102, + 117,108,108,110,97,109,101,41,32,45,62,32,102,105,108,101, + 110,97,109,101,32,115,116,114,105,110,103,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, + 32,102,105,108,101,110,97,109,101,32,102,111,114,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,46,10,32,32,32,32,32,32,32,32,78,114,47,0, + 0,0,114,49,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,12,103,101,116,95,102,105,108,101, + 110,97,109,101,214,0,0,0,115,6,0,0,0,16,7,4, + 1,255,128,122,24,122,105,112,105,109,112,111,114,116,101,114, + 46,103,101,116,95,102,105,108,101,110,97,109,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, + 0,0,67,0,0,0,115,126,0,0,0,116,0,124,0,124, + 1,131,2,125,2,124,2,100,1,117,0,114,36,116,1,100, + 2,124,1,155,2,157,2,124,1,100,3,141,2,130,1,116, + 2,124,0,124,1,131,2,125,3,124,2,114,64,116,3,160, + 4,124,3,100,4,161,2,125,4,110,10,124,3,155,0,100, + 5,157,2,125,4,122,14,124,0,106,5,124,4,25,0,125, + 5,87,0,110,20,4,0,116,6,121,108,1,0,1,0,1, + 0,89,0,100,1,83,0,48,0,116,7,124,0,106,8,124, + 5,131,2,160,9,161,0,83,0,41,6,122,253,103,101,116, + 95,115,111,117,114,99,101,40,102,117,108,108,110,97,109,101, + 41,32,45,62,32,115,111,117,114,99,101,32,115,116,114,105, + 110,103,46,10,10,32,32,32,32,32,32,32,32,82,101,116, + 117,114,110,32,116,104,101,32,115,111,117,114,99,101,32,99, + 111,100,101,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,97, + 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, + 116,32,98,101,32,102,111,117,110,100,44,32,114,101,116,117, + 114,110,32,78,111,110,101,32,105,102,32,116,104,101,32,97, + 114,99,104,105,118,101,32,100,111,101,115,10,32,32,32,32, + 32,32,32,32,99,111,110,116,97,105,110,32,116,104,101,32, + 109,111,100,117,108,101,44,32,98,117,116,32,104,97,115,32, + 110,111,32,115,111,117,114,99,101,32,102,111,114,32,105,116, + 46,10,32,32,32,32,32,32,32,32,78,250,18,99,97,110, + 39,116,32,102,105,110,100,32,109,111,100,117,108,101,32,169, + 1,114,44,0,0,0,250,11,95,95,105,110,105,116,95,95, + 46,112,121,250,3,46,112,121,41,10,114,35,0,0,0,114, + 3,0,0,0,114,36,0,0,0,114,21,0,0,0,114,30, + 0,0,0,114,28,0,0,0,114,26,0,0,0,114,56,0, + 0,0,114,29,0,0,0,218,6,100,101,99,111,100,101,41, + 6,114,32,0,0,0,114,38,0,0,0,114,39,0,0,0, + 114,13,0,0,0,218,8,102,117,108,108,112,97,116,104,114, + 58,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,225, + 0,0,0,115,26,0,0,0,10,7,8,1,18,1,10,2, + 4,1,14,1,10,2,2,2,14,1,12,1,8,2,16,1, + 255,128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0,67, + 0,0,0,115,40,0,0,0,116,0,124,0,124,1,131,2, + 125,2,124,2,100,1,117,0,114,36,116,1,100,2,124,1, + 155,2,157,2,124,1,100,3,141,2,130,1,124,2,83,0, + 41,4,122,171,105,115,95,112,97,99,107,97,103,101,40,102, + 117,108,108,110,97,109,101,41,32,45,62,32,98,111,111,108, + 46,10,10,32,32,32,32,32,32,32,32,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, + 121,32,102,117,108,108,110,97,109,101,32,105,115,32,97,32, + 112,97,99,107,97,103,101,46,10,32,32,32,32,32,32,32, + 32,82,97,105,115,101,32,90,105,112,73,109,112,111,114,116, + 69,114,114,111,114,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, + 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,78, + 114,61,0,0,0,114,62,0,0,0,41,2,114,35,0,0, + 0,114,3,0,0,0,41,3,114,32,0,0,0,114,38,0, + 0,0,114,39,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,43,0,0,0,251,0,0,0,115, + 10,0,0,0,10,6,8,1,18,1,4,1,255,128,122,22, + 122,105,112,105,109,112,111,114,116,101,114,46,105,115,95,112, + 97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,8,0,0,0,8,0,0,0,67,0,0,0,115, + 236,0,0,0,116,0,124,0,124,1,131,2,92,3,125,2, + 125,3,125,4,116,1,106,2,160,3,124,1,161,1,125,5, + 124,5,100,1,117,0,115,46,116,4,124,5,116,5,131,2, + 115,64,116,5,124,1,131,1,125,5,124,5,116,1,106,2, + 124,1,60,0,124,0,124,5,95,6,122,84,124,3,114,108, + 116,7,124,0,124,1,131,2,125,6,116,8,160,9,124,0, + 106,10,124,6,161,2,125,7,124,7,103,1,124,5,95,11, + 116,12,124,5,100,2,131,2,115,124,116,13,124,5,95,13, + 116,8,160,14,124,5,106,15,124,1,124,4,161,3,1,0, + 116,16,124,2,124,5,106,15,131,2,1,0,87,0,110,16, + 1,0,1,0,1,0,116,1,106,2,124,1,61,0,130,0, + 122,14,116,1,106,2,124,1,25,0,125,5,87,0,110,30, + 4,0,116,17,121,216,1,0,1,0,1,0,116,18,100,3, + 124,1,155,2,100,4,157,3,131,1,130,1,48,0,116,19, + 160,20,100,5,124,1,124,4,161,3,1,0,124,5,83,0, + 41,6,97,55,1,0,0,108,111,97,100,95,109,111,100,117, + 108,101,40,102,117,108,108,110,97,109,101,41,32,45,62,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,76,111,97,100,32,116,104,101,32,109,111,100,117,108,101, 32,115,112,101,99,105,102,105,101,100,32,98,121,32,39,102, 117,108,108,110,97,109,101,39,46,32,39,102,117,108,108,110, 97,109,101,39,32,109,117,115,116,32,98,101,32,116,104,101, 10,32,32,32,32,32,32,32,32,102,117,108,108,121,32,113, 117,97,108,105,102,105,101,100,32,40,100,111,116,116,101,100, 41,32,109,111,100,117,108,101,32,110,97,109,101,46,32,73, - 116,32,114,101,116,117,114,110,115,32,116,104,101,32,122,105, - 112,105,109,112,111,114,116,101,114,10,32,32,32,32,32,32, - 32,32,105,110,115,116,97,110,99,101,32,105,116,115,101,108, - 102,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 119,97,115,32,102,111,117,110,100,44,32,111,114,32,78,111, - 110,101,32,105,102,32,105,116,32,119,97,115,110,39,116,46, - 10,32,32,32,32,32,32,32,32,84,104,101,32,111,112,116, - 105,111,110,97,108,32,39,112,97,116,104,39,32,97,114,103, - 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, - 32,45,45,32,105,116,39,115,32,116,104,101,114,101,32,102, - 111,114,32,99,111,109,112,97,116,105,98,105,108,105,116,121, - 10,32,32,32,32,32,32,32,32,119,105,116,104,32,116,104, - 101,32,105,109,112,111,114,116,101,114,32,112,114,111,116,111, - 99,111,108,46,10,10,32,32,32,32,32,32,32,32,68,101, - 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, - 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,114,0,0, - 0,0,78,41,1,114,41,0,0,0,41,3,114,32,0,0, - 0,114,38,0,0,0,114,13,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,11,102,105,110,100, - 95,109,111,100,117,108,101,143,0,0,0,115,4,0,0,0, - 16,11,255,128,122,23,122,105,112,105,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,3,0, - 0,0,0,0,0,0,0,0,0,0,7,0,0,0,5,0, - 0,0,67,0,0,0,115,108,0,0,0,116,0,124,0,124, - 1,131,2,125,3,124,3,100,1,117,1,114,34,116,1,106, - 2,124,1,124,0,124,3,100,2,141,3,83,0,116,3,124, - 0,124,1,131,2,125,4,116,4,124,0,124,4,131,2,114, - 104,124,0,106,5,155,0,116,6,155,0,124,4,155,0,157, - 3,125,5,116,1,106,7,124,1,100,1,100,3,100,4,141, - 3,125,6,124,6,106,8,160,9,124,5,161,1,1,0,124, - 6,83,0,100,1,83,0,41,5,122,107,67,114,101,97,116, - 101,32,97,32,77,111,100,117,108,101,83,112,101,99,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,82,101,116,117,114,110,115,32,78,111,110,101,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,97,110, - 110,111,116,32,98,101,32,102,111,117,110,100,46,10,32,32, - 32,32,32,32,32,32,78,41,1,218,10,105,115,95,112,97, - 99,107,97,103,101,84,41,3,218,4,110,97,109,101,90,6, - 108,111,97,100,101,114,114,43,0,0,0,41,10,114,35,0, - 0,0,218,10,95,98,111,111,116,115,116,114,97,112,90,16, - 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, - 114,36,0,0,0,114,37,0,0,0,114,29,0,0,0,114, - 20,0,0,0,90,10,77,111,100,117,108,101,83,112,101,99, - 90,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,114,24,0,0, - 0,41,7,114,32,0,0,0,114,38,0,0,0,90,6,116, - 97,114,103,101,116,90,11,109,111,100,117,108,101,95,105,110, - 102,111,114,40,0,0,0,114,13,0,0,0,90,4,115,112, - 101,99,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,9,102,105,110,100,95,115,112,101,99,156,0,0,0, - 115,26,0,0,0,10,5,8,1,16,1,10,7,10,1,18, - 4,8,1,2,1,6,255,12,2,4,1,4,2,255,128,122, - 21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, - 100,95,115,112,101,99,99,2,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,3,0,0,0,67,0,0,0,115, - 20,0,0,0,116,0,124,0,124,1,131,2,92,3,125,2, - 125,3,125,4,124,2,83,0,41,2,122,163,103,101,116,95, - 99,111,100,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,99,111,100,101,32,111,98,106,101,99,116,46,10,10, - 32,32,32,32,32,32,32,32,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,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,46,32,82,97,105,115,101,32,90, - 105,112,73,109,112,111,114,116,69,114,114,111,114,10,32,32, - 32,32,32,32,32,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, - 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,78, - 169,1,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 99,111,100,101,169,5,114,32,0,0,0,114,38,0,0,0, - 218,4,99,111,100,101,218,9,105,115,112,97,99,107,97,103, - 101,114,40,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,8,103,101,116,95,99,111,100,101,183, - 0,0,0,115,6,0,0,0,16,6,4,1,255,128,122,20, - 122,105,112,105,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,0,0,0, - 0,4,0,0,0,8,0,0,0,67,0,0,0,115,112,0, - 0,0,116,0,114,16,124,1,160,1,116,0,116,2,161,2, - 125,1,124,1,125,2,124,1,160,3,124,0,106,4,116,2, - 23,0,161,1,114,58,124,1,116,5,124,0,106,4,116,2, - 23,0,131,1,100,1,133,2,25,0,125,2,122,14,124,0, - 106,6,124,2,25,0,125,3,87,0,110,26,4,0,116,7, - 121,98,1,0,1,0,1,0,116,8,100,2,100,3,124,2, - 131,3,130,1,48,0,116,9,124,0,106,4,124,3,131,2, - 83,0,41,4,122,154,103,101,116,95,100,97,116,97,40,112, - 97,116,104,110,97,109,101,41,32,45,62,32,115,116,114,105, - 110,103,32,119,105,116,104,32,102,105,108,101,32,100,97,116, - 97,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, - 114,110,32,116,104,101,32,100,97,116,97,32,97,115,115,111, - 99,105,97,116,101,100,32,119,105,116,104,32,39,112,97,116, - 104,110,97,109,101,39,46,32,82,97,105,115,101,32,79,83, - 69,114,114,111,114,32,105,102,10,32,32,32,32,32,32,32, - 32,116,104,101,32,102,105,108,101,32,119,97,115,110,39,116, - 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, - 78,114,0,0,0,0,218,0,41,10,114,18,0,0,0,114, - 19,0,0,0,114,20,0,0,0,218,10,115,116,97,114,116, - 115,119,105,116,104,114,29,0,0,0,218,3,108,101,110,114, - 28,0,0,0,114,26,0,0,0,114,22,0,0,0,218,9, - 95,103,101,116,95,100,97,116,97,41,4,114,32,0,0,0, - 218,8,112,97,116,104,110,97,109,101,90,3,107,101,121,218, - 9,116,111,99,95,101,110,116,114,121,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,103,101,116,95,100, - 97,116,97,193,0,0,0,115,22,0,0,0,4,6,12,1, - 4,2,16,1,22,1,2,2,14,1,12,1,14,1,12,1, - 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, - 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,3,0,0,0,67,0,0, - 0,115,20,0,0,0,116,0,124,0,124,1,131,2,92,3, - 125,2,125,3,125,4,124,4,83,0,41,2,122,106,103,101, - 116,95,102,105,108,101,110,97,109,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,102,105,108,101,110,97,109,101, - 32,115,116,114,105,110,103,46,10,10,32,32,32,32,32,32, - 32,32,82,101,116,117,114,110,32,116,104,101,32,102,105,108, - 101,110,97,109,101,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,10, - 32,32,32,32,32,32,32,32,78,114,47,0,0,0,114,49, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,12,103,101,116,95,102,105,108,101,110,97,109,101, - 214,0,0,0,115,6,0,0,0,16,7,4,1,255,128,122, - 24,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, - 95,102,105,108,101,110,97,109,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0, - 0,0,115,126,0,0,0,116,0,124,0,124,1,131,2,125, - 2,124,2,100,1,117,0,114,36,116,1,100,2,124,1,155, - 2,157,2,124,1,100,3,141,2,130,1,116,2,124,0,124, - 1,131,2,125,3,124,2,114,64,116,3,160,4,124,3,100, - 4,161,2,125,4,110,10,124,3,155,0,100,5,157,2,125, - 4,122,14,124,0,106,5,124,4,25,0,125,5,87,0,110, - 20,4,0,116,6,121,108,1,0,1,0,1,0,89,0,100, - 1,83,0,48,0,116,7,124,0,106,8,124,5,131,2,160, - 9,161,0,83,0,41,6,122,253,103,101,116,95,115,111,117, - 114,99,101,40,102,117,108,108,110,97,109,101,41,32,45,62, - 32,115,111,117,114,99,101,32,115,116,114,105,110,103,46,10, - 10,32,32,32,32,32,32,32,32,82,101,116,117,114,110,32, - 116,104,101,32,115,111,117,114,99,101,32,99,111,100,101,32, - 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,46,32,82,97,105,115,101,32, - 90,105,112,73,109,112,111,114,116,69,114,114,111,114,10,32, - 32,32,32,32,32,32,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,99,111,117,108,100,110,39,116,32,98,101, - 32,102,111,117,110,100,44,32,114,101,116,117,114,110,32,78, - 111,110,101,32,105,102,32,116,104,101,32,97,114,99,104,105, - 118,101,32,100,111,101,115,10,32,32,32,32,32,32,32,32, - 99,111,110,116,97,105,110,32,116,104,101,32,109,111,100,117, - 108,101,44,32,98,117,116,32,104,97,115,32,110,111,32,115, - 111,117,114,99,101,32,102,111,114,32,105,116,46,10,32,32, - 32,32,32,32,32,32,78,250,18,99,97,110,39,116,32,102, - 105,110,100,32,109,111,100,117,108,101,32,169,1,114,44,0, - 0,0,250,11,95,95,105,110,105,116,95,95,46,112,121,250, - 3,46,112,121,41,10,114,35,0,0,0,114,3,0,0,0, - 114,36,0,0,0,114,21,0,0,0,114,30,0,0,0,114, - 28,0,0,0,114,26,0,0,0,114,56,0,0,0,114,29, - 0,0,0,218,6,100,101,99,111,100,101,41,6,114,32,0, - 0,0,114,38,0,0,0,114,39,0,0,0,114,13,0,0, - 0,218,8,102,117,108,108,112,97,116,104,114,58,0,0,0, + 116,32,114,101,116,117,114,110,115,32,116,104,101,32,105,109, + 112,111,114,116,101,100,10,32,32,32,32,32,32,32,32,109, + 111,100,117,108,101,44,32,111,114,32,114,97,105,115,101,115, + 32,90,105,112,73,109,112,111,114,116,69,114,114,111,114,32, + 105,102,32,105,116,32,119,97,115,110,39,116,32,102,111,117, + 110,100,46,10,10,32,32,32,32,32,32,32,32,68,101,112, + 114,101,99,97,116,101,100,32,115,105,110,99,101,32,80,121, + 116,104,111,110,32,51,46,49,48,46,32,117,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,32,32,32,32,32,32,32,32,78,218, + 12,95,95,98,117,105,108,116,105,110,115,95,95,122,14,76, + 111,97,100,101,100,32,109,111,100,117,108,101,32,122,25,32, + 110,111,116,32,102,111,117,110,100,32,105,110,32,115,121,115, + 46,109,111,100,117,108,101,115,122,30,105,109,112,111,114,116, + 32,123,125,32,35,32,108,111,97,100,101,100,32,102,114,111, + 109,32,90,105,112,32,123,125,41,21,114,48,0,0,0,218, + 3,115,121,115,218,7,109,111,100,117,108,101,115,218,3,103, + 101,116,114,15,0,0,0,218,12,95,109,111,100,117,108,101, + 95,116,121,112,101,218,10,95,95,108,111,97,100,101,114,95, + 95,114,36,0,0,0,114,21,0,0,0,114,30,0,0,0, + 114,29,0,0,0,90,8,95,95,112,97,116,104,95,95,218, + 7,104,97,115,97,116,116,114,114,68,0,0,0,90,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,218,8,95, + 95,100,105,99,116,95,95,218,4,101,120,101,99,114,26,0, + 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,114, + 45,0,0,0,218,16,95,118,101,114,98,111,115,101,95,109, + 101,115,115,97,103,101,41,8,114,32,0,0,0,114,38,0, + 0,0,114,50,0,0,0,114,51,0,0,0,114,40,0,0, + 0,90,3,109,111,100,114,13,0,0,0,114,66,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,225,0,0,0,115, - 26,0,0,0,10,7,8,1,18,1,10,2,4,1,14,1, - 10,2,2,2,14,1,12,1,8,2,16,1,255,128,122,22, - 122,105,112,105,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,0, - 0,0,0,3,0,0,0,4,0,0,0,67,0,0,0,115, - 40,0,0,0,116,0,124,0,124,1,131,2,125,2,124,2, - 100,1,117,0,114,36,116,1,100,2,124,1,155,2,157,2, - 124,1,100,3,141,2,130,1,124,2,83,0,41,4,122,171, - 105,115,95,112,97,99,107,97,103,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,98,111,111,108,46,10,10,32, - 32,32,32,32,32,32,32,82,101,116,117,114,110,32,84,114, - 117,101,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,115,112,101,99,105,102,105,101,100,32,98,121,32,102,117, - 108,108,110,97,109,101,32,105,115,32,97,32,112,97,99,107, - 97,103,101,46,10,32,32,32,32,32,32,32,32,82,97,105, - 115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,111, - 114,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,110, - 100,46,10,32,32,32,32,32,32,32,32,78,114,61,0,0, - 0,114,62,0,0,0,41,2,114,35,0,0,0,114,3,0, - 0,0,41,3,114,32,0,0,0,114,38,0,0,0,114,39, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,43,0,0,0,251,0,0,0,115,10,0,0,0, - 10,6,8,1,18,1,4,1,255,128,122,22,122,105,112,105, - 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, - 103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,8,0,0,0,67,0,0,0,115,236,0,0,0, - 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, - 116,1,106,2,160,3,124,1,161,1,125,5,124,5,100,1, - 117,0,115,46,116,4,124,5,116,5,131,2,115,64,116,5, - 124,1,131,1,125,5,124,5,116,1,106,2,124,1,60,0, - 124,0,124,5,95,6,122,84,124,3,114,108,116,7,124,0, - 124,1,131,2,125,6,116,8,160,9,124,0,106,10,124,6, - 161,2,125,7,124,7,103,1,124,5,95,11,116,12,124,5, - 100,2,131,2,115,124,116,13,124,5,95,13,116,8,160,14, - 124,5,106,15,124,1,124,4,161,3,1,0,116,16,124,2, - 124,5,106,15,131,2,1,0,87,0,110,16,1,0,1,0, - 1,0,116,1,106,2,124,1,61,0,130,0,122,14,116,1, - 106,2,124,1,25,0,125,5,87,0,110,30,4,0,116,17, - 121,216,1,0,1,0,1,0,116,18,100,3,124,1,155,2, - 100,4,157,3,131,1,130,1,48,0,116,19,160,20,100,5, - 124,1,124,4,161,3,1,0,124,5,83,0,41,6,97,55, - 1,0,0,108,111,97,100,95,109,111,100,117,108,101,40,102, - 117,108,108,110,97,109,101,41,32,45,62,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,76,111,97, - 100,32,116,104,101,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, - 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, - 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, - 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, - 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, - 116,117,114,110,115,32,116,104,101,32,105,109,112,111,114,116, - 101,100,10,32,32,32,32,32,32,32,32,109,111,100,117,108, - 101,44,32,111,114,32,114,97,105,115,101,115,32,90,105,112, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,105, - 116,32,119,97,115,110,39,116,32,102,111,117,110,100,46,10, - 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, - 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, - 32,51,46,49,48,46,32,117,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,32,32,32,32,32,32,32,32,78,218,12,95,95,98, - 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, - 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, - 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, - 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, - 112,32,123,125,41,21,114,48,0,0,0,218,3,115,121,115, - 218,7,109,111,100,117,108,101,115,218,3,103,101,116,114,15, - 0,0,0,218,12,95,109,111,100,117,108,101,95,116,121,112, - 101,218,10,95,95,108,111,97,100,101,114,95,95,114,36,0, - 0,0,114,21,0,0,0,114,30,0,0,0,114,29,0,0, - 0,90,8,95,95,112,97,116,104,95,95,218,7,104,97,115, - 97,116,116,114,114,68,0,0,0,90,14,95,102,105,120,95, - 117,112,95,109,111,100,117,108,101,218,8,95,95,100,105,99, - 116,95,95,218,4,101,120,101,99,114,26,0,0,0,218,11, - 73,109,112,111,114,116,69,114,114,111,114,114,45,0,0,0, - 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, - 103,101,41,8,114,32,0,0,0,114,38,0,0,0,114,50, - 0,0,0,114,51,0,0,0,114,40,0,0,0,90,3,109, - 111,100,114,13,0,0,0,114,66,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,11,108,111,97, - 100,95,109,111,100,117,108,101,8,1,0,0,115,50,0,0, - 0,16,9,12,1,18,1,8,1,10,1,6,1,2,2,4, - 1,10,3,14,1,8,1,10,2,6,1,16,1,16,1,6, - 1,8,1,2,1,2,2,14,1,12,1,18,1,14,1,4, - 1,255,128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0, - 0,67,0,0,0,115,64,0,0,0,122,20,124,0,160,0, - 124,1,161,1,115,18,87,0,100,1,83,0,87,0,110,20, - 4,0,116,1,121,40,1,0,1,0,1,0,89,0,100,1, - 83,0,48,0,100,2,100,3,108,2,109,3,125,2,1,0, - 124,2,124,0,124,1,131,2,83,0,41,4,122,204,82,101, - 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, - 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, - 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, - 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, - 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, - 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, - 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, - 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, - 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, - 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, - 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, - 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, - 43,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, - 116,108,105,98,46,114,101,97,100,101,114,115,114,80,0,0, - 0,41,3,114,32,0,0,0,114,38,0,0,0,114,80,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95, - 114,101,97,100,101,114,48,1,0,0,115,16,0,0,0,2, - 6,10,1,10,1,12,1,8,1,12,1,10,1,255,128,122, - 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, - 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,5,0,0,0,67,0,0,0,115,24,0,0,0,100,1, - 124,0,106,0,155,0,116,1,155,0,124,0,106,2,155,0, - 100,2,157,5,83,0,41,3,78,122,21,60,122,105,112,105, - 109,112,111,114,116,101,114,32,111,98,106,101,99,116,32,34, - 122,2,34,62,41,3,114,29,0,0,0,114,20,0,0,0, - 114,31,0,0,0,41,1,114,32,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,8,95,95,114, - 101,112,114,95,95,63,1,0,0,115,4,0,0,0,24,1, - 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, - 95,95,114,101,112,114,95,95,41,1,78,41,1,78,41,1, - 78,41,16,114,6,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,7,95,95,100,111,99,95,95,114,34,0,0,0, - 114,41,0,0,0,114,42,0,0,0,114,46,0,0,0,114, - 52,0,0,0,114,59,0,0,0,114,60,0,0,0,114,67, - 0,0,0,114,43,0,0,0,114,79,0,0,0,114,81,0, - 0,0,114,82,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,4,0,0,0, - 45,0,0,0,115,30,0,0,0,8,0,4,1,8,17,10, - 46,10,34,10,13,8,27,8,10,8,21,8,11,8,26,8, - 13,8,40,12,15,255,128,122,12,95,95,105,110,105,116,95, - 95,46,112,121,99,84,114,63,0,0,0,70,41,3,122,4, - 46,112,121,99,84,70,41,3,114,64,0,0,0,70,70,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,67,0,0,0,115,20,0,0,0,124,0,106, - 0,124,1,160,1,100,1,161,1,100,2,25,0,23,0,83, - 0,41,3,78,218,1,46,233,2,0,0,0,41,2,114,31, - 0,0,0,218,10,114,112,97,114,116,105,116,105,111,110,41, - 2,114,32,0,0,0,114,38,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,36,0,0,0,81, - 1,0,0,115,4,0,0,0,20,1,255,128,114,36,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,2,0,0,0,67,0,0,0,115,18,0,0,0,124, - 1,116,0,23,0,125,2,124,2,124,0,106,1,118,0,83, - 0,169,1,78,41,2,114,20,0,0,0,114,28,0,0,0, - 41,3,114,32,0,0,0,114,13,0,0,0,90,7,100,105, - 114,112,97,116,104,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,114,37,0,0,0,85,1,0,0,115,6,0, - 0,0,8,4,10,2,255,128,114,37,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,0, - 0,0,67,0,0,0,115,54,0,0,0,116,0,124,0,124, - 1,131,2,125,2,116,1,68,0,93,34,92,3,125,3,125, - 4,125,5,124,2,124,3,23,0,125,6,124,6,124,0,106, - 2,118,0,114,14,124,5,2,0,1,0,83,0,100,0,83, - 0,114,87,0,0,0,41,3,114,36,0,0,0,218,16,95, - 122,105,112,95,115,101,97,114,99,104,111,114,100,101,114,114, - 28,0,0,0,41,7,114,32,0,0,0,114,38,0,0,0, - 114,13,0,0,0,218,6,115,117,102,102,105,120,218,10,105, - 115,98,121,116,101,99,111,100,101,114,51,0,0,0,114,66, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,35,0,0,0,94,1,0,0,115,14,0,0,0, - 10,1,14,1,8,1,10,1,8,1,4,1,255,128,114,35, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 26,0,0,0,9,0,0,0,67,0,0,0,115,230,4,0, - 0,122,14,116,0,160,1,124,0,161,1,125,1,87,0,110, - 32,4,0,116,2,121,46,1,0,1,0,1,0,116,3,100, - 1,124,0,155,2,157,2,124,0,100,2,141,2,130,1,48, - 0,124,1,144,4,143,140,1,0,122,36,124,1,160,4,116, - 5,11,0,100,3,161,2,1,0,124,1,160,6,161,0,125, - 2,124,1,160,7,116,5,161,1,125,3,87,0,110,32,4, - 0,116,2,121,124,1,0,1,0,1,0,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,48,0,116, - 8,124,3,131,1,116,5,107,3,114,156,116,3,100,4,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,3,100, - 0,100,5,133,2,25,0,116,9,107,3,144,1,114,154,122, - 24,124,1,160,4,100,6,100,3,161,2,1,0,124,1,160, - 6,161,0,125,4,87,0,110,32,4,0,116,2,121,230,1, - 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,48,0,116,10,124,4,116,11,24, - 0,116,5,24,0,100,6,131,2,125,5,122,22,124,1,160, - 4,124,5,161,1,1,0,124,1,160,7,161,0,125,6,87, - 0,110,34,4,0,116,2,144,1,121,50,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,48,0,124,6,160,12,116,9,161,1,125,7,124, - 7,100,6,107,0,144,1,114,90,116,3,100,7,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,6,124,7,124, - 7,116,5,23,0,133,2,25,0,125,3,116,8,124,3,131, - 1,116,5,107,3,144,1,114,138,116,3,100,8,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,4,116,8,124, - 6,131,1,24,0,124,7,23,0,125,2,116,13,124,3,100, - 9,100,10,133,2,25,0,131,1,125,8,116,13,124,3,100, - 10,100,11,133,2,25,0,131,1,125,9,124,2,124,8,107, - 0,144,1,114,214,116,3,100,12,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,2,124,9,107,0,144,1,114, - 242,116,3,100,13,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,2,124,8,56,0,125,2,124,2,124,9,24, - 0,125,10,124,10,100,6,107,0,144,2,114,30,116,3,100, - 14,124,0,155,2,157,2,124,0,100,2,141,2,130,1,105, - 0,125,11,100,6,125,12,122,14,124,1,160,4,124,2,161, - 1,1,0,87,0,110,34,4,0,116,2,144,2,121,86,1, + 11,108,111,97,100,95,109,111,100,117,108,101,8,1,0,0, + 115,50,0,0,0,16,9,12,1,18,1,8,1,10,1,6, + 1,2,2,4,1,10,3,14,1,8,1,10,2,6,1,16, + 1,16,1,6,1,8,1,2,1,2,2,14,1,12,1,18, + 1,14,1,4,1,255,128,122,23,122,105,112,105,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,0,0,0,0,3,0,0, + 0,8,0,0,0,67,0,0,0,115,64,0,0,0,122,20, + 124,0,160,0,124,1,161,1,115,18,87,0,100,1,83,0, + 87,0,110,20,4,0,116,1,121,40,1,0,1,0,1,0, + 89,0,100,1,83,0,48,0,100,2,100,3,108,2,109,3, + 125,2,1,0,124,2,124,0,124,1,131,2,83,0,41,4, + 122,204,82,101,116,117,114,110,32,116,104,101,32,82,101,115, + 111,117,114,99,101,82,101,97,100,101,114,32,102,111,114,32, + 97,32,112,97,99,107,97,103,101,32,105,110,32,97,32,122, + 105,112,32,102,105,108,101,46,10,10,32,32,32,32,32,32, + 32,32,73,102,32,39,102,117,108,108,110,97,109,101,39,32, + 105,115,32,97,32,112,97,99,107,97,103,101,32,119,105,116, + 104,105,110,32,116,104,101,32,122,105,112,32,102,105,108,101, + 44,32,114,101,116,117,114,110,32,116,104,101,10,32,32,32, + 32,32,32,32,32,39,82,101,115,111,117,114,99,101,82,101, + 97,100,101,114,39,32,111,98,106,101,99,116,32,102,111,114, + 32,116,104,101,32,112,97,99,107,97,103,101,46,32,32,79, + 116,104,101,114,119,105,115,101,32,114,101,116,117,114,110,32, + 78,111,110,101,46,10,32,32,32,32,32,32,32,32,78,114, + 0,0,0,0,41,1,218,9,90,105,112,82,101,97,100,101, + 114,41,4,114,43,0,0,0,114,3,0,0,0,90,17,105, + 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, + 114,80,0,0,0,41,3,114,32,0,0,0,114,38,0,0, + 0,114,80,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,19,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,48,1,0,0,115,16, + 0,0,0,2,6,10,1,10,1,12,1,8,1,12,1,10, + 1,255,128,122,31,122,105,112,105,109,112,111,114,116,101,114, + 46,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,5,0,0,0,67,0,0,0,115,24,0, + 0,0,100,1,124,0,106,0,155,0,116,1,155,0,124,0, + 106,2,155,0,100,2,157,5,83,0,41,3,78,122,21,60, + 122,105,112,105,109,112,111,114,116,101,114,32,111,98,106,101, + 99,116,32,34,122,2,34,62,41,3,114,29,0,0,0,114, + 20,0,0,0,114,31,0,0,0,41,1,114,32,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 8,95,95,114,101,112,114,95,95,63,1,0,0,115,4,0, + 0,0,24,1,255,128,122,20,122,105,112,105,109,112,111,114, + 116,101,114,46,95,95,114,101,112,114,95,95,41,1,78,41, + 1,78,41,1,78,41,16,114,6,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,7,95,95,100,111,99,95,95,114, + 34,0,0,0,114,41,0,0,0,114,42,0,0,0,114,46, + 0,0,0,114,52,0,0,0,114,59,0,0,0,114,60,0, + 0,0,114,67,0,0,0,114,43,0,0,0,114,79,0,0, + 0,114,81,0,0,0,114,82,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,114, + 4,0,0,0,45,0,0,0,115,30,0,0,0,8,0,4, + 1,8,17,10,46,10,34,10,13,8,27,8,10,8,21,8, + 11,8,26,8,13,8,40,12,15,255,128,122,12,95,95,105, + 110,105,116,95,95,46,112,121,99,84,114,63,0,0,0,70, + 41,3,122,4,46,112,121,99,84,70,41,3,114,64,0,0, + 0,70,70,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,67,0,0,0,115,20,0,0, + 0,124,0,106,0,124,1,160,1,100,1,161,1,100,2,25, + 0,23,0,83,0,41,3,78,218,1,46,233,2,0,0,0, + 41,2,114,31,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,41,2,114,32,0,0,0,114,38,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,36, + 0,0,0,81,1,0,0,115,4,0,0,0,20,1,255,128, + 114,36,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,18, + 0,0,0,124,1,116,0,23,0,125,2,124,2,124,0,106, + 1,118,0,83,0,169,1,78,41,2,114,20,0,0,0,114, + 28,0,0,0,41,3,114,32,0,0,0,114,13,0,0,0, + 90,7,100,105,114,112,97,116,104,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,37,0,0,0,85,1,0, + 0,115,6,0,0,0,8,4,10,2,255,128,114,37,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,7,0, + 0,0,4,0,0,0,67,0,0,0,115,54,0,0,0,116, + 0,124,0,124,1,131,2,125,2,116,1,68,0,93,34,92, + 3,125,3,125,4,125,5,124,2,124,3,23,0,125,6,124, + 6,124,0,106,2,118,0,114,14,124,5,2,0,1,0,83, + 0,100,0,83,0,114,87,0,0,0,41,3,114,36,0,0, + 0,218,16,95,122,105,112,95,115,101,97,114,99,104,111,114, + 100,101,114,114,28,0,0,0,41,7,114,32,0,0,0,114, + 38,0,0,0,114,13,0,0,0,218,6,115,117,102,102,105, + 120,218,10,105,115,98,121,116,101,99,111,100,101,114,51,0, + 0,0,114,66,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,35,0,0,0,94,1,0,0,115, + 14,0,0,0,10,1,14,1,8,1,10,1,8,1,4,1, + 255,128,114,35,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,26,0,0,0,9,0,0,0,67,0,0,0, + 115,230,4,0,0,122,14,116,0,160,1,124,0,161,1,125, + 1,87,0,110,32,4,0,116,2,121,46,1,0,1,0,1, + 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,48,0,124,1,144,4,143,140,1,0,122,36,124, + 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, + 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,87, + 0,110,32,4,0,116,2,121,124,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,48,0,116,8,124,3,131,1,116,5,107,3,114,156,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,3,100,0,100,5,133,2,25,0,116,9,107,3,144, + 1,114,154,122,24,124,1,160,4,100,6,100,3,161,2,1, + 0,124,1,160,6,161,0,125,4,87,0,110,32,4,0,116, + 2,121,230,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,48,0,116,10,124, + 4,116,11,24,0,116,5,24,0,100,6,131,2,125,5,122, + 22,124,1,160,4,124,5,161,1,1,0,124,1,160,7,161, + 0,125,6,87,0,110,34,4,0,116,2,144,1,121,50,1, 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,48,0,124,1,160,7,100,15,161, - 1,125,3,116,8,124,3,131,1,100,5,107,0,144,2,114, - 120,116,14,100,16,131,1,130,1,124,3,100,0,100,5,133, - 2,25,0,100,17,107,3,144,2,114,142,144,4,113,180,116, - 8,124,3,131,1,100,15,107,3,144,2,114,164,116,14,100, - 16,131,1,130,1,116,15,124,3,100,18,100,19,133,2,25, - 0,131,1,125,13,116,15,124,3,100,19,100,9,133,2,25, - 0,131,1,125,14,116,15,124,3,100,9,100,20,133,2,25, - 0,131,1,125,15,116,15,124,3,100,20,100,10,133,2,25, - 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, - 0,131,1,125,17,116,13,124,3,100,11,100,21,133,2,25, - 0,131,1,125,18,116,13,124,3,100,21,100,22,133,2,25, - 0,131,1,125,4,116,15,124,3,100,22,100,23,133,2,25, - 0,131,1,125,19,116,15,124,3,100,23,100,24,133,2,25, - 0,131,1,125,20,116,15,124,3,100,24,100,25,133,2,25, - 0,131,1,125,21,116,13,124,3,100,26,100,15,133,2,25, - 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, - 8,124,22,124,9,107,4,144,3,114,124,116,3,100,27,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, - 10,55,0,125,22,122,14,124,1,160,7,124,19,161,1,125, - 23,87,0,110,34,4,0,116,2,144,3,121,180,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,48,0,116,8,124,23,131,1,124,19,107, - 3,144,3,114,214,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,122,50,116,8,124,1,160,7,124, - 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, - 3,144,4,114,6,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,87,0,110,34,4,0,116,2,144, - 4,121,42,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,48,0,124,13,100, - 28,64,0,144,4,114,64,124,23,160,16,161,0,125,23,110, - 52,122,14,124,23,160,16,100,29,161,1,125,23,87,0,110, - 36,4,0,116,17,144,4,121,114,1,0,1,0,1,0,124, - 23,160,16,100,30,161,1,160,18,116,19,161,1,125,23,89, - 0,110,2,48,0,124,23,160,20,100,31,116,21,161,2,125, - 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, - 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, - 25,124,25,124,11,124,23,60,0,124,12,100,32,55,0,125, - 12,144,2,113,88,87,0,100,0,4,0,4,0,131,3,1, - 0,110,18,49,0,144,4,115,202,48,0,1,0,1,0,1, - 0,89,0,1,0,116,24,160,25,100,33,124,12,124,0,161, - 3,1,0,124,11,83,0,41,34,78,122,21,99,97,110,39, - 116,32,111,112,101,110,32,90,105,112,32,102,105,108,101,58, - 32,114,12,0,0,0,114,85,0,0,0,250,21,99,97,110, - 39,116,32,114,101,97,100,32,90,105,112,32,102,105,108,101, - 58,32,233,4,0,0,0,114,0,0,0,0,122,16,110,111, - 116,32,97,32,90,105,112,32,102,105,108,101,58,32,122,18, - 99,111,114,114,117,112,116,32,90,105,112,32,102,105,108,101, - 58,32,233,12,0,0,0,233,16,0,0,0,233,20,0,0, - 0,122,28,98,97,100,32,99,101,110,116,114,97,108,32,100, - 105,114,101,99,116,111,114,121,32,115,105,122,101,58,32,122, - 30,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, - 101,99,116,111,114,121,32,111,102,102,115,101,116,58,32,122, - 38,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, - 101,99,116,111,114,121,32,115,105,122,101,32,111,114,32,111, - 102,102,115,101,116,58,32,233,46,0,0,0,250,27,69,79, - 70,32,114,101,97,100,32,119,104,101,114,101,32,110,111,116, - 32,101,120,112,101,99,116,101,100,115,4,0,0,0,80,75, - 1,2,233,8,0,0,0,233,10,0,0,0,233,14,0,0, - 0,233,24,0,0,0,233,28,0,0,0,233,30,0,0,0, - 233,32,0,0,0,233,34,0,0,0,233,42,0,0,0,122, - 25,98,97,100,32,108,111,99,97,108,32,104,101,97,100,101, - 114,32,111,102,102,115,101,116,58,32,105,0,8,0,0,218, - 5,97,115,99,105,105,90,6,108,97,116,105,110,49,250,1, - 47,114,5,0,0,0,122,33,122,105,112,105,109,112,111,114, - 116,58,32,102,111,117,110,100,32,123,125,32,110,97,109,101, - 115,32,105,110,32,123,33,114,125,41,26,218,3,95,105,111, - 218,9,111,112,101,110,95,99,111,100,101,114,22,0,0,0, - 114,3,0,0,0,218,4,115,101,101,107,218,20,69,78,68, - 95,67,69,78,84,82,65,76,95,68,73,82,95,83,73,90, - 69,90,4,116,101,108,108,218,4,114,101,97,100,114,55,0, - 0,0,218,18,83,84,82,73,78,71,95,69,78,68,95,65, - 82,67,72,73,86,69,218,3,109,97,120,218,15,77,65,88, - 95,67,79,77,77,69,78,84,95,76,69,78,218,5,114,102, - 105,110,100,114,2,0,0,0,218,8,69,79,70,69,114,114, - 111,114,114,1,0,0,0,114,65,0,0,0,218,18,85,110, - 105,99,111,100,101,68,101,99,111,100,101,69,114,114,111,114, - 218,9,116,114,97,110,115,108,97,116,101,218,11,99,112,52, - 51,55,95,116,97,98,108,101,114,19,0,0,0,114,20,0, - 0,0,114,21,0,0,0,114,30,0,0,0,114,45,0,0, - 0,114,78,0,0,0,41,26,114,29,0,0,0,218,2,102, - 112,90,15,104,101,97,100,101,114,95,112,111,115,105,116,105, - 111,110,218,6,98,117,102,102,101,114,218,9,102,105,108,101, - 95,115,105,122,101,90,17,109,97,120,95,99,111,109,109,101, - 110,116,95,115,116,97,114,116,218,4,100,97,116,97,90,3, - 112,111,115,218,11,104,101,97,100,101,114,95,115,105,122,101, - 90,13,104,101,97,100,101,114,95,111,102,102,115,101,116,90, - 10,97,114,99,95,111,102,102,115,101,116,114,33,0,0,0, - 218,5,99,111,117,110,116,218,5,102,108,97,103,115,218,8, - 99,111,109,112,114,101,115,115,218,4,116,105,109,101,218,4, - 100,97,116,101,218,3,99,114,99,218,9,100,97,116,97,95, - 115,105,122,101,218,9,110,97,109,101,95,115,105,122,101,218, - 10,101,120,116,114,97,95,115,105,122,101,90,12,99,111,109, - 109,101,110,116,95,115,105,122,101,218,11,102,105,108,101,95, - 111,102,102,115,101,116,114,44,0,0,0,114,13,0,0,0, - 218,1,116,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,27,0,0,0,125,1,0,0,115,214,0,0,0, - 2,1,14,1,12,1,20,1,8,2,2,1,14,1,8,1, - 14,1,12,1,20,1,12,1,18,1,18,1,2,3,12,1, - 12,1,12,1,10,1,2,1,8,255,8,2,2,1,2,255, - 2,1,4,255,2,2,10,1,12,1,14,1,10,1,2,1, - 8,255,10,2,10,1,10,1,2,1,6,255,16,2,14,1, - 10,1,2,1,6,255,16,2,16,2,16,1,10,1,18,1, - 10,1,18,1,8,1,8,1,10,1,18,1,4,2,4,2, - 2,1,14,1,14,1,20,1,10,2,14,1,8,1,18,2, - 4,1,14,1,8,1,16,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,16,1,16,1,12,1,10,1, - 18,1,8,1,2,2,14,1,14,1,20,1,14,1,18,1, - 2,4,28,1,22,1,14,1,20,1,10,2,10,2,2,3, - 14,1,14,1,22,1,12,2,12,1,20,1,8,1,44,1, - 14,1,4,1,255,128,114,27,0,0,0,117,190,1,0,0, - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, - 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, - 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, - 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, - 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, - 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, - 195,135,195,188,195,169,195,162,195,164,195,160,195,165,195,167, - 195,170,195,171,195,168,195,175,195,174,195,172,195,132,195,133, - 195,137,195,166,195,134,195,180,195,182,195,178,195,187,195,185, - 195,191,195,150,195,156,194,162,194,163,194,165,226,130,167,198, - 146,195,161,195,173,195,179,195,186,195,177,195,145,194,170,194, - 186,194,191,226,140,144,194,172,194,189,194,188,194,161,194,171, - 194,187,226,150,145,226,150,146,226,150,147,226,148,130,226,148, - 164,226,149,161,226,149,162,226,149,150,226,149,149,226,149,163, - 226,149,145,226,149,151,226,149,157,226,149,156,226,149,155,226, - 148,144,226,148,148,226,148,180,226,148,172,226,148,156,226,148, - 128,226,148,188,226,149,158,226,149,159,226,149,154,226,149,148, - 226,149,169,226,149,166,226,149,160,226,149,144,226,149,172,226, - 149,167,226,149,168,226,149,164,226,149,165,226,149,153,226,149, - 152,226,149,146,226,149,147,226,149,171,226,149,170,226,148,152, - 226,148,140,226,150,136,226,150,132,226,150,140,226,150,144,226, - 150,128,206,177,195,159,206,147,207,128,206,163,207,131,194,181, - 207,132,206,166,206,152,206,169,206,180,226,136,158,207,134,206, - 181,226,136,169,226,137,161,194,177,226,137,165,226,137,164,226, - 140,160,226,140,161,195,183,226,137,136,194,176,226,136,153,194, - 183,226,136,154,226,129,191,194,178,226,150,160,194,160,99,0, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, - 0,0,0,67,0,0,0,115,106,0,0,0,116,0,114,22, - 116,1,160,2,100,1,161,1,1,0,116,3,100,2,131,1, - 130,1,100,3,97,0,122,58,122,16,100,4,100,5,108,4, - 109,5,125,0,1,0,87,0,110,32,4,0,116,6,121,76, - 1,0,1,0,1,0,116,1,160,2,100,1,161,1,1,0, - 116,3,100,2,131,1,130,1,48,0,87,0,100,6,97,0, - 110,6,100,6,97,0,48,0,116,1,160,2,100,7,161,1, - 1,0,124,0,83,0,41,8,78,122,27,122,105,112,105,109, - 112,111,114,116,58,32,122,108,105,98,32,85,78,65,86,65, - 73,76,65,66,76,69,250,41,99,97,110,39,116,32,100,101, - 99,111,109,112,114,101,115,115,32,100,97,116,97,59,32,122, - 108,105,98,32,110,111,116,32,97,118,97,105,108,97,98,108, - 101,84,114,0,0,0,0,169,1,218,10,100,101,99,111,109, - 112,114,101,115,115,70,122,25,122,105,112,105,109,112,111,114, - 116,58,32,122,108,105,98,32,97,118,97,105,108,97,98,108, - 101,41,7,218,15,95,105,109,112,111,114,116,105,110,103,95, - 122,108,105,98,114,45,0,0,0,114,78,0,0,0,114,3, - 0,0,0,90,4,122,108,105,98,114,140,0,0,0,218,9, - 69,120,99,101,112,116,105,111,110,114,139,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,20,95, - 103,101,116,95,100,101,99,111,109,112,114,101,115,115,95,102, - 117,110,99,27,2,0,0,115,26,0,0,0,4,2,10,3, - 8,1,4,2,4,1,16,1,12,1,10,1,12,1,12,2, - 10,2,4,1,255,128,114,143,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,17,0,0,0,9,0,0,0, - 67,0,0,0,115,132,1,0,0,124,1,92,8,125,2,125, - 3,125,4,125,5,125,6,125,7,125,8,125,9,124,4,100, - 1,107,0,114,36,116,0,100,2,131,1,130,1,116,1,160, - 2,124,0,161,1,144,1,143,6,125,10,122,14,124,10,160, - 3,124,6,161,1,1,0,87,0,110,32,4,0,116,4,121, - 96,1,0,1,0,1,0,116,0,100,3,124,0,155,2,157, - 2,124,0,100,4,141,2,130,1,48,0,124,10,160,5,100, - 5,161,1,125,11,116,6,124,11,131,1,100,5,107,3,114, - 128,116,7,100,6,131,1,130,1,124,11,100,0,100,7,133, - 2,25,0,100,8,107,3,114,162,116,0,100,9,124,0,155, - 2,157,2,124,0,100,4,141,2,130,1,116,8,124,11,100, - 10,100,11,133,2,25,0,131,1,125,12,116,8,124,11,100, - 11,100,5,133,2,25,0,131,1,125,13,100,5,124,12,23, - 0,124,13,23,0,125,14,124,6,124,14,55,0,125,6,122, - 14,124,10,160,3,124,6,161,1,1,0,87,0,110,34,4, - 0,116,4,144,1,121,6,1,0,1,0,1,0,116,0,100, - 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,48, - 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, - 1,124,4,107,3,144,1,114,40,116,4,100,12,131,1,130, - 1,87,0,100,0,4,0,4,0,131,3,1,0,110,18,49, - 0,144,1,115,62,48,0,1,0,1,0,1,0,89,0,1, - 0,124,3,100,1,107,2,144,1,114,86,124,15,83,0,122, - 10,116,9,131,0,125,16,87,0,110,24,4,0,116,10,144, - 1,121,120,1,0,1,0,1,0,116,0,100,13,131,1,130, - 1,48,0,124,16,124,15,100,14,131,2,83,0,41,15,78, - 114,0,0,0,0,122,18,110,101,103,97,116,105,118,101,32, - 100,97,116,97,32,115,105,122,101,114,91,0,0,0,114,12, - 0,0,0,114,103,0,0,0,114,97,0,0,0,114,92,0, - 0,0,115,4,0,0,0,80,75,3,4,122,23,98,97,100, - 32,108,111,99,97,108,32,102,105,108,101,32,104,101,97,100, - 101,114,58,32,233,26,0,0,0,114,102,0,0,0,122,26, - 122,105,112,105,109,112,111,114,116,58,32,99,97,110,39,116, - 32,114,101,97,100,32,100,97,116,97,114,138,0,0,0,105, - 241,255,255,255,41,11,114,3,0,0,0,114,109,0,0,0, - 114,110,0,0,0,114,111,0,0,0,114,22,0,0,0,114, - 113,0,0,0,114,55,0,0,0,114,118,0,0,0,114,1, - 0,0,0,114,143,0,0,0,114,142,0,0,0,41,17,114, - 29,0,0,0,114,58,0,0,0,90,8,100,97,116,97,112, - 97,116,104,114,129,0,0,0,114,133,0,0,0,114,124,0, - 0,0,114,136,0,0,0,114,130,0,0,0,114,131,0,0, - 0,114,132,0,0,0,114,122,0,0,0,114,123,0,0,0, - 114,134,0,0,0,114,135,0,0,0,114,126,0,0,0,90, - 8,114,97,119,95,100,97,116,97,114,140,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,114,56,0, - 0,0,48,2,0,0,115,64,0,0,0,20,1,8,1,8, - 1,14,2,2,2,14,1,12,1,20,1,10,1,12,1,8, - 1,16,2,18,2,16,2,16,1,12,1,8,1,2,1,14, - 1,14,1,20,1,10,1,14,1,40,1,10,2,4,2,2, - 3,10,1,14,1,10,1,10,1,255,128,114,56,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,0, - 124,0,124,1,24,0,131,1,100,1,107,1,83,0,41,2, - 78,114,5,0,0,0,41,1,218,3,97,98,115,41,2,90, - 2,116,49,90,2,116,50,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,9,95,101,113,95,109,116,105,109, - 101,94,2,0,0,115,4,0,0,0,16,2,255,128,114,146, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 14,0,0,0,8,0,0,0,67,0,0,0,115,60,1,0, - 0,124,3,124,2,100,1,156,2,125,5,122,18,116,0,160, - 1,124,4,124,3,124,5,161,3,125,6,87,0,110,20,4, - 0,116,2,121,48,1,0,1,0,1,0,89,0,100,0,83, - 0,48,0,124,6,100,2,64,0,100,3,107,3,125,7,124, - 7,114,182,124,6,100,4,64,0,100,3,107,3,125,8,116, - 3,106,4,100,5,107,3,144,1,114,10,124,8,115,106,116, - 3,106,4,100,6,107,2,144,1,114,10,116,5,124,0,124, - 2,131,2,125,9,124,9,100,0,117,1,144,1,114,10,116, - 3,160,6,116,0,106,7,124,9,161,2,125,10,122,20,116, - 0,160,8,124,4,124,10,124,3,124,5,161,4,1,0,87, - 0,110,104,4,0,116,2,121,180,1,0,1,0,1,0,89, - 0,100,0,83,0,48,0,116,9,124,0,124,2,131,2,92, - 2,125,11,125,12,124,11,144,1,114,10,116,10,116,11,124, - 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, - 246,116,11,124,4,100,8,100,9,133,2,25,0,131,1,124, - 12,107,3,144,1,114,10,116,12,160,13,100,10,124,3,155, - 2,157,2,161,1,1,0,100,0,83,0,116,14,160,15,124, - 4,100,9,100,0,133,2,25,0,161,1,125,13,116,16,124, - 13,116,17,131,2,144,1,115,56,116,18,100,11,124,1,155, - 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, - 41,2,114,44,0,0,0,114,13,0,0,0,114,5,0,0, - 0,114,0,0,0,0,114,85,0,0,0,90,5,110,101,118, - 101,114,90,6,97,108,119,97,121,115,114,98,0,0,0,114, - 93,0,0,0,114,94,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,122,16,99,111,109,112,105,108,101,100,32,109,111,100,117, - 108,101,32,122,21,32,105,115,32,110,111,116,32,97,32,99, - 111,100,101,32,111,98,106,101,99,116,41,19,114,21,0,0, - 0,90,13,95,99,108,97,115,115,105,102,121,95,112,121,99, - 114,77,0,0,0,218,4,95,105,109,112,90,21,99,104,101, - 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121, - 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117, - 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104, - 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, - 66,69,82,90,18,95,118,97,108,105,100,97,116,101,95,104, - 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116, - 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95, - 115,111,117,114,99,101,114,146,0,0,0,114,2,0,0,0, - 114,45,0,0,0,114,78,0,0,0,218,7,109,97,114,115, - 104,97,108,90,5,108,111,97,100,115,114,15,0,0,0,218, - 10,95,99,111,100,101,95,116,121,112,101,218,9,84,121,112, - 101,69,114,114,111,114,41,14,114,32,0,0,0,114,57,0, - 0,0,114,66,0,0,0,114,38,0,0,0,114,125,0,0, - 0,90,11,101,120,99,95,100,101,116,97,105,108,115,114,128, - 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,90,12,115, - 111,117,114,99,101,95,98,121,116,101,115,114,149,0,0,0, - 90,12,115,111,117,114,99,101,95,109,116,105,109,101,90,11, - 115,111,117,114,99,101,95,115,105,122,101,114,50,0,0,0, + 0,100,2,141,2,130,1,48,0,124,6,160,12,116,9,161, + 1,125,7,124,7,100,6,107,0,144,1,114,90,116,3,100, + 7,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 6,124,7,124,7,116,5,23,0,133,2,25,0,125,3,116, + 8,124,3,131,1,116,5,107,3,144,1,114,138,116,3,100, + 8,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 4,116,8,124,6,131,1,24,0,124,7,23,0,125,2,116, + 13,124,3,100,9,100,10,133,2,25,0,131,1,125,8,116, + 13,124,3,100,10,100,11,133,2,25,0,131,1,125,9,124, + 2,124,8,107,0,144,1,114,214,116,3,100,12,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, + 0,144,1,114,242,116,3,100,13,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,2,124,8,56,0,125,2,124, + 2,124,9,24,0,125,10,124,10,100,6,107,0,144,2,114, + 30,116,3,100,14,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,105,0,125,11,100,6,125,12,122,14,124,1,160, + 4,124,2,161,1,1,0,87,0,110,34,4,0,116,2,144, + 2,121,86,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,48,0,124,1,160, + 7,100,15,161,1,125,3,116,8,124,3,131,1,100,5,107, + 0,144,2,114,120,116,14,100,16,131,1,130,1,124,3,100, + 0,100,5,133,2,25,0,100,17,107,3,144,2,114,142,144, + 4,113,180,116,8,124,3,131,1,100,15,107,3,144,2,114, + 164,116,14,100,16,131,1,130,1,116,15,124,3,100,18,100, + 19,133,2,25,0,131,1,125,13,116,15,124,3,100,19,100, + 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, + 20,133,2,25,0,131,1,125,15,116,15,124,3,100,20,100, + 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, + 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, + 21,133,2,25,0,131,1,125,18,116,13,124,3,100,21,100, + 22,133,2,25,0,131,1,125,4,116,15,124,3,100,22,100, + 23,133,2,25,0,131,1,125,19,116,15,124,3,100,23,100, + 24,133,2,25,0,131,1,125,20,116,15,124,3,100,24,100, + 25,133,2,25,0,131,1,125,21,116,13,124,3,100,26,100, + 15,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, + 21,23,0,125,8,124,22,124,9,107,4,144,3,114,124,116, + 3,100,27,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,22,124,10,55,0,125,22,122,14,124,1,160,7,124, + 19,161,1,125,23,87,0,110,34,4,0,116,2,144,3,121, + 180,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,48,0,116,8,124,23,131, + 1,124,19,107,3,144,3,114,214,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,122,50,116,8,124, + 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, + 19,24,0,107,3,144,4,114,6,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,87,0,110,34,4, + 0,116,2,144,4,121,42,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,48, + 0,124,13,100,28,64,0,144,4,114,64,124,23,160,16,161, + 0,125,23,110,52,122,14,124,23,160,16,100,29,161,1,125, + 23,87,0,110,36,4,0,116,17,144,4,121,114,1,0,1, + 0,1,0,124,23,160,16,100,30,161,1,160,18,116,19,161, + 1,125,23,89,0,110,2,48,0,124,23,160,20,100,31,116, + 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, + 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, + 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, + 32,55,0,125,12,144,2,113,88,87,0,100,0,4,0,4, + 0,131,3,1,0,110,18,49,0,144,4,115,202,48,0,1, + 0,1,0,1,0,89,0,1,0,116,24,160,25,100,33,124, + 12,124,0,161,3,1,0,124,11,83,0,41,34,78,122,21, + 99,97,110,39,116,32,111,112,101,110,32,90,105,112,32,102, + 105,108,101,58,32,114,12,0,0,0,114,85,0,0,0,250, + 21,99,97,110,39,116,32,114,101,97,100,32,90,105,112,32, + 102,105,108,101,58,32,233,4,0,0,0,114,0,0,0,0, + 122,16,110,111,116,32,97,32,90,105,112,32,102,105,108,101, + 58,32,122,18,99,111,114,114,117,112,116,32,90,105,112,32, + 102,105,108,101,58,32,233,12,0,0,0,233,16,0,0,0, + 233,20,0,0,0,122,28,98,97,100,32,99,101,110,116,114, + 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, + 101,58,32,122,30,98,97,100,32,99,101,110,116,114,97,108, + 32,100,105,114,101,99,116,111,114,121,32,111,102,102,115,101, + 116,58,32,122,38,98,97,100,32,99,101,110,116,114,97,108, + 32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,32, + 111,114,32,111,102,102,115,101,116,58,32,233,46,0,0,0, + 250,27,69,79,70,32,114,101,97,100,32,119,104,101,114,101, + 32,110,111,116,32,101,120,112,101,99,116,101,100,115,4,0, + 0,0,80,75,1,2,233,8,0,0,0,233,10,0,0,0, + 233,14,0,0,0,233,24,0,0,0,233,28,0,0,0,233, + 30,0,0,0,233,32,0,0,0,233,34,0,0,0,233,42, + 0,0,0,122,25,98,97,100,32,108,111,99,97,108,32,104, + 101,97,100,101,114,32,111,102,102,115,101,116,58,32,105,0, + 8,0,0,218,5,97,115,99,105,105,90,6,108,97,116,105, + 110,49,250,1,47,114,5,0,0,0,122,33,122,105,112,105, + 109,112,111,114,116,58,32,102,111,117,110,100,32,123,125,32, + 110,97,109,101,115,32,105,110,32,123,33,114,125,41,26,218, + 3,95,105,111,218,9,111,112,101,110,95,99,111,100,101,114, + 22,0,0,0,114,3,0,0,0,218,4,115,101,101,107,218, + 20,69,78,68,95,67,69,78,84,82,65,76,95,68,73,82, + 95,83,73,90,69,90,4,116,101,108,108,218,4,114,101,97, + 100,114,55,0,0,0,218,18,83,84,82,73,78,71,95,69, + 78,68,95,65,82,67,72,73,86,69,218,3,109,97,120,218, + 15,77,65,88,95,67,79,77,77,69,78,84,95,76,69,78, + 218,5,114,102,105,110,100,114,2,0,0,0,218,8,69,79, + 70,69,114,114,111,114,114,1,0,0,0,114,65,0,0,0, + 218,18,85,110,105,99,111,100,101,68,101,99,111,100,101,69, + 114,114,111,114,218,9,116,114,97,110,115,108,97,116,101,218, + 11,99,112,52,51,55,95,116,97,98,108,101,114,19,0,0, + 0,114,20,0,0,0,114,21,0,0,0,114,30,0,0,0, + 114,45,0,0,0,114,78,0,0,0,41,26,114,29,0,0, + 0,218,2,102,112,90,15,104,101,97,100,101,114,95,112,111, + 115,105,116,105,111,110,218,6,98,117,102,102,101,114,218,9, + 102,105,108,101,95,115,105,122,101,90,17,109,97,120,95,99, + 111,109,109,101,110,116,95,115,116,97,114,116,218,4,100,97, + 116,97,90,3,112,111,115,218,11,104,101,97,100,101,114,95, + 115,105,122,101,90,13,104,101,97,100,101,114,95,111,102,102, + 115,101,116,90,10,97,114,99,95,111,102,102,115,101,116,114, + 33,0,0,0,218,5,99,111,117,110,116,218,5,102,108,97, + 103,115,218,8,99,111,109,112,114,101,115,115,218,4,116,105, + 109,101,218,4,100,97,116,101,218,3,99,114,99,218,9,100, + 97,116,97,95,115,105,122,101,218,9,110,97,109,101,95,115, + 105,122,101,218,10,101,120,116,114,97,95,115,105,122,101,90, + 12,99,111,109,109,101,110,116,95,115,105,122,101,218,11,102, + 105,108,101,95,111,102,102,115,101,116,114,44,0,0,0,114, + 13,0,0,0,218,1,116,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,27,0,0,0,125,1,0,0,115, + 214,0,0,0,2,1,14,1,12,1,20,1,8,2,2,1, + 14,1,8,1,14,1,12,1,20,1,12,1,18,1,18,1, + 2,3,12,1,12,1,12,1,10,1,2,1,8,255,8,2, + 2,1,2,255,2,1,4,255,2,2,10,1,12,1,14,1, + 10,1,2,1,8,255,10,2,10,1,10,1,2,1,6,255, + 16,2,14,1,10,1,2,1,6,255,16,2,16,2,16,1, + 10,1,18,1,10,1,18,1,8,1,8,1,10,1,18,1, + 4,2,4,2,2,1,14,1,14,1,20,1,10,2,14,1, + 8,1,18,2,4,1,14,1,8,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 12,1,10,1,18,1,8,1,2,2,14,1,14,1,20,1, + 14,1,18,1,2,4,28,1,22,1,14,1,20,1,10,2, + 10,2,2,3,14,1,14,1,22,1,12,2,12,1,20,1, + 8,1,44,1,14,1,4,1,255,128,114,27,0,0,0,117, + 190,1,0,0,0,1,2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59, + 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, + 76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91, + 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, + 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, + 124,125,126,127,195,135,195,188,195,169,195,162,195,164,195,160, + 195,165,195,167,195,170,195,171,195,168,195,175,195,174,195,172, + 195,132,195,133,195,137,195,166,195,134,195,180,195,182,195,178, + 195,187,195,185,195,191,195,150,195,156,194,162,194,163,194,165, + 226,130,167,198,146,195,161,195,173,195,179,195,186,195,177,195, + 145,194,170,194,186,194,191,226,140,144,194,172,194,189,194,188, + 194,161,194,171,194,187,226,150,145,226,150,146,226,150,147,226, + 148,130,226,148,164,226,149,161,226,149,162,226,149,150,226,149, + 149,226,149,163,226,149,145,226,149,151,226,149,157,226,149,156, + 226,149,155,226,148,144,226,148,148,226,148,180,226,148,172,226, + 148,156,226,148,128,226,148,188,226,149,158,226,149,159,226,149, + 154,226,149,148,226,149,169,226,149,166,226,149,160,226,149,144, + 226,149,172,226,149,167,226,149,168,226,149,164,226,149,165,226, + 149,153,226,149,152,226,149,146,226,149,147,226,149,171,226,149, + 170,226,148,152,226,148,140,226,150,136,226,150,132,226,150,140, + 226,150,144,226,150,128,206,177,195,159,206,147,207,128,206,163, + 207,131,194,181,207,132,206,166,206,152,206,169,206,180,226,136, + 158,207,134,206,181,226,136,169,226,137,161,194,177,226,137,165, + 226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,176, + 226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,160, + 194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,8,0,0,0,67,0,0,0,115,106,0,0,0, + 116,0,114,22,116,1,160,2,100,1,161,1,1,0,116,3, + 100,2,131,1,130,1,100,3,97,0,122,58,122,16,100,4, + 100,5,108,4,109,5,125,0,1,0,87,0,110,32,4,0, + 116,6,121,76,1,0,1,0,1,0,116,1,160,2,100,1, + 161,1,1,0,116,3,100,2,131,1,130,1,48,0,87,0, + 100,6,97,0,110,6,100,6,97,0,48,0,116,1,160,2, + 100,7,161,1,1,0,124,0,83,0,41,8,78,122,27,122, + 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,85, + 78,65,86,65,73,76,65,66,76,69,250,41,99,97,110,39, + 116,32,100,101,99,111,109,112,114,101,115,115,32,100,97,116, + 97,59,32,122,108,105,98,32,110,111,116,32,97,118,97,105, + 108,97,98,108,101,84,114,0,0,0,0,169,1,218,10,100, + 101,99,111,109,112,114,101,115,115,70,122,25,122,105,112,105, + 109,112,111,114,116,58,32,122,108,105,98,32,97,118,97,105, + 108,97,98,108,101,41,7,218,15,95,105,109,112,111,114,116, + 105,110,103,95,122,108,105,98,114,45,0,0,0,114,78,0, + 0,0,114,3,0,0,0,90,4,122,108,105,98,114,140,0, + 0,0,218,9,69,120,99,101,112,116,105,111,110,114,139,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,20,95,103,101,116,95,100,101,99,111,109,112,114,101, + 115,115,95,102,117,110,99,27,2,0,0,115,26,0,0,0, + 4,2,10,3,8,1,4,2,4,1,16,1,12,1,10,1, + 12,1,12,2,10,2,4,1,255,128,114,143,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0, + 9,0,0,0,67,0,0,0,115,132,1,0,0,124,1,92, + 8,125,2,125,3,125,4,125,5,125,6,125,7,125,8,125, + 9,124,4,100,1,107,0,114,36,116,0,100,2,131,1,130, + 1,116,1,160,2,124,0,161,1,144,1,143,6,125,10,122, + 14,124,10,160,3,124,6,161,1,1,0,87,0,110,32,4, + 0,116,4,121,96,1,0,1,0,1,0,116,0,100,3,124, + 0,155,2,157,2,124,0,100,4,141,2,130,1,48,0,124, + 10,160,5,100,5,161,1,125,11,116,6,124,11,131,1,100, + 5,107,3,114,128,116,7,100,6,131,1,130,1,124,11,100, + 0,100,7,133,2,25,0,100,8,107,3,114,162,116,0,100, + 9,124,0,155,2,157,2,124,0,100,4,141,2,130,1,116, + 8,124,11,100,10,100,11,133,2,25,0,131,1,125,12,116, + 8,124,11,100,11,100,5,133,2,25,0,131,1,125,13,100, + 5,124,12,23,0,124,13,23,0,125,14,124,6,124,14,55, + 0,125,6,122,14,124,10,160,3,124,6,161,1,1,0,87, + 0,110,34,4,0,116,4,144,1,121,6,1,0,1,0,1, + 0,116,0,100,3,124,0,155,2,157,2,124,0,100,4,141, + 2,130,1,48,0,124,10,160,5,124,4,161,1,125,15,116, + 6,124,15,131,1,124,4,107,3,144,1,114,40,116,4,100, + 12,131,1,130,1,87,0,100,0,4,0,4,0,131,3,1, + 0,110,18,49,0,144,1,115,62,48,0,1,0,1,0,1, + 0,89,0,1,0,124,3,100,1,107,2,144,1,114,86,124, + 15,83,0,122,10,116,9,131,0,125,16,87,0,110,24,4, + 0,116,10,144,1,121,120,1,0,1,0,1,0,116,0,100, + 13,131,1,130,1,48,0,124,16,124,15,100,14,131,2,83, + 0,41,15,78,114,0,0,0,0,122,18,110,101,103,97,116, + 105,118,101,32,100,97,116,97,32,115,105,122,101,114,91,0, + 0,0,114,12,0,0,0,114,103,0,0,0,114,97,0,0, + 0,114,92,0,0,0,115,4,0,0,0,80,75,3,4,122, + 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32, + 104,101,97,100,101,114,58,32,233,26,0,0,0,114,102,0, + 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99, + 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,138, + 0,0,0,105,241,255,255,255,41,11,114,3,0,0,0,114, + 109,0,0,0,114,110,0,0,0,114,111,0,0,0,114,22, + 0,0,0,114,113,0,0,0,114,55,0,0,0,114,118,0, + 0,0,114,1,0,0,0,114,143,0,0,0,114,142,0,0, + 0,41,17,114,29,0,0,0,114,58,0,0,0,90,8,100, + 97,116,97,112,97,116,104,114,129,0,0,0,114,133,0,0, + 0,114,124,0,0,0,114,136,0,0,0,114,130,0,0,0, + 114,131,0,0,0,114,132,0,0,0,114,122,0,0,0,114, + 123,0,0,0,114,134,0,0,0,114,135,0,0,0,114,126, + 0,0,0,90,8,114,97,119,95,100,97,116,97,114,140,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,56,0,0,0,48,2,0,0,115,64,0,0,0,20, + 1,8,1,8,1,14,2,2,2,14,1,12,1,20,1,10, + 1,12,1,8,1,16,2,18,2,16,2,16,1,12,1,8, + 1,2,1,14,1,14,1,20,1,10,1,14,1,40,1,10, + 2,4,2,2,3,10,1,14,1,10,1,10,1,255,128,114, + 56,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,67,0,0,0,115,16,0, + 0,0,116,0,124,0,124,1,24,0,131,1,100,1,107,1, + 83,0,41,2,78,114,5,0,0,0,41,1,218,3,97,98, + 115,41,2,90,2,116,49,90,2,116,50,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,9,95,101,113,95, + 109,116,105,109,101,94,2,0,0,115,4,0,0,0,16,2, + 255,128,114,146,0,0,0,99,5,0,0,0,0,0,0,0, + 0,0,0,0,14,0,0,0,8,0,0,0,67,0,0,0, + 115,60,1,0,0,124,3,124,2,100,1,156,2,125,5,122, + 18,116,0,160,1,124,4,124,3,124,5,161,3,125,6,87, + 0,110,20,4,0,116,2,121,48,1,0,1,0,1,0,89, + 0,100,0,83,0,48,0,124,6,100,2,64,0,100,3,107, + 3,125,7,124,7,114,182,124,6,100,4,64,0,100,3,107, + 3,125,8,116,3,106,4,100,5,107,3,144,1,114,10,124, + 8,115,106,116,3,106,4,100,6,107,2,144,1,114,10,116, + 5,124,0,124,2,131,2,125,9,124,9,100,0,117,1,144, + 1,114,10,116,3,160,6,116,0,106,7,124,9,161,2,125, + 10,122,20,116,0,160,8,124,4,124,10,124,3,124,5,161, + 4,1,0,87,0,110,104,4,0,116,2,121,180,1,0,1, + 0,1,0,89,0,100,0,83,0,48,0,116,9,124,0,124, + 2,131,2,92,2,125,11,125,12,124,11,144,1,114,10,116, + 10,116,11,124,4,100,7,100,8,133,2,25,0,131,1,124, + 11,131,2,114,246,116,11,124,4,100,8,100,9,133,2,25, + 0,131,1,124,12,107,3,144,1,114,10,116,12,160,13,100, + 10,124,3,155,2,157,2,161,1,1,0,100,0,83,0,116, + 14,160,15,124,4,100,9,100,0,133,2,25,0,161,1,125, + 13,116,16,124,13,116,17,131,2,144,1,115,56,116,18,100, + 11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,83, + 0,41,13,78,41,2,114,44,0,0,0,114,13,0,0,0, + 114,5,0,0,0,114,0,0,0,0,114,85,0,0,0,90, + 5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,98, + 0,0,0,114,93,0,0,0,114,94,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,122,16,99,111,109,112,105,108,101,100,32, + 109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,116, + 32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,19, + 114,21,0,0,0,90,13,95,99,108,97,115,115,105,102,121, + 95,112,121,99,114,77,0,0,0,218,4,95,105,109,112,90, + 21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,101, + 100,95,112,121,99,115,218,15,95,103,101,116,95,112,121,99, + 95,115,111,117,114,99,101,218,11,115,111,117,114,99,101,95, + 104,97,115,104,90,17,95,82,65,87,95,77,65,71,73,67, + 95,78,85,77,66,69,82,90,18,95,118,97,108,105,100,97, + 116,101,95,104,97,115,104,95,112,121,99,218,29,95,103,101, + 116,95,109,116,105,109,101,95,97,110,100,95,115,105,122,101, + 95,111,102,95,115,111,117,114,99,101,114,146,0,0,0,114, + 2,0,0,0,114,45,0,0,0,114,78,0,0,0,218,7, + 109,97,114,115,104,97,108,90,5,108,111,97,100,115,114,15, + 0,0,0,218,10,95,99,111,100,101,95,116,121,112,101,218, + 9,84,121,112,101,69,114,114,111,114,41,14,114,32,0,0, + 0,114,57,0,0,0,114,66,0,0,0,114,38,0,0,0, + 114,125,0,0,0,90,11,101,120,99,95,100,101,116,97,105, + 108,115,114,128,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,90,12,115,111,117,114,99,101,95,98,121,116,101,115,114, + 149,0,0,0,90,12,115,111,117,114,99,101,95,109,116,105, + 109,101,90,11,115,111,117,114,99,101,95,115,105,122,101,114, + 50,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, + 99,111,100,101,104,2,0,0,115,84,0,0,0,2,2,2, + 1,6,254,2,5,18,1,12,1,8,1,12,2,4,1,12, + 1,12,1,2,1,2,255,8,1,4,255,10,2,10,1,4, + 1,4,1,2,1,4,254,2,5,4,1,8,1,8,255,12, + 2,8,1,8,3,6,255,6,3,22,3,18,1,4,255,4, + 2,8,1,4,255,4,2,18,2,12,1,16,1,4,1,255, + 128,114,154,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, + 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, + 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, + 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, + 243,1,0,0,0,13,41,1,114,19,0,0,0,41,1,218, + 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, + 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,155, + 2,0,0,115,8,0,0,0,12,1,12,1,4,1,255,128, + 114,158,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,24, + 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, + 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,76, + 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, + 101,114,105,116,41,2,114,158,0,0,0,218,7,99,111,109, + 112,105,108,101,41,2,114,57,0,0,0,114,157,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, - 104,2,0,0,115,84,0,0,0,2,2,2,1,6,254,2, - 5,18,1,12,1,8,1,12,2,4,1,12,1,12,1,2, - 1,2,255,8,1,4,255,10,2,10,1,4,1,4,1,2, - 1,4,254,2,5,4,1,8,1,8,255,12,2,8,1,8, - 3,6,255,6,3,22,3,18,1,4,255,4,2,8,1,4, - 255,4,2,18,2,12,1,16,1,4,1,255,128,114,154,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,4,0,0,0,67,0,0,0,115,28,0,0,0, - 124,0,160,0,100,1,100,2,161,2,125,0,124,0,160,0, - 100,3,100,2,161,2,125,0,124,0,83,0,41,4,78,115, - 2,0,0,0,13,10,243,1,0,0,0,10,243,1,0,0, - 0,13,41,1,114,19,0,0,0,41,1,218,6,115,111,117, - 114,99,101,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,23,95,110,111,114,109,97,108,105,122,101,95,108, - 105,110,101,95,101,110,100,105,110,103,115,155,2,0,0,115, - 8,0,0,0,12,1,12,1,4,1,255,128,114,158,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,6,0,0,0,67,0,0,0,115,24,0,0,0,116, - 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, - 2,100,3,141,4,83,0,41,4,78,114,76,0,0,0,84, - 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, - 41,2,114,158,0,0,0,218,7,99,111,109,112,105,108,101, - 41,2,114,57,0,0,0,114,157,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,15,95,99,111, - 109,112,105,108,101,95,115,111,117,114,99,101,162,2,0,0, - 115,6,0,0,0,8,1,16,1,255,128,114,160,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,11,0,0,0,67,0,0,0,115,68,0,0,0,116,0, - 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, - 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, - 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, - 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, - 83,0,41,10,78,233,9,0,0,0,105,188,7,0,0,233, - 5,0,0,0,233,15,0,0,0,233,31,0,0,0,233,11, - 0,0,0,233,63,0,0,0,114,85,0,0,0,114,14,0, - 0,0,41,2,114,130,0,0,0,90,6,109,107,116,105,109, - 101,41,2,218,1,100,114,137,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,14,95,112,97,114, - 115,101,95,100,111,115,116,105,109,101,168,2,0,0,115,20, - 0,0,0,4,1,10,1,10,1,6,1,6,1,10,1,10, - 1,6,1,6,249,255,128,114,168,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,10,0,0, - 0,67,0,0,0,115,110,0,0,0,122,82,124,1,100,1, - 100,0,133,2,25,0,100,2,118,0,115,22,74,0,130,1, - 124,1,100,0,100,1,133,2,25,0,125,1,124,0,106,0, - 124,1,25,0,125,2,124,2,100,3,25,0,125,3,124,2, - 100,4,25,0,125,4,124,2,100,5,25,0,125,5,116,1, - 124,4,124,3,131,2,124,5,102,2,87,0,83,0,4,0, - 116,2,116,3,116,4,102,3,121,108,1,0,1,0,1,0, - 89,0,100,6,83,0,48,0,41,7,78,114,14,0,0,0, - 169,2,218,1,99,218,1,111,114,162,0,0,0,233,6,0, - 0,0,233,3,0,0,0,41,2,114,0,0,0,0,114,0, - 0,0,0,41,5,114,28,0,0,0,114,168,0,0,0,114, - 26,0,0,0,218,10,73,110,100,101,120,69,114,114,111,114, - 114,153,0,0,0,41,6,114,32,0,0,0,114,13,0,0, - 0,114,58,0,0,0,114,130,0,0,0,114,131,0,0,0, - 90,17,117,110,99,111,109,112,114,101,115,115,101,100,95,115, - 105,122,101,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,150,0,0,0,181,2,0,0,115,22,0,0,0, - 2,1,20,2,12,1,10,1,8,3,8,1,8,1,16,1, - 18,1,8,1,255,128,114,150,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, - 67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133, - 2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100, - 0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124, - 1,25,0,125,2,87,0,110,20,4,0,116,1,121,66,1, - 0,1,0,1,0,89,0,100,0,83,0,48,0,116,2,124, - 0,106,3,124,2,131,2,83,0,41,3,78,114,14,0,0, - 0,114,169,0,0,0,41,4,114,28,0,0,0,114,26,0, - 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32, - 0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,148,0,0, - 0,200,2,0,0,115,16,0,0,0,20,2,12,1,2,2, - 14,1,12,1,8,1,12,2,255,128,114,148,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0, - 9,0,0,0,67,0,0,0,115,190,0,0,0,116,0,124, - 0,124,1,131,2,125,2,116,1,68,0,93,156,92,3,125, - 3,125,4,125,5,124,2,124,3,23,0,125,6,116,2,106, - 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141, - 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87, - 0,110,18,4,0,116,7,121,86,1,0,1,0,1,0,89, - 0,113,14,48,0,124,7,100,4,25,0,125,8,116,8,124, - 0,106,4,124,7,131,2,125,9,124,4,114,130,116,9,124, - 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116, - 10,124,8,124,9,131,2,125,10,124,10,100,0,117,0,114, - 150,113,14,124,7,100,4,25,0,125,8,124,10,124,5,124, - 8,102,3,2,0,1,0,83,0,116,11,100,5,124,1,155, - 2,157,2,124,1,100,6,141,2,130,1,41,7,78,122,13, - 116,114,121,105,110,103,32,123,125,123,125,123,125,114,85,0, - 0,0,41,1,90,9,118,101,114,98,111,115,105,116,121,114, - 0,0,0,0,114,61,0,0,0,114,62,0,0,0,41,12, - 114,36,0,0,0,114,88,0,0,0,114,45,0,0,0,114, - 78,0,0,0,114,29,0,0,0,114,20,0,0,0,114,28, - 0,0,0,114,26,0,0,0,114,56,0,0,0,114,154,0, - 0,0,114,160,0,0,0,114,3,0,0,0,41,11,114,32, - 0,0,0,114,38,0,0,0,114,13,0,0,0,114,89,0, - 0,0,114,90,0,0,0,114,51,0,0,0,114,66,0,0, - 0,114,58,0,0,0,114,40,0,0,0,114,125,0,0,0, - 114,50,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,114,48,0,0,0,215,2,0,0,115,38,0, - 0,0,10,1,14,1,8,1,22,1,2,1,14,1,12,1, - 6,1,8,2,12,1,4,1,18,1,10,2,8,1,2,3, - 8,1,14,1,18,2,255,128,114,48,0,0,0,41,45,114, - 83,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2,0,0,0,90, - 17,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108, - 105,98,114,45,0,0,0,114,147,0,0,0,114,109,0,0, - 0,114,151,0,0,0,114,69,0,0,0,114,130,0,0,0, - 90,7,95,95,97,108,108,95,95,114,20,0,0,0,90,15, - 112,97,116,104,95,115,101,112,97,114,97,116,111,114,115,114, - 18,0,0,0,114,77,0,0,0,114,3,0,0,0,114,25, - 0,0,0,218,4,116,121,112,101,114,72,0,0,0,114,112, - 0,0,0,114,114,0,0,0,114,116,0,0,0,90,13,95, - 76,111,97,100,101,114,66,97,115,105,99,115,114,4,0,0, - 0,114,88,0,0,0,114,36,0,0,0,114,37,0,0,0, - 114,35,0,0,0,114,27,0,0,0,114,121,0,0,0,114, - 141,0,0,0,114,143,0,0,0,114,56,0,0,0,114,146, - 0,0,0,114,154,0,0,0,218,8,95,95,99,111,100,101, - 95,95,114,152,0,0,0,114,158,0,0,0,114,160,0,0, - 0,114,168,0,0,0,114,150,0,0,0,114,148,0,0,0, - 114,48,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,92,0,0,0,4,0,8,16, - 16,1,8,1,8,1,8,1,8,1,8,1,8,1,8,2, - 6,3,14,1,16,3,4,4,8,2,4,2,4,1,4,1, - 18,2,0,127,0,127,12,30,12,1,2,1,2,1,4,252, - 8,9,8,4,8,9,8,31,2,126,2,254,4,29,8,5, - 8,21,8,46,8,10,10,46,8,5,8,7,8,6,8,13, - 8,19,8,15,4,128,255,128, + 15,95,99,111,109,112,105,108,101,95,115,111,117,114,99,101, + 162,2,0,0,115,6,0,0,0,8,1,16,1,255,128,114, + 160,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,11,0,0,0,67,0,0,0,115,68,0, + 0,0,116,0,160,1,124,0,100,1,63,0,100,2,23,0, + 124,0,100,3,63,0,100,4,64,0,124,0,100,5,64,0, + 124,1,100,6,63,0,124,1,100,3,63,0,100,7,64,0, + 124,1,100,5,64,0,100,8,20,0,100,9,100,9,100,9, + 102,9,161,1,83,0,41,10,78,233,9,0,0,0,105,188, + 7,0,0,233,5,0,0,0,233,15,0,0,0,233,31,0, + 0,0,233,11,0,0,0,233,63,0,0,0,114,85,0,0, + 0,114,14,0,0,0,41,2,114,130,0,0,0,90,6,109, + 107,116,105,109,101,41,2,218,1,100,114,137,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,14, + 95,112,97,114,115,101,95,100,111,115,116,105,109,101,168,2, + 0,0,115,20,0,0,0,4,1,10,1,10,1,6,1,6, + 1,10,1,10,1,6,1,6,249,255,128,114,168,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,10,0,0,0,67,0,0,0,115,110,0,0,0,122,82, + 124,1,100,1,100,0,133,2,25,0,100,2,118,0,115,22, + 74,0,130,1,124,1,100,0,100,1,133,2,25,0,125,1, + 124,0,106,0,124,1,25,0,125,2,124,2,100,3,25,0, + 125,3,124,2,100,4,25,0,125,4,124,2,100,5,25,0, + 125,5,116,1,124,4,124,3,131,2,124,5,102,2,87,0, + 83,0,4,0,116,2,116,3,116,4,102,3,121,108,1,0, + 1,0,1,0,89,0,100,6,83,0,48,0,41,7,78,114, + 14,0,0,0,169,2,218,1,99,218,1,111,114,162,0,0, + 0,233,6,0,0,0,233,3,0,0,0,41,2,114,0,0, + 0,0,114,0,0,0,0,41,5,114,28,0,0,0,114,168, + 0,0,0,114,26,0,0,0,218,10,73,110,100,101,120,69, + 114,114,111,114,114,153,0,0,0,41,6,114,32,0,0,0, + 114,13,0,0,0,114,58,0,0,0,114,130,0,0,0,114, + 131,0,0,0,90,17,117,110,99,111,109,112,114,101,115,115, + 101,100,95,115,105,122,101,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,150,0,0,0,181,2,0,0,115, + 22,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, + 8,1,16,1,18,1,8,1,255,128,114,150,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 8,0,0,0,67,0,0,0,115,80,0,0,0,124,1,100, + 1,100,0,133,2,25,0,100,2,118,0,115,20,74,0,130, + 1,124,1,100,0,100,1,133,2,25,0,125,1,122,14,124, + 0,106,0,124,1,25,0,125,2,87,0,110,20,4,0,116, + 1,121,66,1,0,1,0,1,0,89,0,100,0,83,0,48, + 0,116,2,124,0,106,3,124,2,131,2,83,0,41,3,78, + 114,14,0,0,0,114,169,0,0,0,41,4,114,28,0,0, + 0,114,26,0,0,0,114,56,0,0,0,114,29,0,0,0, + 41,3,114,32,0,0,0,114,13,0,0,0,114,58,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,148,0,0,0,200,2,0,0,115,16,0,0,0,20,2, + 12,1,2,2,14,1,12,1,8,1,12,2,255,128,114,148, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 11,0,0,0,9,0,0,0,67,0,0,0,115,190,0,0, + 0,116,0,124,0,124,1,131,2,125,2,116,1,68,0,93, + 156,92,3,125,3,125,4,125,5,124,2,124,3,23,0,125, + 6,116,2,106,3,100,1,124,0,106,4,116,5,124,6,100, + 2,100,3,141,5,1,0,122,14,124,0,106,6,124,6,25, + 0,125,7,87,0,110,18,4,0,116,7,121,86,1,0,1, + 0,1,0,89,0,113,14,48,0,124,7,100,4,25,0,125, + 8,116,8,124,0,106,4,124,7,131,2,125,9,124,4,114, + 130,116,9,124,0,124,8,124,6,124,1,124,9,131,5,125, + 10,110,10,116,10,124,8,124,9,131,2,125,10,124,10,100, + 0,117,0,114,150,113,14,124,7,100,4,25,0,125,8,124, + 10,124,5,124,8,102,3,2,0,1,0,83,0,116,11,100, + 5,124,1,155,2,157,2,124,1,100,6,141,2,130,1,41, + 7,78,122,13,116,114,121,105,110,103,32,123,125,123,125,123, + 125,114,85,0,0,0,41,1,90,9,118,101,114,98,111,115, + 105,116,121,114,0,0,0,0,114,61,0,0,0,114,62,0, + 0,0,41,12,114,36,0,0,0,114,88,0,0,0,114,45, + 0,0,0,114,78,0,0,0,114,29,0,0,0,114,20,0, + 0,0,114,28,0,0,0,114,26,0,0,0,114,56,0,0, + 0,114,154,0,0,0,114,160,0,0,0,114,3,0,0,0, + 41,11,114,32,0,0,0,114,38,0,0,0,114,13,0,0, + 0,114,89,0,0,0,114,90,0,0,0,114,51,0,0,0, + 114,66,0,0,0,114,58,0,0,0,114,40,0,0,0,114, + 125,0,0,0,114,50,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,48,0,0,0,215,2,0, + 0,115,38,0,0,0,10,1,14,1,8,1,22,1,2,1, + 14,1,12,1,6,1,8,2,12,1,4,1,18,1,10,2, + 8,1,2,3,8,1,14,1,18,2,255,128,114,48,0,0, + 0,41,45,114,83,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2, + 0,0,0,90,17,95,102,114,111,122,101,110,95,105,109,112, + 111,114,116,108,105,98,114,45,0,0,0,114,147,0,0,0, + 114,109,0,0,0,114,151,0,0,0,114,69,0,0,0,114, + 130,0,0,0,90,7,95,95,97,108,108,95,95,114,20,0, + 0,0,90,15,112,97,116,104,95,115,101,112,97,114,97,116, + 111,114,115,114,18,0,0,0,114,77,0,0,0,114,3,0, + 0,0,114,25,0,0,0,218,4,116,121,112,101,114,72,0, + 0,0,114,112,0,0,0,114,114,0,0,0,114,116,0,0, + 0,90,13,95,76,111,97,100,101,114,66,97,115,105,99,115, + 114,4,0,0,0,114,88,0,0,0,114,36,0,0,0,114, + 37,0,0,0,114,35,0,0,0,114,27,0,0,0,114,121, + 0,0,0,114,141,0,0,0,114,143,0,0,0,114,56,0, + 0,0,114,146,0,0,0,114,154,0,0,0,218,8,95,95, + 99,111,100,101,95,95,114,152,0,0,0,114,158,0,0,0, + 114,160,0,0,0,114,168,0,0,0,114,150,0,0,0,114, + 148,0,0,0,114,48,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,60, + 109,111,100,117,108,101,62,1,0,0,0,115,90,0,0,0, + 4,0,8,16,16,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, + 4,1,4,1,18,2,0,127,0,127,12,30,12,1,2,1, + 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, + 4,29,8,5,8,21,8,46,8,10,10,46,8,5,8,7, + 8,6,8,13,8,19,12,15,255,128, }; From webhook-mailer at python.org Wed Dec 2 12:56:46 2020 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Dec 2020 17:56:46 -0000 Subject: [Python-checkins] bpo-42521: Add note about 'Python -d' only working on debug builds (GH-23607) Message-ID: https://github.com/python/cpython/commit/99b594404d364b363c184f48338d6ee81bee26dd commit: 99b594404d364b363c184f48338d6ee81bee26dd branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-02T17:56:17Z summary: bpo-42521: Add note about 'Python -d' only working on debug builds (GH-23607) files: M Python/initconfig.c diff --git a/Python/initconfig.c b/Python/initconfig.c index 4d95ac5d8859b..62087fb4208dd 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -38,7 +38,8 @@ Options and arguments (and corresponding environment variables):\n\ and comparing bytes/bytearray with str. (-bb: issue errors)\n\ -B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x\n\ -c cmd : program passed in as string (terminates option list)\n\ --d : debug output from parser; also PYTHONDEBUG=x\n\ +-d : turn on parser debugging output (for experts only, only works on\n\ + debug builds); also PYTHONDEBUG=x\n\ -E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\ -h : print this help message and exit (also --help)\n\ "; From webhook-mailer at python.org Wed Dec 2 12:57:23 2020 From: webhook-mailer at python.org (pablogsal) Date: Wed, 02 Dec 2020 17:57:23 -0000 Subject: [Python-checkins] bpo-41625: Do not add os.splice on AIX due to compatibility issues (GH-23608) Message-ID: https://github.com/python/cpython/commit/dedc2cd5f02a2e2fc2c995a36a3dccf9d93856bb commit: dedc2cd5f02a2e2fc2c995a36a3dccf9d93856bb branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-02T17:57:18Z summary: bpo-41625: Do not add os.splice on AIX due to compatibility issues (GH-23608) files: M Modules/clinic/posixmodule.c.h M Modules/posixmodule.c diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index ee4ee8ceac558..4a72ea0dd56f4 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -5674,7 +5674,7 @@ os_copy_file_range(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py #endif /* defined(HAVE_COPY_FILE_RANGE) */ -#if defined(HAVE_SPLICE) +#if ((defined(HAVE_SPLICE) && !defined(_AIX))) PyDoc_STRVAR(os_splice__doc__, "splice($module, /, src, dst, count, offset_src=None, offset_dst=None,\n" @@ -5772,7 +5772,7 @@ os_splice(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *k return return_value; } -#endif /* defined(HAVE_SPLICE) */ +#endif /* ((defined(HAVE_SPLICE) && !defined(_AIX))) */ #if defined(HAVE_MKFIFO) @@ -9163,4 +9163,4 @@ os_waitstatus_to_exitcode(PyObject *module, PyObject *const *args, Py_ssize_t na #ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF #define OS_WAITSTATUS_TO_EXITCODE_METHODDEF #endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */ -/*[clinic end generated code: output=8a59e91178897267 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=f3ec08afcd6cd8f8 input=a9049054013a1b77]*/ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 3e6e6585b880c..d9eb62f20e65b 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -10370,7 +10370,7 @@ os_copy_file_range_impl(PyObject *module, int src, int dst, Py_ssize_t count, } #endif /* HAVE_COPY_FILE_RANGE*/ -#ifdef HAVE_SPLICE +#if (defined(HAVE_SPLICE) && !defined(_AIX)) /*[clinic input] os.splice From webhook-mailer at python.org Wed Dec 2 17:01:28 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 02 Dec 2020 22:01:28 -0000 Subject: [Python-checkins] bpo-42521: Add note about 'Python -d' only working on debug builds (GH-23607) Message-ID: https://github.com/python/cpython/commit/9b34f34aa929941576a69a6f7de77f1fb0b96ed6 commit: 9b34f34aa929941576a69a6f7de77f1fb0b96ed6 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-02T14:01:23-08:00 summary: bpo-42521: Add note about 'Python -d' only working on debug builds (GH-23607) (cherry picked from commit 99b594404d364b363c184f48338d6ee81bee26dd) Co-authored-by: Pablo Galindo files: M Python/initconfig.c diff --git a/Python/initconfig.c b/Python/initconfig.c index e882a1fba5396..3caed385ef6af 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -42,7 +42,8 @@ Options and arguments (and corresponding environment variables):\n\ and comparing bytes/bytearray with str. (-bb: issue errors)\n\ -B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x\n\ -c cmd : program passed in as string (terminates option list)\n\ --d : debug output from parser; also PYTHONDEBUG=x\n\ +-d : turn on parser debugging output (for experts only, only works on\n\ + debug builds); also PYTHONDEBUG=x\n\ -E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\ -h : print this help message and exit (also --help)\n\ "; From webhook-mailer at python.org Wed Dec 2 22:20:51 2020 From: webhook-mailer at python.org (ned-deily) Date: Thu, 03 Dec 2020 03:20:51 -0000 Subject: [Python-checkins] bpo-42504: fix for MACOSX_DEPLOYMENT_TARGET=11 (GH-23556) Message-ID: https://github.com/python/cpython/commit/5291639e611dc3f55a34666036f2c3424648ba50 commit: 5291639e611dc3f55a34666036f2c3424648ba50 branch: master author: FX Coudert committer: ned-deily date: 2020-12-02T22:20:18-05:00 summary: bpo-42504: fix for MACOSX_DEPLOYMENT_TARGET=11 (GH-23556) macOS releases numbering has changed as of macOS 11 Big Sur. Previously, major releases were of the form 10.x, 10.x+1, 10.x+2, etc; as of Big Sur, they are now x, x+1, etc, so, for example, 10.15, 10.15.1, ..., 10.15.7, 11, 11.0.1, 11.1, ..., 12, 12.1, etc. Allow Python to build with single-digit deployment target values. Patch provided by FX Coudert. files: A Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst M Lib/distutils/spawn.py M Lib/distutils/tests/test_build_ext.py M Lib/test/test_posix.py M setup.py diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd0391e6f1..f50edd2da9710 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -54,8 +54,8 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): global _cfg_target, _cfg_target_split if _cfg_target is None: from distutils import sysconfig - _cfg_target = sysconfig.get_config_var( - 'MACOSX_DEPLOYMENT_TARGET') or '' + _cfg_target = str(sysconfig.get_config_var( + 'MACOSX_DEPLOYMENT_TARGET') or '') if _cfg_target: _cfg_target_split = [int(x) for x in _cfg_target.split('.')] if _cfg_target: diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 6bb009a86f41e..a3055c1984032 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -456,7 +456,7 @@ def test_deployment_target_higher_ok(self): deptarget = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if deptarget: # increment the minor version number (i.e. 10.6 -> 10.7) - deptarget = [int(x) for x in deptarget.split('.')] + deptarget = [int(x) for x in str(deptarget).split('.')] deptarget[-1] += 1 deptarget = '.'.join(str(i) for i in deptarget) self._try_compile_deployment_target('<', deptarget) @@ -489,7 +489,7 @@ def _try_compile_deployment_target(self, operator, target): # get the deployment target that the interpreter was built with target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') - target = tuple(map(int, target.split('.')[0:2])) + target = tuple(map(int, str(target).split('.')[0:2])) # format the target value as defined in the Apple # Availability Macros. We can't use the macro names since # at least one value we test with will not exist yet. @@ -498,7 +498,11 @@ def _try_compile_deployment_target(self, operator, target): target = '%02d%01d0' % target else: # for 10.10 and beyond -> "10nn00" - target = '%02d%02d00' % target + if len(target) >= 2: + target = '%02d%02d00' % target + else: + # 11 and later can have no minor version (11 instead of 11.0) + target = '%02d0000' % target deptarget_ext = Extension( 'deptarget', [deptarget_c], diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 18afbef082bff..d4d348cdc02d0 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1061,7 +1061,7 @@ def test_getgroups(self): if sys.platform == 'darwin': import sysconfig dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0' - if tuple(int(n) for n in dt.split('.')[0:2]) < (10, 6): + if tuple(int(n) for n in str(dt).split('.')[0:2]) < (10, 6): raise unittest.SkipTest("getgroups(2) is broken prior to 10.6") # 'id -G' and 'os.getgroups()' should return the same diff --git a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst new file mode 100644 index 0000000000000..c83bc2b9eeec5 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst @@ -0,0 +1 @@ +Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 \ No newline at end of file diff --git a/setup.py b/setup.py index b7a7d26c5325b..0c9a425016869 100644 --- a/setup.py +++ b/setup.py @@ -1014,7 +1014,7 @@ def detect_readline_curses(self): os_release = int(os.uname()[2].split('.')[0]) dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if (dep_target and - (tuple(int(n) for n in dep_target.split('.')[0:2]) + (tuple(int(n) for n in str(dep_target).split('.')[0:2]) < (10, 5) ) ): os_release = 8 if os_release < 9: From webhook-mailer at python.org Wed Dec 2 22:43:16 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 03:43:16 -0000 Subject: [Python-checkins] bpo-42504: fix for MACOSX_DEPLOYMENT_TARGET=11 (GH-23556) Message-ID: https://github.com/python/cpython/commit/09a698b4743c669983d606595a1b2daeff6c3cf8 commit: 09a698b4743c669983d606595a1b2daeff6c3cf8 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-02T19:43:08-08:00 summary: bpo-42504: fix for MACOSX_DEPLOYMENT_TARGET=11 (GH-23556) macOS releases numbering has changed as of macOS 11 Big Sur. Previously, major releases were of the form 10.x, 10.x+1, 10.x+2, etc; as of Big Sur, they are now x, x+1, etc, so, for example, 10.15, 10.15.1, ..., 10.15.7, 11, 11.0.1, 11.1, ..., 12, 12.1, etc. Allow Python to build with single-digit deployment target values. Patch provided by FX Coudert. (cherry picked from commit 5291639e611dc3f55a34666036f2c3424648ba50) Co-authored-by: FX Coudert files: A Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst M Lib/distutils/spawn.py M Lib/distutils/tests/test_build_ext.py M Lib/test/test_posix.py M setup.py diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd0391e6f1..f50edd2da9710 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -54,8 +54,8 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0): global _cfg_target, _cfg_target_split if _cfg_target is None: from distutils import sysconfig - _cfg_target = sysconfig.get_config_var( - 'MACOSX_DEPLOYMENT_TARGET') or '' + _cfg_target = str(sysconfig.get_config_var( + 'MACOSX_DEPLOYMENT_TARGET') or '') if _cfg_target: _cfg_target_split = [int(x) for x in _cfg_target.split('.')] if _cfg_target: diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 5a32e039800f0..1b034c9302521 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -455,7 +455,7 @@ def test_deployment_target_higher_ok(self): deptarget = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if deptarget: # increment the minor version number (i.e. 10.6 -> 10.7) - deptarget = [int(x) for x in deptarget.split('.')] + deptarget = [int(x) for x in str(deptarget).split('.')] deptarget[-1] += 1 deptarget = '.'.join(str(i) for i in deptarget) self._try_compile_deployment_target('<', deptarget) @@ -488,7 +488,7 @@ def _try_compile_deployment_target(self, operator, target): # get the deployment target that the interpreter was built with target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') - target = tuple(map(int, target.split('.')[0:2])) + target = tuple(map(int, str(target).split('.')[0:2])) # format the target value as defined in the Apple # Availability Macros. We can't use the macro names since # at least one value we test with will not exist yet. @@ -497,7 +497,11 @@ def _try_compile_deployment_target(self, operator, target): target = '%02d%01d0' % target else: # for 10.10 and beyond -> "10nn00" - target = '%02d%02d00' % target + if len(target) >= 2: + target = '%02d%02d00' % target + else: + # 11 and later can have no minor version (11 instead of 11.0) + target = '%02d0000' % target deptarget_ext = Extension( 'deptarget', [deptarget_c], diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index f4edb8bd9575f..bfbcbab3b62f9 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1045,7 +1045,7 @@ def test_getgroups(self): if sys.platform == 'darwin': import sysconfig dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0' - if tuple(int(n) for n in dt.split('.')[0:2]) < (10, 6): + if tuple(int(n) for n in str(dt).split('.')[0:2]) < (10, 6): raise unittest.SkipTest("getgroups(2) is broken prior to 10.6") # 'id -G' and 'os.getgroups()' should return the same diff --git a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst new file mode 100644 index 0000000000000..c83bc2b9eeec5 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst @@ -0,0 +1 @@ +Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 \ No newline at end of file diff --git a/setup.py b/setup.py index 7432970a10691..bfe621d0b50da 100644 --- a/setup.py +++ b/setup.py @@ -1012,7 +1012,7 @@ def detect_readline_curses(self): os_release = int(os.uname()[2].split('.')[0]) dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') if (dep_target and - (tuple(int(n) for n in dep_target.split('.')[0:2]) + (tuple(int(n) for n in str(dep_target).split('.')[0:2]) < (10, 5) ) ): os_release = 8 if os_release < 9: From webhook-mailer at python.org Wed Dec 2 22:48:22 2020 From: webhook-mailer at python.org (orsenthil) Date: Thu, 03 Dec 2020 03:48:22 -0000 Subject: [Python-checkins] Remove the conditional for setting query. (#23604) Message-ID: https://github.com/python/cpython/commit/3ec9d019013a9e9125d4f8669be177b9154cb45b commit: 3ec9d019013a9e9125d4f8669be177b9154cb45b branch: master author: Senthil Kumaran committer: orsenthil date: 2020-12-02T19:48:14-08:00 summary: Remove the conditional for setting query. (#23604) files: M Lib/http/server.py diff --git a/Lib/http/server.py b/Lib/http/server.py index ee99182109913..c611381177d43 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -1092,8 +1092,7 @@ def run_cgi(self): env['PATH_INFO'] = uqrest env['PATH_TRANSLATED'] = self.translate_path(uqrest) env['SCRIPT_NAME'] = scriptname - if query: - env['QUERY_STRING'] = query + env['QUERY_STRING'] = query env['REMOTE_ADDR'] = self.client_address[0] authorization = self.headers.get("authorization") if authorization: From webhook-mailer at python.org Thu Dec 3 03:48:45 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Thu, 03 Dec 2020 08:48:45 -0000 Subject: [Python-checkins] bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) Message-ID: https://github.com/python/cpython/commit/f3c3ea91a76526edff928c95b9c6767e077b7448 commit: f3c3ea91a76526edff928c95b9c6767e077b7448 branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-03T10:48:26+02:00 summary: bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) files: M Lib/tkinter/test/test_ttk/test_style.py diff --git a/Lib/tkinter/test/test_ttk/test_style.py b/Lib/tkinter/test/test_ttk/test_style.py index 54e913311766f..38d70d7a89077 100644 --- a/Lib/tkinter/test/test_ttk/test_style.py +++ b/Lib/tkinter/test/test_ttk/test_style.py @@ -1,4 +1,5 @@ import unittest +import sys import tkinter from tkinter import ttk from test import support @@ -136,6 +137,10 @@ def test_configure_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('configure', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.configure(newname), None) style.configure(newname, **default) @@ -158,6 +163,10 @@ def test_map_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('map', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.map(newname), {}) style.map(newname, **default) From webhook-mailer at python.org Thu Dec 3 04:07:23 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 09:07:23 -0000 Subject: [Python-checkins] bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) Message-ID: https://github.com/python/cpython/commit/12d2306a1db48f71b15ceaecf3d5ce06dbbe06c1 commit: 12d2306a1db48f71b15ceaecf3d5ce06dbbe06c1 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-03T01:07:13-08:00 summary: bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) (cherry picked from commit f3c3ea91a76526edff928c95b9c6767e077b7448) Co-authored-by: Serhiy Storchaka files: M Lib/tkinter/test/test_ttk/test_style.py diff --git a/Lib/tkinter/test/test_ttk/test_style.py b/Lib/tkinter/test/test_ttk/test_style.py index 54e913311766f..38d70d7a89077 100644 --- a/Lib/tkinter/test/test_ttk/test_style.py +++ b/Lib/tkinter/test/test_ttk/test_style.py @@ -1,4 +1,5 @@ import unittest +import sys import tkinter from tkinter import ttk from test import support @@ -136,6 +137,10 @@ def test_configure_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('configure', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.configure(newname), None) style.configure(newname, **default) @@ -158,6 +163,10 @@ def test_map_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('map', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.map(newname), {}) style.map(newname, **default) From webhook-mailer at python.org Thu Dec 3 04:10:32 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 09:10:32 -0000 Subject: [Python-checkins] bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) Message-ID: https://github.com/python/cpython/commit/ae67db6b314e297a1b67ed15c0bb560b8ce5b856 commit: ae67db6b314e297a1b67ed15c0bb560b8ce5b856 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-03T01:10:23-08:00 summary: bpo-42328: Skip some tests with themes vista and xpnative on Windows 7 (GH-23612) (cherry picked from commit f3c3ea91a76526edff928c95b9c6767e077b7448) Co-authored-by: Serhiy Storchaka files: M Lib/tkinter/test/test_ttk/test_style.py diff --git a/Lib/tkinter/test/test_ttk/test_style.py b/Lib/tkinter/test/test_ttk/test_style.py index 54e913311766f..38d70d7a89077 100644 --- a/Lib/tkinter/test/test_ttk/test_style.py +++ b/Lib/tkinter/test/test_ttk/test_style.py @@ -1,4 +1,5 @@ import unittest +import sys import tkinter from tkinter import ttk from test import support @@ -136,6 +137,10 @@ def test_configure_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('configure', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.configure(newname), None) style.configure(newname, **default) @@ -158,6 +163,10 @@ def test_map_custom_copy(self): with self.subTest(theme=theme, name=name): if support.verbose >= 2: print('map', theme, name, default) + if (theme in ('vista', 'xpnative') + and sys.getwindowsversion()[:2] == (6, 1)): + # Fails on the Windows 7 buildbot + continue newname = f'C.{name}' self.assertEqual(style.map(newname), {}) style.map(newname, **default) From webhook-mailer at python.org Thu Dec 3 05:46:21 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Thu, 03 Dec 2020 10:46:21 -0000 Subject: [Python-checkins] bpo-42431: Fix outdated bytes comments (GH-23458) Message-ID: https://github.com/python/cpython/commit/2ad93821a69e6efac3b0efe1d205d6e5ef030791 commit: 2ad93821a69e6efac3b0efe1d205d6e5ef030791 branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-03T12:46:16+02:00 summary: bpo-42431: Fix outdated bytes comments (GH-23458) Also move definitions of internal macros F_LJUST etc to private header. files: A Include/internal/pycore_format.h M Include/bytesobject.h M Include/cpython/bytesobject.h M Makefile.pre.in M Objects/bytearrayobject.c M Objects/bytesobject.c M Objects/clinic/bytearrayobject.c.h M Objects/clinic/bytesobject.c.h M Objects/unicodeobject.c M PCbuild/pythoncore.vcxproj M PCbuild/pythoncore.vcxproj.filters diff --git a/Include/bytesobject.h b/Include/bytesobject.h index 5062d8d123ad3..39c241a2dcf5f 100644 --- a/Include/bytesobject.h +++ b/Include/bytesobject.h @@ -1,5 +1,5 @@ -/* Bytes (String) object interface */ +/* Bytes object interface */ #ifndef Py_BYTESOBJECT_H #define Py_BYTESOBJECT_H @@ -10,23 +10,20 @@ extern "C" { #include /* -Type PyBytesObject represents a character string. An extra zero byte is +Type PyBytesObject represents a byte string. An extra zero byte is reserved at the end to ensure it is zero-terminated, but a size is present so strings with null bytes in them can be represented. This is an immutable object type. -There are functions to create new string objects, to test -an object for string-ness, and to get the -string value. The latter function returns a null pointer +There are functions to create new bytes objects, to test +an object for bytes-ness, and to get the +byte string value. The latter function returns a null pointer if the object is not of the proper type. There is a variant that takes an explicit size as well as a variant that assumes a zero-terminated string. Note that none of the -functions should be applied to nil objects. +functions should be applied to NULL pointer. */ -/* Caching the hash (ob_shash) saves recalculation of a string's hash value. - This significantly speeds up dict lookups. */ - PyAPI_DATA(PyTypeObject) PyBytes_Type; PyAPI_DATA(PyTypeObject) PyBytesIter_Type; @@ -50,26 +47,16 @@ PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t, const char *, Py_ssize_t, const char *); -/* Provides access to the internal data buffer and size of a string - object or the default encoded version of a Unicode object. Passing - NULL as *len parameter will force the string buffer to be - 0-terminated (passing a string with embedded NULL characters will +/* Provides access to the internal data buffer and size of a bytes object. + Passing NULL as len parameter will force the string buffer to be + 0-terminated (passing a string with embedded NUL characters will cause an exception). */ PyAPI_FUNC(int) PyBytes_AsStringAndSize( - PyObject *obj, /* string or Unicode object */ + PyObject *obj, /* bytes object */ char **s, /* pointer to buffer variable */ - Py_ssize_t *len /* pointer to length variable or NULL - (only possible for 0-terminated - strings) */ + Py_ssize_t *len /* pointer to length variable or NULL */ ); -/* Flags used by string formatting */ -#define F_LJUST (1<<0) -#define F_SIGN (1<<1) -#define F_BLANK (1<<2) -#define F_ALT (1<<3) -#define F_ZERO (1<<4) - #ifndef Py_LIMITED_API # define Py_CPYTHON_BYTESOBJECT_H # include "cpython/bytesobject.h" diff --git a/Include/cpython/bytesobject.h b/Include/cpython/bytesobject.h index f284c5835df09..6b3f55224fc55 100644 --- a/Include/cpython/bytesobject.h +++ b/Include/cpython/bytesobject.h @@ -10,7 +10,7 @@ typedef struct { /* Invariants: * ob_sval contains space for 'ob_size+1' elements. * ob_sval[ob_size] == 0. - * ob_shash is the hash of the string or -1 if not computed yet. + * ob_shash is the hash of the byte string or -1 if not computed yet. */ } PyBytesObject; diff --git a/Include/internal/pycore_format.h b/Include/internal/pycore_format.h new file mode 100644 index 0000000000000..1b8d57539ca50 --- /dev/null +++ b/Include/internal/pycore_format.h @@ -0,0 +1,27 @@ +#ifndef Py_INTERNAL_FORMAT_H +#define Py_INTERNAL_FORMAT_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +/* Format codes + * F_LJUST '-' + * F_SIGN '+' + * F_BLANK ' ' + * F_ALT '#' + * F_ZERO '0' + */ +#define F_LJUST (1<<0) +#define F_SIGN (1<<1) +#define F_BLANK (1<<2) +#define F_ALT (1<<3) +#define F_ZERO (1<<4) + +#ifdef __cplusplus +} +#endif +#endif /* !Py_INTERNAL_FORMAT_H */ diff --git a/Makefile.pre.in b/Makefile.pre.in index ee801ec46df73..082945f58a777 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1112,6 +1112,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/internal/pycore_context.h \ $(srcdir)/Include/internal/pycore_dtoa.h \ $(srcdir)/Include/internal/pycore_fileutils.h \ + $(srcdir)/Include/internal/pycore_format.h \ $(srcdir)/Include/internal/pycore_getopt.h \ $(srcdir)/Include/internal/pycore_gil.h \ $(srcdir)/Include/internal/pycore_hamt.h \ diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 805707a4529c6..7cb2b1478cf9c 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -13,10 +13,9 @@ class bytearray "PyByteArrayObject *" "&PyByteArray_Type" [clinic start generated code]*/ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=5535b77c37a119e0]*/ +/* For PyByteArray_AS_STRING(). */ char _PyByteArray_empty_string[] = ""; -/* end nullbytes support */ - /* Helpers */ static int @@ -266,7 +265,7 @@ PyByteArray_Concat(PyObject *a, PyObject *b) result = (PyByteArrayObject *) \ PyByteArray_FromStringAndSize(NULL, va.len + vb.len); - // result->ob_bytes is NULL if result is an empty string: + // result->ob_bytes is NULL if result is an empty bytearray: // if va.len + vb.len equals zero. if (result != NULL && result->ob_bytes != NULL) { memcpy(result->ob_bytes, va.buf, va.len); @@ -1007,9 +1006,6 @@ bytearray_richcompare(PyObject *self, PyObject *other, int op) Py_buffer self_bytes, other_bytes; int cmp; - /* Bytes can be compared to anything that supports the (binary) - buffer API. Except that a comparison with Unicode is always an - error, even if the comparison is for equality. */ if (!PyObject_CheckBuffer(self) || !PyObject_CheckBuffer(other)) { if (PyUnicode_Check(self) || PyUnicode_Check(other)) { if (_Py_GetConfig()->bytes_warning && (op == Py_EQ || op == Py_NE)) { @@ -1021,6 +1017,7 @@ bytearray_richcompare(PyObject *self, PyObject *other, int op) Py_RETURN_NOTIMPLEMENTED; } + /* Bytearrays can be compared to anything that supports the buffer API. */ if (PyObject_GetBuffer(self, &self_bytes, PyBUF_SIMPLE) != 0) { PyErr_Clear(); Py_RETURN_NOTIMPLEMENTED; @@ -1328,7 +1325,7 @@ bytearray_translate_impl(PyByteArrayObject *self, PyObject *table, if (trans_table[c] != -1) *output++ = (char)trans_table[c]; } - /* Fix the size of the resulting string */ + /* Fix the size of the resulting bytearray */ if (inlen > 0) if (PyByteArray_Resize(result, output - output_start) < 0) { Py_CLEAR(result); @@ -2083,7 +2080,7 @@ bytearray.hex How many bytes between separators. Positive values count from the right, negative values count from the left. -Create a str of hexadecimal numbers from a bytearray object. +Create a string of hexadecimal numbers from a bytearray object. Example: >>> value = bytearray([0xb9, 0x01, 0xef]) @@ -2099,7 +2096,7 @@ Create a str of hexadecimal numbers from a bytearray object. static PyObject * bytearray_hex_impl(PyByteArrayObject *self, PyObject *sep, int bytes_per_sep) -/*[clinic end generated code: output=29c4e5ef72c565a0 input=814c15830ac8c4b5]*/ +/*[clinic end generated code: output=29c4e5ef72c565a0 input=808667e49bcccb54]*/ { char* argbuf = PyByteArray_AS_STRING(self); Py_ssize_t arglen = PyByteArray_GET_SIZE(self); @@ -2358,7 +2355,7 @@ PyTypeObject PyByteArray_Type = { PyObject_Del, /* tp_free */ }; -/*********************** Bytes Iterator ****************************/ +/*********************** Bytearray Iterator ****************************/ typedef struct { PyObject_HEAD diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 13216b9bb21a5..ccabbdca1d562 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -5,6 +5,7 @@ #include "Python.h" #include "pycore_abstract.h" // _PyIndex_Check() #include "pycore_bytes_methods.h" // _Py_bytes_startswith() +#include "pycore_format.h" // F_LJUST #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_object.h" // _PyObject_GC_TRACK #include "pycore_pymem.h" // PYMEM_CLEANBYTE @@ -21,11 +22,11 @@ class bytes "PyBytesObject *" "&PyBytes_Type" _Py_IDENTIFIER(__bytes__); -/* PyBytesObject_SIZE gives the basic size of a string; any memory allocation - for a string of length n should request PyBytesObject_SIZE + n bytes. +/* PyBytesObject_SIZE gives the basic size of a bytes object; any memory allocation + for a bytes object of length n should request PyBytesObject_SIZE + n bytes. Using PyBytesObject_SIZE instead of sizeof(PyBytesObject) saves - 3 bytes per string allocation on a typical system. + 3 or 7 bytes per bytes object allocation on a typical system. */ #define PyBytesObject_SIZE (offsetof(PyBytesObject, ob_sval) + 1) @@ -439,19 +440,6 @@ getnextarg(PyObject *args, Py_ssize_t arglen, Py_ssize_t *p_argidx) return NULL; } -/* Format codes - * F_LJUST '-' - * F_SIGN '+' - * F_BLANK ' ' - * F_ALT '#' - * F_ZERO '0' - */ -#define F_LJUST (1<<0) -#define F_SIGN (1<<1) -#define F_BLANK (1<<2) -#define F_ALT (1<<3) -#define F_ZERO (1<<4) - /* Returns a new reference to a PyBytes object, or NULL on failure. */ static char* @@ -1560,7 +1548,7 @@ bytes_richcompare(PyBytesObject *a, PyBytesObject *b, int op) case Py_EQ: case Py_LE: case Py_GE: - /* a string is equal to itself */ + /* a byte string is equal to itself */ Py_RETURN_TRUE; case Py_NE: case Py_LT: @@ -2149,7 +2137,7 @@ bytes_translate_impl(PyBytesObject *self, PyObject *table, Py_INCREF(input_obj); return input_obj; } - /* Fix the size of the resulting string */ + /* Fix the size of the resulting byte string */ if (inlen > 0) _PyBytes_Resize(&result, output - output_start); return result; @@ -2453,7 +2441,7 @@ bytes.hex How many bytes between separators. Positive values count from the right, negative values count from the left. -Create a str of hexadecimal numbers from a bytes object. +Create a string of hexadecimal numbers from a bytes object. Example: >>> value = b'\xb9\x01\xef' @@ -2469,7 +2457,7 @@ Create a str of hexadecimal numbers from a bytes object. static PyObject * bytes_hex_impl(PyBytesObject *self, PyObject *sep, int bytes_per_sep) -/*[clinic end generated code: output=1f134da504064139 input=f1238d3455990218]*/ +/*[clinic end generated code: output=1f134da504064139 input=1a21282b1f1ae595]*/ { const char *argbuf = PyBytes_AS_STRING(self); Py_ssize_t arglen = PyBytes_GET_SIZE(self); @@ -2771,7 +2759,7 @@ _PyBytes_FromIterator(PyObject *it, PyObject *x) Py_ssize_t i, size; _PyBytesWriter writer; - /* For iterator version, create a string object and resize as needed */ + /* For iterator version, create a bytes object and resize as needed */ size = PyObject_LengthHint(x, 64); if (size == -1 && PyErr_Occurred()) return NULL; diff --git a/Objects/clinic/bytearrayobject.c.h b/Objects/clinic/bytearrayobject.c.h index 3452b24174034..1e3f197561523 100644 --- a/Objects/clinic/bytearrayobject.c.h +++ b/Objects/clinic/bytearrayobject.c.h @@ -990,7 +990,7 @@ PyDoc_STRVAR(bytearray_hex__doc__, "hex($self, /, sep=, bytes_per_sep=1)\n" "--\n" "\n" -"Create a str of hexadecimal numbers from a bytearray object.\n" +"Create a string of hexadecimal numbers from a bytearray object.\n" "\n" " sep\n" " An optional single character or byte to separate hex bytes.\n" @@ -1120,4 +1120,4 @@ bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored)) { return bytearray_sizeof_impl(self); } -/*[clinic end generated code: output=47cd9ad3fdc3ac0c input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a82659f581e55629 input=a9049054013a1b77]*/ diff --git a/Objects/clinic/bytesobject.c.h b/Objects/clinic/bytesobject.c.h index 27ac6b106748a..9e365ce1a088b 100644 --- a/Objects/clinic/bytesobject.c.h +++ b/Objects/clinic/bytesobject.c.h @@ -750,7 +750,7 @@ PyDoc_STRVAR(bytes_hex__doc__, "hex($self, /, sep=, bytes_per_sep=1)\n" "--\n" "\n" -"Create a str of hexadecimal numbers from a bytes object.\n" +"Create a string of hexadecimal numbers from a bytes object.\n" "\n" " sep\n" " An optional single character or byte to separate hex bytes.\n" @@ -878,4 +878,4 @@ bytes_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) exit: return return_value; } -/*[clinic end generated code: output=6101b417d6a6a717 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=b3f0ec2753246b9c input=a9049054013a1b77]*/ diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index f6473c02d30fd..409355534a2ce 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -42,6 +42,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "Python.h" #include "pycore_abstract.h" // _PyIndex_Check() #include "pycore_bytes_methods.h" // _Py_bytes_lower() +#include "pycore_format.h" // F_LJUST #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_interp.h" // PyInterpreterState.fs_codec #include "pycore_object.h" // _PyObject_GC_TRACK() diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index 18edba855d616..cf78714920b05 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -176,6 +176,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 281bce1c5f498..ba84ab902b687 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -510,6 +510,9 @@ Include\internal + + Include\internal + Include\internal From webhook-mailer at python.org Thu Dec 3 07:57:06 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Dec 2020 12:57:06 -0000 Subject: [Python-checkins] bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Message-ID: https://github.com/python/cpython/commit/7e5e13d113798117d5ef25c5ffdbd0eb39420f98 commit: 7e5e13d113798117d5ef25c5ffdbd0eb39420f98 branch: master author: Victor Stinner committer: vstinner date: 2020-12-03T13:56:41+01:00 summary: bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Fix test_asyncio.test_call_later() race condition: don't measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. files: A Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst M Lib/test/test_asyncio/test_events.py diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 7f76011d2b92d..ce615606db7e3 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -294,11 +294,8 @@ def callback(arg): self.loop.stop() self.loop.call_later(0.1, callback, 'hello world') - t0 = time.monotonic() self.loop.run_forever() - t1 = time.monotonic() self.assertEqual(results, ['hello world']) - self.assertTrue(0.08 <= t1-t0 <= 0.8, t1-t0) def test_call_soon(self): results = [] diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst new file mode 100644 index 0000000000000..872214284728b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst @@ -0,0 +1,3 @@ +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. From webhook-mailer at python.org Thu Dec 3 08:01:18 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 03 Dec 2020 13:01:18 -0000 Subject: [Python-checkins] bpo-42262: Py_NewRef() casts its argument to PyObject* (GH-23626) Message-ID: https://github.com/python/cpython/commit/8b6c4a921af6d5d0a9640211ac93d7886a55a8f3 commit: 8b6c4a921af6d5d0a9640211ac93d7886a55a8f3 branch: master author: Victor Stinner committer: vstinner date: 2020-12-03T14:01:10+01:00 summary: bpo-42262: Py_NewRef() casts its argument to PyObject* (GH-23626) Write also unit tests on Py_NewRef() and Py_XNewRef(). files: M Include/object.h M Modules/_testcapimodule.c diff --git a/Include/object.h b/Include/object.h index f68423a09c4e4..8d0039428e73a 100644 --- a/Include/object.h +++ b/Include/object.h @@ -426,7 +426,6 @@ static inline void _Py_INCREF(PyObject *op) #endif op->ob_refcnt++; } - #define Py_INCREF(op) _Py_INCREF(_PyObject_CAST(op)) static inline void _Py_DECREF( @@ -449,7 +448,6 @@ static inline void _Py_DECREF( _Py_Dealloc(op); } } - #ifdef Py_REF_DEBUG # define Py_DECREF(op) _Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op)) #else @@ -548,8 +546,8 @@ static inline PyObject* _Py_XNewRef(PyObject *obj) // Py_NewRef() and Py_XNewRef() are exported as functions for the stable ABI. // Names overriden with macros by static inline functions for best // performances. -#define Py_NewRef(obj) _Py_NewRef(obj) -#define Py_XNewRef(obj) _Py_XNewRef(obj) +#define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj)) +#define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj)) /* diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index d2104423c5890..4f97927fa2322 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5614,7 +5614,7 @@ static PyObject *test_buildvalue_issue38913(PyObject *, PyObject *); static PyObject* -test_set_type_size(PyObject* self, PyObject* ignored) +test_set_type_size(PyObject *self, PyObject *Py_UNUSED(ignored)) { PyObject *obj = PyList_New(0); if (obj == NULL) { @@ -5636,6 +5636,35 @@ test_set_type_size(PyObject* self, PyObject* ignored) } +// Test Py_NewRef() and Py_XNewRef() functions +static PyObject* +test_refcount(PyObject *self, PyObject *Py_UNUSED(ignored)) +{ + PyObject *obj = PyList_New(0); + if (obj == NULL) { + return NULL; + } + assert(Py_REFCNT(obj) == 1); + + // Test Py_NewRef() + PyObject *ref = Py_NewRef(obj); + assert(ref == obj); + assert(Py_REFCNT(obj) == 2); + Py_DECREF(ref); + + // Test Py_XNewRef() + PyObject *xref = Py_XNewRef(obj); + assert(xref == obj); + assert(Py_REFCNT(obj) == 2); + Py_DECREF(xref); + + assert(Py_XNewRef(NULL) == NULL); + + Py_DECREF(obj); + Py_RETURN_NONE; +} + + static PyMethodDef TestMethods[] = { {"raise_exception", raise_exception, METH_VARARGS}, {"raise_memoryerror", raise_memoryerror, METH_NOARGS}, @@ -5908,6 +5937,7 @@ static PyMethodDef TestMethods[] = { {"pynumber_tobase", pynumber_tobase, METH_VARARGS}, {"without_gc", without_gc, METH_O}, {"test_set_type_size", test_set_type_size, METH_NOARGS}, + {"test_refcount", test_refcount, METH_NOARGS}, {NULL, NULL} /* sentinel */ }; From webhook-mailer at python.org Thu Dec 3 08:15:37 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 13:15:37 -0000 Subject: [Python-checkins] bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Message-ID: https://github.com/python/cpython/commit/930d5377c5877a631c3c23929e2cb6211bb0e2fb commit: 930d5377c5877a631c3c23929e2cb6211bb0e2fb branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-03T05:15:28-08:00 summary: bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Fix test_asyncio.test_call_later() race condition: don't measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. (cherry picked from commit 7e5e13d113798117d5ef25c5ffdbd0eb39420f98) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst M Lib/test/test_asyncio/test_events.py diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index cec7e94a4f3c4..af18d62072746 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -291,11 +291,8 @@ def callback(arg): self.loop.stop() self.loop.call_later(0.1, callback, 'hello world') - t0 = time.monotonic() self.loop.run_forever() - t1 = time.monotonic() self.assertEqual(results, ['hello world']) - self.assertTrue(0.08 <= t1-t0 <= 0.8, t1-t0) def test_call_soon(self): results = [] diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst new file mode 100644 index 0000000000000..872214284728b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst @@ -0,0 +1,3 @@ +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. From webhook-mailer at python.org Thu Dec 3 08:20:13 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 13:20:13 -0000 Subject: [Python-checkins] bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Message-ID: https://github.com/python/cpython/commit/9f26833cedd33439b11059d423f599982abeb180 commit: 9f26833cedd33439b11059d423f599982abeb180 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-03T05:20:07-08:00 summary: bpo-42553: Fix test_asyncio.test_call_later() (GH-23627) Fix test_asyncio.test_call_later() race condition: don't measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. (cherry picked from commit 7e5e13d113798117d5ef25c5ffdbd0eb39420f98) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst M Lib/test/test_asyncio/test_events.py diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 92b1522e956c4..fa6c49d89da5c 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -293,11 +293,8 @@ def callback(arg): self.loop.stop() self.loop.call_later(0.1, callback, 'hello world') - t0 = time.monotonic() self.loop.run_forever() - t1 = time.monotonic() self.assertEqual(results, ['hello world']) - self.assertTrue(0.08 <= t1-t0 <= 0.8, t1-t0) def test_call_soon(self): results = [] diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst new file mode 100644 index 0000000000000..872214284728b --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst @@ -0,0 +1,3 @@ +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. From webhook-mailer at python.org Thu Dec 3 12:22:31 2020 From: webhook-mailer at python.org (zooba) Date: Thu, 03 Dec 2020 17:22:31 -0000 Subject: [Python-checkins] bpo-42523: Fix supported versions in "Using Python on Windows" (GH-23603) Message-ID: https://github.com/python/cpython/commit/db68544122f5a0c7b80f69c0e643049efa6699c6 commit: db68544122f5a0c7b80f69c0e643049efa6699c6 branch: master author: Zackery Spytz committer: zooba date: 2020-12-03T17:22:04Z summary: bpo-42523: Fix supported versions in "Using Python on Windows" (GH-23603) files: M Doc/using/windows.rst diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 78c1e03f7462c..265c07c7099f3 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -23,8 +23,8 @@ available for application-local distributions. As specified in :pep:`11`, a Python release only supports a Windows platform while Microsoft considers the platform under extended support. This means that -Python |version| supports Windows Vista and newer. If you require Windows XP -support then please install Python 3.4. +Python |version| supports Windows 8.1 and newer. If you require Windows 7 +support, please install Python 3.8. There are a number of different installers available for Windows, each with certain benefits and downsides. From webhook-mailer at python.org Thu Dec 3 12:47:11 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 03 Dec 2020 17:47:11 -0000 Subject: [Python-checkins] bpo-42523: Fix supported versions in "Using Python on Windows" (GH-23603) Message-ID: https://github.com/python/cpython/commit/3689c25a1010c2acdb05f1b1b0229f4766b4440a commit: 3689c25a1010c2acdb05f1b1b0229f4766b4440a branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-03T09:46:58-08:00 summary: bpo-42523: Fix supported versions in "Using Python on Windows" (GH-23603) (cherry picked from commit db68544122f5a0c7b80f69c0e643049efa6699c6) Co-authored-by: Zackery Spytz files: M Doc/using/windows.rst diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst index 275495bc6d129..d0c342e1dad86 100644 --- a/Doc/using/windows.rst +++ b/Doc/using/windows.rst @@ -23,8 +23,8 @@ available for application-local distributions. As specified in :pep:`11`, a Python release only supports a Windows platform while Microsoft considers the platform under extended support. This means that -Python |version| supports Windows Vista and newer. If you require Windows XP -support then please install Python 3.4. +Python |version| supports Windows 8.1 and newer. If you require Windows 7 +support, please install Python 3.8. There are a number of different installers available for Windows, each with certain benefits and downsides. From webhook-mailer at python.org Fri Dec 4 10:21:03 2020 From: webhook-mailer at python.org (markshannon) Date: Fri, 04 Dec 2020 15:21:03 -0000 Subject: [Python-checkins] bpo-42562: Fix issue when dis failed to parse function that has no line numbers (GH-23632) Message-ID: https://github.com/python/cpython/commit/f24b8101a01fa98b1e3ec042ba896aeb4c24d4bc commit: f24b8101a01fa98b1e3ec042ba896aeb4c24d4bc branch: master author: Yurii Karabas <1998uriyyo at gmail.com> committer: markshannon date: 2020-12-04T15:20:53Z summary: bpo-42562: Fix issue when dis failed to parse function that has no line numbers (GH-23632) Fix issue when dis failed to parse function that has only annotations files: A Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst M Lib/dis.py M Lib/test/test_dis.py diff --git a/Lib/dis.py b/Lib/dis.py index ea50f564c87dc..ccbd65be73255 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -384,7 +384,7 @@ def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, constants=None, cells=None, linestarts=None, *, file=None, line_offset=0): # Omit the line number column entirely if we have no line number info - show_lineno = linestarts is not None + show_lineno = bool(linestarts) if show_lineno: maxlineno = max(linestarts.values()) + line_offset if maxlineno >= 1000: diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index d0743d62e3d79..56d877151838f 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -166,6 +166,20 @@ def bug1333982(x=[]): bug1333982.__code__.co_firstlineno + 2, bug1333982.__code__.co_firstlineno + 1) + +def bug42562(): + pass + + +# Set line number for 'pass' to None +bug42562.__code__ = bug42562.__code__.replace(co_linetable=b'\x04\x80\xff\x80') + + +dis_bug42562 = """\ + 0 LOAD_CONST 0 (None) + 2 RETURN_VALUE +""" + _BIG_LINENO_FORMAT = """\ %3d 0 LOAD_GLOBAL 0 (spam) 2 POP_TOP @@ -520,6 +534,9 @@ def test_bug_1333982(self): self.do_disassembly_test(bug1333982, dis_bug1333982) + def test_bug_42562(self): + self.do_disassembly_test(bug42562, dis_bug42562) + def test_big_linenos(self): def func(count): namespace = {} diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst new file mode 100644 index 0000000000000..4999da509c291 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst @@ -0,0 +1,2 @@ +Fix issue when dis failed to parse function that has no line numbers. Patch +provided by Yurii Karabas. From webhook-mailer at python.org Fri Dec 4 10:22:22 2020 From: webhook-mailer at python.org (markshannon) Date: Fri, 04 Dec 2020 15:22:22 -0000 Subject: [Python-checkins] bpo-42246: Don't forget the entry block when ensuring that all exits have a line number (GH-23636) Message-ID: https://github.com/python/cpython/commit/eaccc12aa986f92ea05f3f0a63cedbff78dd67f1 commit: eaccc12aa986f92ea05f3f0a63cedbff78dd67f1 branch: master author: Mark Shannon committer: markshannon date: 2020-12-04T15:22:12Z summary: bpo-42246: Don't forget the entry block when ensuring that all exits have a line number (GH-23636) Don't forget the entry block when ensuring that all exits have a line number. files: M Lib/test/test_compile.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 1e61f41c25b78..0d11ce940f81a 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -809,6 +809,24 @@ def save_caller_frame(): func(save_caller_frame) self.assertEqual(frame.f_lineno-frame.f_code.co_firstlineno, lastline) + def test_lineno_after_no_code(self): + def no_code1(): + "doc string" + + def no_code2(): + a: int + + for func in (no_code1, no_code2): + with self.subTest(func=func): + code = func.__code__ + lines = list(code.co_lines()) + self.assertEqual(len(lines), 1) + start, end, line = lines[0] + self.assertEqual(start, 0) + self.assertEqual(end, len(code.co_code)) + self.assertEqual(line, code.co_firstlineno) + + def test_big_dict_literal(self): # The compiler has a flushing point in "compiler_dict" that calls compiles # a portion of the dictionary literal when the loop that iterates over the items diff --git a/Python/compile.c b/Python/compile.c index c67e8e885e4e6..ea9d6781b9c15 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -6514,6 +6514,7 @@ is_exit_without_lineno(basicblock *b) { static int ensure_exits_have_lineno(struct compiler *c) { + basicblock *entry = NULL; /* Copy all exit blocks without line number that are targets of a jump. */ for (basicblock *b = c->u->u_blocks; b != NULL; b = b->b_list) { @@ -6535,6 +6536,11 @@ ensure_exits_have_lineno(struct compiler *c) b->b_instr[b->b_iused-1].i_target = new_target; } } + entry = b; + } + assert(entry != NULL); + if (is_exit_without_lineno(entry)) { + entry->b_instr[0].i_lineno = c->u->u_firstlineno; } /* Any remaining reachable exit blocks without line number can only be reached by * fall through, and thus can only have a single predecessor */ diff --git a/Python/importlib.h b/Python/importlib.h index c5ff9ece081ee..179f8df77a0a0 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1243,7 +1243,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 114,32,109,111,100,117,108,101,32,99,114,101,97,116,105,111, 110,46,78,114,10,0,0,0,114,161,0,0,0,114,10,0, 0,0,114,10,0,0,0,114,11,0,0,0,114,150,0,0, - 0,66,3,0,0,115,4,0,0,0,4,128,255,128,122,28, + 0,66,3,0,0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,0,0,3,0,0,0,4,0,0, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index c459bcf2e90c4..8f18d208d2ec0 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1153,7 +1153,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,169,2,114,123,0,0,0,114,191,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,218,13,99,114, 101,97,116,101,95,109,111,100,117,108,101,55,3,0,0,115, - 4,0,0,0,4,128,255,128,122,27,95,76,111,97,100,101, + 4,0,0,0,4,0,255,128,122,27,95,76,111,97,100,101, 114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,109, 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, 0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,56, @@ -1292,7 +1292,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,78,114,7,0,0,0,41,3,114,123,0,0,0, 114,52,0,0,0,114,37,0,0,0,114,7,0,0,0,114, 7,0,0,0,114,8,0,0,0,114,232,0,0,0,105,3, - 0,0,115,4,0,0,0,4,128,255,128,122,21,83,111,117, + 0,0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,5, 0,0,0,10,0,0,0,67,0,0,0,115,70,0,0,0, @@ -2019,7 +2019,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,4,0,0,0,100,1,83,0,114,217,0,0,0,114, 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, 0,0,0,114,8,0,0,0,114,219,0,0,0,217,4,0, - 0,115,4,0,0,0,4,128,255,128,122,30,95,78,97,109, + 0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,2,0,0,0,1,0,0,0,67, From webhook-mailer at python.org Fri Dec 4 10:24:05 2020 From: webhook-mailer at python.org (vstinner) Date: Fri, 04 Dec 2020 15:24:05 -0000 Subject: [Python-checkins] bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) Message-ID: https://github.com/python/cpython/commit/066394018a8463643cc63d933493f0afa99d72cc commit: 066394018a8463643cc63d933493f0afa99d72cc branch: master author: Victor Stinner committer: vstinner date: 2020-12-04T16:23:56+01:00 summary: bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) https://bugzilla.redhat.com/show_bug.cgi?id=1866884 is fixed in gdb 10.1 (failed to reproduce on gdb-10.1-1.fc34.aarch64). files: A Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst M Lib/test/test_gdb.py diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index 44cb9a0f07b75..22c75bae98721 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -51,11 +51,6 @@ def get_gdb_version(): "embedding. Saw %s.%s:\n%s" % (gdb_major_version, gdb_minor_version, gdb_version)) -if (gdb_major_version, gdb_minor_version) >= (9, 2): - # gdb 9.2 on Fedora Rawhide is not reliable, see: - # * https://bugs.python.org/issue41473 - # * https://bugzilla.redhat.com/show_bug.cgi?id=1866884 - raise unittest.SkipTest("https://bugzilla.redhat.com/show_bug.cgi?id=1866884") if not sysconfig.is_python_build(): raise unittest.SkipTest("test_gdb only works on source builds at the moment.") diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst new file mode 100644 index 0000000000000..9e0a375a9b7f2 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst @@ -0,0 +1,3 @@ +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. From webhook-mailer at python.org Fri Dec 4 10:41:17 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 15:41:17 -0000 Subject: [Python-checkins] bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) Message-ID: https://github.com/python/cpython/commit/8e8f82dd9459b9f62c21480528d737cffd6146bc commit: 8e8f82dd9459b9f62c21480528d737cffd6146bc branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T07:41:02-08:00 summary: bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) https://bugzilla.redhat.com/show_bug.cgi?id=1866884 is fixed in gdb 10.1 (failed to reproduce on gdb-10.1-1.fc34.aarch64). (cherry picked from commit 066394018a8463643cc63d933493f0afa99d72cc) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst M Lib/test/test_gdb.py diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index 01a48af285422..d90ca5a51ae1b 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -51,11 +51,6 @@ def get_gdb_version(): "embedding. Saw %s.%s:\n%s" % (gdb_major_version, gdb_minor_version, gdb_version)) -if (gdb_major_version, gdb_minor_version) >= (9, 2): - # gdb 9.2 on Fedora Rawhide is not reliable, see: - # * https://bugs.python.org/issue41473 - # * https://bugzilla.redhat.com/show_bug.cgi?id=1866884 - raise unittest.SkipTest("https://bugzilla.redhat.com/show_bug.cgi?id=1866884") if not sysconfig.is_python_build(): raise unittest.SkipTest("test_gdb only works on source builds at the moment.") diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst new file mode 100644 index 0000000000000..9e0a375a9b7f2 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst @@ -0,0 +1,3 @@ +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. From webhook-mailer at python.org Fri Dec 4 10:47:53 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 15:47:53 -0000 Subject: [Python-checkins] bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) Message-ID: https://github.com/python/cpython/commit/c7cf66d2fe1b85cc02153be6422dfc5e34811638 commit: c7cf66d2fe1b85cc02153be6422dfc5e34811638 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T07:47:44-08:00 summary: bpo-41473: Reenable test_gdb on gdb 9.2 and newer (GH-23637) https://bugzilla.redhat.com/show_bug.cgi?id=1866884 is fixed in gdb 10.1 (failed to reproduce on gdb-10.1-1.fc34.aarch64). (cherry picked from commit 066394018a8463643cc63d933493f0afa99d72cc) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst M Lib/test/test_gdb.py diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index 44cb9a0f07b75..22c75bae98721 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -51,11 +51,6 @@ def get_gdb_version(): "embedding. Saw %s.%s:\n%s" % (gdb_major_version, gdb_minor_version, gdb_version)) -if (gdb_major_version, gdb_minor_version) >= (9, 2): - # gdb 9.2 on Fedora Rawhide is not reliable, see: - # * https://bugs.python.org/issue41473 - # * https://bugzilla.redhat.com/show_bug.cgi?id=1866884 - raise unittest.SkipTest("https://bugzilla.redhat.com/show_bug.cgi?id=1866884") if not sysconfig.is_python_build(): raise unittest.SkipTest("test_gdb only works on source builds at the moment.") diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst new file mode 100644 index 0000000000000..9e0a375a9b7f2 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst @@ -0,0 +1,3 @@ +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. From webhook-mailer at python.org Fri Dec 4 11:45:47 2020 From: webhook-mailer at python.org (taleinat) Date: Fri, 04 Dec 2020 16:45:47 -0000 Subject: [Python-checkins] bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) Message-ID: https://github.com/python/cpython/commit/6e1eec71f59c344fb23c7977061dc2c97b77d51b commit: 6e1eec71f59c344fb23c7977061dc2c97b77d51b branch: master author: Irit Katriel committer: taleinat <532281+taleinat at users.noreply.github.com> date: 2020-12-04T18:45:38+02:00 summary: bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) files: A Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst M Lib/inspect.py M Lib/test/inspect_fodder.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index 7412d0e837cf1..073a79d97acd2 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -930,6 +930,7 @@ def __init__(self): self.indecorator = False self.decoratorhasargs = False self.last = 1 + self.body_col0 = None def tokeneater(self, type, token, srowcol, erowcol, line): if not self.started and not self.indecorator: @@ -961,6 +962,8 @@ def tokeneater(self, type, token, srowcol, erowcol, line): elif self.passline: pass elif type == tokenize.INDENT: + if self.body_col0 is None and self.started: + self.body_col0 = erowcol[1] self.indent = self.indent + 1 self.passline = True elif type == tokenize.DEDENT: @@ -970,6 +973,10 @@ def tokeneater(self, type, token, srowcol, erowcol, line): # not e.g. for "if: else:" or "try: finally:" blocks) if self.indent <= 0: raise EndOfBlock + elif type == tokenize.COMMENT: + if self.body_col0 is not None and srowcol[1] >= self.body_col0: + # Include comments if indented at least as much as the block + self.last = srowcol[0] elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL): # any other token on the same indentation level end the previous # block as well, except the pseudo-tokens COMMENT and NL. diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py index 96a0257bfdf03..e1287a315901c 100644 --- a/Lib/test/inspect_fodder.py +++ b/Lib/test/inspect_fodder.py @@ -91,3 +91,25 @@ def as_method_of(self, obj): custom_method = Callable().as_method_of(42) del Callable + +# line 95 +class WhichComments: + # line 97 + # before f + def f(self): + # line 100 + # start f + return 1 + # line 103 + # end f + # line 105 + # after f + + # before asyncf - line 108 + async def asyncf(self): + # start asyncf + return 2 + # end asyncf + # after asyncf - line 113 + # end of WhichComments - line 114 + # after WhichComments - line 115 diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 71c4f27d27b98..172e6bf6cd8a6 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -390,6 +390,7 @@ def test_getclasses(self): ('ParrotDroppings', mod.ParrotDroppings), ('StupidGit', mod.StupidGit), ('Tit', mod.MalodorousPervert), + ('WhichComments', mod.WhichComments), ]) tree = inspect.getclasstree([cls[1] for cls in classes]) self.assertEqual(tree, @@ -403,7 +404,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) tree = inspect.getclasstree([cls[1] for cls in classes], True) @@ -415,7 +417,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) @@ -646,6 +649,18 @@ def test_anonymous(self): # as argument to another function. self.assertSourceEqual(mod2.anonymous, 55, 55) +class TestBlockComments(GetSourceBase): + fodderModule = mod + + def test_toplevel_class(self): + self.assertSourceEqual(mod.WhichComments, 96, 114) + + def test_class_method(self): + self.assertSourceEqual(mod.WhichComments.f, 99, 104) + + def test_class_async_method(self): + self.assertSourceEqual(mod.WhichComments.asyncf, 109, 112) + class TestBuggyCases(GetSourceBase): fodderModule = mod2 @@ -4014,8 +4029,8 @@ def test_getsource_reload(self): def test_main(): run_unittest( - TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBuggyCases, - TestInterpreterStack, TestClassesAndFunctions, TestPredicates, + TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBlockComments, + TestBuggyCases, TestInterpreterStack, TestClassesAndFunctions, TestPredicates, TestGetcallargsFunctions, TestGetcallargsMethods, TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState, TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject, diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst new file mode 100644 index 0000000000000..febda89338ddc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst @@ -0,0 +1 @@ +Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file From webhook-mailer at python.org Fri Dec 4 15:19:41 2020 From: webhook-mailer at python.org (gpshead) Date: Fri, 04 Dec 2020 20:19:41 -0000 Subject: [Python-checkins] bpo-31904: fix test_doctest.py failures for VxWorks (GH-23419) Message-ID: https://github.com/python/cpython/commit/8d4f57dbd10846ffb4881b6509a511be0ab3b913 commit: 8d4f57dbd10846ffb4881b6509a511be0ab3b913 branch: master author: pxinwr committer: gpshead date: 2020-12-04T12:19:32-08:00 summary: bpo-31904: fix test_doctest.py failures for VxWorks (GH-23419) Fix test_doctest.py failures for VxWorks by avoiding exact error message checks. (better for everyone all around) files: A Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst M Lib/test/test_doctest.py diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index bff20f9cac9c9..6a5013f5b8afc 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -3039,10 +3039,11 @@ def test_CLI(): r""" ... '-m', 'doctest', 'nosuchfile') >>> rc, out (1, b'') + >>> # The exact error message changes depending on the platform. >>> print(normalize(err)) # doctest: +ELLIPSIS Traceback (most recent call last): ... - FileNotFoundError: [Errno ...] No such file or directory: 'nosuchfile' + FileNotFoundError: [Errno ...] ...nosuchfile... Invalid doctest option: diff --git a/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst b/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst new file mode 100644 index 0000000000000..e5e66ceea4402 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst @@ -0,0 +1 @@ +Fix test_doctest.py failures for VxWorks. From webhook-mailer at python.org Fri Dec 4 15:20:13 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 20:20:13 -0000 Subject: [Python-checkins] bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) Message-ID: https://github.com/python/cpython/commit/81ac030d03bdaedd724603af6f89f9248a5f2700 commit: 81ac030d03bdaedd724603af6f89f9248a5f2700 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T12:20:05-08:00 summary: bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) (cherry picked from commit 6e1eec71f59c344fb23c7977061dc2c97b77d51b) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst M Lib/inspect.py M Lib/test/inspect_fodder.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index 887a3424057b6..6ca91e401a5ea 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -926,6 +926,7 @@ def __init__(self): self.indecorator = False self.decoratorhasargs = False self.last = 1 + self.body_col0 = None def tokeneater(self, type, token, srowcol, erowcol, line): if not self.started and not self.indecorator: @@ -957,6 +958,8 @@ def tokeneater(self, type, token, srowcol, erowcol, line): elif self.passline: pass elif type == tokenize.INDENT: + if self.body_col0 is None and self.started: + self.body_col0 = erowcol[1] self.indent = self.indent + 1 self.passline = True elif type == tokenize.DEDENT: @@ -966,6 +969,10 @@ def tokeneater(self, type, token, srowcol, erowcol, line): # not e.g. for "if: else:" or "try: finally:" blocks) if self.indent <= 0: raise EndOfBlock + elif type == tokenize.COMMENT: + if self.body_col0 is not None and srowcol[1] >= self.body_col0: + # Include comments if indented at least as much as the block + self.last = srowcol[0] elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL): # any other token on the same indentation level end the previous # block as well, except the pseudo-tokens COMMENT and NL. diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py index 96a0257bfdf03..e1287a315901c 100644 --- a/Lib/test/inspect_fodder.py +++ b/Lib/test/inspect_fodder.py @@ -91,3 +91,25 @@ def as_method_of(self, obj): custom_method = Callable().as_method_of(42) del Callable + +# line 95 +class WhichComments: + # line 97 + # before f + def f(self): + # line 100 + # start f + return 1 + # line 103 + # end f + # line 105 + # after f + + # before asyncf - line 108 + async def asyncf(self): + # start asyncf + return 2 + # end asyncf + # after asyncf - line 113 + # end of WhichComments - line 114 + # after WhichComments - line 115 diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index e3e2be52076c6..05485a0bc0575 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -388,6 +388,7 @@ def test_getclasses(self): ('ParrotDroppings', mod.ParrotDroppings), ('StupidGit', mod.StupidGit), ('Tit', mod.MalodorousPervert), + ('WhichComments', mod.WhichComments), ]) tree = inspect.getclasstree([cls[1] for cls in classes]) self.assertEqual(tree, @@ -401,7 +402,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) tree = inspect.getclasstree([cls[1] for cls in classes], True) @@ -413,7 +415,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) @@ -644,6 +647,18 @@ def test_anonymous(self): # as argument to another function. self.assertSourceEqual(mod2.anonymous, 55, 55) +class TestBlockComments(GetSourceBase): + fodderModule = mod + + def test_toplevel_class(self): + self.assertSourceEqual(mod.WhichComments, 96, 114) + + def test_class_method(self): + self.assertSourceEqual(mod.WhichComments.f, 99, 104) + + def test_class_async_method(self): + self.assertSourceEqual(mod.WhichComments.asyncf, 109, 112) + class TestBuggyCases(GetSourceBase): fodderModule = mod2 @@ -4016,8 +4031,8 @@ def test_getsource_reload(self): def test_main(): run_unittest( - TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBuggyCases, - TestInterpreterStack, TestClassesAndFunctions, TestPredicates, + TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBlockComments, + TestBuggyCases, TestInterpreterStack, TestClassesAndFunctions, TestPredicates, TestGetcallargsFunctions, TestGetcallargsMethods, TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState, TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject, diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst new file mode 100644 index 0000000000000..febda89338ddc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst @@ -0,0 +1 @@ +Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file From webhook-mailer at python.org Fri Dec 4 15:20:13 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 20:20:13 -0000 Subject: [Python-checkins] bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) Message-ID: https://github.com/python/cpython/commit/3b14f18205b17d1634e21bd7bc48152247590d9f commit: 3b14f18205b17d1634e21bd7bc48152247590d9f branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T12:20:09-08:00 summary: bpo-42116: Fix inspect.getsource handling of trailing comments (GH-23630) (cherry picked from commit 6e1eec71f59c344fb23c7977061dc2c97b77d51b) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst M Lib/inspect.py M Lib/test/inspect_fodder.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index e8ea8c221f828..95144a97b41f2 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -899,6 +899,7 @@ def __init__(self): self.indecorator = False self.decoratorhasargs = False self.last = 1 + self.body_col0 = None def tokeneater(self, type, token, srowcol, erowcol, line): if not self.started and not self.indecorator: @@ -930,6 +931,8 @@ def tokeneater(self, type, token, srowcol, erowcol, line): elif self.passline: pass elif type == tokenize.INDENT: + if self.body_col0 is None and self.started: + self.body_col0 = erowcol[1] self.indent = self.indent + 1 self.passline = True elif type == tokenize.DEDENT: @@ -939,6 +942,10 @@ def tokeneater(self, type, token, srowcol, erowcol, line): # not e.g. for "if: else:" or "try: finally:" blocks) if self.indent <= 0: raise EndOfBlock + elif type == tokenize.COMMENT: + if self.body_col0 is not None and srowcol[1] >= self.body_col0: + # Include comments if indented at least as much as the block + self.last = srowcol[0] elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL): # any other token on the same indentation level end the previous # block as well, except the pseudo-tokens COMMENT and NL. diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py index 96a0257bfdf03..e1287a315901c 100644 --- a/Lib/test/inspect_fodder.py +++ b/Lib/test/inspect_fodder.py @@ -91,3 +91,25 @@ def as_method_of(self, obj): custom_method = Callable().as_method_of(42) del Callable + +# line 95 +class WhichComments: + # line 97 + # before f + def f(self): + # line 100 + # start f + return 1 + # line 103 + # end f + # line 105 + # after f + + # before asyncf - line 108 + async def asyncf(self): + # start asyncf + return 2 + # end asyncf + # after asyncf - line 113 + # end of WhichComments - line 114 + # after WhichComments - line 115 diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index ad93f304827fb..39248e7802485 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -392,6 +392,7 @@ def test_getclasses(self): ('ParrotDroppings', mod.ParrotDroppings), ('StupidGit', mod.StupidGit), ('Tit', mod.MalodorousPervert), + ('WhichComments', mod.WhichComments), ]) tree = inspect.getclasstree([cls[1] for cls in classes]) self.assertEqual(tree, @@ -405,7 +406,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) tree = inspect.getclasstree([cls[1] for cls in classes], True) @@ -417,7 +419,8 @@ def test_getclasses(self): [(mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings)) ] - ] + ], + (mod.WhichComments, (object,),) ] ]) @@ -647,6 +650,18 @@ def test_anonymous(self): # as argument to another function. self.assertSourceEqual(mod2.anonymous, 55, 55) +class TestBlockComments(GetSourceBase): + fodderModule = mod + + def test_toplevel_class(self): + self.assertSourceEqual(mod.WhichComments, 96, 114) + + def test_class_method(self): + self.assertSourceEqual(mod.WhichComments.f, 99, 104) + + def test_class_async_method(self): + self.assertSourceEqual(mod.WhichComments.asyncf, 109, 112) + class TestBuggyCases(GetSourceBase): fodderModule = mod2 @@ -3970,8 +3985,8 @@ def test_getsource_reload(self): def test_main(): run_unittest( - TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBuggyCases, - TestInterpreterStack, TestClassesAndFunctions, TestPredicates, + TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBlockComments, + TestBuggyCases, TestInterpreterStack, TestClassesAndFunctions, TestPredicates, TestGetcallargsFunctions, TestGetcallargsMethods, TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState, TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject, diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst new file mode 100644 index 0000000000000..febda89338ddc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst @@ -0,0 +1 @@ +Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file From webhook-mailer at python.org Fri Dec 4 15:57:47 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 20:57:47 -0000 Subject: [Python-checkins] [3.9] bpo-42482: remove reference to exc_traceback from TracebackException (GH-23531) (GH-23578) Message-ID: https://github.com/python/cpython/commit/40b92f1cc06f9aaba813ae38266f424e0969b089 commit: 40b92f1cc06f9aaba813ae38266f424e0969b089 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T12:57:31-08:00 summary: [3.9] bpo-42482: remove reference to exc_traceback from TracebackException (GH-23531) (GH-23578) (cherry picked from commit 427613f005f0f412d12f0d775d2b609bae0ae1ad) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst M Lib/test/test_traceback.py M Lib/traceback.py diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index d564f3040ea18..8549ba2b75ad0 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -1103,6 +1103,18 @@ def test_context(self): self.assertEqual(exc_info[0], exc.exc_type) self.assertEqual(str(exc_info[1]), str(exc)) + def test_no_refs_to_exception_and_traceback_objects(self): + try: + 1/0 + except Exception: + exc_info = sys.exc_info() + + refcnt1 = sys.getrefcount(exc_info[1]) + refcnt2 = sys.getrefcount(exc_info[2]) + exc = traceback.TracebackException(*exc_info) + self.assertEqual(sys.getrefcount(exc_info[1]), refcnt1) + self.assertEqual(sys.getrefcount(exc_info[2]), refcnt2) + def test_comparison_basic(self): try: 1/0 @@ -1152,6 +1164,16 @@ def raise_with_locals(): exc7 = traceback.TracebackException(*exc_info, limit=-2, capture_locals=True) self.assertNotEqual(exc6, exc7) + def test_comparison_equivalent_exceptions_are_equal(self): + excs = [] + for _ in range(2): + try: + 1/0 + except: + excs.append(traceback.TracebackException(*sys.exc_info())) + self.assertEqual(excs[0], excs[1]) + self.assertEqual(list(excs[0].format()), list(excs[1].format())) + def test_unhashable(self): class UnhashableException(Exception): def __eq__(self, other): diff --git a/Lib/traceback.py b/Lib/traceback.py index a19e38718b120..fb34de9489300 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -500,7 +500,6 @@ def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, _seen=_seen) else: context = None - self.exc_traceback = exc_traceback self.__cause__ = cause self.__context__ = context self.__suppress_context__ = \ @@ -617,7 +616,7 @@ def format(self, *, chain=True): not self.__suppress_context__): yield from self.__context__.format(chain=chain) yield _context_message - if self.exc_traceback is not None: + if self.stack: yield 'Traceback (most recent call last):\n' - yield from self.stack.format() + yield from self.stack.format() yield from self.format_exception_only() diff --git a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst b/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst new file mode 100644 index 0000000000000..79afa654f352e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst @@ -0,0 +1 @@ +:class:`~traceback.TracebackException` no longer holds a reference to the exception's traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. \ No newline at end of file From webhook-mailer at python.org Fri Dec 4 16:22:29 2020 From: webhook-mailer at python.org (taleinat) Date: Fri, 04 Dec 2020 21:22:29 -0000 Subject: [Python-checkins] bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) Message-ID: https://github.com/python/cpython/commit/2e0760bb2edb595050aff82f236cd32b44d3dfb3 commit: 2e0760bb2edb595050aff82f236cd32b44d3dfb3 branch: master author: Irit Katriel committer: taleinat <532281+taleinat at users.noreply.github.com> date: 2020-12-04T23:22:03+02:00 summary: bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) This can happen when a file was edited after it was imported. files: A Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst M Lib/inspect.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index 073a79d97acd2..9150ac104dcb7 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -868,7 +868,12 @@ def findsource(object): lnum = object.co_firstlineno - 1 pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(? 0: - if pat.match(lines[lnum]): break + try: + line = lines[lnum] + except IndexError: + raise OSError('lineno is out of bounds') + if pat.match(line): + break lnum = lnum - 1 return lines, lnum raise OSError('could not find code object') diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 172e6bf6cd8a6..c81d828b57ece 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -712,6 +712,17 @@ def test_findsource_without_filename(self): self.assertRaises(IOError, inspect.findsource, co) self.assertRaises(IOError, inspect.getsource, co) + def test_findsource_with_out_of_bounds_lineno(self): + mod_len = len(inspect.getsource(mod)) + src = '\n' * 2* mod_len + "def f(): pass" + co = compile(src, mod.__file__, "exec") + g, l = {}, {} + eval(co, g, l) + func = l['f'] + self.assertEqual(func.__code__.co_firstlineno, 1+2*mod_len) + with self.assertRaisesRegex(IOError, "lineno is out of bounds"): + inspect.findsource(func) + def test_getsource_on_method(self): self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119) diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst new file mode 100644 index 0000000000000..655781e3d2edd --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst @@ -0,0 +1,4 @@ +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the +file length. This can happen, for example, when a file is edited after it was +imported. PR by Irit Katriel. From webhook-mailer at python.org Fri Dec 4 16:45:16 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 04 Dec 2020 21:45:16 -0000 Subject: [Python-checkins] bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) Message-ID: https://github.com/python/cpython/commit/a4e7d5f750e06e31a80a83c2af02b1a40cecd0ff commit: a4e7d5f750e06e31a80a83c2af02b1a40cecd0ff branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-04T13:44:53-08:00 summary: bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) This can happen when a file was edited after it was imported. (cherry picked from commit 2e0760bb2edb595050aff82f236cd32b44d3dfb3) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst M Lib/inspect.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index 95144a97b41f2..7ffc7d31bd8a6 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -837,7 +837,12 @@ def findsource(object): lnum = object.co_firstlineno - 1 pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(? 0: - if pat.match(lines[lnum]): break + try: + line = lines[lnum] + except IndexError: + raise OSError('lineno is out of bounds') + if pat.match(line): + break lnum = lnum - 1 return lines, lnum raise OSError('could not find code object') diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 39248e7802485..b81af87e5661b 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -713,6 +713,17 @@ def test_findsource_without_filename(self): self.assertRaises(IOError, inspect.findsource, co) self.assertRaises(IOError, inspect.getsource, co) + def test_findsource_with_out_of_bounds_lineno(self): + mod_len = len(inspect.getsource(mod)) + src = '\n' * 2* mod_len + "def f(): pass" + co = compile(src, mod.__file__, "exec") + g, l = {}, {} + eval(co, g, l) + func = l['f'] + self.assertEqual(func.__code__.co_firstlineno, 1+2*mod_len) + with self.assertRaisesRegex(IOError, "lineno is out of bounds"): + inspect.findsource(func) + def test_getsource_on_method(self): self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119) diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst new file mode 100644 index 0000000000000..655781e3d2edd --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst @@ -0,0 +1,4 @@ +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the +file length. This can happen, for example, when a file is edited after it was +imported. PR by Irit Katriel. From webhook-mailer at python.org Fri Dec 4 17:06:08 2020 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Dec 2020 22:06:08 -0000 Subject: [Python-checkins] bpo-42545: Check that all symbols in the limited ABI are exported (GH-23616) Message-ID: https://github.com/python/cpython/commit/85f1dedb8d05774e0d3739be0a11cd970b98097f commit: 85f1dedb8d05774e0d3739be0a11cd970b98097f branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-04T22:05:58Z summary: bpo-42545: Check that all symbols in the limited ABI are exported (GH-23616) files: A Doc/data/stable_abi.dat A Tools/scripts/stable_abi.py M .github/workflows/build.yml M .travis.yml M Makefile.pre.in diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 12c591e41362e..71c307b6c62a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,6 +75,8 @@ jobs: fi - name: Check exported libpython symbols run: make smelly + - name: Check limited ABI symbols + run: make check-limited-abi build_win32: name: 'Windows (x86)' diff --git a/.travis.yml b/.travis.yml index dfdf670bff5f9..547d919974957 100644 --- a/.travis.yml +++ b/.travis.yml @@ -192,6 +192,8 @@ script: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi # Check that all symbols exported by libpython start with "Py" or "_Py" - make smelly + # Check that all symbols in the limited abi are present + - make check-limited-abi # `-r -w` implicitly provided through `make buildbottest`. - | if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat new file mode 100644 index 0000000000000..28cb50b12301b --- /dev/null +++ b/Doc/data/stable_abi.dat @@ -0,0 +1,779 @@ +# File generated by 'make regen-limited-abi' +# This is NOT an authoritative list of stable ABI symbols +PyArg_Parse +PyArg_ParseTuple +PyArg_ParseTupleAndKeywords +PyArg_UnpackTuple +PyArg_VaParse +PyArg_VaParseTupleAndKeywords +PyArg_ValidateKeywordArguments +PyBaseObject_Type +PyBool_FromLong +PyBool_Type +PyByteArrayIter_Type +PyByteArray_AsString +PyByteArray_Concat +PyByteArray_FromObject +PyByteArray_FromStringAndSize +PyByteArray_Resize +PyByteArray_Size +PyByteArray_Type +PyBytesIter_Type +PyBytes_AsString +PyBytes_AsStringAndSize +PyBytes_Concat +PyBytes_ConcatAndDel +PyBytes_DecodeEscape +PyBytes_FromFormat +PyBytes_FromFormatV +PyBytes_FromObject +PyBytes_FromString +PyBytes_FromStringAndSize +PyBytes_Repr +PyBytes_Size +PyBytes_Type +PyCFunction_Call +PyCFunction_GetFlags +PyCFunction_GetFunction +PyCFunction_GetSelf +PyCFunction_NewEx +PyCFunction_Type +PyCMethod_New +PyCallIter_New +PyCallIter_Type +PyCallable_Check +PyCapsule_GetContext +PyCapsule_GetDestructor +PyCapsule_GetName +PyCapsule_GetPointer +PyCapsule_Import +PyCapsule_IsValid +PyCapsule_New +PyCapsule_SetContext +PyCapsule_SetDestructor +PyCapsule_SetName +PyCapsule_SetPointer +PyCapsule_Type +PyClassMethodDescr_Type +PyCodec_BackslashReplaceErrors +PyCodec_Decode +PyCodec_Decoder +PyCodec_Encode +PyCodec_Encoder +PyCodec_IgnoreErrors +PyCodec_IncrementalDecoder +PyCodec_IncrementalEncoder +PyCodec_KnownEncoding +PyCodec_LookupError +PyCodec_NameReplaceErrors +PyCodec_Register +PyCodec_RegisterError +PyCodec_ReplaceErrors +PyCodec_StreamReader +PyCodec_StreamWriter +PyCodec_StrictErrors +PyCodec_Unregister +PyCodec_XMLCharRefReplaceErrors +PyComplex_FromDoubles +PyComplex_ImagAsDouble +PyComplex_RealAsDouble +PyComplex_Type +PyDescr_NewClassMethod +PyDescr_NewGetSet +PyDescr_NewMember +PyDescr_NewMethod +PyDictItems_Type +PyDictIterItem_Type +PyDictIterKey_Type +PyDictIterValue_Type +PyDictKeys_Type +PyDictProxy_New +PyDictProxy_Type +PyDictRevIterItem_Type +PyDictRevIterKey_Type +PyDictRevIterValue_Type +PyDictValues_Type +PyDict_Clear +PyDict_Contains +PyDict_Copy +PyDict_DelItem +PyDict_DelItemString +PyDict_GetItem +PyDict_GetItemString +PyDict_GetItemWithError +PyDict_Items +PyDict_Keys +PyDict_Merge +PyDict_MergeFromSeq2 +PyDict_New +PyDict_Next +PyDict_SetItem +PyDict_SetItemString +PyDict_Size +PyDict_Type +PyDict_Update +PyDict_Values +PyEllipsis_Type +PyEnum_Type +PyErr_BadArgument +PyErr_BadInternalCall +PyErr_CheckSignals +PyErr_Clear +PyErr_Display +PyErr_ExceptionMatches +PyErr_Fetch +PyErr_Format +PyErr_FormatV +PyErr_GetExcInfo +PyErr_GivenExceptionMatches +PyErr_NewException +PyErr_NewExceptionWithDoc +PyErr_NoMemory +PyErr_NormalizeException +PyErr_Occurred +PyErr_Print +PyErr_PrintEx +PyErr_ProgramText +PyErr_ResourceWarning +PyErr_Restore +PyErr_SetExcInfo +PyErr_SetFromErrno +PyErr_SetFromErrnoWithFilename +PyErr_SetFromErrnoWithFilenameObject +PyErr_SetFromErrnoWithFilenameObjects +PyErr_SetImportError +PyErr_SetImportErrorSubclass +PyErr_SetInterrupt +PyErr_SetNone +PyErr_SetObject +PyErr_SetString +PyErr_SyntaxLocation +PyErr_SyntaxLocationEx +PyErr_WarnEx +PyErr_WarnExplicit +PyErr_WarnFormat +PyErr_WriteUnraisable +PyEval_AcquireLock +PyEval_AcquireThread +PyEval_CallFunction +PyEval_CallMethod +PyEval_CallObjectWithKeywords +PyEval_EvalCode +PyEval_EvalCodeEx +PyEval_EvalFrame +PyEval_EvalFrameEx +PyEval_GetBuiltins +PyEval_GetFrame +PyEval_GetFuncDesc +PyEval_GetFuncName +PyEval_GetGlobals +PyEval_GetLocals +PyEval_InitThreads +PyEval_ReleaseLock +PyEval_ReleaseThread +PyEval_RestoreThread +PyEval_SaveThread +PyEval_ThreadsInitialized +PyExc_ArithmeticError +PyExc_AssertionError +PyExc_AttributeError +PyExc_BaseException +PyExc_BlockingIOError +PyExc_BrokenPipeError +PyExc_BufferError +PyExc_BytesWarning +PyExc_ChildProcessError +PyExc_ConnectionAbortedError +PyExc_ConnectionError +PyExc_ConnectionRefusedError +PyExc_ConnectionResetError +PyExc_DeprecationWarning +PyExc_EOFError +PyExc_EnvironmentError +PyExc_Exception +PyExc_FileExistsError +PyExc_FileNotFoundError +PyExc_FloatingPointError +PyExc_FutureWarning +PyExc_GeneratorExit +PyExc_IOError +PyExc_ImportError +PyExc_ImportWarning +PyExc_IndentationError +PyExc_IndexError +PyExc_InterruptedError +PyExc_IsADirectoryError +PyExc_KeyError +PyExc_KeyboardInterrupt +PyExc_LookupError +PyExc_MemoryError +PyExc_ModuleNotFoundError +PyExc_NameError +PyExc_NotADirectoryError +PyExc_NotImplementedError +PyExc_OSError +PyExc_OverflowError +PyExc_PendingDeprecationWarning +PyExc_PermissionError +PyExc_ProcessLookupError +PyExc_RecursionError +PyExc_ReferenceError +PyExc_ResourceWarning +PyExc_RuntimeError +PyExc_RuntimeWarning +PyExc_StopAsyncIteration +PyExc_StopIteration +PyExc_SyntaxError +PyExc_SyntaxWarning +PyExc_SystemError +PyExc_SystemExit +PyExc_TabError +PyExc_TimeoutError +PyExc_TypeError +PyExc_UnboundLocalError +PyExc_UnicodeDecodeError +PyExc_UnicodeEncodeError +PyExc_UnicodeError +PyExc_UnicodeTranslateError +PyExc_UnicodeWarning +PyExc_UserWarning +PyExc_ValueError +PyExc_Warning +PyExc_ZeroDivisionError +PyExceptionClass_Name +PyException_GetCause +PyException_GetContext +PyException_GetTraceback +PyException_SetCause +PyException_SetContext +PyException_SetTraceback +PyFile_FromFd +PyFile_GetLine +PyFile_WriteObject +PyFile_WriteString +PyFilter_Type +PyFloat_AsDouble +PyFloat_FromDouble +PyFloat_FromString +PyFloat_GetInfo +PyFloat_GetMax +PyFloat_GetMin +PyFloat_Type +PyFrame_GetCode +PyFrame_GetLineNumber +PyFrozenSet_New +PyFrozenSet_Type +PyGC_Collect +PyGILState_Ensure +PyGILState_GetThisThreadState +PyGILState_Release +PyGetSetDescr_Type +PyImport_AddModule +PyImport_AddModuleObject +PyImport_AppendInittab +PyImport_ExecCodeModule +PyImport_ExecCodeModuleEx +PyImport_ExecCodeModuleObject +PyImport_ExecCodeModuleWithPathnames +PyImport_GetImporter +PyImport_GetMagicNumber +PyImport_GetMagicTag +PyImport_GetModule +PyImport_GetModuleDict +PyImport_Import +PyImport_ImportFrozenModule +PyImport_ImportFrozenModuleObject +PyImport_ImportModule +PyImport_ImportModuleLevel +PyImport_ImportModuleLevelObject +PyImport_ImportModuleNoBlock +PyImport_ReloadModule +PyIndex_Check +PyInterpreterState_Clear +PyInterpreterState_Delete +PyInterpreterState_Get +PyInterpreterState_GetDict +PyInterpreterState_GetID +PyInterpreterState_New +PyIter_Check +PyIter_Next +PyIter_Send +PyListIter_Type +PyListRevIter_Type +PyList_Append +PyList_AsTuple +PyList_GetItem +PyList_GetSlice +PyList_Insert +PyList_New +PyList_Reverse +PyList_SetItem +PyList_SetSlice +PyList_Size +PyList_Sort +PyList_Type +PyLongRangeIter_Type +PyLong_AsDouble +PyLong_AsLong +PyLong_AsLongAndOverflow +PyLong_AsLongLong +PyLong_AsLongLongAndOverflow +PyLong_AsSize_t +PyLong_AsSsize_t +PyLong_AsUnsignedLong +PyLong_AsUnsignedLongLong +PyLong_AsUnsignedLongLongMask +PyLong_AsUnsignedLongMask +PyLong_AsVoidPtr +PyLong_FromDouble +PyLong_FromLong +PyLong_FromLongLong +PyLong_FromSize_t +PyLong_FromSsize_t +PyLong_FromString +PyLong_FromUnsignedLong +PyLong_FromUnsignedLongLong +PyLong_FromVoidPtr +PyLong_GetInfo +PyLong_Type +PyMap_Type +PyMapping_Check +PyMapping_GetItemString +PyMapping_HasKey +PyMapping_HasKeyString +PyMapping_Items +PyMapping_Keys +PyMapping_Length +PyMapping_SetItemString +PyMapping_Size +PyMapping_Values +PyMarshal_ReadObjectFromString +PyMarshal_WriteLongToFile +PyMarshal_WriteObjectToFile +PyMarshal_WriteObjectToString +PyMem_Free +PyMem_Malloc +PyMem_Realloc +PyMemberDescr_Type +PyMember_GetOne +PyMember_SetOne +PyMemoryView_FromMemory +PyMemoryView_FromObject +PyMemoryView_GetContiguous +PyMemoryView_Type +PyMethodDescr_Type +PyModuleDef_Init +PyModuleDef_Type +PyModule_AddFunctions +PyModule_AddIntConstant +PyModule_AddObject +PyModule_AddObjectRef +PyModule_AddStringConstant +PyModule_AddType +PyModule_Create2 +PyModule_ExecDef +PyModule_FromDefAndSpec2 +PyModule_GetDef +PyModule_GetDict +PyModule_GetFilename +PyModule_GetFilenameObject +PyModule_GetName +PyModule_GetNameObject +PyModule_GetState +PyModule_New +PyModule_NewObject +PyModule_SetDocString +PyModule_Type +PyNumber_Absolute +PyNumber_Add +PyNumber_And +PyNumber_AsSsize_t +PyNumber_Check +PyNumber_Divmod +PyNumber_Float +PyNumber_FloorDivide +PyNumber_InPlaceAdd +PyNumber_InPlaceAnd +PyNumber_InPlaceFloorDivide +PyNumber_InPlaceLshift +PyNumber_InPlaceMatrixMultiply +PyNumber_InPlaceMultiply +PyNumber_InPlaceOr +PyNumber_InPlacePower +PyNumber_InPlaceRemainder +PyNumber_InPlaceRshift +PyNumber_InPlaceSubtract +PyNumber_InPlaceTrueDivide +PyNumber_InPlaceXor +PyNumber_Index +PyNumber_Invert +PyNumber_Long +PyNumber_Lshift +PyNumber_MatrixMultiply +PyNumber_Multiply +PyNumber_Negative +PyNumber_Or +PyNumber_Positive +PyNumber_Power +PyNumber_Remainder +PyNumber_Rshift +PyNumber_Subtract +PyNumber_ToBase +PyNumber_TrueDivide +PyNumber_Xor +PyOS_AfterFork +PyOS_AfterFork_Child +PyOS_AfterFork_Parent +PyOS_BeforeFork +PyOS_FSPath +PyOS_InterruptOccurred +PyOS_double_to_string +PyOS_getsig +PyOS_mystricmp +PyOS_mystrnicmp +PyOS_setsig +PyOS_snprintf +PyOS_string_to_double +PyOS_strtol +PyOS_strtoul +PyOS_vsnprintf +PyObject_ASCII +PyObject_AsFileDescriptor +PyObject_Bytes +PyObject_Call +PyObject_CallFunction +PyObject_CallFunctionObjArgs +PyObject_CallMethod +PyObject_CallMethodObjArgs +PyObject_CallNoArgs +PyObject_CallObject +PyObject_Calloc +PyObject_ClearWeakRefs +PyObject_DelItem +PyObject_DelItemString +PyObject_Dir +PyObject_Format +PyObject_Free +PyObject_GC_Del +PyObject_GC_IsFinalized +PyObject_GC_IsTracked +PyObject_GC_Track +PyObject_GC_UnTrack +PyObject_GenericGetAttr +PyObject_GenericGetDict +PyObject_GenericSetAttr +PyObject_GenericSetDict +PyObject_GetAttr +PyObject_GetAttrString +PyObject_GetItem +PyObject_GetIter +PyObject_HasAttr +PyObject_HasAttrString +PyObject_Hash +PyObject_HashNotImplemented +PyObject_Init +PyObject_InitVar +PyObject_IsInstance +PyObject_IsSubclass +PyObject_IsTrue +PyObject_Length +PyObject_Malloc +PyObject_Not +PyObject_Realloc +PyObject_Repr +PyObject_RichCompare +PyObject_RichCompareBool +PyObject_SelfIter +PyObject_SetAttr +PyObject_SetAttrString +PyObject_SetItem +PyObject_Size +PyObject_Str +PyObject_Type +PyProperty_Type +PyRangeIter_Type +PyRange_Type +PyReversed_Type +PySeqIter_New +PySeqIter_Type +PySequence_Check +PySequence_Concat +PySequence_Contains +PySequence_Count +PySequence_DelItem +PySequence_DelSlice +PySequence_Fast +PySequence_GetItem +PySequence_GetSlice +PySequence_In +PySequence_InPlaceConcat +PySequence_InPlaceRepeat +PySequence_Index +PySequence_Length +PySequence_List +PySequence_Repeat +PySequence_SetItem +PySequence_SetSlice +PySequence_Size +PySequence_Tuple +PySetIter_Type +PySet_Add +PySet_Clear +PySet_Contains +PySet_Discard +PySet_New +PySet_Pop +PySet_Size +PySet_Type +PySlice_AdjustIndices +PySlice_GetIndices +PySlice_GetIndicesEx +PySlice_New +PySlice_Type +PySlice_Unpack +PyState_AddModule +PyState_FindModule +PyState_RemoveModule +PyStructSequence_GetItem +PyStructSequence_New +PyStructSequence_NewType +PyStructSequence_SetItem +PySuper_Type +PySys_AddWarnOption +PySys_AddWarnOptionUnicode +PySys_AddXOption +PySys_FormatStderr +PySys_FormatStdout +PySys_GetObject +PySys_GetXOptions +PySys_HasWarnOptions +PySys_ResetWarnOptions +PySys_SetArgv +PySys_SetArgvEx +PySys_SetObject +PySys_SetPath +PySys_WriteStderr +PySys_WriteStdout +PyThreadState_Clear +PyThreadState_Delete +PyThreadState_Get +PyThreadState_GetDict +PyThreadState_GetFrame +PyThreadState_GetID +PyThreadState_GetInterpreter +PyThreadState_New +PyThreadState_SetAsyncExc +PyThreadState_Swap +PyThread_GetInfo +PyThread_ReInitTLS +PyThread_acquire_lock +PyThread_acquire_lock_timed +PyThread_allocate_lock +PyThread_create_key +PyThread_delete_key +PyThread_delete_key_value +PyThread_exit_thread +PyThread_free_lock +PyThread_get_key_value +PyThread_get_stacksize +PyThread_get_thread_ident +PyThread_get_thread_native_id +PyThread_init_thread +PyThread_release_lock +PyThread_set_key_value +PyThread_set_stacksize +PyThread_start_new_thread +PyThread_tss_alloc +PyThread_tss_create +PyThread_tss_delete +PyThread_tss_free +PyThread_tss_get +PyThread_tss_is_created +PyThread_tss_set +PyTraceBack_Here +PyTraceBack_Print +PyTraceBack_Type +PyTupleIter_Type +PyTuple_GetItem +PyTuple_GetSlice +PyTuple_New +PyTuple_Pack +PyTuple_SetItem +PyTuple_Size +PyTuple_Type +PyType_ClearCache +PyType_FromModuleAndSpec +PyType_FromSpec +PyType_FromSpecWithBases +PyType_GenericAlloc +PyType_GenericNew +PyType_GetFlags +PyType_GetModule +PyType_GetModuleState +PyType_GetSlot +PyType_IsSubtype +PyType_Modified +PyType_Ready +PyType_Type +PyUnicodeDecodeError_Create +PyUnicodeDecodeError_GetEncoding +PyUnicodeDecodeError_GetEnd +PyUnicodeDecodeError_GetObject +PyUnicodeDecodeError_GetReason +PyUnicodeDecodeError_GetStart +PyUnicodeDecodeError_SetEnd +PyUnicodeDecodeError_SetReason +PyUnicodeDecodeError_SetStart +PyUnicodeEncodeError_GetEncoding +PyUnicodeEncodeError_GetEnd +PyUnicodeEncodeError_GetObject +PyUnicodeEncodeError_GetReason +PyUnicodeEncodeError_GetStart +PyUnicodeEncodeError_SetEnd +PyUnicodeEncodeError_SetReason +PyUnicodeEncodeError_SetStart +PyUnicodeIter_Type +PyUnicodeTranslateError_GetEnd +PyUnicodeTranslateError_GetObject +PyUnicodeTranslateError_GetReason +PyUnicodeTranslateError_GetStart +PyUnicodeTranslateError_SetEnd +PyUnicodeTranslateError_SetReason +PyUnicodeTranslateError_SetStart +PyUnicode_Append +PyUnicode_AppendAndDel +PyUnicode_AsASCIIString +PyUnicode_AsCharmapString +PyUnicode_AsDecodedObject +PyUnicode_AsDecodedUnicode +PyUnicode_AsEncodedObject +PyUnicode_AsEncodedString +PyUnicode_AsEncodedUnicode +PyUnicode_AsLatin1String +PyUnicode_AsRawUnicodeEscapeString +PyUnicode_AsUCS4 +PyUnicode_AsUCS4Copy +PyUnicode_AsUTF16String +PyUnicode_AsUTF32String +PyUnicode_AsUTF8AndSize +PyUnicode_AsUTF8String +PyUnicode_AsUnicodeEscapeString +PyUnicode_AsWideChar +PyUnicode_AsWideCharString +PyUnicode_BuildEncodingMap +PyUnicode_Compare +PyUnicode_CompareWithASCIIString +PyUnicode_Concat +PyUnicode_Contains +PyUnicode_Count +PyUnicode_Decode +PyUnicode_DecodeASCII +PyUnicode_DecodeCharmap +PyUnicode_DecodeFSDefault +PyUnicode_DecodeFSDefaultAndSize +PyUnicode_DecodeLatin1 +PyUnicode_DecodeLocale +PyUnicode_DecodeLocaleAndSize +PyUnicode_DecodeRawUnicodeEscape +PyUnicode_DecodeUTF16 +PyUnicode_DecodeUTF16Stateful +PyUnicode_DecodeUTF32 +PyUnicode_DecodeUTF32Stateful +PyUnicode_DecodeUTF7 +PyUnicode_DecodeUTF7Stateful +PyUnicode_DecodeUTF8 +PyUnicode_DecodeUTF8Stateful +PyUnicode_DecodeUnicodeEscape +PyUnicode_EncodeFSDefault +PyUnicode_EncodeLocale +PyUnicode_FSConverter +PyUnicode_FSDecoder +PyUnicode_Find +PyUnicode_FindChar +PyUnicode_Format +PyUnicode_FromEncodedObject +PyUnicode_FromFormat +PyUnicode_FromFormatV +PyUnicode_FromObject +PyUnicode_FromOrdinal +PyUnicode_FromString +PyUnicode_FromStringAndSize +PyUnicode_FromWideChar +PyUnicode_GetDefaultEncoding +PyUnicode_GetLength +PyUnicode_GetSize +PyUnicode_InternFromString +PyUnicode_InternImmortal +PyUnicode_InternInPlace +PyUnicode_IsIdentifier +PyUnicode_Join +PyUnicode_Partition +PyUnicode_RPartition +PyUnicode_RSplit +PyUnicode_ReadChar +PyUnicode_Replace +PyUnicode_Resize +PyUnicode_RichCompare +PyUnicode_Split +PyUnicode_Splitlines +PyUnicode_Substring +PyUnicode_Tailmatch +PyUnicode_Translate +PyUnicode_Type +PyUnicode_WriteChar +PyWeakref_GetObject +PyWeakref_NewProxy +PyWeakref_NewRef +PyWrapperDescr_Type +PyWrapper_New +PyZip_Type +Py_AddPendingCall +Py_AtExit +Py_BuildValue +Py_BytesMain +Py_CompileString +Py_DecRef +Py_DecodeLocale +Py_EncodeLocale +Py_EndInterpreter +Py_EnterRecursiveCall +Py_Exit +Py_FatalError +Py_FileSystemDefaultEncodeErrors +Py_FileSystemDefaultEncoding +Py_Finalize +Py_FinalizeEx +Py_GenericAlias +Py_GenericAliasType +Py_GetBuildInfo +Py_GetCompiler +Py_GetCopyright +Py_GetExecPrefix +Py_GetPath +Py_GetPlatform +Py_GetPrefix +Py_GetProgramFullPath +Py_GetProgramName +Py_GetPythonHome +Py_GetRecursionLimit +Py_GetVersion +Py_HasFileSystemDefaultEncoding +Py_IncRef +Py_Initialize +Py_InitializeEx +Py_IsInitialized +Py_LeaveRecursiveCall +Py_Main +Py_MakePendingCalls +Py_NewInterpreter +Py_NewRef +Py_ReprEnter +Py_ReprLeave +Py_SetPath +Py_SetProgramName +Py_SetPythonHome +Py_SetRecursionLimit +Py_SymtableString +Py_UTF8Mode +Py_VaBuildValue +Py_XNewRef diff --git a/Makefile.pre.in b/Makefile.pre.in index 082945f58a777..f52a0f3cdf0d6 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -744,6 +744,13 @@ regen-importlib: Programs/_freeze_importlib $(UPDATE_FILE) $(srcdir)/Python/importlib_zipimport.h $(srcdir)/Python/importlib_zipimport.h.new +regen-limited-abi: all + @$(MKDIR_P) $(srcdir)/Doc/data/ + $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/stable_abi.py generate $(srcdir)/Doc/data/stable_abi.dat.new + $(UPDATE_FILE) $(srcdir)/Doc/data/stable_abi.dat \ + $(srcdir)/Doc/data/stable_abi.dat.new + + ############################################################################ # Regenerate all generated files @@ -1900,6 +1907,9 @@ funny: patchcheck: @DEF_MAKE_RULE@ $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py +check-limited-abi: all + $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/stable_abi.py check $(srcdir)/Doc/data/stable_abi.dat + # Dependencies Python/thread.o: @THREADHEADERS@ $(srcdir)/Python/condvar.h diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py new file mode 100755 index 0000000000000..aa953b2dfde87 --- /dev/null +++ b/Tools/scripts/stable_abi.py @@ -0,0 +1,234 @@ +#!/usr/bin/env python + +import argparse +import glob +import re +import pathlib +import subprocess +import sys +import sysconfig + +EXCLUDED_HEADERS = { + "bytes_methods.h", + "cellobject.h", + "classobject.h", + "code.h", + "compile.h", + "datetime.h", + "dtoa.h", + "frameobject.h", + "funcobject.h", + "genobject.h", + "longintrepr.h", + "parsetok.h", + "pyarena.h", + "pyatomic.h", + "pyctype.h", + "pydebug.h", + "pytime.h", + "symtable.h", + "token.h", + "ucnhash.h", +} + + +def get_exported_symbols(library, dynamic=False): + # Only look at dynamic symbols + args = ["nm", "--no-sort"] + if dynamic: + args.append("--dynamic") + args.append(library) + proc = subprocess.run(args, stdout=subprocess.PIPE, universal_newlines=True) + if proc.returncode: + sys.stdout.write(proc.stdout) + sys.exit(proc.returncode) + + stdout = proc.stdout.rstrip() + if not stdout: + raise Exception("command output is empty") + + for line in stdout.splitlines(): + # Split line '0000000000001b80 D PyTextIOWrapper_Type' + if not line: + continue + + parts = line.split(maxsplit=2) + if len(parts) < 3: + continue + + symbol = parts[-1] + yield symbol + + +def check_library(library, abi_funcs, dynamic=False): + available_symbols = set(get_exported_symbols(library, dynamic)) + missing_symbols = abi_funcs - available_symbols + if missing_symbols: + print( + f"Some symbols from the stable ABI are missing: {', '.join(missing_symbols)}" + ) + return 1 + return 0 + + +def generate_limited_api_symbols(args): + if hasattr(sys, "gettotalrefcount"): + print( + "Stable ABI symbols cannot be generated from a debug build", file=sys.stderr + ) + sys.exit(1) + library = sysconfig.get_config_var("LIBRARY") + ldlibrary = sysconfig.get_config_var("LDLIBRARY") + if ldlibrary != library: + raise Exception("Limited ABI symbols can only be generated from a static build") + available_symbols = { + symbol for symbol in get_exported_symbols(library) if symbol.startswith("Py") + } + + headers = [ + file + for file in pathlib.Path("Include").glob("*.h") + if file.name not in EXCLUDED_HEADERS + ] + stable_data, stable_exported_data, stable_functions = get_limited_api_definitions( + headers + ) + macros = get_limited_api_macros(headers) + + stable_symbols = { + symbol + for symbol in (stable_functions | stable_exported_data | stable_data | macros) + if symbol.startswith("Py") and symbol in available_symbols + } + with open(args.output_file, "w") as output_file: + output_file.write(f"# File generated by 'make regen-limited-abi'\n") + output_file.write( + f"# This is NOT an authoritative list of stable ABI symbols\n" + ) + for symbol in sorted(stable_symbols): + output_file.write(f"{symbol}\n") + sys.exit(0) + + +def get_limited_api_macros(headers): + """Run the preprocesor over all the header files in "Include" setting + "-DPy_LIMITED_API" to the correct value for the running version of the interpreter + and extracting all macro definitions (via adding -dM to the compiler arguments). + """ + + preprocesor_output_with_macros = subprocess.check_output( + sysconfig.get_config_var("CC").split() + + [ + # Prevent the expansion of the exported macros so we can capture them later + "-DSIZEOF_WCHAR_T=4", # The actual value is not important + f"-DPy_LIMITED_API={sys.version_info.major << 24 | sys.version_info.minor << 16}", + "-I.", + "-I./Include", + "-dM", + "-E", + ] + + [str(file) for file in headers], + text=True, + stderr=subprocess.DEVNULL, + ) + + return { + target + for _, target in re.findall( + r"#define (\w+)\s*(?:\(.*?\))?\s+(\w+)", preprocesor_output_with_macros + ) + } + + +def get_limited_api_definitions(headers): + """Run the preprocesor over all the header files in "Include" setting + "-DPy_LIMITED_API" to the correct value for the running version of the interpreter. + + The limited API symbols will be extracted from the output of this command as it includes + the prototypes and definitions of all the exported symbols that are in the limited api. + + This function does *NOT* extract the macros defined on the limited API + """ + preprocesor_output = subprocess.check_output( + sysconfig.get_config_var("CC").split() + + [ + # Prevent the expansion of the exported macros so we can capture them later + "-DPyAPI_FUNC=__PyAPI_FUNC", + "-DPyAPI_DATA=__PyAPI_DATA", + "-DEXPORT_DATA=__EXPORT_DATA", + "-D_Py_NO_RETURN=", + "-DSIZEOF_WCHAR_T=4", # The actual value is not important + f"-DPy_LIMITED_API={sys.version_info.major << 24 | sys.version_info.minor << 16}", + "-I.", + "-I./Include", + "-E", + ] + + [str(file) for file in headers], + text=True, + stderr=subprocess.DEVNULL, + ) + stable_functions = set( + re.findall(r"__PyAPI_FUNC\(.*?\)\s*(.*?)\s*\(", preprocesor_output) + ) + stable_exported_data = set( + re.findall(r"__EXPORT_DATA\((.*?)\)", preprocesor_output) + ) + stable_data = set( + re.findall(r"__PyAPI_DATA\(.*?\)\s*\(?(.*?)\)?\s*;", preprocesor_output) + ) + return stable_data, stable_exported_data, stable_functions + + +def check_symbols(parser_args): + with open(parser_args.stable_abi_file, "r") as filename: + abi_funcs = { + symbol + for symbol in filename.read().splitlines() + if symbol and not symbol.startswith("#") + } + + ret = 0 + # static library + LIBRARY = sysconfig.get_config_var("LIBRARY") + if not LIBRARY: + raise Exception("failed to get LIBRARY variable from sysconfig") + ret = check_library(LIBRARY, abi_funcs) + + # dynamic library + LDLIBRARY = sysconfig.get_config_var("LDLIBRARY") + if not LDLIBRARY: + raise Exception("failed to get LDLIBRARY variable from sysconfig") + if LDLIBRARY != LIBRARY: + ret |= check_library(LDLIBRARY, abi_funcs, dynamic=True) + + sys.exit(ret) + + +def main(): + parser = argparse.ArgumentParser(description="Process some integers.") + subparsers = parser.add_subparsers() + check_parser = subparsers.add_parser( + "check", help="Check the exported symbols against a given ABI file" + ) + check_parser.add_argument( + "stable_abi_file", type=str, help="File with the stable abi functions" + ) + check_parser.set_defaults(func=check_symbols) + generate_parser = subparsers.add_parser( + "generate", + help="Generate symbols from the header files and the exported symbols", + ) + generate_parser.add_argument( + "output_file", type=str, help="File to dump the symbols to" + ) + generate_parser.set_defaults(func=generate_limited_api_symbols) + args = parser.parse_args() + if "func" not in args: + parser.error("Either 'check' or 'generate' must be used") + sys.exit(1) + + args.func(args) + + +if __name__ == "__main__": + main() From webhook-mailer at python.org Fri Dec 4 17:42:07 2020 From: webhook-mailer at python.org (taleinat) Date: Fri, 04 Dec 2020 22:42:07 -0000 Subject: [Python-checkins] bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) Message-ID: https://github.com/python/cpython/commit/d1f07419c7560ed3ba52ba4f667f4eec9b5fe95d commit: d1f07419c7560ed3ba52ba4f667f4eec9b5fe95d branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: taleinat <532281+taleinat at users.noreply.github.com> date: 2020-12-05T00:41:58+02:00 summary: bpo-17735: inspect.findsource now raises OSError when co_lineno is out of range (GH-23633) This can happen when a file was edited after it was imported. (cherry picked from commit 2e0760bb2edb595050aff82f236cd32b44d3dfb3) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst M Lib/inspect.py M Lib/test/test_inspect.py diff --git a/Lib/inspect.py b/Lib/inspect.py index 6ca91e401a5ea..18bed9028ed8a 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -864,7 +864,12 @@ def findsource(object): lnum = object.co_firstlineno - 1 pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(? 0: - if pat.match(lines[lnum]): break + try: + line = lines[lnum] + except IndexError: + raise OSError('lineno is out of bounds') + if pat.match(line): + break lnum = lnum - 1 return lines, lnum raise OSError('could not find code object') diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 05485a0bc0575..d9e26a3033667 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -710,6 +710,17 @@ def test_findsource_without_filename(self): self.assertRaises(IOError, inspect.findsource, co) self.assertRaises(IOError, inspect.getsource, co) + def test_findsource_with_out_of_bounds_lineno(self): + mod_len = len(inspect.getsource(mod)) + src = '\n' * 2* mod_len + "def f(): pass" + co = compile(src, mod.__file__, "exec") + g, l = {}, {} + eval(co, g, l) + func = l['f'] + self.assertEqual(func.__code__.co_firstlineno, 1+2*mod_len) + with self.assertRaisesRegex(IOError, "lineno is out of bounds"): + inspect.findsource(func) + def test_getsource_on_method(self): self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119) diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst new file mode 100644 index 0000000000000..655781e3d2edd --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst @@ -0,0 +1,4 @@ +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the +file length. This can happen, for example, when a file is edited after it was +imported. PR by Irit Katriel. From webhook-mailer at python.org Fri Dec 4 18:19:39 2020 From: webhook-mailer at python.org (pablogsal) Date: Fri, 04 Dec 2020 23:19:39 -0000 Subject: [Python-checkins] bpo-42545: Improve the error message in the stable API script (GH-23648) Message-ID: https://github.com/python/cpython/commit/79c1849b9e5b635bd36b13e1be9dc7cbc2bd6312 commit: 79c1849b9e5b635bd36b13e1be9dc7cbc2bd6312 branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-04T23:19:21Z summary: bpo-42545: Improve the error message in the stable API script (GH-23648) files: M Tools/scripts/stable_abi.py diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index aa953b2dfde87..b3a46f985e0a2 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -60,15 +60,33 @@ def get_exported_symbols(library, dynamic=False): yield symbol -def check_library(library, abi_funcs, dynamic=False): +def check_library(stable_abi_file, library, abi_funcs, dynamic=False): available_symbols = set(get_exported_symbols(library, dynamic)) missing_symbols = abi_funcs - available_symbols if missing_symbols: - print( - f"Some symbols from the stable ABI are missing: {', '.join(missing_symbols)}" + raise Exception( + f"""\ +Some symbols from the limited API are missing: {', '.join(missing_symbols)} + +This error means that there are some missing symbols among the ones exported +in the Python library ("libpythonx.x.a" or "libpythonx.x.so"). This normally +means that some symbol, function implementation or a prototype, belonging to +a symbol in the limited API has been deleted or is missing. + +Check if this was a mistake and if not, update the file containing the limited +API symbols. This file is located at: + +{stable_abi_file} + +You can read more about the limited API and its contracts at: + +https://docs.python.org/3/c-api/stable.html + +And in PEP 384: + +https://www.python.org/dev/peps/pep-0384/ +""" ) - return 1 - return 0 def generate_limited_api_symbols(args): @@ -107,7 +125,6 @@ def generate_limited_api_symbols(args): ) for symbol in sorted(stable_symbols): output_file.write(f"{symbol}\n") - sys.exit(0) def get_limited_api_macros(headers): @@ -187,21 +204,24 @@ def check_symbols(parser_args): if symbol and not symbol.startswith("#") } - ret = 0 - # static library - LIBRARY = sysconfig.get_config_var("LIBRARY") - if not LIBRARY: - raise Exception("failed to get LIBRARY variable from sysconfig") - ret = check_library(LIBRARY, abi_funcs) - - # dynamic library - LDLIBRARY = sysconfig.get_config_var("LDLIBRARY") - if not LDLIBRARY: - raise Exception("failed to get LDLIBRARY variable from sysconfig") - if LDLIBRARY != LIBRARY: - ret |= check_library(LDLIBRARY, abi_funcs, dynamic=True) - - sys.exit(ret) + try: + # static library + LIBRARY = sysconfig.get_config_var("LIBRARY") + if not LIBRARY: + raise Exception("failed to get LIBRARY variable from sysconfig") + check_library(parser_args.stable_abi_file, LIBRARY, abi_funcs) + + # dynamic library + LDLIBRARY = sysconfig.get_config_var("LDLIBRARY") + if not LDLIBRARY: + raise Exception("failed to get LDLIBRARY variable from sysconfig") + if LDLIBRARY != LIBRARY: + check_library( + parser_args.stable_abi_file, LDLIBRARY, abi_funcs, dynamic=True + ) + except Exception as e: + print(e, file=sys.stderr) + sys.exit(1) def main(): From webhook-mailer at python.org Fri Dec 4 18:39:36 2020 From: webhook-mailer at python.org (brettcannon) Date: Fri, 04 Dec 2020 23:39:36 -0000 Subject: [Python-checkins] bpo-26131: Deprecate usage of load_module() (GH-23469) Message-ID: https://github.com/python/cpython/commit/2de5097ba4c50eba90df55696a7b2e74c93834d4 commit: 2de5097ba4c50eba90df55696a7b2e74c93834d4 branch: master author: Brett Cannon committer: brettcannon date: 2020-12-04T15:39:21-08:00 summary: bpo-26131: Deprecate usage of load_module() (GH-23469) Raise an ImportWarning when the import system falls back on load_module(). As for implementations of load_module(), raise a DeprecationWarning. files: A Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst A Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst A Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst M Doc/whatsnew/3.10.rst M Lib/importlib/_abc.py M Lib/importlib/_bootstrap.py M Lib/importlib/_bootstrap_external.py M Lib/test/test_importlib/builtin/test_loader.py M Lib/test/test_importlib/extension/test_loader.py M Lib/test/test_importlib/frozen/test_loader.py M Lib/test/test_importlib/import_/test___loader__.py M Lib/test/test_importlib/import_/test___package__.py M Lib/test/test_importlib/import_/test_api.py M Lib/test/test_importlib/import_/test_caching.py M Lib/test/test_importlib/import_/test_fromlist.py M Lib/test/test_importlib/import_/test_meta_path.py M Lib/test/test_importlib/test_abc.py M Lib/test/test_importlib/test_api.py M Lib/test/test_importlib/test_spec.py M Lib/test/test_venv.py M Lib/test/test_zipimport.py M Lib/zipimport.py M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index a8f1080a504c7..019dd1817d2b6 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -394,7 +394,8 @@ Optimizations with ``gcc`` by up to 30%. See `this article `_ for more details. (Contributed by Victor Stinner and Pablo Galindo in - :issue:`38980`) + :issue:`38980`.) + * Function parameters and their annotations are no longer computed at runtime, but rather at compilation time. They are stored as a tuple of strings at the @@ -421,6 +422,21 @@ Deprecated as appropriate to help identify code which needs updating during this transition. +* The various ``load_module()`` methods of :mod:`importlib` have been + documented as deprecated since Python 3.6, but will now also trigger + a :exc:`DeprecationWarning`. Use + :meth:`~importlib.abc.Loader.exec_module` instead. + (Contributed by Brett Cannon in :issue:`26131`.) + +* :meth:`zimport.zipimporter.load_module` has been deprecated in + preference for :meth:`~zipimport.zipimporter.exec_module`. + (Contributed by Brett Cannon in :issue:`26131`.) + +* The use of :meth:`~importlib.abc.Loader.load_module` by the import + system now triggers an :exc:`ImportWarning` as + :meth:`~importlib.abc.Loader.exec_module` is preferred. + (Contributed by Brett Cannon in :issue:`26131`.) + * ``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python 3.3, when it was made an alias to :class:`str`. It is now deprecated, scheduled for removal in Python 3.12. diff --git a/Lib/importlib/_abc.py b/Lib/importlib/_abc.py index fb5ec727cea6e..7591946a4e76d 100644 --- a/Lib/importlib/_abc.py +++ b/Lib/importlib/_abc.py @@ -35,6 +35,7 @@ def load_module(self, fullname): """ if not hasattr(self, 'exec_module'): raise ImportError + # Warning implemented in _load_module_shim(). return _bootstrap._load_module_shim(self, fullname) def module_repr(self, module): diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 9b7335b7b9c70..e4f893c38c1aa 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -20,6 +20,12 @@ # reference any injected objects! This includes not only global code but also # anything specified at the class level. +def _object_name(obj): + try: + return obj.__qualname__ + except AttributeError: + return type(obj).__qualname__ + # Bootstrap-related code ###################################################### # Modules injected manually by _setup() @@ -272,6 +278,9 @@ def _load_module_shim(self, fullname): This method is deprecated. Use loader.exec_module instead. """ + msg = ("the load_module() method is deprecated and slated for removal in " + "Python 3.12; use exec_module() instead") + _warnings.warn(msg, DeprecationWarning) spec = spec_from_loader(fullname, self) if fullname in sys.modules: module = sys.modules[fullname] @@ -612,9 +621,9 @@ def _exec(spec, module): else: _init_module_attrs(spec, module, override=True) if not hasattr(spec.loader, 'exec_module'): - # (issue19713) Once BuiltinImporter and ExtensionFileLoader - # have exec_module() implemented, we can add a deprecation - # warning here. + msg = (f"{_object_name(spec.loader)}.exec_module() not found; " + "falling back to load_module()") + _warnings.warn(msg, ImportWarning) spec.loader.load_module(name) else: spec.loader.exec_module(module) @@ -627,9 +636,8 @@ def _exec(spec, module): def _load_backward_compatible(spec): - # (issue19713) Once BuiltinImporter and ExtensionFileLoader - # have exec_module() implemented, we can add a deprecation - # warning here. + # It is assumed that all callers have been warned about using load_module() + # appropriately before calling this function. try: spec.loader.load_module(spec.name) except: @@ -668,6 +676,9 @@ def _load_unlocked(spec): if spec.loader is not None: # Not a namespace package. if not hasattr(spec.loader, 'exec_module'): + msg = (f"{_object_name(spec.loader)}.exec_module() not found; " + "falling back to load_module()") + _warnings.warn(msg, ImportWarning) return _load_backward_compatible(spec) module = module_from_spec(spec) @@ -851,6 +862,7 @@ def load_module(cls, fullname): This method is deprecated. Use exec_module() instead. """ + # Warning about deprecation implemented in _load_module_shim(). return _load_module_shim(cls, fullname) @classmethod diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index b8dd128238f03..d9e44df409062 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -832,7 +832,8 @@ def exec_module(self, module): _bootstrap._call_with_frames_removed(exec, code, module.__dict__) def load_module(self, fullname): - """This module is deprecated.""" + """This method is deprecated.""" + # Warning implemented in _load_module_shim(). return _bootstrap._load_module_shim(self, fullname) @@ -1007,7 +1008,7 @@ def load_module(self, fullname): """ # The only reason for this method is for the name check. # Issue #14857: Avoid the zero-argument form of super so the implementation - # of that form can be updated without breaking the frozen module + # of that form can be updated without breaking the frozen module. return super(FileLoader, self).load_module(fullname) @_check_name @@ -1253,6 +1254,7 @@ def load_module(self, fullname): # The import system never calls this method. _bootstrap._verbose_message('namespace module loaded with path {!r}', self._path) + # Warning implemented in _load_module_shim(). return _bootstrap._load_module_shim(self, fullname) diff --git a/Lib/test/test_importlib/builtin/test_loader.py b/Lib/test/test_importlib/builtin/test_loader.py index b1349ec5da467..f6b6d97cd5bce 100644 --- a/Lib/test/test_importlib/builtin/test_loader.py +++ b/Lib/test/test_importlib/builtin/test_loader.py @@ -6,6 +6,7 @@ import sys import types import unittest +import warnings @unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module') class LoaderTests(abc.LoaderTests): @@ -24,7 +25,9 @@ def verify(self, module): self.assertIn(module.__name__, sys.modules) def load_module(self, name): - return self.machinery.BuiltinImporter.load_module(name) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + return self.machinery.BuiltinImporter.load_module(name) def test_module(self): # Common case. diff --git a/Lib/test/test_importlib/extension/test_loader.py b/Lib/test/test_importlib/extension/test_loader.py index abd612fcd9bec..22cf2dac5f868 100644 --- a/Lib/test/test_importlib/extension/test_loader.py +++ b/Lib/test/test_importlib/extension/test_loader.py @@ -1,3 +1,4 @@ +from warnings import catch_warnings from .. import abc from .. import util @@ -7,6 +8,7 @@ import sys import types import unittest +import warnings import importlib.util import importlib from test.support.script_helper import assert_python_failure @@ -20,14 +22,18 @@ def setUp(self): util.EXTENSIONS.file_path) def load_module(self, fullname): - return self.loader.load_module(fullname) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + return self.loader.load_module(fullname) def test_load_module_API(self): # Test the default argument for load_module(). - self.loader.load_module() - self.loader.load_module(None) - with self.assertRaises(ImportError): - self.load_module('XXX') + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + self.loader.load_module() + self.loader.load_module(None) + with self.assertRaises(ImportError): + self.load_module('XXX') def test_equality(self): other = self.machinery.ExtensionFileLoader(util.EXTENSIONS.name, @@ -94,6 +100,21 @@ def setUp(self): self.loader = self.machinery.ExtensionFileLoader( self.name, self.spec.origin) + def load_module(self): + '''Load the module from the test extension''' + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + return self.loader.load_module(self.name) + + def load_module_by_name(self, fullname): + '''Load a module from the test extension by name''' + origin = self.spec.origin + loader = self.machinery.ExtensionFileLoader(fullname, origin) + spec = importlib.util.spec_from_loader(fullname, loader) + module = importlib.util.module_from_spec(spec) + loader.exec_module(module) + return module + # No extension module as __init__ available for testing. test_package = None @@ -157,19 +178,6 @@ def test_try_registration(self): with self.assertRaises(SystemError): module.call_state_registration_func(2) - def load_module(self): - '''Load the module from the test extension''' - return self.loader.load_module(self.name) - - def load_module_by_name(self, fullname): - '''Load a module from the test extension by name''' - origin = self.spec.origin - loader = self.machinery.ExtensionFileLoader(fullname, origin) - spec = importlib.util.spec_from_loader(fullname, loader) - module = importlib.util.module_from_spec(spec) - loader.exec_module(module) - return module - def test_load_submodule(self): '''Test loading a simulated submodule''' module = self.load_module_by_name('pkg.' + self.name) diff --git a/Lib/test/test_importlib/frozen/test_loader.py b/Lib/test/test_importlib/frozen/test_loader.py index 29ecff1774021..8eaffa798a5b7 100644 --- a/Lib/test/test_importlib/frozen/test_loader.py +++ b/Lib/test/test_importlib/frozen/test_loader.py @@ -161,19 +161,23 @@ def test_module_repr(self): "") def test_module_repr_indirect(self): - with util.uncache('__hello__'), captured_stdout(): - module = self.machinery.FrozenImporter.load_module('__hello__') - self.assertEqual(repr(module), - "") + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + with util.uncache('__hello__'), captured_stdout(): + module = self.machinery.FrozenImporter.load_module('__hello__') + self.assertEqual(repr(module), + "") # No way to trigger an error in a frozen module. test_state_after_failure = None def test_unloadable(self): - assert self.machinery.FrozenImporter.find_module('_not_real') is None - with self.assertRaises(ImportError) as cm: - self.machinery.FrozenImporter.load_module('_not_real') - self.assertEqual(cm.exception.name, '_not_real') + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + assert self.machinery.FrozenImporter.find_module('_not_real') is None + with self.assertRaises(ImportError) as cm: + self.machinery.FrozenImporter.load_module('_not_real') + self.assertEqual(cm.exception.name, '_not_real') (Frozen_LoaderTests, diff --git a/Lib/test/test_importlib/import_/test___loader__.py b/Lib/test/test_importlib/import_/test___loader__.py index 4b18093cf903f..ecd83c6567e70 100644 --- a/Lib/test/test_importlib/import_/test___loader__.py +++ b/Lib/test/test_importlib/import_/test___loader__.py @@ -2,6 +2,7 @@ import sys import types import unittest +import warnings from .. import util @@ -45,25 +46,29 @@ def load_module(self, fullname): class LoaderAttributeTests: def test___loader___missing(self): - module = types.ModuleType('blah') - try: - del module.__loader__ - except AttributeError: - pass - loader = LoaderMock() - loader.module = module - with util.uncache('blah'), util.import_state(meta_path=[loader]): - module = self.__import__('blah') - self.assertEqual(loader, module.__loader__) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + module = types.ModuleType('blah') + try: + del module.__loader__ + except AttributeError: + pass + loader = LoaderMock() + loader.module = module + with util.uncache('blah'), util.import_state(meta_path=[loader]): + module = self.__import__('blah') + self.assertEqual(loader, module.__loader__) def test___loader___is_None(self): - module = types.ModuleType('blah') - module.__loader__ = None - loader = LoaderMock() - loader.module = module - with util.uncache('blah'), util.import_state(meta_path=[loader]): - returned_module = self.__import__('blah') - self.assertEqual(loader, module.__loader__) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + module = types.ModuleType('blah') + module.__loader__ = None + loader = LoaderMock() + loader.module = module + with util.uncache('blah'), util.import_state(meta_path=[loader]): + returned_module = self.__import__('blah') + self.assertEqual(loader, module.__loader__) (Frozen_Tests, diff --git a/Lib/test/test_importlib/import_/test___package__.py b/Lib/test/test_importlib/import_/test___package__.py index 761b256b38788..4a2b34e5f67f2 100644 --- a/Lib/test/test_importlib/import_/test___package__.py +++ b/Lib/test/test_importlib/import_/test___package__.py @@ -98,6 +98,16 @@ def __init__(self, parent): class Using__package__PEP302(Using__package__): mock_modules = util.mock_modules + def test_using___package__(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_using___package__() + + def test_spec_fallback(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_spec_fallback() + (Frozen_UsingPackagePEP302, Source_UsingPackagePEP302 @@ -155,6 +165,21 @@ def test_submodule(self): class Setting__package__PEP302(Setting__package__, unittest.TestCase): mock_modules = util.mock_modules + def test_top_level(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_top_level() + + def test_package(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_package() + + def test_submodule(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_submodule() + class Setting__package__PEP451(Setting__package__, unittest.TestCase): mock_modules = util.mock_spec diff --git a/Lib/test/test_importlib/import_/test_api.py b/Lib/test/test_importlib/import_/test_api.py index 0cd9de4daff75..35c26977ea315 100644 --- a/Lib/test/test_importlib/import_/test_api.py +++ b/Lib/test/test_importlib/import_/test_api.py @@ -4,6 +4,7 @@ import sys import types import unittest +import warnings PKG_NAME = 'fine' SUBMOD_NAME = 'fine.bogus' @@ -100,6 +101,36 @@ def test_blocked_fromlist(self): class OldAPITests(APITest): bad_finder_loader = BadLoaderFinder + def test_raises_ModuleNotFoundError(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_raises_ModuleNotFoundError() + + def test_name_requires_rparition(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_name_requires_rparition() + + def test_negative_level(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_negative_level() + + def test_nonexistent_fromlist_entry(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_nonexistent_fromlist_entry() + + def test_fromlist_load_error_propagates(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_fromlist_load_error_propagates + + def test_blocked_fromlist(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_blocked_fromlist() + (Frozen_OldAPITests, Source_OldAPITests diff --git a/Lib/test/test_importlib/import_/test_caching.py b/Lib/test/test_importlib/import_/test_caching.py index 8079add5b2147..0f987b22100c9 100644 --- a/Lib/test/test_importlib/import_/test_caching.py +++ b/Lib/test/test_importlib/import_/test_caching.py @@ -3,6 +3,7 @@ import sys from types import MethodType import unittest +import warnings class UseCache: @@ -63,30 +64,36 @@ def load_module(self, fullname): # to when to use the module in sys.modules and when not to. def test_using_cache_after_loader(self): # [from cache on return] - with self.create_mock('module') as mock: - with util.import_state(meta_path=[mock]): - module = self.__import__('module') - self.assertEqual(id(module), id(sys.modules['module'])) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + with self.create_mock('module') as mock: + with util.import_state(meta_path=[mock]): + module = self.__import__('module') + self.assertEqual(id(module), id(sys.modules['module'])) # See test_using_cache_after_loader() for reasoning. def test_using_cache_for_assigning_to_attribute(self): # [from cache to attribute] - with self.create_mock('pkg.__init__', 'pkg.module') as importer: - with util.import_state(meta_path=[importer]): - module = self.__import__('pkg.module') - self.assertTrue(hasattr(module, 'module')) - self.assertEqual(id(module.module), - id(sys.modules['pkg.module'])) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + with self.create_mock('pkg.__init__', 'pkg.module') as importer: + with util.import_state(meta_path=[importer]): + module = self.__import__('pkg.module') + self.assertTrue(hasattr(module, 'module')) + self.assertEqual(id(module.module), + id(sys.modules['pkg.module'])) # See test_using_cache_after_loader() for reasoning. def test_using_cache_for_fromlist(self): # [from cache for fromlist] - with self.create_mock('pkg.__init__', 'pkg.module') as importer: - with util.import_state(meta_path=[importer]): - module = self.__import__('pkg', fromlist=['module']) - self.assertTrue(hasattr(module, 'module')) - self.assertEqual(id(module.module), - id(sys.modules['pkg.module'])) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + with self.create_mock('pkg.__init__', 'pkg.module') as importer: + with util.import_state(meta_path=[importer]): + module = self.__import__('pkg', fromlist=['module']) + self.assertTrue(hasattr(module, 'module')) + self.assertEqual(id(module.module), + id(sys.modules['pkg.module'])) if __name__ == '__main__': diff --git a/Lib/test/test_importlib/import_/test_fromlist.py b/Lib/test/test_importlib/import_/test_fromlist.py index 018c172176190..deb21710a61fa 100644 --- a/Lib/test/test_importlib/import_/test_fromlist.py +++ b/Lib/test/test_importlib/import_/test_fromlist.py @@ -24,7 +24,7 @@ def test_return_from_import(self): def test_return_from_from_import(self): # [from return] - with util.mock_modules('pkg.__init__', 'pkg.module')as importer: + with util.mock_spec('pkg.__init__', 'pkg.module')as importer: with util.import_state(meta_path=[importer]): module = self.__import__('pkg.module', fromlist=['attr']) self.assertEqual(module.__name__, 'pkg.module') @@ -52,14 +52,14 @@ class HandlingFromlist: def test_object(self): # [object case] - with util.mock_modules('module') as importer: + with util.mock_spec('module') as importer: with util.import_state(meta_path=[importer]): module = self.__import__('module', fromlist=['attr']) self.assertEqual(module.__name__, 'module') def test_nonexistent_object(self): # [bad object] - with util.mock_modules('module') as importer: + with util.mock_spec('module') as importer: with util.import_state(meta_path=[importer]): module = self.__import__('module', fromlist=['non_existent']) self.assertEqual(module.__name__, 'module') @@ -67,7 +67,7 @@ def test_nonexistent_object(self): def test_module_from_package(self): # [module] - with util.mock_modules('pkg.__init__', 'pkg.module') as importer: + with util.mock_spec('pkg.__init__', 'pkg.module') as importer: with util.import_state(meta_path=[importer]): module = self.__import__('pkg', fromlist=['module']) self.assertEqual(module.__name__, 'pkg') @@ -75,7 +75,7 @@ def test_module_from_package(self): self.assertEqual(module.module.__name__, 'pkg.module') def test_nonexistent_from_package(self): - with util.mock_modules('pkg.__init__') as importer: + with util.mock_spec('pkg.__init__') as importer: with util.import_state(meta_path=[importer]): module = self.__import__('pkg', fromlist=['non_existent']) self.assertEqual(module.__name__, 'pkg') @@ -87,7 +87,7 @@ def test_module_from_package_triggers_ModuleNotFoundError(self): # ModuleNotFoundError propagate. def module_code(): import i_do_not_exist - with util.mock_modules('pkg.__init__', 'pkg.mod', + with util.mock_spec('pkg.__init__', 'pkg.mod', module_code={'pkg.mod': module_code}) as importer: with util.import_state(meta_path=[importer]): with self.assertRaises(ModuleNotFoundError) as exc: @@ -95,14 +95,14 @@ def module_code(): self.assertEqual('i_do_not_exist', exc.exception.name) def test_empty_string(self): - with util.mock_modules('pkg.__init__', 'pkg.mod') as importer: + with util.mock_spec('pkg.__init__', 'pkg.mod') as importer: with util.import_state(meta_path=[importer]): module = self.__import__('pkg.mod', fromlist=['']) self.assertEqual(module.__name__, 'pkg.mod') def basic_star_test(self, fromlist=['*']): # [using *] - with util.mock_modules('pkg.__init__', 'pkg.module') as mock: + with util.mock_spec('pkg.__init__', 'pkg.module') as mock: with util.import_state(meta_path=[mock]): mock['pkg'].__all__ = ['module'] module = self.__import__('pkg', fromlist=fromlist) @@ -119,7 +119,7 @@ def test_fromlist_as_tuple(self): def test_star_with_others(self): # [using * with others] - context = util.mock_modules('pkg.__init__', 'pkg.module1', 'pkg.module2') + context = util.mock_spec('pkg.__init__', 'pkg.module1', 'pkg.module2') with context as mock: with util.import_state(meta_path=[mock]): mock['pkg'].__all__ = ['module1'] @@ -131,7 +131,7 @@ def test_star_with_others(self): self.assertEqual(module.module2.__name__, 'pkg.module2') def test_nonexistent_in_all(self): - with util.mock_modules('pkg.__init__') as importer: + with util.mock_spec('pkg.__init__') as importer: with util.import_state(meta_path=[importer]): importer['pkg'].__all__ = ['non_existent'] module = self.__import__('pkg', fromlist=['*']) @@ -139,7 +139,7 @@ def test_nonexistent_in_all(self): self.assertFalse(hasattr(module, 'non_existent')) def test_star_in_all(self): - with util.mock_modules('pkg.__init__') as importer: + with util.mock_spec('pkg.__init__') as importer: with util.import_state(meta_path=[importer]): importer['pkg'].__all__ = ['*'] module = self.__import__('pkg', fromlist=['*']) @@ -147,7 +147,7 @@ def test_star_in_all(self): self.assertFalse(hasattr(module, '*')) def test_invalid_type(self): - with util.mock_modules('pkg.__init__') as importer: + with util.mock_spec('pkg.__init__') as importer: with util.import_state(meta_path=[importer]), \ warnings.catch_warnings(): warnings.simplefilter('error', BytesWarning) @@ -157,7 +157,7 @@ def test_invalid_type(self): self.__import__('pkg', fromlist=iter([b'attr'])) def test_invalid_type_in_all(self): - with util.mock_modules('pkg.__init__') as importer: + with util.mock_spec('pkg.__init__') as importer: with util.import_state(meta_path=[importer]), \ warnings.catch_warnings(): warnings.simplefilter('error', BytesWarning) diff --git a/Lib/test/test_importlib/import_/test_meta_path.py b/Lib/test/test_importlib/import_/test_meta_path.py index 5a41e8968a21f..5730119fe9933 100644 --- a/Lib/test/test_importlib/import_/test_meta_path.py +++ b/Lib/test/test_importlib/import_/test_meta_path.py @@ -100,8 +100,20 @@ def test_with_path(self): self.assertEqual(args[0], mod_name) self.assertIs(args[1], path) +class CallSignoreSuppressImportWarning(CallSignature): -class CallSignaturePEP302(CallSignature): + def test_no_path(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_no_path() + + def test_with_path(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + super().test_no_path() + + +class CallSignaturePEP302(CallSignoreSuppressImportWarning): mock_modules = util.mock_modules finder_name = 'find_module' diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py index 605738fae2e37..d8b9fc89f29aa 100644 --- a/Lib/test/test_importlib/test_abc.py +++ b/Lib/test/test_importlib/test_abc.py @@ -458,32 +458,36 @@ def is_package(self, fullname): return SpecLoader() def test_fresh(self): - loader = self.loader() - name = 'blah' - with test_util.uncache(name): - loader.load_module(name) - module = loader.found - self.assertIs(sys.modules[name], module) - self.assertEqual(loader, module.__loader__) - self.assertEqual(loader, module.__spec__.loader) - self.assertEqual(name, module.__name__) - self.assertEqual(name, module.__spec__.name) - self.assertIsNotNone(module.__path__) - self.assertIsNotNone(module.__path__, - module.__spec__.submodule_search_locations) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + loader = self.loader() + name = 'blah' + with test_util.uncache(name): + loader.load_module(name) + module = loader.found + self.assertIs(sys.modules[name], module) + self.assertEqual(loader, module.__loader__) + self.assertEqual(loader, module.__spec__.loader) + self.assertEqual(name, module.__name__) + self.assertEqual(name, module.__spec__.name) + self.assertIsNotNone(module.__path__) + self.assertIsNotNone(module.__path__, + module.__spec__.submodule_search_locations) def test_reload(self): - name = 'blah' - loader = self.loader() - module = types.ModuleType(name) - module.__spec__ = self.util.spec_from_loader(name, loader) - module.__loader__ = loader - with test_util.uncache(name): - sys.modules[name] = module - loader.load_module(name) - found = loader.found - self.assertIs(found, sys.modules[name]) - self.assertIs(module, sys.modules[name]) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + name = 'blah' + loader = self.loader() + module = types.ModuleType(name) + module.__spec__ = self.util.spec_from_loader(name, loader) + module.__loader__ = loader + with test_util.uncache(name): + sys.modules[name] = module + loader.load_module(name) + found = loader.found + self.assertIs(found, sys.modules[name]) + self.assertIs(module, sys.modules[name]) (Frozen_LoaderLoadModuleTests, @@ -837,25 +841,29 @@ def test_load_module(self): # Loading a module should set __name__, __loader__, __package__, # __path__ (for packages), __file__, and __cached__. # The module should also be put into sys.modules. - with test_util.uncache(self.name): - with warnings.catch_warnings(): - warnings.simplefilter('ignore', DeprecationWarning) - module = self.loader.load_module(self.name) - self.verify_module(module) - self.assertEqual(module.__path__, [os.path.dirname(self.path)]) - self.assertIn(self.name, sys.modules) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + with test_util.uncache(self.name): + with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + module = self.loader.load_module(self.name) + self.verify_module(module) + self.assertEqual(module.__path__, [os.path.dirname(self.path)]) + self.assertIn(self.name, sys.modules) def test_package_settings(self): # __package__ needs to be set, while __path__ is set on if the module # is a package. # Testing the values for a package are covered by test_load_module. - self.setUp(is_package=False) - with test_util.uncache(self.name): - with warnings.catch_warnings(): - warnings.simplefilter('ignore', DeprecationWarning) - module = self.loader.load_module(self.name) - self.verify_module(module) - self.assertFalse(hasattr(module, '__path__')) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + self.setUp(is_package=False) + with test_util.uncache(self.name): + with warnings.catch_warnings(): + warnings.simplefilter('ignore', DeprecationWarning) + module = self.loader.load_module(self.name) + self.verify_module(module) + self.assertFalse(hasattr(module, '__path__')) def test_get_source_encoding(self): # Source is considered encoded in UTF-8 by default unless otherwise diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py index fd60634e09333..3f06a10ba9c5e 100644 --- a/Lib/test/test_importlib/test_api.py +++ b/Lib/test/test_importlib/test_api.py @@ -20,7 +20,7 @@ class ImportModuleTests: def test_module_import(self): # Test importing a top-level module. - with test_util.mock_modules('top_level') as mock: + with test_util.mock_spec('top_level') as mock: with test_util.import_state(meta_path=[mock]): module = self.init.import_module('top_level') self.assertEqual(module.__name__, 'top_level') @@ -30,7 +30,7 @@ def test_absolute_package_import(self): pkg_name = 'pkg' pkg_long_name = '{0}.__init__'.format(pkg_name) name = '{0}.mod'.format(pkg_name) - with test_util.mock_modules(pkg_long_name, name) as mock: + with test_util.mock_spec(pkg_long_name, name) as mock: with test_util.import_state(meta_path=[mock]): module = self.init.import_module(name) self.assertEqual(module.__name__, name) @@ -42,7 +42,7 @@ def test_shallow_relative_package_import(self): module_name = 'mod' absolute_name = '{0}.{1}'.format(pkg_name, module_name) relative_name = '.{0}'.format(module_name) - with test_util.mock_modules(pkg_long_name, absolute_name) as mock: + with test_util.mock_spec(pkg_long_name, absolute_name) as mock: with test_util.import_state(meta_path=[mock]): self.init.import_module(pkg_name) module = self.init.import_module(relative_name, pkg_name) @@ -50,7 +50,7 @@ def test_shallow_relative_package_import(self): def test_deep_relative_package_import(self): modules = ['a.__init__', 'a.b.__init__', 'a.c'] - with test_util.mock_modules(*modules) as mock: + with test_util.mock_spec(*modules) as mock: with test_util.import_state(meta_path=[mock]): self.init.import_module('a') self.init.import_module('a.b') @@ -63,7 +63,7 @@ def test_absolute_import_with_package(self): pkg_name = 'pkg' pkg_long_name = '{0}.__init__'.format(pkg_name) name = '{0}.mod'.format(pkg_name) - with test_util.mock_modules(pkg_long_name, name) as mock: + with test_util.mock_spec(pkg_long_name, name) as mock: with test_util.import_state(meta_path=[mock]): self.init.import_module(pkg_name) module = self.init.import_module(name, pkg_name) @@ -88,7 +88,7 @@ def load_b(): b_load_count += 1 code = {'a': load_a, 'a.b': load_b} modules = ['a.__init__', 'a.b'] - with test_util.mock_modules(*modules, module_code=code) as mock: + with test_util.mock_spec(*modules, module_code=code) as mock: with test_util.import_state(meta_path=[mock]): self.init.import_module('a.b') self.assertEqual(b_load_count, 1) @@ -212,8 +212,8 @@ def code(): module = type(sys)('top_level') module.spam = 3 sys.modules['top_level'] = module - mock = test_util.mock_modules('top_level', - module_code={'top_level': code}) + mock = test_util.mock_spec('top_level', + module_code={'top_level': code}) with mock: with test_util.import_state(meta_path=[mock]): module = self.init.import_module('top_level') diff --git a/Lib/test/test_importlib/test_spec.py b/Lib/test/test_importlib/test_spec.py index eed90f29f9286..b57eb6c0ff397 100644 --- a/Lib/test/test_importlib/test_spec.py +++ b/Lib/test/test_importlib/test_spec.py @@ -303,32 +303,38 @@ def exec_module(self, module): self.assertNotIn(self.spec.name, sys.modules) def test_load_legacy(self): - self.spec.loader = LegacyLoader() - with CleanImport(self.spec.name): - loaded = self.bootstrap._load(self.spec) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._load(self.spec) - self.assertEqual(loaded.ham, -1) + self.assertEqual(loaded.ham, -1) def test_load_legacy_attributes(self): - self.spec.loader = LegacyLoader() - with CleanImport(self.spec.name): - loaded = self.bootstrap._load(self.spec) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._load(self.spec) - self.assertIs(loaded.__loader__, self.spec.loader) - self.assertEqual(loaded.__package__, self.spec.parent) - self.assertIs(loaded.__spec__, self.spec) + self.assertIs(loaded.__loader__, self.spec.loader) + self.assertEqual(loaded.__package__, self.spec.parent) + self.assertIs(loaded.__spec__, self.spec) def test_load_legacy_attributes_immutable(self): module = object() - class ImmutableLoader(TestLoader): - def load_module(self, name): - sys.modules[name] = module - return module - self.spec.loader = ImmutableLoader() - with CleanImport(self.spec.name): - loaded = self.bootstrap._load(self.spec) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + class ImmutableLoader(TestLoader): + def load_module(self, name): + sys.modules[name] = module + return module + self.spec.loader = ImmutableLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._load(self.spec) - self.assertIs(sys.modules[self.spec.name], module) + self.assertIs(sys.modules[self.spec.name], module) # reload() @@ -382,11 +388,13 @@ def test_reload_init_module_attrs(self): self.assertFalse(hasattr(loaded, '__cached__')) def test_reload_legacy(self): - self.spec.loader = LegacyLoader() - with CleanImport(self.spec.name): - loaded = self.bootstrap._load(self.spec) - reloaded = self.bootstrap._exec(self.spec, loaded) - installed = sys.modules[self.spec.name] + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._load(self.spec) + reloaded = self.bootstrap._exec(self.spec, loaded) + installed = sys.modules[self.spec.name] self.assertEqual(loaded.ham, -1) self.assertIs(reloaded, loaded) diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 5bb62cdb37402..098ba17af5975 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -446,7 +446,7 @@ def do_test_with_pip(self, system_site_packages): # pip's cross-version compatibility may trigger deprecation # warnings in current versions of Python. Ensure related # environment settings don't cause venv to fail. - envvars["PYTHONWARNINGS"] = "e" + envvars["PYTHONWARNINGS"] = "ignore" # ensurepip is different enough from a normal pip invocation # that we want to ensure it ignores the normal pip environment # variable settings. We set PIP_NO_INSTALL here specifically @@ -485,7 +485,8 @@ def do_test_with_pip(self, system_site_packages): # Ensure pip is available in the virtual environment envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) # Ignore DeprecationWarning since pip code is not part of Python - out, err = check_output([envpy, '-W', 'ignore::DeprecationWarning', '-I', + out, err = check_output([envpy, '-W', 'ignore::DeprecationWarning', + '-W', 'ignore::ImportWarning', '-I', '-m', 'pip', '--version']) # We force everything to text, so unittest gives the detailed diff # if we get unexpected results @@ -501,8 +502,12 @@ def do_test_with_pip(self, system_site_packages): # Check the private uninstall command provided for the Windows # installers works (at least in a virtual environment) with EnvironmentVarGuard() as envvars: + # It seems ensurepip._uninstall calls subprocesses which do not + # inherit the interpreter settings. + envvars["PYTHONWARNINGS"] = "ignore" out, err = check_output([envpy, - '-W', 'ignore::DeprecationWarning', '-I', + '-W', 'ignore::DeprecationWarning', + '-W', 'ignore::ImportWarning', '-I', '-m', 'ensurepip._uninstall']) # We force everything to text, so unittest gives the detailed diff # if we get unexpected results diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py index be0a198010cec..6dea2b16287ad 100644 --- a/Lib/test/test_zipimport.py +++ b/Lib/test/test_zipimport.py @@ -7,6 +7,7 @@ import time import unittest import unittest.mock +import warnings from test import support from test.support import import_helper @@ -453,15 +454,17 @@ def testZipImporterMethods(self): self.assertTrue(zi.is_package(TESTPACK)) # PEP 302 - find_mod = zi.find_module('spam') - self.assertIsNotNone(find_mod) - self.assertIsInstance(find_mod, zipimport.zipimporter) - self.assertFalse(find_mod.is_package('spam')) - load_mod = find_mod.load_module('spam') - self.assertEqual(find_mod.get_filename('spam'), load_mod.__file__) - - mod = zi.load_module(TESTPACK) - self.assertEqual(zi.get_filename(TESTPACK), mod.__file__) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + find_mod = zi.find_module('spam') + self.assertIsNotNone(find_mod) + self.assertIsInstance(find_mod, zipimport.zipimporter) + self.assertFalse(find_mod.is_package('spam')) + load_mod = find_mod.load_module('spam') + self.assertEqual(find_mod.get_filename('spam'), load_mod.__file__) + + mod = zi.load_module(TESTPACK) + self.assertEqual(zi.get_filename(TESTPACK), mod.__file__) # PEP 451 spec = zi.find_spec('spam') @@ -522,8 +525,10 @@ def testZipImporterMethodsInSubDirectory(self): self.assertEqual(zi.prefix, packdir) self.assertTrue(zi.is_package(TESTPACK2)) # PEP 302 - mod = zi.load_module(TESTPACK2) - self.assertEqual(zi.get_filename(TESTPACK2), mod.__file__) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + mod = zi.load_module(TESTPACK2) + self.assertEqual(zi.get_filename(TESTPACK2), mod.__file__) # PEP 451 spec = zi.find_spec(TESTPACK2) mod = importlib.util.module_from_spec(spec) @@ -536,13 +541,15 @@ def testZipImporterMethodsInSubDirectory(self): pkg_path = TEMP_ZIP + os.sep + packdir + TESTPACK2 zi2 = zipimport.zipimporter(pkg_path) # PEP 302 - find_mod_dotted = zi2.find_module(TESTMOD) - self.assertIsNotNone(find_mod_dotted) - self.assertIsInstance(find_mod_dotted, zipimport.zipimporter) - self.assertFalse(zi2.is_package(TESTMOD)) - load_mod = find_mod_dotted.load_module(TESTMOD) - self.assertEqual( - find_mod_dotted.get_filename(TESTMOD), load_mod.__file__) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + find_mod_dotted = zi2.find_module(TESTMOD) + self.assertIsNotNone(find_mod_dotted) + self.assertIsInstance(find_mod_dotted, zipimport.zipimporter) + self.assertFalse(zi2.is_package(TESTMOD)) + load_mod = find_mod_dotted.load_module(TESTMOD) + self.assertEqual( + find_mod_dotted.get_filename(TESTMOD), load_mod.__file__) # PEP 451 spec = zi2.find_spec(TESTMOD) @@ -778,10 +785,12 @@ def _testBogusZipFile(self): z = zipimport.zipimporter(TESTMOD) try: + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + self.assertRaises(TypeError, z.load_module, None) self.assertRaises(TypeError, z.find_module, None) self.assertRaises(TypeError, z.find_spec, None) self.assertRaises(TypeError, z.exec_module, None) - self.assertRaises(TypeError, z.load_module, None) self.assertRaises(TypeError, z.is_package, None) self.assertRaises(TypeError, z.get_code, None) self.assertRaises(TypeError, z.get_data, None) @@ -791,7 +800,9 @@ def _testBogusZipFile(self): self.assertIsNone(z.find_module('abc')) self.assertIsNone(z.find_spec('abc')) - self.assertRaises(error, z.load_module, 'abc') + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + self.assertRaises(error, z.load_module, 'abc') self.assertRaises(error, z.get_code, 'abc') self.assertRaises(OSError, z.get_data, 'abc') self.assertRaises(error, z.get_source, 'abc') diff --git a/Lib/zipimport.py b/Lib/zipimport.py index 2e5188a4a0aa5..02e4fd38d0e2a 100644 --- a/Lib/zipimport.py +++ b/Lib/zipimport.py @@ -22,6 +22,7 @@ import marshal # for loads import sys # for modules import time # for mktime +import _warnings # For warn() __all__ = ['ZipImportError', 'zipimporter'] @@ -268,8 +269,11 @@ def load_module(self, fullname): fully qualified (dotted) module name. It returns the imported module, or raises ZipImportError if it wasn't found. - Deprecated since Python 3.10. use exec_module() instead. + Deprecated since Python 3.10. Use exec_module() instead. """ + msg = ("zipimport.zipimporter.load_module() is deprecated and slated for " + "removal in Python 3.12; use exec_module() instead") + _warnings.warn(msg, DeprecationWarning) code, ispackage, modpath = _get_module_code(self, fullname) mod = sys.modules.get(fullname) if mod is None or not isinstance(mod, _module_type): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst new file mode 100644 index 0000000000000..e9f44c7c3aa9f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst @@ -0,0 +1,2 @@ +The import system triggers a `ImportWarning` when it falls back to using +`load_module()`. diff --git a/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst b/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst new file mode 100644 index 0000000000000..bead284bde4eb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst @@ -0,0 +1,2 @@ +The `load_module()` methods found in importlib now trigger a +DeprecationWarning. diff --git a/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst b/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst new file mode 100644 index 0000000000000..33062a3f93bef --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst @@ -0,0 +1 @@ +Deprecate zipimport.zipimporter.load_module() in favour of exec_module(). diff --git a/Python/importlib.h b/Python/importlib.h index 179f8df77a0a0..6c77d775e38a7 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,506 +1,527 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__importlib_bootstrap[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,206,1,0,0,100,0, - 90,0,100,1,90,1,100,1,90,2,100,1,90,3,100,1, - 97,4,100,2,100,3,132,0,90,5,100,4,100,5,132,0, - 90,6,105,0,90,7,105,0,90,8,71,0,100,6,100,7, - 132,0,100,7,101,9,131,3,90,10,71,0,100,8,100,9, - 132,0,100,9,131,2,90,11,71,0,100,10,100,11,132,0, - 100,11,131,2,90,12,71,0,100,12,100,13,132,0,100,13, - 131,2,90,13,100,14,100,15,132,0,90,14,100,16,100,17, + 0,4,0,0,0,64,0,0,0,115,214,1,0,0,100,0, + 90,0,100,1,100,2,132,0,90,1,100,3,90,2,100,3, + 90,3,100,3,90,4,100,3,97,5,100,4,100,5,132,0, + 90,6,100,6,100,7,132,0,90,7,105,0,90,8,105,0, + 90,9,71,0,100,8,100,9,132,0,100,9,101,10,131,3, + 90,11,71,0,100,10,100,11,132,0,100,11,131,2,90,12, + 71,0,100,12,100,13,132,0,100,13,131,2,90,13,71,0, + 100,14,100,15,132,0,100,15,131,2,90,14,100,16,100,17, 132,0,90,15,100,18,100,19,132,0,90,16,100,20,100,21, - 156,1,100,22,100,23,132,2,90,17,100,24,100,25,132,0, + 132,0,90,17,100,22,100,23,156,1,100,24,100,25,132,2, 90,18,100,26,100,27,132,0,90,19,100,28,100,29,132,0, - 90,20,100,30,100,31,132,0,90,21,71,0,100,32,100,33, - 132,0,100,33,131,2,90,22,100,1,100,1,100,34,156,2, - 100,35,100,36,132,2,90,23,100,94,100,37,100,38,132,1, - 90,24,100,39,100,40,156,1,100,41,100,42,132,2,90,25, - 100,43,100,44,132,0,90,26,100,45,100,46,132,0,90,27, + 90,20,100,30,100,31,132,0,90,21,100,32,100,33,132,0, + 90,22,71,0,100,34,100,35,132,0,100,35,131,2,90,23, + 100,3,100,3,100,36,156,2,100,37,100,38,132,2,90,24, + 100,96,100,39,100,40,132,1,90,25,100,41,100,42,156,1, + 100,43,100,44,132,2,90,26,100,45,100,46,132,0,90,27, 100,47,100,48,132,0,90,28,100,49,100,50,132,0,90,29, 100,51,100,52,132,0,90,30,100,53,100,54,132,0,90,31, - 71,0,100,55,100,56,132,0,100,56,131,2,90,32,71,0, - 100,57,100,58,132,0,100,58,131,2,90,33,71,0,100,59, - 100,60,132,0,100,60,131,2,90,34,100,61,100,62,132,0, - 90,35,100,63,100,64,132,0,90,36,100,95,100,65,100,66, - 132,1,90,37,100,67,100,68,132,0,90,38,100,69,90,39, - 101,39,100,70,23,0,90,40,100,71,100,72,132,0,90,41, - 101,42,131,0,90,43,100,73,100,74,132,0,90,44,100,96, - 100,76,100,77,132,1,90,45,100,39,100,78,156,1,100,79, - 100,80,132,2,90,46,100,81,100,82,132,0,90,47,100,97, - 100,84,100,85,132,1,90,48,100,86,100,87,132,0,90,49, + 100,55,100,56,132,0,90,32,71,0,100,57,100,58,132,0, + 100,58,131,2,90,33,71,0,100,59,100,60,132,0,100,60, + 131,2,90,34,71,0,100,61,100,62,132,0,100,62,131,2, + 90,35,100,63,100,64,132,0,90,36,100,65,100,66,132,0, + 90,37,100,97,100,67,100,68,132,1,90,38,100,69,100,70, + 132,0,90,39,100,71,90,40,101,40,100,72,23,0,90,41, + 100,73,100,74,132,0,90,42,101,43,131,0,90,44,100,75, + 100,76,132,0,90,45,100,98,100,78,100,79,132,1,90,46, + 100,41,100,80,156,1,100,81,100,82,132,2,90,47,100,83, + 100,84,132,0,90,48,100,99,100,86,100,87,132,1,90,49, 100,88,100,89,132,0,90,50,100,90,100,91,132,0,90,51, - 100,92,100,93,132,0,90,52,100,1,83,0,41,98,97,83, - 1,0,0,67,111,114,101,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,111,102,32,105,109,112,111,114,116, - 46,10,10,84,104,105,115,32,109,111,100,117,108,101,32,105, - 115,32,78,79,84,32,109,101,97,110,116,32,116,111,32,98, - 101,32,100,105,114,101,99,116,108,121,32,105,109,112,111,114, - 116,101,100,33,32,73,116,32,104,97,115,32,98,101,101,110, - 32,100,101,115,105,103,110,101,100,32,115,117,99,104,10,116, - 104,97,116,32,105,116,32,99,97,110,32,98,101,32,98,111, - 111,116,115,116,114,97,112,112,101,100,32,105,110,116,111,32, - 80,121,116,104,111,110,32,97,115,32,116,104,101,32,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, - 105,109,112,111,114,116,46,32,65,115,10,115,117,99,104,32, - 105,116,32,114,101,113,117,105,114,101,115,32,116,104,101,32, - 105,110,106,101,99,116,105,111,110,32,111,102,32,115,112,101, - 99,105,102,105,99,32,109,111,100,117,108,101,115,32,97,110, - 100,32,97,116,116,114,105,98,117,116,101,115,32,105,110,32, - 111,114,100,101,114,32,116,111,10,119,111,114,107,46,32,79, - 110,101,32,115,104,111,117,108,100,32,117,115,101,32,105,109, - 112,111,114,116,108,105,98,32,97,115,32,116,104,101,32,112, - 117,98,108,105,99,45,102,97,99,105,110,103,32,118,101,114, - 115,105,111,110,32,111,102,32,116,104,105,115,32,109,111,100, - 117,108,101,46,10,10,78,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,7,0,0,0,67,0,0,0, - 115,56,0,0,0,100,1,68,0,93,32,125,2,116,0,124, - 1,124,2,131,2,114,4,116,1,124,0,124,2,116,2,124, - 1,124,2,131,2,131,3,1,0,113,4,124,0,106,3,160, - 4,124,1,106,3,161,1,1,0,100,2,83,0,41,3,122, - 47,83,105,109,112,108,101,32,115,117,98,115,116,105,116,117, - 116,101,32,102,111,114,32,102,117,110,99,116,111,111,108,115, - 46,117,112,100,97,116,101,95,119,114,97,112,112,101,114,46, - 41,4,218,10,95,95,109,111,100,117,108,101,95,95,218,8, - 95,95,110,97,109,101,95,95,218,12,95,95,113,117,97,108, - 110,97,109,101,95,95,218,7,95,95,100,111,99,95,95,78, - 41,5,218,7,104,97,115,97,116,116,114,218,7,115,101,116, - 97,116,116,114,218,7,103,101,116,97,116,116,114,218,8,95, - 95,100,105,99,116,95,95,218,6,117,112,100,97,116,101,41, - 3,90,3,110,101,119,90,3,111,108,100,218,7,114,101,112, - 108,97,99,101,169,0,114,10,0,0,0,250,29,60,102,114, - 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, - 98,111,111,116,115,116,114,97,112,62,218,5,95,119,114,97, - 112,34,0,0,0,115,10,0,0,0,8,2,10,1,20,1, - 18,1,255,128,114,12,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, - 0,0,115,12,0,0,0,116,0,116,1,131,1,124,0,131, - 1,83,0,169,1,78,41,2,218,4,116,121,112,101,218,3, - 115,121,115,169,1,218,4,110,97,109,101,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,11,95,110,101,119, - 95,109,111,100,117,108,101,42,0,0,0,115,4,0,0,0, - 12,1,255,128,114,18,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0, - 0,0,115,12,0,0,0,101,0,90,1,100,0,90,2,100, - 1,83,0,41,2,218,14,95,68,101,97,100,108,111,99,107, - 69,114,114,111,114,78,41,3,114,1,0,0,0,114,0,0, - 0,0,114,2,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,19,0,0,0, - 55,0,0,0,115,6,0,0,0,8,0,4,1,255,128,114, - 19,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,56,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,90,6,100,8,100,9,132,0,90,7,100,10, - 100,11,132,0,90,8,100,12,83,0,41,13,218,11,95,77, - 111,100,117,108,101,76,111,99,107,122,169,65,32,114,101,99, - 117,114,115,105,118,101,32,108,111,99,107,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,119,104,105,99,104, - 32,105,115,32,97,98,108,101,32,116,111,32,100,101,116,101, - 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32, - 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32, - 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108, - 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97, - 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105, - 110,103,32,116,111,10,32,32,32,32,116,97,107,101,32,108, - 111,99,107,115,32,66,32,116,104,101,110,32,65,41,46,10, - 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,2,0,0,0,67,0,0,0,115,48,0, - 0,0,116,0,160,1,161,0,124,0,95,2,116,0,160,1, - 161,0,124,0,95,3,124,1,124,0,95,4,100,0,124,0, - 95,5,100,1,124,0,95,6,100,1,124,0,95,7,100,0, - 83,0,169,2,78,233,0,0,0,0,41,8,218,7,95,116, - 104,114,101,97,100,90,13,97,108,108,111,99,97,116,101,95, - 108,111,99,107,218,4,108,111,99,107,218,6,119,97,107,101, - 117,112,114,17,0,0,0,218,5,111,119,110,101,114,218,5, - 99,111,117,110,116,218,7,119,97,105,116,101,114,115,169,2, - 218,4,115,101,108,102,114,17,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,8,95,95,105,110, - 105,116,95,95,65,0,0,0,115,14,0,0,0,10,1,10, - 1,6,1,6,1,6,1,10,1,255,128,122,20,95,77,111, - 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, - 95,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,67,0,0,0,115,84,0,0,0,116, - 0,160,1,161,0,125,1,124,0,106,2,125,2,116,3,131, - 0,125,3,116,4,160,5,124,2,161,1,125,4,124,4,100, - 0,117,0,114,42,100,1,83,0,124,4,106,2,125,2,124, - 2,124,1,107,2,114,60,100,2,83,0,124,2,124,3,118, - 0,114,72,100,1,83,0,124,3,160,6,124,2,161,1,1, - 0,113,20,41,3,78,70,84,41,7,114,23,0,0,0,218, - 9,103,101,116,95,105,100,101,110,116,114,26,0,0,0,218, - 3,115,101,116,218,12,95,98,108,111,99,107,105,110,103,95, - 111,110,218,3,103,101,116,218,3,97,100,100,41,5,114,30, - 0,0,0,90,2,109,101,218,3,116,105,100,90,4,115,101, - 101,110,114,24,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,12,104,97,115,95,100,101,97,100, - 108,111,99,107,73,0,0,0,115,26,0,0,0,8,2,6, - 1,6,1,10,2,8,1,4,1,6,1,8,1,4,1,8, - 1,4,6,12,1,255,128,122,24,95,77,111,100,117,108,101, - 76,111,99,107,46,104,97,115,95,100,101,97,100,108,111,99, - 107,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,8,0,0,0,67,0,0,0,115,196,0,0,0,116, - 0,160,1,161,0,125,1,124,0,116,2,124,1,60,0,122, - 170,124,0,106,3,143,126,1,0,124,0,106,4,100,1,107, - 2,115,46,124,0,106,5,124,1,107,2,114,90,124,1,124, - 0,95,5,124,0,4,0,106,4,100,2,55,0,2,0,95, - 4,87,0,100,3,4,0,4,0,131,3,1,0,87,0,116, - 2,124,1,61,0,100,4,83,0,124,0,160,6,161,0,114, - 110,116,7,100,5,124,0,22,0,131,1,130,1,124,0,106, - 8,160,9,100,6,161,1,114,136,124,0,4,0,106,10,100, - 2,55,0,2,0,95,10,87,0,100,3,4,0,4,0,131, - 3,1,0,110,16,49,0,115,156,48,0,1,0,1,0,1, - 0,89,0,1,0,124,0,106,8,160,9,161,0,1,0,124, - 0,106,8,160,11,161,0,1,0,113,18,116,2,124,1,61, - 0,48,0,41,7,122,185,10,32,32,32,32,32,32,32,32, - 65,99,113,117,105,114,101,32,116,104,101,32,109,111,100,117, - 108,101,32,108,111,99,107,46,32,32,73,102,32,97,32,112, - 111,116,101,110,116,105,97,108,32,100,101,97,100,108,111,99, - 107,32,105,115,32,100,101,116,101,99,116,101,100,44,10,32, - 32,32,32,32,32,32,32,97,32,95,68,101,97,100,108,111, - 99,107,69,114,114,111,114,32,105,115,32,114,97,105,115,101, - 100,46,10,32,32,32,32,32,32,32,32,79,116,104,101,114, - 119,105,115,101,44,32,116,104,101,32,108,111,99,107,32,105, - 115,32,97,108,119,97,121,115,32,97,99,113,117,105,114,101, - 100,32,97,110,100,32,84,114,117,101,32,105,115,32,114,101, - 116,117,114,110,101,100,46,10,32,32,32,32,32,32,32,32, - 114,22,0,0,0,233,1,0,0,0,78,84,122,23,100,101, - 97,100,108,111,99,107,32,100,101,116,101,99,116,101,100,32, - 98,121,32,37,114,70,41,12,114,23,0,0,0,114,32,0, - 0,0,114,34,0,0,0,114,24,0,0,0,114,27,0,0, - 0,114,26,0,0,0,114,38,0,0,0,114,19,0,0,0, - 114,25,0,0,0,218,7,97,99,113,117,105,114,101,114,28, - 0,0,0,218,7,114,101,108,101,97,115,101,169,2,114,30, - 0,0,0,114,37,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,40,0,0,0,94,0,0,0, - 115,36,0,0,0,8,6,8,1,2,1,8,2,20,1,6, - 1,14,1,14,1,6,9,4,247,8,1,12,1,12,1,44, - 1,10,2,12,1,8,2,255,128,122,19,95,77,111,100,117, - 108,101,76,111,99,107,46,97,99,113,117,105,114,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, - 0,0,0,67,0,0,0,115,144,0,0,0,116,0,160,1, - 161,0,125,1,124,0,106,2,143,110,1,0,124,0,106,3, - 124,1,107,3,114,34,116,4,100,1,131,1,130,1,124,0, - 106,5,100,2,107,4,115,48,74,0,130,1,124,0,4,0, - 106,5,100,3,56,0,2,0,95,5,124,0,106,5,100,2, - 107,2,114,108,100,0,124,0,95,3,124,0,106,6,114,108, - 124,0,4,0,106,6,100,3,56,0,2,0,95,6,124,0, - 106,7,160,8,161,0,1,0,87,0,100,0,4,0,4,0, - 131,3,1,0,100,0,83,0,49,0,115,130,48,0,1,0, - 1,0,1,0,89,0,1,0,100,0,83,0,41,4,78,250, - 31,99,97,110,110,111,116,32,114,101,108,101,97,115,101,32, - 117,110,45,97,99,113,117,105,114,101,100,32,108,111,99,107, - 114,22,0,0,0,114,39,0,0,0,41,9,114,23,0,0, - 0,114,32,0,0,0,114,24,0,0,0,114,26,0,0,0, - 218,12,82,117,110,116,105,109,101,69,114,114,111,114,114,27, - 0,0,0,114,28,0,0,0,114,25,0,0,0,114,41,0, - 0,0,114,42,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,41,0,0,0,119,0,0,0,115, - 24,0,0,0,8,1,8,1,10,1,8,1,14,1,14,1, - 10,1,6,1,6,1,14,1,46,1,255,128,122,19,95,77, - 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, + 100,92,100,93,132,0,90,52,100,94,100,95,132,0,90,53, + 100,3,83,0,41,100,97,83,1,0,0,67,111,114,101,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, + 102,32,105,109,112,111,114,116,46,10,10,84,104,105,115,32, + 109,111,100,117,108,101,32,105,115,32,78,79,84,32,109,101, + 97,110,116,32,116,111,32,98,101,32,100,105,114,101,99,116, + 108,121,32,105,109,112,111,114,116,101,100,33,32,73,116,32, + 104,97,115,32,98,101,101,110,32,100,101,115,105,103,110,101, + 100,32,115,117,99,104,10,116,104,97,116,32,105,116,32,99, + 97,110,32,98,101,32,98,111,111,116,115,116,114,97,112,112, + 101,100,32,105,110,116,111,32,80,121,116,104,111,110,32,97, + 115,32,116,104,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,105,109,112,111,114,116,46,32, + 65,115,10,115,117,99,104,32,105,116,32,114,101,113,117,105, + 114,101,115,32,116,104,101,32,105,110,106,101,99,116,105,111, + 110,32,111,102,32,115,112,101,99,105,102,105,99,32,109,111, + 100,117,108,101,115,32,97,110,100,32,97,116,116,114,105,98, + 117,116,101,115,32,105,110,32,111,114,100,101,114,32,116,111, + 10,119,111,114,107,46,32,79,110,101,32,115,104,111,117,108, + 100,32,117,115,101,32,105,109,112,111,114,116,108,105,98,32, + 97,115,32,116,104,101,32,112,117,98,108,105,99,45,102,97, + 99,105,110,103,32,118,101,114,115,105,111,110,32,111,102,32, + 116,104,105,115,32,109,111,100,117,108,101,46,10,10,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, + 0,0,0,67,0,0,0,115,38,0,0,0,122,8,124,0, + 106,0,87,0,83,0,4,0,116,1,121,36,1,0,1,0, + 1,0,116,2,124,0,131,1,106,0,6,0,89,0,83,0, + 48,0,169,1,78,41,3,218,12,95,95,113,117,97,108,110, + 97,109,101,95,95,218,14,65,116,116,114,105,98,117,116,101, + 69,114,114,111,114,218,4,116,121,112,101,41,1,218,3,111, + 98,106,169,0,114,5,0,0,0,250,29,60,102,114,111,122, + 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, + 111,116,115,116,114,97,112,62,218,12,95,111,98,106,101,99, + 116,95,110,97,109,101,23,0,0,0,115,10,0,0,0,2, + 1,8,1,12,1,16,1,255,128,114,7,0,0,0,78,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 7,0,0,0,67,0,0,0,115,56,0,0,0,100,1,68, + 0,93,32,125,2,116,0,124,1,124,2,131,2,114,4,116, + 1,124,0,124,2,116,2,124,1,124,2,131,2,131,3,1, + 0,113,4,124,0,106,3,160,4,124,1,106,3,161,1,1, + 0,100,2,83,0,41,3,122,47,83,105,109,112,108,101,32, + 115,117,98,115,116,105,116,117,116,101,32,102,111,114,32,102, + 117,110,99,116,111,111,108,115,46,117,112,100,97,116,101,95, + 119,114,97,112,112,101,114,46,41,4,218,10,95,95,109,111, + 100,117,108,101,95,95,218,8,95,95,110,97,109,101,95,95, + 114,1,0,0,0,218,7,95,95,100,111,99,95,95,78,41, + 5,218,7,104,97,115,97,116,116,114,218,7,115,101,116,97, + 116,116,114,218,7,103,101,116,97,116,116,114,218,8,95,95, + 100,105,99,116,95,95,218,6,117,112,100,97,116,101,41,3, + 90,3,110,101,119,90,3,111,108,100,218,7,114,101,112,108, + 97,99,101,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,5,95,119,114,97,112,40,0,0,0,115,10,0, + 0,0,8,2,10,1,20,1,18,1,255,128,114,17,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, + 0,116,1,131,1,124,0,131,1,83,0,114,0,0,0,0, + 41,2,114,3,0,0,0,218,3,115,121,115,169,1,218,4, + 110,97,109,101,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,11,95,110,101,119,95,109,111,100,117,108,101, + 48,0,0,0,115,4,0,0,0,12,1,255,128,114,21,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,64,0,0,0,115,12,0,0,0, + 101,0,90,1,100,0,90,2,100,1,83,0,41,2,218,14, + 95,68,101,97,100,108,111,99,107,69,114,114,111,114,78,41, + 3,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,22,0,0,0,61,0,0,0,115,6,0, + 0,0,8,0,4,1,255,128,114,22,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,56,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,90,6,100, + 8,100,9,132,0,90,7,100,10,100,11,132,0,90,8,100, + 12,83,0,41,13,218,11,95,77,111,100,117,108,101,76,111, + 99,107,122,169,65,32,114,101,99,117,114,115,105,118,101,32, + 108,111,99,107,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,119,104,105,99,104,32,105,115,32,97,98,108, + 101,32,116,111,32,100,101,116,101,99,116,32,100,101,97,100, + 108,111,99,107,115,10,32,32,32,32,40,101,46,103,46,32, + 116,104,114,101,97,100,32,49,32,116,114,121,105,110,103,32, + 116,111,32,116,97,107,101,32,108,111,99,107,115,32,65,32, + 116,104,101,110,32,66,44,32,97,110,100,32,116,104,114,101, + 97,100,32,50,32,116,114,121,105,110,103,32,116,111,10,32, + 32,32,32,116,97,107,101,32,108,111,99,107,115,32,66,32, + 116,104,101,110,32,65,41,46,10,32,32,32,32,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,48,0,0,0,116,0,160,1,161, + 0,124,0,95,2,116,0,160,1,161,0,124,0,95,3,124, + 1,124,0,95,4,100,0,124,0,95,5,100,1,124,0,95, + 6,100,1,124,0,95,7,100,0,83,0,169,2,78,233,0, + 0,0,0,41,8,218,7,95,116,104,114,101,97,100,90,13, + 97,108,108,111,99,97,116,101,95,108,111,99,107,218,4,108, + 111,99,107,218,6,119,97,107,101,117,112,114,20,0,0,0, + 218,5,111,119,110,101,114,218,5,99,111,117,110,116,218,7, + 119,97,105,116,101,114,115,169,2,218,4,115,101,108,102,114, + 20,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,8,95,95,105,110,105,116,95,95,71,0,0, + 0,115,14,0,0,0,10,1,10,1,6,1,6,1,6,1, + 10,1,255,128,122,20,95,77,111,100,117,108,101,76,111,99, + 107,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,67, + 0,0,0,115,84,0,0,0,116,0,160,1,161,0,125,1, + 124,0,106,2,125,2,116,3,131,0,125,3,116,4,160,5, + 124,2,161,1,125,4,124,4,100,0,117,0,114,42,100,1, + 83,0,124,4,106,2,125,2,124,2,124,1,107,2,114,60, + 100,2,83,0,124,2,124,3,118,0,114,72,100,1,83,0, + 124,3,160,6,124,2,161,1,1,0,113,20,41,3,78,70, + 84,41,7,114,26,0,0,0,218,9,103,101,116,95,105,100, + 101,110,116,114,29,0,0,0,218,3,115,101,116,218,12,95, + 98,108,111,99,107,105,110,103,95,111,110,218,3,103,101,116, + 218,3,97,100,100,41,5,114,33,0,0,0,90,2,109,101, + 218,3,116,105,100,90,4,115,101,101,110,114,27,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 12,104,97,115,95,100,101,97,100,108,111,99,107,79,0,0, + 0,115,26,0,0,0,8,2,6,1,6,1,10,2,8,1, + 4,1,6,1,8,1,4,1,8,1,4,6,12,1,255,128, + 122,24,95,77,111,100,117,108,101,76,111,99,107,46,104,97, + 115,95,100,101,97,100,108,111,99,107,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,67, + 0,0,0,115,196,0,0,0,116,0,160,1,161,0,125,1, + 124,0,116,2,124,1,60,0,122,170,124,0,106,3,143,126, + 1,0,124,0,106,4,100,1,107,2,115,46,124,0,106,5, + 124,1,107,2,114,90,124,1,124,0,95,5,124,0,4,0, + 106,4,100,2,55,0,2,0,95,4,87,0,100,3,4,0, + 4,0,131,3,1,0,87,0,116,2,124,1,61,0,100,4, + 83,0,124,0,160,6,161,0,114,110,116,7,100,5,124,0, + 22,0,131,1,130,1,124,0,106,8,160,9,100,6,161,1, + 114,136,124,0,4,0,106,10,100,2,55,0,2,0,95,10, + 87,0,100,3,4,0,4,0,131,3,1,0,110,16,49,0, + 115,156,48,0,1,0,1,0,1,0,89,0,1,0,124,0, + 106,8,160,9,161,0,1,0,124,0,106,8,160,11,161,0, + 1,0,113,18,116,2,124,1,61,0,48,0,41,7,122,185, + 10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,101, + 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, + 46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,97, + 108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,101, + 116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,32, + 97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,32, + 32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,116, + 104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,121, + 115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,84, + 114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,46, + 10,32,32,32,32,32,32,32,32,114,25,0,0,0,233,1, + 0,0,0,78,84,122,23,100,101,97,100,108,111,99,107,32, + 100,101,116,101,99,116,101,100,32,98,121,32,37,114,70,41, + 12,114,26,0,0,0,114,35,0,0,0,114,37,0,0,0, + 114,27,0,0,0,114,30,0,0,0,114,29,0,0,0,114, + 41,0,0,0,114,22,0,0,0,114,28,0,0,0,218,7, + 97,99,113,117,105,114,101,114,31,0,0,0,218,7,114,101, + 108,101,97,115,101,169,2,114,33,0,0,0,114,40,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,43,0,0,0,100,0,0,0,115,36,0,0,0,8,6, + 8,1,2,1,8,2,20,1,6,1,14,1,14,1,6,9, + 4,247,8,1,12,1,12,1,44,1,10,2,12,1,8,2, + 255,128,122,19,95,77,111,100,117,108,101,76,111,99,107,46, + 97,99,113,117,105,114,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, + 115,144,0,0,0,116,0,160,1,161,0,125,1,124,0,106, + 2,143,110,1,0,124,0,106,3,124,1,107,3,114,34,116, + 4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,115, + 48,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, + 0,95,5,124,0,106,5,100,2,107,2,114,108,100,0,124, + 0,95,3,124,0,106,6,114,108,124,0,4,0,106,6,100, + 3,56,0,2,0,95,6,124,0,106,7,160,8,161,0,1, + 0,87,0,100,0,4,0,4,0,131,3,1,0,100,0,83, + 0,49,0,115,130,48,0,1,0,1,0,1,0,89,0,1, + 0,100,0,83,0,41,4,78,250,31,99,97,110,110,111,116, + 32,114,101,108,101,97,115,101,32,117,110,45,97,99,113,117, + 105,114,101,100,32,108,111,99,107,114,25,0,0,0,114,42, + 0,0,0,41,9,114,26,0,0,0,114,35,0,0,0,114, + 27,0,0,0,114,29,0,0,0,218,12,82,117,110,116,105, + 109,101,69,114,114,111,114,114,30,0,0,0,114,31,0,0, + 0,114,28,0,0,0,114,44,0,0,0,114,45,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 44,0,0,0,125,0,0,0,115,24,0,0,0,8,1,8, + 1,10,1,8,1,14,1,14,1,10,1,6,1,6,1,14, + 1,46,1,255,128,122,19,95,77,111,100,117,108,101,76,111, + 99,107,46,114,101,108,101,97,115,101,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,67, + 0,0,0,115,18,0,0,0,100,1,160,0,124,0,106,1, + 116,2,124,0,131,1,161,2,83,0,41,2,78,122,23,95, + 77,111,100,117,108,101,76,111,99,107,40,123,33,114,125,41, + 32,97,116,32,123,125,169,3,218,6,102,111,114,109,97,116, + 114,20,0,0,0,218,2,105,100,169,1,114,33,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 8,95,95,114,101,112,114,95,95,138,0,0,0,115,4,0, + 0,0,18,1,255,128,122,20,95,77,111,100,117,108,101,76, + 111,99,107,46,95,95,114,101,112,114,95,95,78,41,9,114, + 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, + 0,0,0,114,34,0,0,0,114,41,0,0,0,114,43,0, + 0,0,114,44,0,0,0,114,52,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,23,0,0,0,65,0,0,0,115,16,0,0,0,8,0, + 4,1,8,5,8,8,8,21,8,25,12,13,255,128,114,23, + 0,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,83, + 0,41,11,218,16,95,68,117,109,109,121,77,111,100,117,108, + 101,76,111,99,107,122,86,65,32,115,105,109,112,108,101,32, + 95,77,111,100,117,108,101,76,111,99,107,32,101,113,117,105, + 118,97,108,101,110,116,32,102,111,114,32,80,121,116,104,111, + 110,32,98,117,105,108,100,115,32,119,105,116,104,111,117,116, + 10,32,32,32,32,109,117,108,116,105,45,116,104,114,101,97, + 100,105,110,103,32,115,117,112,112,111,114,116,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,16,0,0,0,124,1,124,0,95, + 0,100,1,124,0,95,1,100,0,83,0,114,24,0,0,0, + 41,2,114,20,0,0,0,114,30,0,0,0,114,32,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,34,0,0,0,146,0,0,0,115,6,0,0,0,6,1, + 10,1,255,128,122,25,95,68,117,109,109,121,77,111,100,117, + 108,101,76,111,99,107,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,18,0,0,0,124,0,4, + 0,106,0,100,1,55,0,2,0,95,0,100,2,83,0,41, + 3,78,114,42,0,0,0,84,41,1,114,30,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,43,0,0,0,150,0,0,0,115,6,0,0, + 0,14,1,4,1,255,128,122,24,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,114, 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,5,0,0,0,67,0,0,0,115,18,0,0,0,100, - 1,160,0,124,0,106,1,116,2,124,0,131,1,161,2,83, - 0,41,2,78,122,23,95,77,111,100,117,108,101,76,111,99, - 107,40,123,33,114,125,41,32,97,116,32,123,125,169,3,218, - 6,102,111,114,109,97,116,114,17,0,0,0,218,2,105,100, - 169,1,114,30,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95, - 132,0,0,0,115,4,0,0,0,18,1,255,128,122,20,95, - 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112, - 114,95,95,78,41,9,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, - 38,0,0,0,114,40,0,0,0,114,41,0,0,0,114,49, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,20,0,0,0,59,0,0,0, - 115,16,0,0,0,8,0,4,1,8,5,8,8,8,21,8, - 25,12,13,255,128,114,20,0,0,0,99,0,0,0,0,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,4,100,5, - 132,0,90,5,100,6,100,7,132,0,90,6,100,8,100,9, - 132,0,90,7,100,10,83,0,41,11,218,16,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,122,86,65,32, - 115,105,109,112,108,101,32,95,77,111,100,117,108,101,76,111, - 99,107,32,101,113,117,105,118,97,108,101,110,116,32,102,111, - 114,32,80,121,116,104,111,110,32,98,117,105,108,100,115,32, - 119,105,116,104,111,117,116,10,32,32,32,32,109,117,108,116, - 105,45,116,104,114,101,97,100,105,110,103,32,115,117,112,112, - 111,114,116,46,99,2,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124, + 0,106,0,100,1,107,2,114,18,116,1,100,2,131,1,130, + 1,124,0,4,0,106,0,100,3,56,0,2,0,95,0,100, + 0,83,0,41,4,78,114,25,0,0,0,114,46,0,0,0, + 114,42,0,0,0,41,2,114,30,0,0,0,114,47,0,0, + 0,114,51,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,44,0,0,0,154,0,0,0,115,8, + 0,0,0,10,1,8,1,18,1,255,128,122,24,95,68,117, + 109,109,121,77,111,100,117,108,101,76,111,99,107,46,114,101, + 108,101,97,115,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,18, + 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, + 1,161,2,83,0,41,2,78,122,28,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,40,123,33,114,125,41, + 32,97,116,32,123,125,114,48,0,0,0,114,51,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 52,0,0,0,159,0,0,0,115,4,0,0,0,18,1,255, + 128,122,25,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,46,95,95,114,101,112,114,95,95,78,41,8,114, + 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, + 0,0,0,114,34,0,0,0,114,43,0,0,0,114,44,0, + 0,0,114,52,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,53,0,0,0, + 142,0,0,0,115,14,0,0,0,8,0,4,1,8,3,8, + 4,8,4,12,5,255,128,114,53,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,64,0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0,41,8, + 218,18,95,77,111,100,117,108,101,76,111,99,107,77,97,110, + 97,103,101,114,99,2,0,0,0,0,0,0,0,0,0,0, 0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,0, - 0,0,124,1,124,0,95,0,100,1,124,0,95,1,100,0, - 83,0,114,21,0,0,0,41,2,114,17,0,0,0,114,27, - 0,0,0,114,29,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,31,0,0,0,140,0,0,0, - 115,6,0,0,0,6,1,10,1,255,128,122,25,95,68,117, - 109,109,121,77,111,100,117,108,101,76,111,99,107,46,95,95, - 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 18,0,0,0,124,0,4,0,106,0,100,1,55,0,2,0, - 95,0,100,2,83,0,41,3,78,114,39,0,0,0,84,41, - 1,114,27,0,0,0,114,48,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,40,0,0,0,144, - 0,0,0,115,6,0,0,0,14,1,4,1,255,128,122,24, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 46,97,99,113,117,105,114,101,99,1,0,0,0,0,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,2,114,18, - 116,1,100,2,131,1,130,1,124,0,4,0,106,0,100,3, - 56,0,2,0,95,0,100,0,83,0,41,4,78,114,22,0, - 0,0,114,43,0,0,0,114,39,0,0,0,41,2,114,27, - 0,0,0,114,44,0,0,0,114,48,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,41,0,0, - 0,148,0,0,0,115,8,0,0,0,10,1,8,1,18,1, - 255,128,122,24,95,68,117,109,109,121,77,111,100,117,108,101, - 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, - 0,67,0,0,0,115,18,0,0,0,100,1,160,0,124,0, - 106,1,116,2,124,0,131,1,161,2,83,0,41,2,78,122, - 28,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,40,123,33,114,125,41,32,97,116,32,123,125,114,45,0, - 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,49,0,0,0,153,0,0,0,115, - 4,0,0,0,18,1,255,128,122,25,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112, - 114,95,95,78,41,8,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, - 40,0,0,0,114,41,0,0,0,114,49,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,136,0,0,0,115,14,0,0,0, - 8,0,4,1,8,3,8,4,8,4,12,5,255,128,114,50, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,64,0,0,0,115,36,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,100,6,132,0,90, - 5,100,7,83,0,41,8,218,18,95,77,111,100,117,108,101, - 76,111,99,107,77,97,110,97,103,101,114,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, - 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,100, - 0,124,0,95,1,100,0,83,0,114,13,0,0,0,41,2, - 218,5,95,110,97,109,101,218,5,95,108,111,99,107,114,29, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,31,0,0,0,159,0,0,0,115,6,0,0,0, - 6,1,10,1,255,128,122,27,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,26,0,0, - 0,116,0,124,0,106,1,131,1,124,0,95,2,124,0,106, - 2,160,3,161,0,1,0,100,0,83,0,114,13,0,0,0, - 41,4,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 108,111,99,107,114,52,0,0,0,114,53,0,0,0,114,40, - 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,9,95,95,101,110,116,101,114, - 95,95,163,0,0,0,115,6,0,0,0,12,1,14,1,255, - 128,122,28,95,77,111,100,117,108,101,76,111,99,107,77,97, - 110,97,103,101,114,46,95,95,101,110,116,101,114,95,95,99, + 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, + 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, + 218,5,95,108,111,99,107,114,32,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,34,0,0,0, + 165,0,0,0,115,6,0,0,0,6,1,10,1,255,128,122, + 27,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, + 103,101,114,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0, + 0,67,0,0,0,115,26,0,0,0,116,0,124,0,106,1, + 131,1,124,0,95,2,124,0,106,2,160,3,161,0,1,0, + 100,0,83,0,114,0,0,0,0,41,4,218,16,95,103,101, + 116,95,109,111,100,117,108,101,95,108,111,99,107,114,55,0, + 0,0,114,56,0,0,0,114,43,0,0,0,114,51,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,9,95,95,101,110,116,101,114,95,95,169,0,0,0,115, + 6,0,0,0,12,1,14,1,255,128,122,28,95,77,111,100, + 117,108,101,76,111,99,107,77,97,110,97,103,101,114,46,95, + 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0, + 0,0,0,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,0,0,0,0,41,2,114,56,0,0,0, + 114,44,0,0,0,41,3,114,33,0,0,0,218,4,97,114, + 103,115,90,6,107,119,97,114,103,115,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,8,95,95,101,120,105, + 116,95,95,173,0,0,0,115,4,0,0,0,14,1,255,128, + 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,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, + 34,0,0,0,114,58,0,0,0,114,60,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,54,0,0,0,163,0,0,0,115,10,0,0,0, + 8,0,8,2,8,4,12,4,255,128,114,54,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,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,53,0,0,0,114,41,0,0,0,41,3,114,30, - 0,0,0,218,4,97,114,103,115,90,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,167,0,0,0,115,4, - 0,0,0,14,1,255,128,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,55,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,51,0,0,0,157,0, - 0,0,115,10,0,0,0,8,0,8,2,8,4,12,4,255, - 128,114,51,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 134,0,0,0,116,0,160,1,161,0,1,0,122,114,122,14, - 116,2,124,0,25,0,131,0,125,1,87,0,110,22,4,0, - 116,3,121,46,1,0,1,0,1,0,100,1,125,1,89,0, - 110,2,48,0,124,1,100,1,117,0,114,110,116,4,100,1, - 117,0,114,74,116,5,124,0,131,1,125,1,110,8,116,6, - 124,0,131,1,125,1,124,0,102,1,100,2,100,3,132,1, - 125,2,116,7,160,8,124,1,124,2,161,2,116,2,124,0, - 60,0,87,0,116,0,160,9,161,0,1,0,124,1,83,0, - 116,0,160,9,161,0,1,0,48,0,41,4,122,139,71,101, - 116,32,111,114,32,99,114,101,97,116,101,32,116,104,101,32, - 109,111,100,117,108,101,32,108,111,99,107,32,102,111,114,32, - 97,32,103,105,118,101,110,32,109,111,100,117,108,101,32,110, - 97,109,101,46,10,10,32,32,32,32,65,99,113,117,105,114, - 101,47,114,101,108,101,97,115,101,32,105,110,116,101,114,110, - 97,108,108,121,32,116,104,101,32,103,108,111,98,97,108,32, - 105,109,112,111,114,116,32,108,111,99,107,32,116,111,32,112, - 114,111,116,101,99,116,10,32,32,32,32,95,109,111,100,117, - 108,101,95,108,111,99,107,115,46,78,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,83, - 0,0,0,115,54,0,0,0,116,0,160,1,161,0,1,0, - 122,34,116,2,160,3,124,1,161,1,124,0,117,0,114,30, - 116,2,124,1,61,0,87,0,116,0,160,4,161,0,1,0, - 100,0,83,0,116,0,160,4,161,0,1,0,48,0,114,13, - 0,0,0,41,5,218,4,95,105,109,112,218,12,97,99,113, - 117,105,114,101,95,108,111,99,107,218,13,95,109,111,100,117, - 108,101,95,108,111,99,107,115,114,35,0,0,0,218,12,114, - 101,108,101,97,115,101,95,108,111,99,107,41,2,218,3,114, - 101,102,114,17,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,2,99,98,192,0,0,0,115,12, - 0,0,0,8,1,2,1,14,4,8,1,22,2,255,128,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, - 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,50,0, - 0,0,114,20,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,54,0,0,0, - 173,0,0,0,115,32,0,0,0,8,6,2,1,2,1,14, - 1,12,1,10,1,8,2,8,1,10,1,8,2,12,2,18, - 11,8,2,4,2,10,254,255,128,114,54,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, - 0,0,0,67,0,0,0,115,54,0,0,0,116,0,124,0, - 131,1,125,1,122,12,124,1,160,1,161,0,1,0,87,0, - 110,20,4,0,116,2,121,40,1,0,1,0,1,0,89,0, - 100,1,83,0,48,0,124,1,160,3,161,0,1,0,100,1, - 83,0,41,2,122,189,65,99,113,117,105,114,101,115,32,116, - 104,101,110,32,114,101,108,101,97,115,101,115,32,116,104,101, - 32,109,111,100,117,108,101,32,108,111,99,107,32,102,111,114, - 32,97,32,103,105,118,101,110,32,109,111,100,117,108,101,32, - 110,97,109,101,46,10,10,32,32,32,32,84,104,105,115,32, - 105,115,32,117,115,101,100,32,116,111,32,101,110,115,117,114, - 101,32,97,32,109,111,100,117,108,101,32,105,115,32,99,111, - 109,112,108,101,116,101,108,121,32,105,110,105,116,105,97,108, - 105,122,101,100,44,32,105,110,32,116,104,101,10,32,32,32, - 32,101,118,101,110,116,32,105,116,32,105,115,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,32,98,121,32,97, - 110,111,116,104,101,114,32,116,104,114,101,97,100,46,10,32, - 32,32,32,78,41,4,114,54,0,0,0,114,40,0,0,0, - 114,19,0,0,0,114,41,0,0,0,41,2,114,17,0,0, - 0,114,24,0,0,0,114,10,0,0,0,114,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,210,0,0,0,115,14, - 0,0,0,8,6,2,1,12,1,12,1,8,3,12,2,255, - 128,114,66,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,4,0,0,0,79,0,0,0,115, - 14,0,0,0,124,0,124,1,105,0,124,2,164,1,142,1, - 83,0,41,2,97,46,1,0,0,114,101,109,111,118,101,95, - 105,109,112,111,114,116,108,105,98,95,102,114,97,109,101,115, - 32,105,110,32,105,109,112,111,114,116,46,99,32,119,105,108, - 108,32,97,108,119,97,121,115,32,114,101,109,111,118,101,32, - 115,101,113,117,101,110,99,101,115,10,32,32,32,32,111,102, - 32,105,109,112,111,114,116,108,105,98,32,102,114,97,109,101, - 115,32,116,104,97,116,32,101,110,100,32,119,105,116,104,32, - 97,32,99,97,108,108,32,116,111,32,116,104,105,115,32,102, - 117,110,99,116,105,111,110,10,10,32,32,32,32,85,115,101, - 32,105,116,32,105,110,115,116,101,97,100,32,111,102,32,97, - 32,110,111,114,109,97,108,32,99,97,108,108,32,105,110,32, - 112,108,97,99,101,115,32,119,104,101,114,101,32,105,110,99, - 108,117,100,105,110,103,32,116,104,101,32,105,109,112,111,114, - 116,108,105,98,10,32,32,32,32,102,114,97,109,101,115,32, - 105,110,116,114,111,100,117,99,101,115,32,117,110,119,97,110, - 116,101,100,32,110,111,105,115,101,32,105,110,116,111,32,116, - 104,101,32,116,114,97,99,101,98,97,99,107,32,40,101,46, - 103,46,32,119,104,101,110,32,101,120,101,99,117,116,105,110, - 103,10,32,32,32,32,109,111,100,117,108,101,32,99,111,100, - 101,41,10,32,32,32,32,78,114,10,0,0,0,41,3,218, - 1,102,114,56,0,0,0,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,227,0,0,0,115,4,0,0,0, - 14,8,255,128,114,68,0,0,0,114,39,0,0,0,41,1, - 218,9,118,101,114,98,111,115,105,116,121,99,1,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0, - 71,0,0,0,115,58,0,0,0,116,0,106,1,106,2,124, - 1,107,5,114,54,124,0,160,3,100,1,161,1,115,30,100, - 2,124,0,23,0,125,0,116,4,124,0,106,5,124,2,142, - 0,116,0,106,6,100,3,141,2,1,0,100,4,83,0,100, - 4,83,0,41,5,122,61,80,114,105,110,116,32,116,104,101, - 32,109,101,115,115,97,103,101,32,116,111,32,115,116,100,101, - 114,114,32,105,102,32,45,118,47,80,89,84,72,79,78,86, - 69,82,66,79,83,69,32,105,115,32,116,117,114,110,101,100, - 32,111,110,46,41,2,250,1,35,122,7,105,109,112,111,114, - 116,32,122,2,35,32,41,1,90,4,102,105,108,101,78,41, - 7,114,15,0,0,0,218,5,102,108,97,103,115,218,7,118, - 101,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,46,0,0,0,218,6, - 115,116,100,101,114,114,41,3,218,7,109,101,115,115,97,103, - 101,114,69,0,0,0,114,56,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,238,0,0,0, - 115,12,0,0,0,12,2,10,1,8,1,24,1,4,253,255, - 128,114,77,0,0,0,99,1,0,0,0,0,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,1,83,0,41,4, - 122,49,68,101,99,111,114,97,116,111,114,32,116,111,32,118, - 101,114,105,102,121,32,116,104,101,32,110,97,109,101,100,32, - 109,111,100,117,108,101,32,105,115,32,98,117,105,108,116,45, - 105,110,46,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,19,0,0,0,115,38,0,0, - 0,124,1,116,0,106,1,118,1,114,28,116,2,100,1,160, - 3,124,1,161,1,124,1,100,2,141,2,130,1,136,0,124, - 0,124,1,131,2,83,0,41,3,78,250,29,123,33,114,125, - 32,105,115,32,110,111,116,32,97,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,114,16,0,0,0,41,4, - 114,15,0,0,0,218,20,98,117,105,108,116,105,110,95,109, - 111,100,117,108,101,95,110,97,109,101,115,218,11,73,109,112, - 111,114,116,69,114,114,111,114,114,46,0,0,0,169,2,114, - 30,0,0,0,218,8,102,117,108,108,110,97,109,101,169,1, - 218,3,102,120,110,114,10,0,0,0,114,11,0,0,0,218, - 25,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,248,0,0,0,115,12, - 0,0,0,10,1,10,1,2,1,6,255,10,2,255,128,122, - 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,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,78,169,1,114,12,0,0,0,41,2,114, - 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,246,0,0,0,115, - 8,0,0,0,12,2,10,5,4,1,255,128,114,87,0,0, - 0,99,1,0,0,0,0,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,1,83,0,41,4,122,47,68,101,99, - 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, - 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, - 101,32,105,115,32,102,114,111,122,101,110,46,99,2,0,0, + 8,0,0,0,67,0,0,0,115,134,0,0,0,116,0,160, + 1,161,0,1,0,122,114,122,14,116,2,124,0,25,0,131, + 0,125,1,87,0,110,22,4,0,116,3,121,46,1,0,1, + 0,1,0,100,1,125,1,89,0,110,2,48,0,124,1,100, + 1,117,0,114,110,116,4,100,1,117,0,114,74,116,5,124, + 0,131,1,125,1,110,8,116,6,124,0,131,1,125,1,124, + 0,102,1,100,2,100,3,132,1,125,2,116,7,160,8,124, + 1,124,2,161,2,116,2,124,0,60,0,87,0,116,0,160, + 9,161,0,1,0,124,1,83,0,116,0,160,9,161,0,1, + 0,48,0,41,4,122,139,71,101,116,32,111,114,32,99,114, + 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, + 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, + 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, + 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, + 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, + 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, + 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, + 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, + 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,8,0,0,0,83,0,0,0,115,54,0,0, + 0,116,0,160,1,161,0,1,0,122,34,116,2,160,3,124, + 1,161,1,124,0,117,0,114,30,116,2,124,1,61,0,87, + 0,116,0,160,4,161,0,1,0,100,0,83,0,116,0,160, + 4,161,0,1,0,48,0,114,0,0,0,0,41,5,218,4, + 95,105,109,112,218,12,97,99,113,117,105,114,101,95,108,111, + 99,107,218,13,95,109,111,100,117,108,101,95,108,111,99,107, + 115,114,38,0,0,0,218,12,114,101,108,101,97,115,101,95, + 108,111,99,107,41,2,218,3,114,101,102,114,20,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 2,99,98,198,0,0,0,115,12,0,0,0,8,1,2,1, + 14,4,8,1,22,2,255,128,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,61,0,0,0,114,62,0, + 0,0,114,63,0,0,0,218,8,75,101,121,69,114,114,111, + 114,114,26,0,0,0,114,53,0,0,0,114,23,0,0,0, + 218,8,95,119,101,97,107,114,101,102,114,65,0,0,0,114, + 64,0,0,0,41,3,114,20,0,0,0,114,27,0,0,0, + 114,66,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,57,0,0,0,179,0,0,0,115,32,0, + 0,0,8,6,2,1,2,1,14,1,12,1,10,1,8,2, + 8,1,10,1,8,2,12,2,18,11,8,2,4,2,10,254, + 255,128,114,57,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, + 115,54,0,0,0,116,0,124,0,131,1,125,1,122,12,124, + 1,160,1,161,0,1,0,87,0,110,20,4,0,116,2,121, + 40,1,0,1,0,1,0,89,0,100,1,83,0,48,0,124, + 1,160,3,161,0,1,0,100,1,83,0,41,2,122,189,65, + 99,113,117,105,114,101,115,32,116,104,101,110,32,114,101,108, + 101,97,115,101,115,32,116,104,101,32,109,111,100,117,108,101, + 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, + 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, + 32,32,32,32,84,104,105,115,32,105,115,32,117,115,101,100, + 32,116,111,32,101,110,115,117,114,101,32,97,32,109,111,100, + 117,108,101,32,105,115,32,99,111,109,112,108,101,116,101,108, + 121,32,105,110,105,116,105,97,108,105,122,101,100,44,32,105, + 110,32,116,104,101,10,32,32,32,32,101,118,101,110,116,32, + 105,116,32,105,115,32,98,101,105,110,103,32,105,109,112,111, + 114,116,101,100,32,98,121,32,97,110,111,116,104,101,114,32, + 116,104,114,101,97,100,46,10,32,32,32,32,78,41,4,114, + 57,0,0,0,114,43,0,0,0,114,22,0,0,0,114,44, + 0,0,0,41,2,114,20,0,0,0,114,27,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,19, + 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, + 117,108,101,216,0,0,0,115,14,0,0,0,8,6,2,1, + 12,1,12,1,8,3,12,2,255,128,114,69,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 4,0,0,0,79,0,0,0,115,14,0,0,0,124,0,124, + 1,105,0,124,2,164,1,142,1,83,0,41,2,97,46,1, + 0,0,114,101,109,111,118,101,95,105,109,112,111,114,116,108, + 105,98,95,102,114,97,109,101,115,32,105,110,32,105,109,112, + 111,114,116,46,99,32,119,105,108,108,32,97,108,119,97,121, + 115,32,114,101,109,111,118,101,32,115,101,113,117,101,110,99, + 101,115,10,32,32,32,32,111,102,32,105,109,112,111,114,116, + 108,105,98,32,102,114,97,109,101,115,32,116,104,97,116,32, + 101,110,100,32,119,105,116,104,32,97,32,99,97,108,108,32, + 116,111,32,116,104,105,115,32,102,117,110,99,116,105,111,110, + 10,10,32,32,32,32,85,115,101,32,105,116,32,105,110,115, + 116,101,97,100,32,111,102,32,97,32,110,111,114,109,97,108, + 32,99,97,108,108,32,105,110,32,112,108,97,99,101,115,32, + 119,104,101,114,101,32,105,110,99,108,117,100,105,110,103,32, + 116,104,101,32,105,109,112,111,114,116,108,105,98,10,32,32, + 32,32,102,114,97,109,101,115,32,105,110,116,114,111,100,117, + 99,101,115,32,117,110,119,97,110,116,101,100,32,110,111,105, + 115,101,32,105,110,116,111,32,116,104,101,32,116,114,97,99, + 101,98,97,99,107,32,40,101,46,103,46,32,119,104,101,110, + 32,101,120,101,99,117,116,105,110,103,10,32,32,32,32,109, + 111,100,117,108,101,32,99,111,100,101,41,10,32,32,32,32, + 78,114,5,0,0,0,41,3,218,1,102,114,59,0,0,0, + 90,4,107,119,100,115,114,5,0,0,0,114,5,0,0,0, + 114,6,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, + 233,0,0,0,115,4,0,0,0,14,8,255,128,114,71,0, + 0,0,114,42,0,0,0,41,1,218,9,118,101,114,98,111, + 115,105,116,121,99,1,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,4,0,0,0,71,0,0,0,115,58,0, + 0,0,116,0,106,1,106,2,124,1,107,5,114,54,124,0, + 160,3,100,1,161,1,115,30,100,2,124,0,23,0,125,0, + 116,4,124,0,106,5,124,2,142,0,116,0,106,6,100,3, + 141,2,1,0,100,4,83,0,100,4,83,0,41,5,122,61, + 80,114,105,110,116,32,116,104,101,32,109,101,115,115,97,103, + 101,32,116,111,32,115,116,100,101,114,114,32,105,102,32,45, + 118,47,80,89,84,72,79,78,86,69,82,66,79,83,69,32, + 105,115,32,116,117,114,110,101,100,32,111,110,46,41,2,250, + 1,35,122,7,105,109,112,111,114,116,32,122,2,35,32,41, + 1,90,4,102,105,108,101,78,41,7,114,18,0,0,0,218, + 5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114,114,41, + 3,218,7,109,101,115,115,97,103,101,114,72,0,0,0,114, + 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,244,0,0,0,115,12,0,0,0,12,2, + 10,1,8,1,24,1,4,253,255,128,114,80,0,0,0,99, + 1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99,111,114, + 97,116,111,114,32,116,111,32,118,101,114,105,102,121,32,116, + 104,101,32,110,97,109,101,100,32,109,111,100,117,108,101,32, + 105,115,32,98,117,105,108,116,45,105,110,46,99,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,19,0,0,0,115,38,0,0,0,116,0,160,1,124,1, - 161,1,115,28,116,2,100,1,160,3,124,1,161,1,124,1, + 0,19,0,0,0,115,38,0,0,0,124,1,116,0,106,1, + 118,1,114,28,116,2,100,1,160,3,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,58,0,0,0,218,9,105,115, - 95,102,114,111,122,101,110,114,80,0,0,0,114,46,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,3, - 1,0,0,115,12,0,0,0,10,1,10,1,2,1,6,255, - 10,2,255,128,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, + 41,3,78,250,29,123,33,114,125,32,105,115,32,110,111,116, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,114,19,0,0,0,41,4,114,18,0,0,0,218,20, + 98,117,105,108,116,105,110,95,109,111,100,117,108,101,95,110, + 97,109,101,115,218,11,73,109,112,111,114,116,69,114,114,111, + 114,114,49,0,0,0,169,2,114,33,0,0,0,218,8,102, + 117,108,108,110,97,109,101,169,1,218,3,102,120,110,114,5, + 0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1,10,1, + 2,1,6,255,10,2,255,128,122,52,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,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,78,169, + 1,114,17,0,0,0,41,2,114,87,0,0,0,114,88,0, + 0,0,114,5,0,0,0,114,86,0,0,0,114,6,0,0, + 0,218,17,95,114,101,113,117,105,114,101,115,95,98,117,105, + 108,116,105,110,252,0,0,0,115,8,0,0,0,12,2,10, + 5,4,1,255,128,114,90,0,0,0,99,1,0,0,0,0, + 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,1, + 83,0,41,4,122,47,68,101,99,111,114,97,116,111,114,32, + 116,111,32,118,101,114,105,102,121,32,116,104,101,32,110,97, + 109,101,100,32,109,111,100,117,108,101,32,105,115,32,102,114, + 111,122,101,110,46,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,38, + 0,0,0,116,0,160,1,124,1,161,1,115,28,116,2,100, + 1,160,3,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,19,0,0,0,41,4, + 114,61,0,0,0,218,9,105,115,95,102,114,111,122,101,110, + 114,83,0,0,0,114,49,0,0,0,114,84,0,0,0,114, + 86,0,0,0,114,5,0,0,0,114,6,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,78,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,1,1,0,0,115, - 8,0,0,0,12,2,10,5,4,1,255,128,114,91,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,58,0,0,0,116, - 0,124,1,124,0,131,2,125,2,124,1,116,1,106,2,118, - 0,114,50,116,1,106,2,124,1,25,0,125,3,116,3,124, - 2,124,3,131,2,1,0,116,1,106,2,124,1,25,0,83, - 0,116,4,124,2,131,1,83,0,41,2,122,128,76,111,97, - 100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,32,105,110,116,111,32,115,121,115,46, - 109,111,100,117,108,101,115,32,97,110,100,32,114,101,116,117, - 114,110,32,105,116,46,10,10,32,32,32,32,84,104,105,115, - 32,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,108,111,97,100, - 101,114,46,101,120,101,99,95,109,111,100,117,108,101,32,105, - 110,115,116,101,97,100,46,10,10,32,32,32,32,78,41,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,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,13,1,0,0,115,14, - 0,0,0,10,6,10,1,10,1,10,1,10,1,8,2,255, - 128,114,98,0,0,0,99,1,0,0,0,0,0,0,0,0, + 95,119,114,97,112,112,101,114,9,1,0,0,115,12,0,0, + 0,10,1,10,1,2,1,6,255,10,2,255,128,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,78,114,89,0,0,0,41,2,114,87,0,0,0,114,93, + 0,0,0,114,5,0,0,0,114,86,0,0,0,114,6,0, + 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, + 111,122,101,110,7,1,0,0,115,8,0,0,0,12,2,10, + 5,4,1,255,128,114,94,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,67, + 0,0,0,115,74,0,0,0,100,1,125,2,116,0,160,1, + 124,2,116,2,161,2,1,0,116,3,124,1,124,0,131,2, + 125,3,124,1,116,4,106,5,118,0,114,66,116,4,106,5, + 124,1,25,0,125,4,116,6,124,3,124,4,131,2,1,0, + 116,4,106,5,124,1,25,0,83,0,116,7,124,3,131,1, + 83,0,41,3,122,128,76,111,97,100,32,116,104,101,32,115, + 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32, + 105,110,116,111,32,115,121,115,46,109,111,100,117,108,101,115, + 32,97,110,100,32,114,101,116,117,114,110,32,105,116,46,10, + 10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120,101,99, + 95,109,111,100,117,108,101,32,105,110,115,116,101,97,100,46, + 10,10,32,32,32,32,122,103,116,104,101,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,32,109,101,116,104,111,100, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109, + 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78, + 41,8,218,9,95,119,97,114,110,105,110,103,115,218,4,119, + 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, + 87,97,114,110,105,110,103,218,16,115,112,101,99,95,102,114, + 111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85,0,0, + 0,218,3,109,115,103,218,4,115,112,101,99,218,6,109,111, + 100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, + 101,95,115,104,105,109,19,1,0,0,115,18,0,0,0,4, + 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,255, + 128,114,105,0,0,0,99,1,0,0,0,0,0,0,0,0, 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, @@ -521,1302 +542,1313 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 33,114,125,62,250,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, - 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,46,0,0,0,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,29,1,0,0,115,48,0,0,0,12,2, - 10,1,2,4,12,1,12,1,6,1,2,1,10,1,12,1, - 6,1,8,2,8,1,2,4,10,1,12,1,10,1,2,1, - 10,1,12,1,8,1,14,1,18,2,12,2,255,128,114,112, - 0,0,0,99,0,0,0,0,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,132,2,90,4,100, - 6,100,7,132,0,90,5,100,8,100,9,132,0,90,6,101, - 7,100,10,100,11,132,0,131,1,90,8,101,8,106,9,100, - 12,100,11,132,0,131,1,90,8,101,7,100,13,100,14,132, - 0,131,1,90,10,101,7,100,15,100,16,132,0,131,1,90, - 11,101,11,106,9,100,17,100,16,132,0,131,1,90,11,100, - 2,83,0,41,18,218,10,77,111,100,117,108,101,83,112,101, - 99,97,208,5,0,0,84,104,101,32,115,112,101,99,105,102, - 105,99,97,116,105,111,110,32,102,111,114,32,97,32,109,111, - 100,117,108,101,44,32,117,115,101,100,32,102,111,114,32,108, - 111,97,100,105,110,103,46,10,10,32,32,32,32,65,32,109, - 111,100,117,108,101,39,115,32,115,112,101,99,32,105,115,32, - 116,104,101,32,115,111,117,114,99,101,32,102,111,114,32,105, - 110,102,111,114,109,97,116,105,111,110,32,97,98,111,117,116, - 32,116,104,101,32,109,111,100,117,108,101,46,32,32,70,111, - 114,10,32,32,32,32,100,97,116,97,32,97,115,115,111,99, - 105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,109, - 111,100,117,108,101,44,32,105,110,99,108,117,100,105,110,103, - 32,115,111,117,114,99,101,44,32,117,115,101,32,116,104,101, - 32,115,112,101,99,39,115,10,32,32,32,32,108,111,97,100, - 101,114,46,10,10,32,32,32,32,96,110,97,109,101,96,32, - 105,115,32,116,104,101,32,97,98,115,111,108,117,116,101,32, - 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, - 108,101,46,32,32,96,108,111,97,100,101,114,96,32,105,115, - 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32, - 116,111,32,117,115,101,32,119,104,101,110,32,108,111,97,100, - 105,110,103,32,116,104,101,32,109,111,100,117,108,101,46,32, - 32,96,112,97,114,101,110,116,96,32,105,115,32,116,104,101, - 32,110,97,109,101,32,111,102,32,116,104,101,10,32,32,32, - 32,112,97,99,107,97,103,101,32,116,104,101,32,109,111,100, - 117,108,101,32,105,115,32,105,110,46,32,32,84,104,101,32, - 112,97,114,101,110,116,32,105,115,32,100,101,114,105,118,101, - 100,32,102,114,111,109,32,116,104,101,32,110,97,109,101,46, - 10,10,32,32,32,32,96,105,115,95,112,97,99,107,97,103, - 101,96,32,100,101,116,101,114,109,105,110,101,115,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,99, - 111,110,115,105,100,101,114,101,100,32,97,32,112,97,99,107, - 97,103,101,32,111,114,10,32,32,32,32,110,111,116,46,32, - 32,79,110,32,109,111,100,117,108,101,115,32,116,104,105,115, - 32,105,115,32,114,101,102,108,101,99,116,101,100,32,98,121, - 32,116,104,101,32,96,95,95,112,97,116,104,95,95,96,32, - 97,116,116,114,105,98,117,116,101,46,10,10,32,32,32,32, - 96,111,114,105,103,105,110,96,32,105,115,32,116,104,101,32, - 115,112,101,99,105,102,105,99,32,108,111,99,97,116,105,111, - 110,32,117,115,101,100,32,98,121,32,116,104,101,32,108,111, - 97,100,101,114,32,102,114,111,109,32,119,104,105,99,104,32, - 116,111,10,32,32,32,32,108,111,97,100,32,116,104,101,32, - 109,111,100,117,108,101,44,32,105,102,32,116,104,97,116,32, - 105,110,102,111,114,109,97,116,105,111,110,32,105,115,32,97, - 118,97,105,108,97,98,108,101,46,32,32,87,104,101,110,32, - 102,105,108,101,110,97,109,101,32,105,115,10,32,32,32,32, - 115,101,116,44,32,111,114,105,103,105,110,32,119,105,108,108, - 32,109,97,116,99,104,46,10,10,32,32,32,32,96,104,97, - 115,95,108,111,99,97,116,105,111,110,96,32,105,110,100,105, - 99,97,116,101,115,32,116,104,97,116,32,97,32,115,112,101, - 99,39,115,32,34,111,114,105,103,105,110,34,32,114,101,102, - 108,101,99,116,115,32,97,32,108,111,99,97,116,105,111,110, - 46,10,32,32,32,32,87,104,101,110,32,116,104,105,115,32, - 105,115,32,84,114,117,101,44,32,96,95,95,102,105,108,101, - 95,95,96,32,97,116,116,114,105,98,117,116,101,32,111,102, - 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,115, - 101,116,46,10,10,32,32,32,32,96,99,97,99,104,101,100, - 96,32,105,115,32,116,104,101,32,108,111,99,97,116,105,111, - 110,32,111,102,32,116,104,101,32,99,97,99,104,101,100,32, - 98,121,116,101,99,111,100,101,32,102,105,108,101,44,32,105, - 102,32,97,110,121,46,32,32,73,116,10,32,32,32,32,99, - 111,114,114,101,115,112,111,110,100,115,32,116,111,32,116,104, - 101,32,96,95,95,99,97,99,104,101,100,95,95,96,32,97, - 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96, + 114,125,62,41,10,114,13,0,0,0,114,11,0,0,0,114, + 107,0,0,0,218,9,69,120,99,101,112,116,105,111,110,218, + 8,95,95,115,112,101,99,95,95,114,2,0,0,0,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,9,0,0,0,218,8,95,95,102, + 105,108,101,95,95,114,49,0,0,0,41,5,114,104,0,0, + 0,218,6,108,111,97,100,101,114,114,103,0,0,0,114,20, + 0,0,0,218,8,102,105,108,101,110,97,109,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,12,95,109, + 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,48, + 0,0,0,12,2,10,1,2,4,12,1,12,1,6,1,2, + 1,10,1,12,1,6,1,8,2,8,1,2,4,10,1,12, + 1,10,1,2,1,10,1,12,1,8,1,14,1,18,2,12, + 2,255,128,114,118,0,0,0,99,0,0,0,0,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, + 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, + 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, + 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, + 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, + 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, + 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,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,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, + 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, + 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, + 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, + 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, + 124,0,95,0,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,41,2,78,70,41,7,114,20,0,0,0,114, + 116,0,0,0,114,120,0,0,0,114,121,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,96,32,105,115,32,116, - 104,101,32,115,101,113,117,101,110,99,101,32,111,102,32,112, - 97,116,104,32,101,110,116,114,105,101,115,32,116,111,10,32, - 32,32,32,115,101,97,114,99,104,32,119,104,101,110,32,105, - 109,112,111,114,116,105,110,103,32,115,117,98,109,111,100,117, - 108,101,115,46,32,32,73,102,32,115,101,116,44,32,105,115, - 95,112,97,99,107,97,103,101,32,115,104,111,117,108,100,32, - 98,101,10,32,32,32,32,84,114,117,101,45,45,97,110,100, - 32,70,97,108,115,101,32,111,116,104,101,114,119,105,115,101, - 46,10,10,32,32,32,32,80,97,99,107,97,103,101,115,32, - 97,114,101,32,115,105,109,112,108,121,32,109,111,100,117,108, - 101,115,32,116,104,97,116,32,40,109,97,121,41,32,104,97, - 118,101,32,115,117,98,109,111,100,117,108,101,115,46,32,32, - 73,102,32,97,32,115,112,101,99,10,32,32,32,32,104,97, - 115,32,97,32,110,111,110,45,78,111,110,101,32,118,97,108, - 117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112,111,114,116,10,32, - 32,32,32,115,121,115,116,101,109,32,119,105,108,108,32,99, - 111,110,115,105,100,101,114,32,109,111,100,117,108,101,115,32, - 108,111,97,100,101,100,32,102,114,111,109,32,116,104,101,32, - 115,112,101,99,32,97,115,32,112,97,99,107,97,103,101,115, - 46,10,10,32,32,32,32,79,110,108,121,32,102,105,110,100, - 101,114,115,32,40,115,101,101,32,105,109,112,111,114,116,108, - 105,98,46,97,98,99,46,77,101,116,97,80,97,116,104,70, - 105,110,100,101,114,32,97,110,100,10,32,32,32,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,80,97,116,104, - 69,110,116,114,121,70,105,110,100,101,114,41,32,115,104,111, - 117,108,100,32,109,111,100,105,102,121,32,77,111,100,117,108, - 101,83,112,101,99,32,105,110,115,116,97,110,99,101,115,46, - 10,10,32,32,32,32,78,41,3,218,6,111,114,105,103,105, - 110,218,12,108,111,97,100,101,114,95,115,116,97,116,101,218, - 10,105,115,95,112,97,99,107,97,103,101,99,3,0,0,0, - 0,0,0,0,3,0,0,0,6,0,0,0,2,0,0,0, - 67,0,0,0,115,54,0,0,0,124,1,124,0,95,0,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,41, - 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,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,102,1,0,0,115,16,0,0,0,6,2,6,1,6,1, - 6,1,14,1,6,3,10,1,255,128,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 6,0,0,0,67,0,0,0,115,102,0,0,0,100,1,160, - 0,124,0,106,1,161,1,100,2,160,0,124,0,106,2,161, - 1,103,2,125,1,124,0,106,3,100,0,117,1,114,52,124, - 1,160,4,100,3,160,0,124,0,106,3,161,1,161,1,1, - 0,124,0,106,5,100,0,117,1,114,80,124,1,160,4,100, - 4,160,0,124,0,106,5,161,1,161,1,1,0,100,5,160, - 0,124,0,106,6,106,7,100,6,160,8,124,1,161,1,161, - 2,83,0,41,7,78,122,9,110,97,109,101,61,123,33,114, - 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11, - 111,114,105,103,105,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,46,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,117,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,56,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,49,0,0,0,114, - 1,0,0,115,22,0,0,0,10,1,10,1,4,255,10,2, - 18,1,10,1,8,1,4,1,6,255,22,2,255,128,122,19, - 77,111,100,117,108,101,83,112,101,99,46,95,95,114,101,112, - 114,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,102,0,0, - 0,124,0,106,0,125,2,122,72,124,0,106,1,124,1,106, - 1,107,2,111,76,124,0,106,2,124,1,106,2,107,2,111, - 76,124,0,106,3,124,1,106,3,107,2,111,76,124,2,124, - 1,106,0,107,2,111,76,124,0,106,4,124,1,106,4,107, - 2,111,76,124,0,106,5,124,1,106,5,107,2,87,0,83, - 0,4,0,116,6,121,100,1,0,1,0,1,0,116,7,6, - 0,89,0,83,0,48,0,114,13,0,0,0,41,8,114,117, - 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,107,0,0,0,218,14,78, - 111,116,73,109,112,108,101,109,101,110,116,101,100,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,124,1,0,0,115,32,0,0, - 0,6,1,2,1,12,1,10,1,2,255,10,2,2,254,8, - 3,2,253,10,4,2,252,10,5,4,251,12,6,10,1,255, - 128,122,17,77,111,100,117,108,101,83,112,101,99,46,95,95, - 101,113,95,95,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,3,0,0,0,67,0,0,0,115,58,0, - 0,0,124,0,106,0,100,0,117,0,114,52,124,0,106,1, - 100,0,117,1,114,52,124,0,106,2,114,52,116,3,100,0, - 117,0,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,114,0,0,0,114,118,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,48,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,123,0, - 0,0,136,1,0,0,115,14,0,0,0,10,2,16,1,8, - 1,4,1,14,1,6,1,255,128,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,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,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,123,0,0,0, - 145,1,0,0,115,4,0,0,0,10,2,255,128,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,32,0,0,0,124,0,106,0,100, - 1,117,0,114,26,124,0,106,1,160,2,100,2,161,1,100, - 3,25,0,83,0,124,0,106,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,0,0,114, - 17,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, - 114,48,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,149,1,0,0, - 115,8,0,0,0,10,3,16,1,6,2,255,128,122,17,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,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,48,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,124,0,0,0,157,1,0,0,115,4,0, - 0,0,6,2,255,128,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,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,117,101,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,124,0,0,0,161, - 1,0,0,115,4,0,0,0,14,2,255,128,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,49,0,0,0,114,126,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,131,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,113,0,0,0,65,1,0,0,115, - 36,0,0,0,8,0,4,1,4,36,2,1,12,255,8,12, - 8,10,2,12,10,1,4,8,10,1,2,3,10,1,2,7, - 10,1,4,3,14,1,255,128,114,113,0,0,0,169,2,114, - 114,0,0,0,114,116,0,0,0,99,2,0,0,0,0,0, - 0,0,2,0,0,0,6,0,0,0,8,0,0,0,67,0, - 0,0,115,150,0,0,0,116,0,124,1,100,1,131,2,114, - 74,116,1,100,2,117,0,114,22,116,2,130,1,116,1,106, - 3,125,4,124,3,100,2,117,0,114,48,124,4,124,0,124, - 1,100,3,141,2,83,0,124,3,114,56,103,0,110,2,100, - 2,125,5,124,4,124,0,124,1,124,5,100,4,141,3,83, - 0,124,3,100,2,117,0,114,134,116,0,124,1,100,5,131, - 2,114,130,122,14,124,1,160,4,124,0,161,1,125,3,87, - 0,110,26,4,0,116,5,121,128,1,0,1,0,1,0,100, - 2,125,3,89,0,110,6,48,0,100,6,125,3,116,6,124, - 0,124,1,124,2,124,3,100,7,141,4,83,0,41,8,122, - 53,82,101,116,117,114,110,32,97,32,109,111,100,117,108,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,110,0,0,0,41,2,114,110, - 0,0,0,114,117,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,92, - 0,0,0,166,1,0,0,115,38,0,0,0,10,2,8,1, - 4,1,6,1,8,2,12,1,12,1,6,1,2,1,6,255, - 8,3,10,1,2,1,14,1,12,1,10,1,4,3,16,2, - 255,128,114,92,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,8,0,0,0,67,0,0,0, - 115,40,1,0,0,122,10,124,0,106,0,125,3,87,0,110, - 18,4,0,116,1,121,28,1,0,1,0,1,0,89,0,110, - 14,48,0,124,3,100,0,117,1,114,42,124,3,83,0,124, - 0,106,2,125,4,124,1,100,0,117,0,114,86,122,10,124, - 0,106,3,125,1,87,0,110,18,4,0,116,1,121,84,1, - 0,1,0,1,0,89,0,110,2,48,0,122,10,124,0,106, - 4,125,5,87,0,110,22,4,0,116,1,121,118,1,0,1, - 0,1,0,100,0,125,5,89,0,110,2,48,0,124,2,100, - 0,117,0,114,174,124,5,100,0,117,0,114,170,122,10,124, - 1,106,5,125,2,87,0,110,26,4,0,116,1,121,168,1, - 0,1,0,1,0,100,0,125,2,89,0,110,6,48,0,124, - 5,125,2,122,10,124,0,106,6,125,6,87,0,110,22,4, - 0,116,1,121,206,1,0,1,0,1,0,100,0,125,6,89, - 0,110,2,48,0,122,14,116,7,124,0,106,8,131,1,125, - 7,87,0,110,22,4,0,116,1,121,244,1,0,1,0,1, - 0,100,0,125,7,89,0,110,2,48,0,116,9,124,4,124, - 1,124,2,100,1,141,3,125,3,124,5,100,0,117,0,144, - 1,114,18,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,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,218,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,113,0,0,0,114,118, - 0,0,0,114,123,0,0,0,114,117,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,123,0,0,0,114,117,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,192,1, - 0,0,115,74,0,0,0,2,2,10,1,12,1,6,1,8, - 2,4,1,6,2,8,1,2,1,10,1,12,1,6,2,2, - 1,10,1,12,1,10,1,8,1,8,1,2,1,10,1,12, - 1,10,1,4,2,2,1,10,1,12,1,10,1,2,1,14, - 1,12,1,10,1,14,2,20,1,6,1,6,1,4,1,255, - 128,114,143,0,0,0,70,169,1,218,8,111,118,101,114,114, - 105,100,101,99,2,0,0,0,0,0,0,0,1,0,0,0, - 5,0,0,0,8,0,0,0,67,0,0,0,115,214,1,0, - 0,124,2,115,20,116,0,124,1,100,1,100,0,131,3,100, - 0,117,0,114,52,122,12,124,0,106,1,124,1,95,2,87, - 0,110,18,4,0,116,3,121,50,1,0,1,0,1,0,89, - 0,110,2,48,0,124,2,115,72,116,0,124,1,100,2,100, - 0,131,3,100,0,117,0,114,174,124,0,106,4,125,3,124, - 3,100,0,117,0,114,144,124,0,106,5,100,0,117,1,114, - 144,116,6,100,0,117,0,114,108,116,7,130,1,116,6,106, - 8,125,4,124,4,160,9,124,4,161,1,125,3,124,0,106, - 5,124,3,95,10,124,3,124,0,95,4,100,0,124,1,95, - 11,122,10,124,3,124,1,95,12,87,0,110,18,4,0,116, - 3,121,172,1,0,1,0,1,0,89,0,110,2,48,0,124, - 2,115,194,116,0,124,1,100,3,100,0,131,3,100,0,117, - 0,114,226,122,12,124,0,106,13,124,1,95,14,87,0,110, - 18,4,0,116,3,121,224,1,0,1,0,1,0,89,0,110, - 2,48,0,122,10,124,0,124,1,95,15,87,0,110,18,4, - 0,116,3,121,254,1,0,1,0,1,0,89,0,110,2,48, - 0,124,2,144,1,115,24,116,0,124,1,100,4,100,0,131, - 3,100,0,117,0,144,1,114,70,124,0,106,5,100,0,117, - 1,144,1,114,70,122,12,124,0,106,5,124,1,95,16,87, - 0,110,20,4,0,116,3,144,1,121,68,1,0,1,0,1, - 0,89,0,110,2,48,0,124,0,106,17,144,1,114,210,124, - 2,144,1,115,102,116,0,124,1,100,5,100,0,131,3,100, - 0,117,0,144,1,114,136,122,12,124,0,106,18,124,1,95, - 11,87,0,110,20,4,0,116,3,144,1,121,134,1,0,1, - 0,1,0,89,0,110,2,48,0,124,2,144,1,115,160,116, - 0,124,1,100,6,100,0,131,3,100,0,117,0,144,1,114, - 210,124,0,106,19,100,0,117,1,144,1,114,210,122,14,124, - 0,106,19,124,1,95,20,87,0,124,1,83,0,4,0,116, - 3,144,1,121,208,1,0,1,0,1,0,89,0,124,1,83, - 0,48,0,124,1,83,0,41,7,78,114,1,0,0,0,114, - 99,0,0,0,218,11,95,95,112,97,99,107,97,103,101,95, - 95,114,142,0,0,0,114,109,0,0,0,114,140,0,0,0, - 41,21,114,6,0,0,0,114,17,0,0,0,114,1,0,0, - 0,114,107,0,0,0,114,110,0,0,0,114,117,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,109,0,0, - 0,114,99,0,0,0,114,131,0,0,0,114,146,0,0,0, - 114,106,0,0,0,114,142,0,0,0,114,124,0,0,0,114, - 114,0,0,0,114,123,0,0,0,114,140,0,0,0,41,5, - 114,96,0,0,0,114,97,0,0,0,114,145,0,0,0,114, - 110,0,0,0,114,147,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,237,1,0,0, - 115,104,0,0,0,20,4,2,1,12,1,12,1,6,1,20, - 2,6,1,8,1,10,2,8,1,4,1,6,1,10,2,8, - 1,6,1,6,11,2,1,10,1,12,1,6,1,20,2,2, - 1,12,1,12,1,6,1,2,2,10,1,12,1,6,1,24, - 2,12,1,2,1,12,1,14,1,6,1,8,2,24,1,2, - 1,12,1,14,1,6,1,24,2,12,1,2,1,10,1,4, - 3,14,254,2,1,4,1,2,255,4,1,255,128,114,149,0, - 0,0,99,1,0,0,0,0,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,1,110,20,116,0, - 124,0,106,1,100,3,131,2,114,50,116,3,100,4,131,1, - 130,1,124,1,100,1,117,0,114,68,116,4,124,0,106,5, - 131,1,125,1,116,6,124,0,124,1,131,2,1,0,124,1, - 83,0,41,5,122,43,67,114,101,97,116,101,32,97,32,109, - 111,100,117,108,101,32,98,97,115,101,100,32,111,110,32,116, - 104,101,32,112,114,111,118,105,100,101,100,32,115,112,101,99, - 46,78,218,13,99,114,101,97,116,101,95,109,111,100,117,108, - 101,218,11,101,120,101,99,95,109,111,100,117,108,101,122,66, - 108,111,97,100,101,114,115,32,116,104,97,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,110,0,0,0,114,150, - 0,0,0,114,80,0,0,0,114,18,0,0,0,114,17,0, - 0,0,114,149,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,53,2,0,0,115,20,0,0,0,4,3,12, - 1,14,3,12,1,8,1,8,2,10,1,10,1,4,1,255, - 128,114,153,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 100,0,0,0,124,0,106,0,100,1,117,0,114,14,100,2, - 110,4,124,0,106,0,125,1,124,0,106,1,100,1,117,0, - 114,64,124,0,106,2,100,1,117,0,114,50,100,3,160,3, - 124,1,161,1,83,0,100,4,160,3,124,1,124,0,106,2, - 161,2,83,0,124,0,106,4,114,84,100,5,160,3,124,1, - 124,0,106,1,161,2,83,0,100,6,160,3,124,0,106,0, - 124,0,106,1,161,2,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,101,0,0,0,114,102,0,0,0,114,103,0, - 0,0,114,104,0,0,0,250,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,114,0,0,0,114,110,0,0,0,114,46,0,0, - 0,114,124,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,108,0,0,0,70,2,0,0,115,18,0,0,0,20, - 3,10,1,10,1,10,1,14,2,6,2,14,1,16,2,255, - 128,114,108,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,10,0,0,0,67,0,0,0,115, - 252,0,0,0,124,0,106,0,125,2,116,1,124,2,131,1, - 143,218,1,0,116,2,106,3,160,4,124,2,161,1,124,1, - 117,1,114,54,100,1,160,5,124,2,161,1,125,3,116,6, - 124,3,124,2,100,2,141,2,130,1,122,132,124,0,106,7, - 100,3,117,0,114,106,124,0,106,8,100,3,117,0,114,90, - 116,6,100,4,124,0,106,0,100,2,141,2,130,1,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,110,52,116,9, - 124,0,124,1,100,5,100,6,141,3,1,0,116,10,124,0, - 106,7,100,7,131,2,115,146,124,0,106,7,160,11,124,2, - 161,1,1,0,110,12,124,0,106,7,160,12,124,1,161,1, - 1,0,87,0,116,2,106,3,160,13,124,0,106,0,161,1, - 125,1,124,1,116,2,106,3,124,0,106,0,60,0,110,28, - 116,2,106,3,160,13,124,0,106,0,161,1,125,1,124,1, - 116,2,106,3,124,0,106,0,60,0,48,0,87,0,100,3, - 4,0,4,0,131,3,1,0,124,1,83,0,49,0,115,238, - 48,0,1,0,1,0,1,0,89,0,1,0,124,1,83,0, - 41,8,122,70,69,120,101,99,117,116,101,32,116,104,101,32, - 115,112,101,99,39,115,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,32,105,110,32,97,110,32,101,120, - 105,115,116,105,110,103,32,109,111,100,117,108,101,39,115,32, - 110,97,109,101,115,112,97,99,101,46,122,30,109,111,100,117, - 108,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,144,0,0,0,114,151,0,0,0,41,14,114,17,0, - 0,0,114,51,0,0,0,114,15,0,0,0,114,93,0,0, - 0,114,35,0,0,0,114,46,0,0,0,114,80,0,0,0, - 114,110,0,0,0,114,117,0,0,0,114,149,0,0,0,114, - 4,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, - 101,114,151,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,94,0,0,0,87,2,0,0,115,44,0,0,0,6,2, - 10,1,16,1,10,1,12,1,2,1,10,1,10,1,14,1, - 16,2,14,2,12,1,14,4,14,2,14,4,14,1,14,255, - 26,1,4,1,16,255,4,1,255,128,114,94,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 8,0,0,0,67,0,0,0,115,18,1,0,0,122,18,124, - 0,106,0,160,1,124,0,106,2,161,1,1,0,87,0,110, - 46,1,0,1,0,1,0,124,0,106,2,116,3,106,4,118, - 0,114,64,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,130,0,116, - 3,106,4,160,5,124,0,106,2,161,1,125,1,124,1,116, - 3,106,4,124,0,106,2,60,0,116,6,124,1,100,1,100, - 0,131,3,100,0,117,0,114,140,122,12,124,0,106,0,124, - 1,95,7,87,0,110,18,4,0,116,8,121,138,1,0,1, - 0,1,0,89,0,110,2,48,0,116,6,124,1,100,2,100, - 0,131,3,100,0,117,0,114,216,122,40,124,1,106,9,124, - 1,95,10,116,11,124,1,100,3,131,2,115,194,124,0,106, - 2,160,12,100,4,161,1,100,5,25,0,124,1,95,10,87, - 0,110,18,4,0,116,8,121,214,1,0,1,0,1,0,89, - 0,110,2,48,0,116,6,124,1,100,6,100,0,131,3,100, - 0,117,0,144,1,114,14,122,12,124,0,124,1,95,13,87, - 0,124,1,83,0,4,0,116,8,144,1,121,12,1,0,1, - 0,1,0,89,0,124,1,83,0,48,0,124,1,83,0,41, - 7,78,114,99,0,0,0,114,146,0,0,0,114,142,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,156,0,0,0,114,17,0,0, - 0,114,15,0,0,0,114,93,0,0,0,114,157,0,0,0, - 114,6,0,0,0,114,99,0,0,0,114,107,0,0,0,114, - 1,0,0,0,114,146,0,0,0,114,4,0,0,0,114,130, - 0,0,0,114,106,0,0,0,114,152,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,117,2,0,0,115,62,0,0,0, - 2,4,18,1,6,1,12,1,14,1,12,1,2,1,14,3, - 12,1,16,1,2,1,12,1,12,1,6,1,16,1,2,1, - 8,4,10,1,22,1,12,1,6,1,18,1,2,1,8,1, - 4,3,14,254,2,1,4,1,2,255,4,1,255,128,114,159, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,11,0,0,0,67,0,0,0,115,212,0,0, - 0,124,0,106,0,100,0,117,1,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,131,1,125,1,100,2,124,0,95,4,122,158,124, - 1,116,5,106,6,124,0,106,7,60,0,122,50,124,0,106, - 0,100,0,117,0,114,94,124,0,106,8,100,0,117,0,114, - 106,116,9,100,3,124,0,106,7,100,4,141,2,130,1,124, - 0,106,0,160,10,124,1,161,1,1,0,87,0,110,40,1, - 0,1,0,1,0,122,14,116,5,106,6,124,0,106,7,61, - 0,87,0,130,0,4,0,116,11,121,148,1,0,1,0,1, - 0,89,0,130,0,48,0,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,100,6,124,0,95,4,124,1,83,0,100,6,124, - 0,95,4,48,0,41,7,78,114,151,0,0,0,84,114,155, - 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, - 110,0,0,0,114,4,0,0,0,114,159,0,0,0,114,153, - 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,117,0,0,0,114,80,0,0,0,114,151,0,0,0, - 114,64,0,0,0,114,157,0,0,0,114,77,0,0,0,114, - 152,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,154,2,0,0,115,54,0,0,0,10,2,12,2, - 8,1,8,2,6,5,2,1,12,1,2,1,10,1,10,1, - 14,1,16,3,6,1,2,1,12,1,2,3,12,254,2,1, - 2,1,2,255,14,6,12,1,18,1,6,2,4,2,8,254, - 255,128,114,160,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,8,0,0,0,67,0,0,0, - 115,54,0,0,0,116,0,124,0,106,1,131,1,143,24,1, - 0,116,2,124,0,131,1,87,0,2,0,100,1,4,0,4, - 0,131,3,1,0,83,0,49,0,115,40,48,0,1,0,1, - 0,1,0,89,0,1,0,100,1,83,0,41,2,122,191,82, - 101,116,117,114,110,32,97,32,110,101,119,32,109,111,100,117, - 108,101,32,111,98,106,101,99,116,44,32,108,111,97,100,101, - 100,32,98,121,32,116,104,101,32,115,112,101,99,39,115,32, - 108,111,97,100,101,114,46,10,10,32,32,32,32,84,104,101, - 32,109,111,100,117,108,101,32,105,115,32,110,111,116,32,97, - 100,100,101,100,32,116,111,32,105,116,115,32,112,97,114,101, - 110,116,46,10,10,32,32,32,32,73,102,32,97,32,109,111, - 100,117,108,101,32,105,115,32,97,108,114,101,97,100,121,32, - 105,110,32,115,121,115,46,109,111,100,117,108,101,115,44,32, - 116,104,97,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,51,0,0,0,114,17,0,0,0,114,160,0,0,0, - 169,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,196,2,0,0,115, - 6,0,0,0,12,9,42,1,255,128,114,95,0,0,0,99, - 0,0,0,0,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,100,2,90,4,101,5,100, - 3,100,4,132,0,131,1,90,6,101,7,100,20,100,6,100, - 7,132,1,131,1,90,8,101,7,100,21,100,8,100,9,132, - 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, - 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,101, - 12,100,14,100,15,132,0,131,1,131,1,90,13,101,7,101, - 12,100,16,100,17,132,0,131,1,131,1,90,14,101,7,101, - 12,100,18,100,19,132,0,131,1,131,1,90,15,101,7,101, - 16,131,1,90,17,100,5,83,0,41,22,218,15,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,122,144,77,101, - 116,97,32,112,97,116,104,32,105,109,112,111,114,116,32,102, - 111,114,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,46,10,10,32,32,32,32,65,108,108,32,109,101, - 116,104,111,100,115,32,97,114,101,32,101,105,116,104,101,114, - 32,99,108,97,115,115,32,111,114,32,115,116,97,116,105,99, - 32,109,101,116,104,111,100,115,32,116,111,32,97,118,111,105, - 100,32,116,104,101,32,110,101,101,100,32,116,111,10,32,32, - 32,32,105,110,115,116,97,110,116,105,97,116,101,32,116,104, - 101,32,99,108,97,115,115,46,10,10,32,32,32,32,122,8, - 98,117,105,108,116,45,105,110,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, - 0,115,22,0,0,0,100,1,124,0,106,0,155,2,100,2, - 116,1,106,2,155,0,100,3,157,5,83,0,41,5,250,115, - 82,101,116,117,114,110,32,114,101,112,114,32,102,111,114,32, - 116,104,101,32,109,111,100,117,108,101,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, - 84,104,101,32,105,109,112,111,114,116,32,109,97,99,104,105, - 110,101,114,121,32,100,111,101,115,32,116,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,8,60,109,111,100,117,108,101,32,122,2,32, - 40,122,2,41,62,78,41,3,114,1,0,0,0,114,162,0, - 0,0,114,139,0,0,0,169,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,222,2,0,0,115,4,0,0,0,22,7,255,128,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,0,0,0,0,0,4,0,0,0,5,0, - 0,0,67,0,0,0,115,42,0,0,0,124,2,100,0,117, - 1,114,12,100,0,83,0,116,0,160,1,124,1,161,1,114, - 38,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, - 0,100,0,83,0,169,2,78,114,138,0,0,0,41,4,114, - 58,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110, - 114,92,0,0,0,114,139,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,231,2, - 0,0,115,12,0,0,0,8,2,4,1,10,1,16,1,4, - 2,255,128,122,25,66,117,105,108,116,105,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,0,0,0,0,0,4,0,0,0,4, - 0,0,0,67,0,0,0,115,30,0,0,0,124,0,160,0, - 124,1,124,2,161,2,125,3,124,3,100,1,117,1,114,26, - 124,3,106,1,83,0,100,1,83,0,41,2,122,175,70,105, - 110,100,32,116,104,101,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,73,102,32,39,112,97,116,104,39,32,105,115,32,101,118, - 101,114,32,115,112,101,99,105,102,105,101,100,32,116,104,101, - 110,32,116,104,101,32,115,101,97,114,99,104,32,105,115,32, - 99,111,110,115,105,100,101,114,101,100,32,97,32,102,97,105, - 108,117,114,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,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,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,170,0,0,0,114,110,0,0,0,41,4,114,167,0,0, - 0,114,82,0,0,0,114,168,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,240,2,0,0, - 115,6,0,0,0,12,9,18,1,255,128,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, - 0,115,46,0,0,0,124,0,106,0,116,1,106,2,118,1, - 114,34,116,3,100,1,160,4,124,0,106,0,161,1,124,0, - 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,0, - 131,2,83,0,41,4,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,78,0,0,0,114,16,0,0,0,78,41,8,114,17,0, - 0,0,114,15,0,0,0,114,79,0,0,0,114,80,0,0, - 0,114,46,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, - 114,161,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,150,0,0,0,252,2,0,0,115,12,0, - 0,0,12,3,12,1,4,1,6,255,12,2,255,128,122,29, + 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,33,0,0,0,114,20,0,0,0,114,116, + 0,0,0,114,120,0,0,0,114,121,0,0,0,114,122,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,34,0,0,0,111,1,0,0,115,16,0,0,0,6, + 2,6,1,6,1,6,1,14,1,6,3,10,1,255,128,122, + 19,77,111,100,117,108,101,83,112,101,99,46,95,95,105,110, + 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,6,0,0,0,67,0,0,0,115,102,0, + 0,0,100,1,160,0,124,0,106,1,161,1,100,2,160,0, + 124,0,106,2,161,1,103,2,125,1,124,0,106,3,100,0, + 117,1,114,52,124,1,160,4,100,3,160,0,124,0,106,3, + 161,1,161,1,1,0,124,0,106,5,100,0,117,1,114,80, + 124,1,160,4,100,4,160,0,124,0,106,5,161,1,161,1, + 1,0,100,5,160,0,124,0,106,6,106,7,100,6,160,8, + 124,1,161,1,161,2,83,0,41,7,78,122,9,110,97,109, + 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123, + 33,114,125,122,11,111,114,105,103,105,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,49,0, + 0,0,114,20,0,0,0,114,116,0,0,0,114,120,0,0, + 0,218,6,97,112,112,101,110,100,114,123,0,0,0,218,9, + 95,95,99,108,97,115,115,95,95,114,9,0,0,0,218,4, + 106,111,105,110,41,2,114,33,0,0,0,114,59,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 52,0,0,0,123,1,0,0,115,22,0,0,0,10,1,10, + 1,4,255,10,2,18,1,10,1,8,1,4,1,6,255,22, + 2,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, + 95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,102,0,0,0,124,0,106,0,125,2,122,72,124,0, + 106,1,124,1,106,1,107,2,111,76,124,0,106,2,124,1, + 106,2,107,2,111,76,124,0,106,3,124,1,106,3,107,2, + 111,76,124,2,124,1,106,0,107,2,111,76,124,0,106,4, + 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, + 107,2,87,0,83,0,4,0,116,6,121,100,1,0,1,0, + 1,0,116,7,6,0,89,0,83,0,48,0,114,0,0,0, + 0,41,8,114,123,0,0,0,114,20,0,0,0,114,116,0, + 0,0,114,120,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,2,0, + 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,41,3,114,33,0,0,0,90,5,111,116,104,101,114, + 90,4,115,109,115,108,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,6,95,95,101,113,95,95,133,1,0, + 0,115,32,0,0,0,6,1,2,1,12,1,10,1,2,255, + 10,2,2,254,8,3,2,253,10,4,2,252,10,5,4,251, + 12,6,10,1,255,128,122,17,77,111,100,117,108,101,83,112, + 101,99,46,95,95,101,113,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,58,0,0,0,124,0,106,0,100,0,117,0,114, + 52,124,0,106,1,100,0,117,1,114,52,124,0,106,2,114, + 52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114,120,0, + 0,0,114,124,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,51, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,129,0,0,0,145,1,0,0,115,14,0,0,0, + 10,2,16,1,8,1,4,1,14,1,6,1,255,128,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,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,0,0,0,0,41,1, + 114,125,0,0,0,41,2,114,33,0,0,0,114,129,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,129,0,0,0,154,1,0,0,115,4,0,0,0,10,2, + 255,128,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,32,0,0,0, + 124,0,106,0,100,1,117,0,114,26,124,0,106,1,160,2, + 100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41,3,114, + 123,0,0,0,114,20,0,0,0,218,10,114,112,97,114,116, + 105,116,105,111,110,114,51,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,6,112,97,114,101,110, + 116,158,1,0,0,115,8,0,0,0,10,3,16,1,6,2, + 255,128,122,17,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,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,0,0,0,0,41,1, + 114,124,0,0,0,114,51,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,130,0,0,0,166,1, + 0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111,108,114,124,0, + 0,0,41,2,114,33,0,0,0,218,5,118,97,108,117,101, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 130,0,0,0,170,1,0,0,115,4,0,0,0,14,2,255, + 128,41,12,114,9,0,0,0,114,8,0,0,0,114,1,0, + 0,0,114,10,0,0,0,114,34,0,0,0,114,52,0,0, + 0,114,132,0,0,0,218,8,112,114,111,112,101,114,116,121, + 114,129,0,0,0,218,6,115,101,116,116,101,114,114,137,0, + 0,0,114,130,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,119,0,0,0, + 74,1,0,0,115,36,0,0,0,8,0,4,1,4,36,2, + 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, + 3,10,1,2,7,10,1,4,3,14,1,255,128,114,119,0, + 0,0,169,2,114,120,0,0,0,114,122,0,0,0,99,2, + 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,8, + 0,0,0,67,0,0,0,115,150,0,0,0,116,0,124,1, + 100,1,131,2,114,74,116,1,100,2,117,0,114,22,116,2, + 130,1,116,1,106,3,125,4,124,3,100,2,117,0,114,48, + 124,4,124,0,124,1,100,3,141,2,83,0,124,3,114,56, + 103,0,110,2,100,2,125,5,124,4,124,0,124,1,124,5, + 100,4,141,3,83,0,124,3,100,2,117,0,114,134,116,0, + 124,1,100,5,131,2,114,130,122,14,124,1,160,4,124,0, + 161,1,125,3,87,0,110,26,4,0,116,5,121,128,1,0, + 1,0,1,0,100,2,125,3,89,0,110,6,48,0,100,6, + 125,3,116,6,124,0,124,1,124,2,124,3,100,7,141,4, + 83,0,41,8,122,53,82,101,116,117,114,110,32,97,32,109, + 111,100,117,108,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,116,0,0, + 0,41,2,114,116,0,0,0,114,123,0,0,0,114,122,0, + 0,0,70,114,142,0,0,0,41,7,114,11,0,0,0,114, + 133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119,0,0, + 0,41,6,114,20,0,0,0,114,116,0,0,0,114,120,0, + 0,0,114,122,0,0,0,114,143,0,0,0,90,6,115,101, + 97,114,99,104,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,98,0,0,0,175,1,0,0,115,38,0,0, + 0,10,2,8,1,4,1,6,1,8,2,12,1,12,1,6, + 1,2,1,6,255,8,3,10,1,2,1,14,1,12,1,10, + 1,4,3,16,2,255,128,114,98,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0, + 0,67,0,0,0,115,40,1,0,0,122,10,124,0,106,0, + 125,3,87,0,110,18,4,0,116,1,121,28,1,0,1,0, + 1,0,89,0,110,14,48,0,124,3,100,0,117,1,114,42, + 124,3,83,0,124,0,106,2,125,4,124,1,100,0,117,0, + 114,86,122,10,124,0,106,3,125,1,87,0,110,18,4,0, + 116,1,121,84,1,0,1,0,1,0,89,0,110,2,48,0, + 122,10,124,0,106,4,125,5,87,0,110,22,4,0,116,1, + 121,118,1,0,1,0,1,0,100,0,125,5,89,0,110,2, + 48,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, + 114,170,122,10,124,1,106,5,125,2,87,0,110,26,4,0, + 116,1,121,168,1,0,1,0,1,0,100,0,125,2,89,0, + 110,6,48,0,124,5,125,2,122,10,124,0,106,6,125,6, + 87,0,110,22,4,0,116,1,121,206,1,0,1,0,1,0, + 100,0,125,6,89,0,110,2,48,0,122,14,116,7,124,0, + 106,8,131,1,125,7,87,0,110,22,4,0,116,1,121,244, + 1,0,1,0,1,0,100,0,125,7,89,0,110,2,48,0, + 116,9,124,4,124,1,124,2,100,1,141,3,125,3,124,5, + 100,0,117,0,144,1,114,18,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,120,0,0,0,70,84,41,13, + 114,113,0,0,0,114,2,0,0,0,114,9,0,0,0,114, + 106,0,0,0,114,115,0,0,0,218,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,119, + 0,0,0,114,124,0,0,0,114,129,0,0,0,114,123,0, + 0,0,41,8,114,104,0,0,0,114,116,0,0,0,114,120, + 0,0,0,114,103,0,0,0,114,20,0,0,0,90,8,108, + 111,99,97,116,105,111,110,114,129,0,0,0,114,123,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, + 117,108,101,201,1,0,0,115,74,0,0,0,2,2,10,1, + 12,1,6,1,8,2,4,1,6,2,8,1,2,1,10,1, + 12,1,6,2,2,1,10,1,12,1,10,1,8,1,8,1, + 2,1,10,1,12,1,10,1,4,2,2,1,10,1,12,1, + 10,1,2,1,14,1,12,1,10,1,14,2,20,1,6,1, + 6,1,4,1,255,128,114,149,0,0,0,70,169,1,218,8, + 111,118,101,114,114,105,100,101,99,2,0,0,0,0,0,0, + 0,1,0,0,0,5,0,0,0,8,0,0,0,67,0,0, + 0,115,214,1,0,0,124,2,115,20,116,0,124,1,100,1, + 100,0,131,3,100,0,117,0,114,52,122,12,124,0,106,1, + 124,1,95,2,87,0,110,18,4,0,116,3,121,50,1,0, + 1,0,1,0,89,0,110,2,48,0,124,2,115,72,116,0, + 124,1,100,2,100,0,131,3,100,0,117,0,114,174,124,0, + 106,4,125,3,124,3,100,0,117,0,114,144,124,0,106,5, + 100,0,117,1,114,144,116,6,100,0,117,0,114,108,116,7, + 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, + 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, + 100,0,124,1,95,11,122,10,124,3,124,1,95,12,87,0, + 110,18,4,0,116,3,121,172,1,0,1,0,1,0,89,0, + 110,2,48,0,124,2,115,194,116,0,124,1,100,3,100,0, + 131,3,100,0,117,0,114,226,122,12,124,0,106,13,124,1, + 95,14,87,0,110,18,4,0,116,3,121,224,1,0,1,0, + 1,0,89,0,110,2,48,0,122,10,124,0,124,1,95,15, + 87,0,110,18,4,0,116,3,121,254,1,0,1,0,1,0, + 89,0,110,2,48,0,124,2,144,1,115,24,116,0,124,1, + 100,4,100,0,131,3,100,0,117,0,144,1,114,70,124,0, + 106,5,100,0,117,1,144,1,114,70,122,12,124,0,106,5, + 124,1,95,16,87,0,110,20,4,0,116,3,144,1,121,68, + 1,0,1,0,1,0,89,0,110,2,48,0,124,0,106,17, + 144,1,114,210,124,2,144,1,115,102,116,0,124,1,100,5, + 100,0,131,3,100,0,117,0,144,1,114,136,122,12,124,0, + 106,18,124,1,95,11,87,0,110,20,4,0,116,3,144,1, + 121,134,1,0,1,0,1,0,89,0,110,2,48,0,124,2, + 144,1,115,160,116,0,124,1,100,6,100,0,131,3,100,0, + 117,0,144,1,114,210,124,0,106,19,100,0,117,1,144,1, + 114,210,122,14,124,0,106,19,124,1,95,20,87,0,124,1, + 83,0,4,0,116,3,144,1,121,208,1,0,1,0,1,0, + 89,0,124,1,83,0,48,0,124,1,83,0,41,7,78,114, + 9,0,0,0,114,106,0,0,0,218,11,95,95,112,97,99, + 107,97,103,101,95,95,114,148,0,0,0,114,115,0,0,0, + 114,146,0,0,0,41,21,114,13,0,0,0,114,20,0,0, + 0,114,9,0,0,0,114,2,0,0,0,114,116,0,0,0, + 114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0,0,0, + 114,152,0,0,0,114,113,0,0,0,114,148,0,0,0,114, + 130,0,0,0,114,120,0,0,0,114,129,0,0,0,114,146, + 0,0,0,41,5,114,103,0,0,0,114,104,0,0,0,114, + 151,0,0,0,114,116,0,0,0,114,153,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,18,95, + 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, + 115,246,1,0,0,115,104,0,0,0,20,4,2,1,12,1, + 12,1,6,1,20,2,6,1,8,1,10,2,8,1,4,1, + 6,1,10,2,8,1,6,1,6,11,2,1,10,1,12,1, + 6,1,20,2,2,1,12,1,12,1,6,1,2,2,10,1, + 12,1,6,1,24,2,12,1,2,1,12,1,14,1,6,1, + 8,2,24,1,2,1,12,1,14,1,6,1,24,2,12,1, + 2,1,10,1,4,3,14,254,2,1,4,1,2,255,4,1, + 255,128,114,155,0,0,0,99,1,0,0,0,0,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, + 1,110,20,116,0,124,0,106,1,100,3,131,2,114,50,116, + 3,100,4,131,1,130,1,124,1,100,1,117,0,114,68,116, + 4,124,0,106,5,131,1,125,1,116,6,124,0,124,1,131, + 2,1,0,124,1,83,0,41,5,122,43,67,114,101,97,116, + 101,32,97,32,109,111,100,117,108,101,32,98,97,115,101,100, + 32,111,110,32,116,104,101,32,112,114,111,118,105,100,101,100, + 32,115,112,101,99,46,78,218,13,99,114,101,97,116,101,95, + 109,111,100,117,108,101,218,11,101,120,101,99,95,109,111,100, + 117,108,101,122,66,108,111,97,100,101,114,115,32,116,104,97, + 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,11,0,0,0,114,116, + 0,0,0,114,156,0,0,0,114,83,0,0,0,114,21,0, + 0,0,114,20,0,0,0,114,155,0,0,0,169,2,114,103, + 0,0,0,114,104,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,109,111,100,117,108,101,95, + 102,114,111,109,95,115,112,101,99,62,2,0,0,115,20,0, + 0,0,4,3,12,1,14,3,12,1,8,1,8,2,10,1, + 10,1,4,1,255,128,114,159,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, + 0,114,14,100,2,110,4,124,0,106,0,125,1,124,0,106, + 1,100,1,117,0,114,64,124,0,106,2,100,1,117,0,114, + 50,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, + 1,124,0,106,2,161,2,83,0,124,0,106,4,114,84,100, + 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, + 3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114,109,0, + 0,0,114,110,0,0,0,114,111,0,0,0,250,18,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, + 41,5,114,20,0,0,0,114,120,0,0,0,114,116,0,0, + 0,114,49,0,0,0,114,130,0,0,0,41,2,114,103,0, + 0,0,114,20,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,114,0,0,0,79,2,0,0,115, + 18,0,0,0,20,3,10,1,10,1,10,1,14,2,6,2, + 14,1,16,2,255,128,114,114,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,10,0,0,0, + 67,0,0,0,115,26,1,0,0,124,0,106,0,125,2,116, + 1,124,2,131,1,143,246,1,0,116,2,106,3,160,4,124, + 2,161,1,124,1,117,1,114,54,100,1,160,5,124,2,161, + 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,122, + 160,124,0,106,7,100,3,117,0,114,106,124,0,106,8,100, + 3,117,0,114,90,116,6,100,4,124,0,106,0,100,2,141, + 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,110,80,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,116,10,124,0,106,7,100,7,131,2,115,174,116,11,124, + 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, + 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, + 2,161,1,1,0,110,12,124,0,106,7,160,16,124,1,161, + 1,1,0,87,0,116,2,106,3,160,17,124,0,106,0,161, + 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,110, + 28,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, + 1,116,2,106,3,124,0,106,0,60,0,48,0,87,0,100, + 3,4,0,4,0,131,3,1,0,124,1,83,0,49,0,144, + 1,115,12,48,0,1,0,1,0,1,0,89,0,1,0,124, + 1,83,0,41,9,122,70,69,120,101,99,117,116,101,32,116, + 104,101,32,115,112,101,99,39,115,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,117,108,101,32,105,110,32,97,110, + 32,101,120,105,115,116,105,110,103,32,109,111,100,117,108,101, + 39,115,32,110,97,109,101,115,112,97,99,101,46,122,30,109, + 111,100,117,108,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,19,0, + 0,0,78,250,14,109,105,115,115,105,110,103,32,108,111,97, + 100,101,114,84,114,150,0,0,0,114,157,0,0,0,250,55, + 46,101,120,101,99,95,109,111,100,117,108,101,40,41,32,110, + 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,116,111,32,108,111,97,100,95,109, + 111,100,117,108,101,40,41,41,18,114,20,0,0,0,114,54, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, + 0,0,114,49,0,0,0,114,83,0,0,0,114,116,0,0, + 0,114,123,0,0,0,114,155,0,0,0,114,11,0,0,0, + 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,218, + 13,73,109,112,111,114,116,87,97,114,110,105,110,103,218,11, + 108,111,97,100,95,109,111,100,117,108,101,114,157,0,0,0, + 218,3,112,111,112,41,4,114,103,0,0,0,114,104,0,0, + 0,114,20,0,0,0,114,102,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,100,0,0,0,96, + 2,0,0,115,48,0,0,0,6,2,10,1,16,1,10,1, + 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, + 16,1,12,2,14,1,14,2,14,4,14,1,14,255,26,1, + 4,1,18,255,4,1,255,128,114,100,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,18,1,0,0,122,18,124,0,106, + 0,160,1,124,0,106,2,161,1,1,0,87,0,110,46,1, + 0,1,0,1,0,124,0,106,2,116,3,106,4,118,0,114, + 64,116,3,106,4,160,5,124,0,106,2,161,1,125,1,124, + 1,116,3,106,4,124,0,106,2,60,0,130,0,116,3,106, + 4,160,5,124,0,106,2,161,1,125,1,124,1,116,3,106, + 4,124,0,106,2,60,0,116,6,124,1,100,1,100,0,131, + 3,100,0,117,0,114,140,122,12,124,0,106,0,124,1,95, + 7,87,0,110,18,4,0,116,8,121,138,1,0,1,0,1, + 0,89,0,110,2,48,0,116,6,124,1,100,2,100,0,131, + 3,100,0,117,0,114,216,122,40,124,1,106,9,124,1,95, + 10,116,11,124,1,100,3,131,2,115,194,124,0,106,2,160, + 12,100,4,161,1,100,5,25,0,124,1,95,10,87,0,110, + 18,4,0,116,8,121,214,1,0,1,0,1,0,89,0,110, + 2,48,0,116,6,124,1,100,6,100,0,131,3,100,0,117, + 0,144,1,114,14,122,12,124,0,124,1,95,13,87,0,124, + 1,83,0,4,0,116,8,144,1,121,12,1,0,1,0,1, + 0,89,0,124,1,83,0,48,0,124,1,83,0,41,7,78, + 114,106,0,0,0,114,152,0,0,0,114,148,0,0,0,114, + 135,0,0,0,114,25,0,0,0,114,113,0,0,0,41,14, + 114,116,0,0,0,114,164,0,0,0,114,20,0,0,0,114, + 18,0,0,0,114,99,0,0,0,114,165,0,0,0,114,13, + 0,0,0,114,106,0,0,0,114,2,0,0,0,114,9,0, + 0,0,114,152,0,0,0,114,11,0,0,0,114,136,0,0, + 0,114,113,0,0,0,114,158,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,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,126,2,0,0,115,62,0,0,0,2,3, + 18,1,6,1,12,1,14,1,12,1,2,1,14,3,12,1, + 16,1,2,1,12,1,12,1,6,1,16,1,2,1,8,4, + 10,1,22,1,12,1,6,1,18,1,2,1,8,1,4,3, + 14,254,2,1,4,1,2,255,4,1,255,128,114,166,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,11,0,0,0,67,0,0,0,115,240,0,0,0,124, + 0,106,0,100,0,117,1,114,58,116,1,124,0,106,0,100, + 1,131,2,115,58,116,2,124,0,106,0,131,1,155,0,100, + 2,157,2,125,1,116,3,160,4,124,1,116,5,161,2,1, + 0,116,6,124,0,131,1,83,0,116,7,124,0,131,1,125, + 2,100,3,124,0,95,8,122,158,124,2,116,9,106,10,124, + 0,106,11,60,0,122,50,124,0,106,0,100,0,117,0,114, + 122,124,0,106,12,100,0,117,0,114,134,116,13,100,4,124, + 0,106,11,100,5,141,2,130,1,124,0,106,0,160,14,124, + 2,161,1,1,0,87,0,110,40,1,0,1,0,1,0,122, + 14,116,9,106,10,124,0,106,11,61,0,87,0,130,0,4, + 0,116,15,121,176,1,0,1,0,1,0,89,0,130,0,48, + 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, + 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, + 0,106,11,124,0,106,0,131,3,1,0,87,0,100,7,124, + 0,95,8,124,2,83,0,100,7,124,0,95,8,48,0,41, + 8,78,114,157,0,0,0,114,162,0,0,0,84,114,161,0, + 0,0,114,19,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,18,114,116, + 0,0,0,114,11,0,0,0,114,7,0,0,0,114,95,0, + 0,0,114,96,0,0,0,114,163,0,0,0,114,166,0,0, + 0,114,159,0,0,0,90,13,95,105,110,105,116,105,97,108, + 105,122,105,110,103,114,18,0,0,0,114,99,0,0,0,114, + 20,0,0,0,114,123,0,0,0,114,83,0,0,0,114,157, + 0,0,0,114,67,0,0,0,114,165,0,0,0,114,80,0, + 0,0,41,3,114,103,0,0,0,114,102,0,0,0,114,104, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,14,95,108,111,97,100,95,117,110,108,111,99,107, + 101,100,162,2,0,0,115,58,0,0,0,10,2,12,2,16, + 1,12,2,8,1,8,2,6,5,2,1,12,1,2,1,10, + 1,10,1,14,1,16,3,6,1,2,1,12,1,2,3,12, + 254,2,1,2,1,2,255,14,6,12,1,18,1,6,2,4, + 2,8,254,255,128,114,167,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, + 0,0,0,115,54,0,0,0,116,0,124,0,106,1,131,1, + 143,24,1,0,116,2,124,0,131,1,87,0,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,49,0,115,40,48,0, + 1,0,1,0,1,0,89,0,1,0,100,1,83,0,41,2, + 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, + 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, + 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, + 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, + 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, + 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, + 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, + 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, + 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,44,32,116,104,97,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,54,0,0,0,114,20,0,0,0,114,167, + 0,0,0,169,1,114,103,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,101,0,0,0,207,2, + 0,0,115,6,0,0,0,12,9,42,1,255,128,114,101,0, + 0,0,99,0,0,0,0,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,100,2,90,4, + 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,20, + 100,6,100,7,132,1,131,1,90,8,101,7,100,21,100,8, + 100,9,132,1,131,1,90,9,101,5,100,10,100,11,132,0, + 131,1,90,10,101,5,100,12,100,13,132,0,131,1,90,11, + 101,7,101,12,100,14,100,15,132,0,131,1,131,1,90,13, + 101,7,101,12,100,16,100,17,132,0,131,1,131,1,90,14, + 101,7,101,12,100,18,100,19,132,0,131,1,131,1,90,15, + 101,7,101,16,131,1,90,17,100,5,83,0,41,22,218,15, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,122, + 144,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, + 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, + 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, + 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, + 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, + 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, + 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, + 32,122,8,98,117,105,108,116,45,105,110,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0, + 67,0,0,0,115,22,0,0,0,100,1,124,0,106,0,155, + 2,100,2,116,1,106,2,155,0,100,3,157,5,83,0,41, + 5,250,115,82,101,116,117,114,110,32,114,101,112,114,32,102, + 111,114,32,116,104,101,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,101,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,84,104,101,32,105,109,112,111,114,116,32,109,97, + 99,104,105,110,101,114,121,32,100,111,101,115,32,116,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,8,60,109,111,100,117,108,101,32, + 122,2,32,40,122,2,41,62,78,41,3,114,9,0,0,0, + 114,169,0,0,0,114,145,0,0,0,169,1,114,104,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,107,0,0,0,233,2,0,0,115,4,0,0,0,22,7, + 255,128,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,0,0,0,0,0,4,0,0, + 0,5,0,0,0,67,0,0,0,115,42,0,0,0,124,2, + 100,0,117,1,114,12,100,0,83,0,116,0,160,1,124,1, + 161,1,114,38,116,2,124,1,124,0,124,0,106,3,100,1, + 141,3,83,0,100,0,83,0,169,2,78,114,144,0,0,0, + 41,4,114,61,0,0,0,90,10,105,115,95,98,117,105,108, + 116,105,110,114,98,0,0,0,114,145,0,0,0,169,4,218, + 3,99,108,115,114,85,0,0,0,218,4,112,97,116,104,218, + 6,116,97,114,103,101,116,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,9,102,105,110,100,95,115,112,101, + 99,242,2,0,0,115,12,0,0,0,8,2,4,1,10,1, + 16,1,4,2,255,128,122,25,66,117,105,108,116,105,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,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,30,0,0,0,124, + 0,160,0,124,1,124,2,161,2,125,3,124,3,100,1,117, + 1,114,26,124,3,106,1,83,0,100,1,83,0,41,2,122, + 175,70,105,110,100,32,116,104,101,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,73,102,32,39,112,97,116,104,39,32,105,115, + 32,101,118,101,114,32,115,112,101,99,105,102,105,101,100,32, + 116,104,101,110,32,116,104,101,32,115,101,97,114,99,104,32, + 105,115,32,99,111,110,115,105,100,101,114,101,100,32,97,32, + 102,97,105,108,117,114,101,46,10,10,32,32,32,32,32,32, + 32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0,0,41,4,114, + 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,103, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,251, + 2,0,0,115,6,0,0,0,12,9,18,1,255,128,122,27, 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,117,108,101,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,16,0,0,0,116,0,116,1,106, - 2,124,0,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,68,0,0,0,114,58,0, - 0,0,90,12,101,120,101,99,95,98,117,105,108,116,105,110, - 114,164,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,151,0,0,0,4,3,0,0,115,4,0, - 0,0,16,3,255,128,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,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,122,57,82,101,116,117,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,167,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,9,3,0, - 0,115,4,0,0,0,4,4,255,128,122,24,66,117,105,108, - 116,105,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,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,122,56,82,101,116,117,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,115,111,117,114,99,101,32,99,111,100, - 101,46,78,114,10,0,0,0,114,172,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,15,3,0,0,115,4,0,0, - 0,4,4,255,128,122,26,66,117,105,108,116,105,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,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,3,122,52,82,101,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,78,114,10,0, - 0,0,114,172,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,116,0,0,0,21,3,0,0,115, + 102,105,110,100,95,109,111,100,117,108,101,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, + 67,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, + 2,118,1,114,34,116,3,100,1,160,4,124,0,106,0,161, + 1,124,0,106,0,100,2,141,2,130,1,116,5,116,6,106, + 7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0,0,78,41,8, + 114,20,0,0,0,114,18,0,0,0,114,82,0,0,0,114, + 83,0,0,0,114,49,0,0,0,114,71,0,0,0,114,61, + 0,0,0,90,14,99,114,101,97,116,101,95,98,117,105,108, + 116,105,110,114,168,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,156,0,0,0,7,3,0,0, + 115,12,0,0,0,12,3,12,1,4,1,6,255,12,2,255, + 128,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,117,108,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 116,1,106,2,124,0,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,71,0,0,0, + 114,61,0,0,0,90,12,101,120,101,99,95,98,117,105,108, + 116,105,110,114,171,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,157,0,0,0,15,3,0,0, + 115,4,0,0,0,16,3,255,128,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,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,122,57,82,101,116,117, + 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,5,0,0,0,169,2,114,174,0, + 0,0,114,85,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,8,103,101,116,95,99,111,100,101, + 20,3,0,0,115,4,0,0,0,4,4,255,128,122,24,66, + 117,105,108,116,105,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, + 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,122,56,82,101,116, + 117,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,115,111,117,114,99,101,32, + 99,111,100,101,46,78,114,5,0,0,0,114,179,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 10,103,101,116,95,115,111,117,114,99,101,26,3,0,0,115, 4,0,0,0,4,4,255,128,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,18,114,1,0, - 0,0,114,0,0,0,0,114,2,0,0,0,114,3,0,0, - 0,114,139,0,0,0,218,12,115,116,97,116,105,99,109,101, - 116,104,111,100,114,100,0,0,0,218,11,99,108,97,115,115, - 109,101,116,104,111,100,114,170,0,0,0,114,171,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,87,0,0,0,114, - 173,0,0,0,114,174,0,0,0,114,116,0,0,0,114,98, - 0,0,0,114,156,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,162,0,0, - 0,211,2,0,0,115,48,0,0,0,8,0,4,2,4,7, - 2,2,10,1,2,8,12,1,2,8,12,1,2,11,10,1, - 2,7,10,1,2,4,2,1,12,1,2,4,2,1,12,1, - 2,4,2,1,12,1,12,4,255,128,114,162,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,144,0,0,0,101,0,90, - 1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,100, - 3,100,4,132,0,131,1,90,6,101,7,100,22,100,6,100, - 7,132,1,131,1,90,8,101,7,100,23,100,8,100,9,132, - 1,131,1,90,9,101,5,100,10,100,11,132,0,131,1,90, - 10,101,5,100,12,100,13,132,0,131,1,90,11,101,7,100, - 14,100,15,132,0,131,1,90,12,101,7,101,13,100,16,100, - 17,132,0,131,1,131,1,90,14,101,7,101,13,100,18,100, - 19,132,0,131,1,131,1,90,15,101,7,101,13,100,20,100, - 21,132,0,131,1,131,1,90,16,100,5,83,0,41,24,218, - 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, - 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, - 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, - 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, - 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, - 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, - 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, - 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,90, - 6,102,114,111,122,101,110,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,4,0,0,0,67,0,0,0, - 115,16,0,0,0,100,1,160,0,124,0,106,1,116,2,106, - 3,161,2,83,0,41,3,114,163,0,0,0,114,154,0,0, - 0,78,41,4,114,46,0,0,0,114,1,0,0,0,114,177, - 0,0,0,114,139,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,41,3,0,0,115,4,0,0,0,16,7,255,128,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, - 0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0, - 67,0,0,0,115,30,0,0,0,116,0,160,1,124,1,161, - 1,114,26,116,2,124,1,124,0,124,0,106,3,100,1,141, - 3,83,0,100,0,83,0,114,165,0,0,0,41,4,114,58, - 0,0,0,114,89,0,0,0,114,92,0,0,0,114,139,0, - 0,0,114,166,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,170,0,0,0,50,3,0,0,115, - 8,0,0,0,10,2,16,1,4,2,255,128,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,0,0, - 0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115, - 18,0,0,0,116,0,160,1,124,1,161,1,114,14,124,0, - 83,0,100,1,83,0,41,2,122,93,70,105,110,100,32,97, - 32,102,114,111,122,101,110,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,58,0,0,0,114, - 89,0,0,0,41,3,114,167,0,0,0,114,82,0,0,0, - 114,168,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,171,0,0,0,57,3,0,0,115,4,0, - 0,0,18,7,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0, - 100,1,83,0,41,2,122,42,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,114,161,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,150,0,0, - 0,66,3,0,0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,0,0,3,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,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,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,46,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,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,151,0,0,0,70,3,0,0,115,16,0,0, - 0,8,2,10,1,10,1,2,1,6,255,12,2,16,1,255, + 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,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,3,122,52,82,101,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,78, + 114,5,0,0,0,114,179,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,122,0,0,0,32,3, + 0,0,115,4,0,0,0,4,4,255,128,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,18, + 114,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, + 10,0,0,0,114,145,0,0,0,218,12,115,116,97,116,105, + 99,109,101,116,104,111,100,114,107,0,0,0,218,11,99,108, + 97,115,115,109,101,116,104,111,100,114,177,0,0,0,114,178, + 0,0,0,114,156,0,0,0,114,157,0,0,0,114,90,0, + 0,0,114,180,0,0,0,114,181,0,0,0,114,122,0,0, + 0,114,105,0,0,0,114,164,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 169,0,0,0,222,2,0,0,115,48,0,0,0,8,0,4, + 2,4,7,2,2,10,1,2,8,12,1,2,8,12,1,2, + 11,10,1,2,7,10,1,2,4,2,1,12,1,2,4,2, + 1,12,1,2,4,2,1,12,1,12,4,255,128,114,169,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,64,0,0,0,115,144,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4, + 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,22, + 100,6,100,7,132,1,131,1,90,8,101,7,100,23,100,8, + 100,9,132,1,131,1,90,9,101,5,100,10,100,11,132,0, + 131,1,90,10,101,5,100,12,100,13,132,0,131,1,90,11, + 101,7,100,14,100,15,132,0,131,1,90,12,101,7,101,13, + 100,16,100,17,132,0,131,1,131,1,90,14,101,7,101,13, + 100,18,100,19,132,0,131,1,131,1,90,15,101,7,101,13, + 100,20,100,21,132,0,131,1,131,1,90,16,100,5,83,0, + 41,24,218,14,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,122,142,77,101,116,97,32,112,97,116,104,32,105,109, + 112,111,114,116,32,102,111,114,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,115,46,10,10,32,32,32,32,65,108, + 108,32,109,101,116,104,111,100,115,32,97,114,101,32,101,105, + 116,104,101,114,32,99,108,97,115,115,32,111,114,32,115,116, + 97,116,105,99,32,109,101,116,104,111,100,115,32,116,111,32, + 97,118,111,105,100,32,116,104,101,32,110,101,101,100,32,116, + 111,10,32,32,32,32,105,110,115,116,97,110,116,105,97,116, + 101,32,116,104,101,32,99,108,97,115,115,46,10,10,32,32, + 32,32,90,6,102,114,111,122,101,110,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, + 0,0,0,115,16,0,0,0,100,1,160,0,124,0,106,1, + 116,2,106,3,161,2,83,0,41,3,114,170,0,0,0,114, + 160,0,0,0,78,41,4,114,49,0,0,0,114,9,0,0, + 0,114,184,0,0,0,114,145,0,0,0,41,1,218,1,109, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 107,0,0,0,52,3,0,0,115,4,0,0,0,16,7,255, 128,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,101,120,101,99,95,109,111,100,117,108,101,99,2,0, + 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5, + 0,0,0,67,0,0,0,115,30,0,0,0,116,0,160,1, + 124,1,161,1,114,26,116,2,124,1,124,0,124,0,106,3, + 100,1,141,3,83,0,100,0,83,0,114,172,0,0,0,41, + 4,114,61,0,0,0,114,92,0,0,0,114,98,0,0,0, + 114,145,0,0,0,114,173,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,177,0,0,0,61,3, + 0,0,115,8,0,0,0,10,2,16,1,4,2,255,128,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,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, + 0,0,115,18,0,0,0,116,0,160,1,124,1,161,1,114, + 14,124,0,83,0,100,1,83,0,41,2,122,93,70,105,110, + 100,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, + 32,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,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,61,0, + 0,0,114,92,0,0,0,41,3,114,174,0,0,0,114,85, + 0,0,0,114,175,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,178,0,0,0,68,3,0,0, + 115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114,168,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 156,0,0,0,77,3,0,0,115,4,0,0,0,4,0,255, + 128,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,0,0,0,0,0,0,3,0,0,0, + 4,0,0,0,67,0,0,0,115,64,0,0,0,124,0,106, + 0,106,1,125,1,116,2,160,3,124,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,91,0, + 0,0,41,10,114,113,0,0,0,114,20,0,0,0,114,61, + 0,0,0,114,92,0,0,0,114,83,0,0,0,114,49,0, + 0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0,114,20,0,0, + 0,218,4,99,111,100,101,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,157,0,0,0,81,3,0,0,115, + 16,0,0,0,8,2,10,1,10,1,2,1,6,255,12,2, + 16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, + 124,0,124,1,131,2,83,0,41,2,122,95,76,111,97,100, + 32,97,32,102,114,111,122,101,110,32,109,111,100,117,108,101, + 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 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,78,41,1,114,105, + 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,164,0,0,0,90,3,0,0, + 115,4,0,0,0,10,8,255,128,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,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41, + 2,114,61,0,0,0,114,186,0,0,0,114,179,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 180,0,0,0,100,3,0,0,115,4,0,0,0,10,4,255, + 128,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,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,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,5,0,0,0,114,179,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,181,0,0,0,106,3,0,0,115,4,0,0,0,4,4, + 255,128,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,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,124, - 1,131,2,83,0,41,2,122,95,76,111,97,100,32,97,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,1,114,98,0,0,0, - 114,172,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,156,0,0,0,79,3,0,0,115,4,0, - 0,0,10,7,255,128,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,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, - 116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2,114,58, - 0,0,0,114,179,0,0,0,114,172,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,173,0,0, - 0,88,3,0,0,115,4,0,0,0,10,4,255,128,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, - 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,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,172,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,174,0, - 0,0,94,3,0,0,115,4,0,0,0,4,4,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0,67, - 0,0,0,115,10,0,0,0,116,0,160,1,124,1,161,1, - 83,0,41,2,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,78,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, - 172,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,116,0,0,0,100,3,0,0,115,4,0,0, - 0,10,4,255,128,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,17,114,1,0,0,0,114,0, - 0,0,0,114,2,0,0,0,114,3,0,0,0,114,139,0, - 0,0,114,175,0,0,0,114,100,0,0,0,114,176,0,0, - 0,114,170,0,0,0,114,171,0,0,0,114,150,0,0,0, - 114,151,0,0,0,114,156,0,0,0,114,91,0,0,0,114, - 173,0,0,0,114,174,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,177,0,0,0,30,3,0,0,115,50,0,0,0, - 8,0,4,2,4,7,2,2,10,1,2,8,12,1,2,6, - 12,1,2,8,10,1,2,3,10,1,2,8,10,1,2,8, - 2,1,12,1,2,4,2,1,12,1,2,4,2,1,16,1, - 255,128,114,177,0,0,0,99,0,0,0,0,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,83,0,41,7,218,18,95,73,109,112,111,114,116, - 76,111,99,107,67,111,110,116,101,120,116,122,36,67,111,110, - 116,101,120,116,32,109,97,110,97,103,101,114,32,102,111,114, + 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, + 1,161,1,83,0,41,2,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,78,41,2,114,61,0,0,0,90, + 17,105,115,95,102,114,111,122,101,110,95,112,97,99,107,97, + 103,101,114,179,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,122,0,0,0,112,3,0,0,115, + 4,0,0,0,10,4,255,128,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,17,114,9,0,0, + 0,114,8,0,0,0,114,1,0,0,0,114,10,0,0,0, + 114,145,0,0,0,114,182,0,0,0,114,107,0,0,0,114, + 183,0,0,0,114,177,0,0,0,114,178,0,0,0,114,156, + 0,0,0,114,157,0,0,0,114,164,0,0,0,114,94,0, + 0,0,114,180,0,0,0,114,181,0,0,0,114,122,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,184,0,0,0,41,3,0,0,115,50, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, + 1,2,6,12,1,2,8,10,1,2,3,10,1,2,8,10, + 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, + 1,16,1,255,128,114,184,0,0,0,99,0,0,0,0,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,83,0,41,7,218,18,95,73,109,112, + 111,114,116,76,111,99,107,67,111,110,116,101,120,116,122,36, + 67,111,110,116,101,120,116,32,109,97,110,97,103,101,114,32, + 102,111,114,32,116,104,101,32,105,109,112,111,114,116,32,108, + 111,99,107,46,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,67,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,61,0, + 0,0,114,62,0,0,0,114,51,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,58,0,0,0, + 125,3,0,0,115,4,0,0,0,12,2,255,128,122,28,95, + 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, + 116,46,95,95,101,110,116,101,114,95,95,99,4,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0, + 67,0,0,0,115,12,0,0,0,116,0,160,1,161,0,1, + 0,100,1,83,0,41,2,122,60,82,101,108,101,97,115,101, 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,2,0,0,0,67,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,58,0,0,0,114, - 59,0,0,0,114,48,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,55,0,0,0,113,3,0, - 0,115,4,0,0,0,12,2,255,128,122,28,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,110,116,101,114,95,95,99,4,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,2,0,0,0,67,0,0, - 0,115,12,0,0,0,116,0,160,1,161,0,1,0,100,1, - 83,0,41,2,122,60,82,101,108,101,97,115,101,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,58,0,0,0,114,61,0,0,0,41, - 4,114,30,0,0,0,218,8,101,120,99,95,116,121,112,101, - 218,9,101,120,99,95,118,97,108,117,101,218,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,57,0,0,0,117,3, - 0,0,115,4,0,0,0,12,2,255,128,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, - 55,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,182,0, - 0,0,109,3,0,0,115,10,0,0,0,8,0,4,2,8, - 2,12,4,255,128,114,182,0,0,0,99,3,0,0,0,0, - 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,3,131,1,130,1,124,3,100,4, - 25,0,125,4,124,0,114,60,100,5,160,3,124,4,124,0, - 161,2,83,0,124,4,83,0,41,7,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,129, - 0,0,0,114,39,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,99,107,97,103,101,114,22,0,0, - 0,250,5,123,125,46,123,125,78,41,4,218,6,114,115,112, - 108,105,116,218,3,108,101,110,114,80,0,0,0,114,46,0, - 0,0,41,5,114,17,0,0,0,218,7,112,97,99,107,97, - 103,101,218,5,108,101,118,101,108,90,4,98,105,116,115,90, - 4,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,122,3,0,0,115,12,0,0,0,16,2,12,1, - 8,1,8,1,20,1,255,128,114,191,0,0,0,99,3,0, - 0,0,0,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,117,0,114,24,100, - 0,83,0,116,1,124,1,124,3,131,2,83,0,114,13,0, - 0,0,41,2,114,171,0,0,0,114,92,0,0,0,41,4, - 218,6,102,105,110,100,101,114,114,17,0,0,0,114,168,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,131,3,0,0,115,10,0, - 0,0,12,3,8,1,4,1,10,1,255,128,114,193,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,10,0,0,0,67,0,0,0,115,28,1,0,0,116, - 0,106,1,125,3,124,3,100,1,117,0,114,22,116,2,100, - 2,131,1,130,1,124,3,115,38,116,3,160,4,100,3,116, - 5,161,2,1,0,124,0,116,0,106,6,118,0,125,4,124, - 3,68,0,93,226,125,5,116,7,131,0,143,94,1,0,122, - 10,124,5,106,8,125,6,87,0,110,54,4,0,116,9,121, - 128,1,0,1,0,1,0,116,10,124,5,124,0,124,1,131, - 3,125,7,124,7,100,1,117,0,114,124,89,0,87,0,100, - 1,4,0,4,0,131,3,1,0,113,52,89,0,110,14,48, - 0,124,6,124,0,124,1,124,2,131,3,125,7,87,0,100, - 1,4,0,4,0,131,3,1,0,110,16,49,0,115,162,48, - 0,1,0,1,0,1,0,89,0,1,0,124,7,100,1,117, - 1,114,52,124,4,144,1,115,16,124,0,116,0,106,6,118, - 0,144,1,114,16,116,0,106,6,124,0,25,0,125,8,122, - 10,124,8,106,11,125,9,87,0,110,26,4,0,116,9,121, - 244,1,0,1,0,1,0,124,7,6,0,89,0,2,0,1, - 0,83,0,48,0,124,9,100,1,117,0,144,1,114,8,124, - 7,2,0,1,0,83,0,124,9,2,0,1,0,83,0,124, - 7,2,0,1,0,83,0,100,1,83,0,41,4,122,21,70, - 105,110,100,32,97,32,109,111,100,117,108,101,39,115,32,115, - 112,101,99,46,78,122,53,115,121,115,46,109,101,116,97,95, - 112,97,116,104,32,105,115,32,78,111,110,101,44,32,80,121, - 116,104,111,110,32,105,115,32,108,105,107,101,108,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,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,93,0,0,0, - 114,182,0,0,0,114,170,0,0,0,114,107,0,0,0,114, - 193,0,0,0,114,106,0,0,0,41,10,114,17,0,0,0, - 114,168,0,0,0,114,169,0,0,0,114,194,0,0,0,90, - 9,105,115,95,114,101,108,111,97,100,114,192,0,0,0,114, - 170,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,140,3, - 0,0,115,56,0,0,0,6,2,8,1,8,2,4,3,12, - 1,10,5,8,1,8,1,2,1,10,1,12,1,12,1,8, - 1,22,1,42,2,8,1,18,2,10,1,2,1,10,1,12, - 1,14,4,10,2,8,1,8,2,8,2,4,2,255,128,114, - 198,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,5,0,0,0,67,0,0,0,115,110,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,0,114,44,116,5,100,3,131,1,130,1,124,2, - 100,2,107,4,114,82,116,0,124,1,116,1,131,2,115,70, - 116,2,100,4,131,1,130,1,124,1,115,82,116,6,100,5, - 131,1,130,1,124,0,115,106,124,2,100,2,107,2,114,102, - 116,5,100,6,131,1,130,1,100,7,83,0,100,7,83,0, - 41,8,122,28,86,101,114,105,102,121,32,97,114,103,117,109, - 101,110,116,115,32,97,114,101,32,34,115,97,110,101,34,46, - 122,31,109,111,100,117,108,101,32,110,97,109,101,32,109,117, - 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,123, - 125,114,22,0,0,0,122,18,108,101,118,101,108,32,109,117, - 115,116,32,98,101,32,62,61,32,48,122,31,95,95,112,97, - 99,107,97,103,101,95,95,32,110,111,116,32,115,101,116,32, - 116,111,32,97,32,115,116,114,105,110,103,122,54,97,116,116, + 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,61,0,0,0,114,64,0, + 0,0,41,4,114,33,0,0,0,218,8,101,120,99,95,116, + 121,112,101,218,9,101,120,99,95,118,97,108,117,101,218,13, + 101,120,99,95,116,114,97,99,101,98,97,99,107,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,60,0,0, + 0,129,3,0,0,115,4,0,0,0,12,2,255,128,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,9, + 0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0, + 0,0,114,58,0,0,0,114,60,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,189,0,0,0,121,3,0,0,115,10,0,0,0,8,0, + 4,2,8,2,12,4,255,128,114,189,0,0,0,99,3,0, + 0,0,0,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,3,131,1,130,1,124, + 3,100,4,25,0,125,4,124,0,114,60,100,5,160,3,124, + 4,124,0,161,2,83,0,124,4,83,0,41,7,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,135,0,0,0,114,42,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,119,105,116,104,32,110,111,32,107, - 110,111,119,110,32,112,97,114,101,110,116,32,112,97,99,107, - 97,103,101,122,17,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,46,0,0,0,114,14,0,0,0,218, - 10,86,97,108,117,101,69,114,114,111,114,114,80,0,0,0, - 169,3,114,17,0,0,0,114,189,0,0,0,114,190,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,187, - 3,0,0,115,26,0,0,0,10,2,18,1,8,1,8,1, - 8,1,10,1,8,1,4,1,8,1,12,2,8,1,8,255, - 255,128,114,204,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,0,0,0,0,9,0,0,0, - 8,0,0,0,67,0,0,0,115,20,1,0,0,100,0,125, - 2,124,0,160,0,100,1,161,1,100,2,25,0,125,3,124, - 3,114,128,124,3,116,1,106,2,118,1,114,42,116,3,124, - 1,124,3,131,2,1,0,124,0,116,1,106,2,118,0,114, - 62,116,1,106,2,124,0,25,0,83,0,116,1,106,2,124, - 3,25,0,125,4,122,10,124,4,106,4,125,2,87,0,110, - 44,4,0,116,5,121,126,1,0,1,0,1,0,116,6,100, - 3,23,0,160,7,124,0,124,3,161,2,125,5,116,8,124, - 5,124,0,100,4,141,2,100,0,130,2,48,0,116,9,124, - 0,124,2,131,2,125,6,124,6,100,0,117,0,114,164,116, - 8,116,6,160,7,124,0,161,1,124,0,100,4,141,2,130, - 1,116,10,124,6,131,1,125,7,124,3,144,1,114,16,116, - 1,106,2,124,3,25,0,125,4,124,0,160,0,100,1,161, - 1,100,5,25,0,125,8,122,18,116,11,124,4,124,8,124, - 7,131,3,1,0,87,0,124,7,83,0,4,0,116,5,144, - 1,121,14,1,0,1,0,1,0,100,6,124,3,155,2,100, - 7,124,8,155,2,157,4,125,5,116,12,160,13,124,5,116, - 14,161,2,1,0,89,0,124,7,83,0,48,0,124,7,83, - 0,41,8,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,122,27,67,97,110,110,111,116,32,115,101,116,32,97,110, - 32,97,116,116,114,105,98,117,116,101,32,111,110,32,122,18, - 32,102,111,114,32,99,104,105,108,100,32,109,111,100,117,108, - 101,32,41,15,114,130,0,0,0,114,15,0,0,0,114,93, - 0,0,0,114,68,0,0,0,114,142,0,0,0,114,107,0, - 0,0,218,8,95,69,82,82,95,77,83,71,114,46,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,198,0,0,0,114,160,0,0,0, - 114,5,0,0,0,114,195,0,0,0,114,196,0,0,0,114, - 197,0,0,0,41,9,114,17,0,0,0,218,7,105,109,112, - 111,114,116,95,114,168,0,0,0,114,131,0,0,0,90,13, - 112,97,114,101,110,116,95,109,111,100,117,108,101,114,158,0, - 0,0,114,96,0,0,0,114,97,0,0,0,90,5,99,104, - 105,108,100,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,206,3,0,0,115, - 60,0,0,0,4,1,14,1,4,1,10,1,10,1,10,2, - 10,1,10,1,2,1,10,1,12,1,16,1,16,1,10,1, - 8,1,18,1,8,2,6,1,10,2,14,1,2,1,14,1, - 4,4,14,253,16,1,14,1,4,1,2,255,4,1,255,128, - 114,209,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,8,0,0,0,67,0,0,0,115,128, - 0,0,0,116,0,124,0,131,1,143,62,1,0,116,1,106, - 2,160,3,124,0,116,4,161,2,125,2,124,2,116,4,117, - 0,114,56,116,5,124,0,124,1,131,2,87,0,2,0,100, - 1,4,0,4,0,131,3,1,0,83,0,87,0,100,1,4, - 0,4,0,131,3,1,0,110,16,49,0,115,76,48,0,1, - 0,1,0,1,0,89,0,1,0,124,2,100,1,117,0,114, - 116,100,2,160,6,124,0,161,1,125,3,116,7,124,3,124, - 0,100,3,141,2,130,1,116,8,124,0,131,1,1,0,124, - 2,83,0,41,4,122,25,70,105,110,100,32,97,110,100,32, - 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,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,51,0,0,0,114,15,0,0,0,114,93,0,0, - 0,114,35,0,0,0,218,14,95,78,69,69,68,83,95,76, - 79,65,68,73,78,71,114,209,0,0,0,114,46,0,0,0, - 114,207,0,0,0,114,66,0,0,0,41,4,114,17,0,0, - 0,114,208,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,241, - 3,0,0,115,24,0,0,0,10,2,14,1,8,1,54,1, - 8,2,4,1,2,1,4,255,12,2,8,2,4,1,255,128, - 114,211,0,0,0,114,22,0,0,0,99,3,0,0,0,0, - 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,3,125,0,116,2,124,0,116,3,131,2, - 83,0,41,3,97,50,1,0,0,73,109,112,111,114,116,32, - 97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,109, - 111,100,117,108,101,32,98,97,115,101,100,32,111,110,32,105, - 116,115,32,110,97,109,101,44,32,116,104,101,32,112,97,99, - 107,97,103,101,32,116,104,101,32,99,97,108,108,32,105,115, - 10,32,32,32,32,98,101,105,110,103,32,109,97,100,101,32, - 102,114,111,109,44,32,97,110,100,32,116,104,101,32,108,101, - 118,101,108,32,97,100,106,117,115,116,109,101,110,116,46,10, - 10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,105, - 111,110,32,114,101,112,114,101,115,101,110,116,115,32,116,104, - 101,32,103,114,101,97,116,101,115,116,32,99,111,109,109,111, - 110,32,100,101,110,111,109,105,110,97,116,111,114,32,111,102, - 32,102,117,110,99,116,105,111,110,97,108,105,116,121,10,32, - 32,32,32,98,101,116,119,101,101,110,32,105,109,112,111,114, - 116,95,109,111,100,117,108,101,32,97,110,100,32,95,95,105, - 109,112,111,114,116,95,95,46,32,84,104,105,115,32,105,110, - 99,108,117,100,101,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, - 78,41,4,114,204,0,0,0,114,191,0,0,0,114,211,0, - 0,0,218,11,95,103,99,100,95,105,109,112,111,114,116,114, - 203,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,212,0,0,0,1,4,0,0,115,10,0,0, - 0,12,9,8,1,12,1,10,1,255,128,114,212,0,0,0, - 169,1,218,9,114,101,99,117,114,115,105,118,101,99,3,0, - 0,0,0,0,0,0,1,0,0,0,8,0,0,0,11,0, - 0,0,67,0,0,0,115,216,0,0,0,124,1,68,0,93, - 204,125,4,116,0,124,4,116,1,131,2,115,64,124,3,114, - 34,124,0,106,2,100,1,23,0,125,5,110,4,100,2,125, - 5,116,3,100,3,124,5,155,0,100,4,116,4,124,4,131, - 1,106,2,155,0,157,4,131,1,130,1,124,4,100,5,107, - 2,114,106,124,3,115,4,116,5,124,0,100,6,131,2,114, - 4,116,6,124,0,124,0,106,7,124,2,100,7,100,8,141, - 4,1,0,113,4,116,5,124,0,124,4,131,2,115,4,100, - 9,160,8,124,0,106,2,124,4,161,2,125,6,122,14,116, - 9,124,2,124,6,131,2,1,0,87,0,113,4,4,0,116, - 10,121,214,1,0,125,7,1,0,122,42,124,7,106,11,124, - 6,107,2,114,200,116,12,106,13,160,14,124,6,116,15,161, - 2,100,10,117,1,114,200,87,0,89,0,100,10,125,7,126, - 7,113,4,130,0,100,10,125,7,126,7,48,0,124,0,83, - 0,48,0,41,11,122,238,70,105,103,117,114,101,32,111,117, - 116,32,119,104,97,116,32,95,95,105,109,112,111,114,116,95, - 95,32,115,104,111,117,108,100,32,114,101,116,117,114,110,46, - 10,10,32,32,32,32,84,104,101,32,105,109,112,111,114,116, - 95,32,112,97,114,97,109,101,116,101,114,32,105,115,32,97, - 32,99,97,108,108,97,98,108,101,32,119,104,105,99,104,32, - 116,97,107,101,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,109,111,100,117,108,101,32,116,111,10,32,32,32,32, - 105,109,112,111,114,116,46,32,73,116,32,105,115,32,114,101, - 113,117,105,114,101,100,32,116,111,32,100,101,99,111,117,112, - 108,101,32,116,104,101,32,102,117,110,99,116,105,111,110,32, - 102,114,111,109,32,97,115,115,117,109,105,110,103,32,105,109, - 112,111,114,116,108,105,98,39,115,10,32,32,32,32,105,109, - 112,111,114,116,32,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,32,105,115,32,100,101,115,105,114,101,100,46,10, - 10,32,32,32,32,122,8,46,95,95,97,108,108,95,95,122, - 13,96,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,213,0,0,0,114,186, - 0,0,0,78,41,16,114,199,0,0,0,114,200,0,0,0, - 114,1,0,0,0,114,201,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,216,0,0,0,114,46,0,0,0, - 114,68,0,0,0,114,207,0,0,0,114,17,0,0,0,114, - 15,0,0,0,114,93,0,0,0,114,35,0,0,0,114,210, - 0,0,0,41,8,114,97,0,0,0,218,8,102,114,111,109, - 108,105,115,116,114,208,0,0,0,114,214,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,217,0,0,0,16,4,0,0, - 115,54,0,0,0,8,10,10,1,4,1,12,1,4,2,10, - 1,8,1,8,255,8,2,14,1,10,1,2,1,8,255,10, - 2,14,1,2,1,14,1,14,1,10,4,16,1,2,255,12, - 2,2,1,8,128,4,1,2,248,255,128,114,217,0,0,0, - 99,1,0,0,0,0,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,117,1,114,82,124,2,100,3,117,1, - 114,78,124,1,124,2,106,1,107,3,114,78,116,2,106,3, - 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, - 157,5,116,4,100,7,100,8,141,3,1,0,124,1,83,0, - 124,2,100,3,117,1,114,96,124,2,106,1,83,0,116,2, - 106,3,100,9,116,4,100,7,100,8,141,3,1,0,124,0, - 100,10,25,0,125,1,100,11,124,0,118,1,114,142,124,1, - 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, - 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, - 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, - 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, - 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, - 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, - 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, - 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, - 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,146,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, - 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, - 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, - 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, - 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,142,0,0,0,114,129,0,0,0,114,22, - 0,0,0,41,6,114,35,0,0,0,114,131,0,0,0,114, - 195,0,0,0,114,196,0,0,0,114,197,0,0,0,114,130, - 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,189, - 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,53,4,0,0,115,44, - 0,0,0,10,7,10,1,8,1,18,1,6,1,2,1,4, - 255,4,1,6,255,4,2,6,254,4,3,8,1,6,1,6, - 2,4,2,6,254,8,3,8,1,14,1,4,1,255,128,114, - 223,0,0,0,114,10,0,0,0,99,5,0,0,0,0,0, - 0,0,0,0,0,0,9,0,0,0,5,0,0,0,67,0, - 0,0,115,174,0,0,0,124,4,100,1,107,2,114,18,116, - 0,124,0,131,1,125,5,110,36,124,1,100,2,117,1,114, - 30,124,1,110,2,105,0,125,6,116,1,124,6,131,1,125, - 7,116,0,124,0,124,7,124,4,131,3,125,5,124,3,115, - 148,124,4,100,1,107,2,114,84,116,0,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,83,0,124,0,115,92,124, - 5,83,0,116,3,124,0,131,1,116,3,124,0,160,2,100, - 3,161,1,100,1,25,0,131,1,24,0,125,8,116,4,106, - 5,124,5,106,6,100,2,116,3,124,5,106,6,131,1,124, - 8,24,0,133,2,25,0,25,0,83,0,116,7,124,5,100, - 4,131,2,114,170,116,8,124,5,124,3,116,0,131,3,83, - 0,124,5,83,0,41,5,97,215,1,0,0,73,109,112,111, - 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, - 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, - 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, - 99,117,114,114,105,110,103,32,102,114,111,109,10,32,32,32, - 32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,101, - 32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,101, - 110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,84, - 104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,116, - 39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,105, - 102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,100, - 32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,98, - 117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,117, - 108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,116, - 32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,32, - 32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,32, - 32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,115, - 101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,101, - 32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,112, - 111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,101, - 108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,114, - 116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,46, - 46,112,107,103,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,129,0,0,0,114,142, - 0,0,0,41,9,114,212,0,0,0,114,223,0,0,0,218, - 9,112,97,114,116,105,116,105,111,110,114,188,0,0,0,114, - 15,0,0,0,114,93,0,0,0,114,1,0,0,0,114,4, - 0,0,0,114,217,0,0,0,41,9,114,17,0,0,0,114, - 222,0,0,0,218,6,108,111,99,97,108,115,114,218,0,0, - 0,114,190,0,0,0,114,97,0,0,0,90,8,103,108,111, - 98,97,108,115,95,114,189,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,80,4, - 0,0,115,32,0,0,0,8,11,10,1,16,2,8,1,12, - 1,4,1,8,3,18,1,4,1,4,1,26,4,30,3,10, - 1,12,1,4,2,255,128,114,226,0,0,0,99,1,0,0, - 0,0,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,117,0,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,162,0,0,0,114,170,0,0,0,114,80,0,0,0,114, - 160,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,117,4,0,0,115,10,0,0,0,10,1,8,1, - 12,1,8,1,255,128,114,227,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, - 67,0,0,0,115,164,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, - 0,68,0,93,70,92,2,125,3,125,4,116,5,124,4,124, - 2,131,2,114,26,124,3,116,1,106,6,118,0,114,60,116, - 7,125,5,110,16,116,0,160,8,124,3,161,1,114,26,116, - 9,125,5,110,0,116,10,124,4,124,5,131,2,125,6,116, - 11,124,6,124,4,131,2,1,0,113,26,116,1,106,3,116, - 12,25,0,125,7,100,1,68,0,93,46,125,8,124,8,116, - 1,106,3,118,1,114,136,116,13,124,8,131,1,125,9,110, - 10,116,1,106,3,124,8,25,0,125,9,116,14,124,7,124, - 8,124,9,131,3,1,0,113,112,100,2,83,0,41,3,122, - 250,83,101,116,117,112,32,105,109,112,111,114,116,108,105,98, - 32,98,121,32,105,109,112,111,114,116,105,110,103,32,110,101, - 101,100,101,100,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116, - 105,110,103,32,116,104,101,109,10,32,32,32,32,105,110,116, - 111,32,116,104,101,32,103,108,111,98,97,108,32,110,97,109, - 101,115,112,97,99,101,46,10,10,32,32,32,32,65,115,32, - 115,121,115,32,105,115,32,110,101,101,100,101,100,32,102,111, - 114,32,115,121,115,46,109,111,100,117,108,101,115,32,97,99, - 99,101,115,115,32,97,110,100,32,95,105,109,112,32,105,115, - 32,110,101,101,100,101,100,32,116,111,32,108,111,97,100,32, - 98,117,105,108,116,45,105,110,10,32,32,32,32,109,111,100, - 117,108,101,115,44,32,116,104,111,115,101,32,116,119,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,195,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,199,0,0,0,114, - 79,0,0,0,114,162,0,0,0,114,89,0,0,0,114,177, - 0,0,0,114,143,0,0,0,114,149,0,0,0,114,1,0, - 0,0,114,227,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,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,124,4,0,0,115,38, - 0,0,0,4,9,4,1,8,3,18,1,10,1,10,1,6, - 1,10,1,6,1,10,3,12,1,10,3,8,1,10,1,10, - 1,10,2,14,1,4,251,255,128,114,231,0,0,0,99,2, + 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,99,107,97,103,101,114, + 25,0,0,0,250,5,123,125,46,123,125,78,41,4,218,6, + 114,115,112,108,105,116,218,3,108,101,110,114,83,0,0,0, + 114,49,0,0,0,41,5,114,20,0,0,0,218,7,112,97, + 99,107,97,103,101,218,5,108,101,118,101,108,90,4,98,105, + 116,115,90,4,98,97,115,101,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,13,95,114,101,115,111,108,118, + 101,95,110,97,109,101,134,3,0,0,115,12,0,0,0,16, + 2,12,1,8,1,8,1,20,1,255,128,114,198,0,0,0, + 99,3,0,0,0,0,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,117,0, + 114,24,100,0,83,0,116,1,124,1,124,3,131,2,83,0, + 114,0,0,0,0,41,2,114,178,0,0,0,114,98,0,0, + 0,41,4,218,6,102,105,110,100,101,114,114,20,0,0,0, + 114,175,0,0,0,114,116,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,17,95,102,105,110,100, + 95,115,112,101,99,95,108,101,103,97,99,121,143,3,0,0, + 115,10,0,0,0,12,3,8,1,4,1,10,1,255,128,114, + 200,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,10,0,0,0,10,0,0,0,67,0,0,0,115,28,1, + 0,0,116,0,106,1,125,3,124,3,100,1,117,0,114,22, + 116,2,100,2,131,1,130,1,124,3,115,38,116,3,160,4, + 100,3,116,5,161,2,1,0,124,0,116,0,106,6,118,0, + 125,4,124,3,68,0,93,226,125,5,116,7,131,0,143,94, + 1,0,122,10,124,5,106,8,125,6,87,0,110,54,4,0, + 116,9,121,128,1,0,1,0,1,0,116,10,124,5,124,0, + 124,1,131,3,125,7,124,7,100,1,117,0,114,124,89,0, + 87,0,100,1,4,0,4,0,131,3,1,0,113,52,89,0, + 110,14,48,0,124,6,124,0,124,1,124,2,131,3,125,7, + 87,0,100,1,4,0,4,0,131,3,1,0,110,16,49,0, + 115,162,48,0,1,0,1,0,1,0,89,0,1,0,124,7, + 100,1,117,1,114,52,124,4,144,1,115,16,124,0,116,0, + 106,6,118,0,144,1,114,16,116,0,106,6,124,0,25,0, + 125,8,122,10,124,8,106,11,125,9,87,0,110,26,4,0, + 116,9,121,244,1,0,1,0,1,0,124,7,6,0,89,0, + 2,0,1,0,83,0,48,0,124,9,100,1,117,0,144,1, + 114,8,124,7,2,0,1,0,83,0,124,9,2,0,1,0, + 83,0,124,7,2,0,1,0,83,0,100,1,83,0,41,4, + 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, + 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, + 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, + 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, + 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,18,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,83,0,0,0,114,95, + 0,0,0,114,96,0,0,0,114,163,0,0,0,114,99,0, + 0,0,114,189,0,0,0,114,177,0,0,0,114,2,0,0, + 0,114,200,0,0,0,114,113,0,0,0,41,10,114,20,0, + 0,0,114,175,0,0,0,114,176,0,0,0,114,201,0,0, + 0,90,9,105,115,95,114,101,108,111,97,100,114,199,0,0, + 0,114,177,0,0,0,114,103,0,0,0,114,104,0,0,0, + 114,113,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, + 152,3,0,0,115,56,0,0,0,6,2,8,1,8,2,4, + 3,12,1,10,5,8,1,8,1,2,1,10,1,12,1,12, + 1,8,1,22,1,42,2,8,1,18,2,10,1,2,1,10, + 1,12,1,14,4,10,2,8,1,8,2,8,2,4,2,255, + 128,114,202,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,5,0,0,0,67,0,0,0,115, + 110,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,0,114,44,116,5,100,3,131,1,130,1, + 124,2,100,2,107,4,114,82,116,0,124,1,116,1,131,2, + 115,70,116,2,100,4,131,1,130,1,124,1,115,82,116,6, + 100,5,131,1,130,1,124,0,115,106,124,2,100,2,107,2, + 114,102,116,5,100,6,131,1,130,1,100,7,83,0,100,7, + 83,0,41,8,122,28,86,101,114,105,102,121,32,97,114,103, + 117,109,101,110,116,115,32,97,114,101,32,34,115,97,110,101, + 34,46,122,31,109,111,100,117,108,101,32,110,97,109,101,32, + 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, + 32,123,125,114,25,0,0,0,122,18,108,101,118,101,108,32, + 109,117,115,116,32,98,101,32,62,61,32,48,122,31,95,95, + 112,97,99,107,97,103,101,95,95,32,110,111,116,32,115,101, + 116,32,116,111,32,97,32,115,116,114,105,110,103,122,54,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,119,105,116,104,32,110,111, + 32,107,110,111,119,110,32,112,97,114,101,110,116,32,112,97, + 99,107,97,103,101,122,17,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,49,0,0,0,114,3,0,0, + 0,218,10,86,97,108,117,101,69,114,114,111,114,114,83,0, + 0,0,169,3,114,20,0,0,0,114,196,0,0,0,114,197, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, + 107,199,3,0,0,115,26,0,0,0,10,2,18,1,8,1, + 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, + 8,255,255,128,114,208,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,0,0,0,0,9,0, + 0,0,8,0,0,0,67,0,0,0,115,20,1,0,0,100, + 0,125,2,124,0,160,0,100,1,161,1,100,2,25,0,125, + 3,124,3,114,128,124,3,116,1,106,2,118,1,114,42,116, + 3,124,1,124,3,131,2,1,0,124,0,116,1,106,2,118, + 0,114,62,116,1,106,2,124,0,25,0,83,0,116,1,106, + 2,124,3,25,0,125,4,122,10,124,4,106,4,125,2,87, + 0,110,44,4,0,116,5,121,126,1,0,1,0,1,0,116, + 6,100,3,23,0,160,7,124,0,124,3,161,2,125,5,116, + 8,124,5,124,0,100,4,141,2,100,0,130,2,48,0,116, + 9,124,0,124,2,131,2,125,6,124,6,100,0,117,0,114, + 164,116,8,116,6,160,7,124,0,161,1,124,0,100,4,141, + 2,130,1,116,10,124,6,131,1,125,7,124,3,144,1,114, + 16,116,1,106,2,124,3,25,0,125,4,124,0,160,0,100, + 1,161,1,100,5,25,0,125,8,122,18,116,11,124,4,124, + 8,124,7,131,3,1,0,87,0,124,7,83,0,4,0,116, + 5,144,1,121,14,1,0,1,0,1,0,100,6,124,3,155, + 2,100,7,124,8,155,2,157,4,125,5,116,12,160,13,124, + 5,116,14,161,2,1,0,89,0,124,7,83,0,48,0,124, + 7,83,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0,233,2, + 0,0,0,122,27,67,97,110,110,111,116,32,115,101,116,32, + 97,110,32,97,116,116,114,105,98,117,116,101,32,111,110,32, + 122,18,32,102,111,114,32,99,104,105,108,100,32,109,111,100, + 117,108,101,32,41,15,114,136,0,0,0,114,18,0,0,0, + 114,99,0,0,0,114,71,0,0,0,114,148,0,0,0,114, + 2,0,0,0,218,8,95,69,82,82,95,77,83,71,114,49, + 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,202,0,0,0,114,167,0, + 0,0,114,12,0,0,0,114,95,0,0,0,114,96,0,0, + 0,114,163,0,0,0,41,9,114,20,0,0,0,218,7,105, + 109,112,111,114,116,95,114,175,0,0,0,114,137,0,0,0, + 90,13,112,97,114,101,110,116,95,109,111,100,117,108,101,114, + 102,0,0,0,114,103,0,0,0,114,104,0,0,0,90,5, + 99,104,105,108,100,114,5,0,0,0,114,5,0,0,0,114, + 6,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,218,3,0, + 0,115,60,0,0,0,4,1,14,1,4,1,10,1,10,1, + 10,2,10,1,10,1,2,1,10,1,12,1,16,1,16,1, + 10,1,8,1,18,1,8,2,6,1,10,2,14,1,2,1, + 14,1,4,4,14,253,16,1,14,1,4,1,2,255,4,1, + 255,128,114,213,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, + 115,128,0,0,0,116,0,124,0,131,1,143,62,1,0,116, + 1,106,2,160,3,124,0,116,4,161,2,125,2,124,2,116, + 4,117,0,114,56,116,5,124,0,124,1,131,2,87,0,2, + 0,100,1,4,0,4,0,131,3,1,0,83,0,87,0,100, + 1,4,0,4,0,131,3,1,0,110,16,49,0,115,76,48, + 0,1,0,1,0,1,0,89,0,1,0,124,2,100,1,117, + 0,114,116,100,2,160,6,124,0,161,1,125,3,116,7,124, + 3,124,0,100,3,141,2,130,1,116,8,124,0,131,1,1, + 0,124,2,83,0,41,4,122,25,70,105,110,100,32,97,110, + 100,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,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,19,0, + 0,0,41,9,114,54,0,0,0,114,18,0,0,0,114,99, + 0,0,0,114,38,0,0,0,218,14,95,78,69,69,68,83, + 95,76,79,65,68,73,78,71,114,213,0,0,0,114,49,0, + 0,0,114,211,0,0,0,114,69,0,0,0,41,4,114,20, + 0,0,0,114,212,0,0,0,114,104,0,0,0,114,79,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,253,3,0,0,115,24,0,0,0,10,2,14,1,8,1, + 54,1,8,2,4,1,2,1,4,255,12,2,8,2,4,1, + 255,128,114,215,0,0,0,114,25,0,0,0,99,3,0,0, + 0,0,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,3,125,0,116,2,124,0,116,3, + 131,2,83,0,41,3,97,50,1,0,0,73,109,112,111,114, + 116,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, + 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, + 32,105,116,115,32,110,97,109,101,44,32,116,104,101,32,112, + 97,99,107,97,103,101,32,116,104,101,32,99,97,108,108,32, + 105,115,10,32,32,32,32,98,101,105,110,103,32,109,97,100, + 101,32,102,114,111,109,44,32,97,110,100,32,116,104,101,32, + 108,101,118,101,108,32,97,100,106,117,115,116,109,101,110,116, + 46,10,10,32,32,32,32,84,104,105,115,32,102,117,110,99, + 116,105,111,110,32,114,101,112,114,101,115,101,110,116,115,32, + 116,104,101,32,103,114,101,97,116,101,115,116,32,99,111,109, + 109,111,110,32,100,101,110,111,109,105,110,97,116,111,114,32, + 111,102,32,102,117,110,99,116,105,111,110,97,108,105,116,121, + 10,32,32,32,32,98,101,116,119,101,101,110,32,105,109,112, + 111,114,116,95,109,111,100,117,108,101,32,97,110,100,32,95, + 95,105,109,112,111,114,116,95,95,46,32,84,104,105,115,32, + 105,110,99,108,117,100,101,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,25,0, + 0,0,78,41,4,114,208,0,0,0,114,198,0,0,0,114, + 215,0,0,0,218,11,95,103,99,100,95,105,109,112,111,114, + 116,114,207,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,216,0,0,0,13,4,0,0,115,10, + 0,0,0,12,9,8,1,12,1,10,1,255,128,114,216,0, + 0,0,169,1,218,9,114,101,99,117,114,115,105,118,101,99, + 3,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, + 11,0,0,0,67,0,0,0,115,216,0,0,0,124,1,68, + 0,93,204,125,4,116,0,124,4,116,1,131,2,115,64,124, + 3,114,34,124,0,106,2,100,1,23,0,125,5,110,4,100, + 2,125,5,116,3,100,3,124,5,155,0,100,4,116,4,124, + 4,131,1,106,2,155,0,157,4,131,1,130,1,124,4,100, + 5,107,2,114,106,124,3,115,4,116,5,124,0,100,6,131, + 2,114,4,116,6,124,0,124,0,106,7,124,2,100,7,100, + 8,141,4,1,0,113,4,116,5,124,0,124,4,131,2,115, + 4,100,9,160,8,124,0,106,2,124,4,161,2,125,6,122, + 14,116,9,124,2,124,6,131,2,1,0,87,0,113,4,4, + 0,116,10,121,214,1,0,125,7,1,0,122,42,124,7,106, + 11,124,6,107,2,114,200,116,12,106,13,160,14,124,6,116, + 15,161,2,100,10,117,1,114,200,87,0,89,0,100,10,125, + 7,126,7,113,4,130,0,100,10,125,7,126,7,48,0,124, + 0,83,0,48,0,41,11,122,238,70,105,103,117,114,101,32, + 111,117,116,32,119,104,97,116,32,95,95,105,109,112,111,114, + 116,95,95,32,115,104,111,117,108,100,32,114,101,116,117,114, + 110,46,10,10,32,32,32,32,84,104,101,32,105,109,112,111, + 114,116,95,32,112,97,114,97,109,101,116,101,114,32,105,115, + 32,97,32,99,97,108,108,97,98,108,101,32,119,104,105,99, + 104,32,116,97,107,101,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,109,111,100,117,108,101,32,116,111,10,32,32, + 32,32,105,109,112,111,114,116,46,32,73,116,32,105,115,32, + 114,101,113,117,105,114,101,100,32,116,111,32,100,101,99,111, + 117,112,108,101,32,116,104,101,32,102,117,110,99,116,105,111, + 110,32,102,114,111,109,32,97,115,115,117,109,105,110,103,32, + 105,109,112,111,114,116,108,105,98,39,115,10,32,32,32,32, + 105,109,112,111,114,116,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,105,115,32,100,101,115,105,114,101,100, + 46,10,10,32,32,32,32,122,8,46,95,95,97,108,108,95, + 95,122,13,96,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,217,0,0,0, + 114,193,0,0,0,78,41,16,114,203,0,0,0,114,204,0, + 0,0,114,9,0,0,0,114,205,0,0,0,114,3,0,0, + 0,114,11,0,0,0,218,16,95,104,97,110,100,108,101,95, + 102,114,111,109,108,105,115,116,114,220,0,0,0,114,49,0, + 0,0,114,71,0,0,0,114,211,0,0,0,114,20,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, + 114,214,0,0,0,41,8,114,104,0,0,0,218,8,102,114, + 111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,221,0,0,0,28,4, + 0,0,115,54,0,0,0,8,10,10,1,4,1,12,1,4, + 2,10,1,8,1,8,255,8,2,14,1,10,1,2,1,8, + 255,10,2,14,1,2,1,14,1,14,1,10,4,16,1,2, + 255,12,2,2,1,8,128,4,1,2,248,255,128,114,221,0, + 0,0,99,1,0,0,0,0,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,117,1,114,82,124,2,100,3, + 117,1,114,78,124,1,124,2,106,1,107,3,114,78,116,2, + 106,3,100,4,124,1,155,2,100,5,124,2,106,1,155,2, + 100,6,157,5,116,4,100,7,100,8,141,3,1,0,124,1, + 83,0,124,2,100,3,117,1,114,96,124,2,106,1,83,0, + 116,2,106,3,100,9,116,4,100,7,100,8,141,3,1,0, + 124,0,100,10,25,0,125,1,100,11,124,0,118,1,114,142, + 124,1,160,5,100,12,161,1,100,13,25,0,125,1,124,1, + 83,0,41,14,122,167,67,97,108,99,117,108,97,116,101,32, + 119,104,97,116,32,95,95,112,97,99,107,97,103,101,95,95, + 32,115,104,111,117,108,100,32,98,101,46,10,10,32,32,32, + 32,95,95,112,97,99,107,97,103,101,95,95,32,105,115,32, + 110,111,116,32,103,117,97,114,97,110,116,101,101,100,32,116, + 111,32,98,101,32,100,101,102,105,110,101,100,32,111,114,32, + 99,111,117,108,100,32,98,101,32,115,101,116,32,116,111,32, + 78,111,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,152,0, + 0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32,114,101, + 115,111,108,118,101,32,112,97,99,107,97,103,101,32,102,114, + 111,109,32,95,95,115,112,101,99,95,95,32,111,114,32,95, + 95,112,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,9,0,0,0,114,148,0,0,0,114,135,0,0,0, + 114,25,0,0,0,41,6,114,38,0,0,0,114,137,0,0, + 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, + 114,136,0,0,0,41,3,218,7,103,108,111,98,97,108,115, + 114,196,0,0,0,114,103,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,17,95,99,97,108,99, + 95,95,95,112,97,99,107,97,103,101,95,95,65,4,0,0, + 115,44,0,0,0,10,7,10,1,8,1,18,1,6,1,2, + 1,4,255,4,1,6,255,4,2,6,254,4,3,8,1,6, + 1,6,2,4,2,6,254,8,3,8,1,14,1,4,1,255, + 128,114,227,0,0,0,114,5,0,0,0,99,5,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, + 67,0,0,0,115,174,0,0,0,124,4,100,1,107,2,114, + 18,116,0,124,0,131,1,125,5,110,36,124,1,100,2,117, + 1,114,30,124,1,110,2,105,0,125,6,116,1,124,6,131, + 1,125,7,116,0,124,0,124,7,124,4,131,3,125,5,124, + 3,115,148,124,4,100,1,107,2,114,84,116,0,124,0,160, + 2,100,3,161,1,100,1,25,0,131,1,83,0,124,0,115, + 92,124,5,83,0,116,3,124,0,131,1,116,3,124,0,160, + 2,100,3,161,1,100,1,25,0,131,1,24,0,125,8,116, + 4,106,5,124,5,106,6,100,2,116,3,124,5,106,6,131, + 1,124,8,24,0,133,2,25,0,25,0,83,0,116,7,124, + 5,100,4,131,2,114,170,116,8,124,5,124,3,116,0,131, + 3,83,0,124,5,83,0,41,5,97,215,1,0,0,73,109, + 112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,115, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,115, + 101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,114, + 101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,32, + 111,99,99,117,114,114,105,110,103,32,102,114,111,109,10,32, + 32,32,32,116,111,32,104,97,110,100,108,101,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,115,46,32,84, + 104,101,32,39,108,111,99,97,108,115,39,32,97,114,103,117, + 109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,46, + 32,84,104,101,10,32,32,32,32,39,102,114,111,109,108,105, + 115,116,39,32,97,114,103,117,109,101,110,116,32,115,112,101, + 99,105,102,105,101,115,32,119,104,97,116,32,115,104,111,117, + 108,100,32,101,120,105,115,116,32,97,115,32,97,116,116,114, + 105,98,117,116,101,115,32,111,110,32,116,104,101,32,109,111, + 100,117,108,101,10,32,32,32,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,32,40,101,46,103,46,32,96,96, + 102,114,111,109,32,109,111,100,117,108,101,32,105,109,112,111, + 114,116,32,60,102,114,111,109,108,105,115,116,62,96,96,41, + 46,32,32,84,104,101,32,39,108,101,118,101,108,39,10,32, + 32,32,32,97,114,103,117,109,101,110,116,32,114,101,112,114, + 101,115,101,110,116,115,32,116,104,101,32,112,97,99,107,97, + 103,101,32,108,111,99,97,116,105,111,110,32,116,111,32,105, + 109,112,111,114,116,32,102,114,111,109,32,105,110,32,97,32, + 114,101,108,97,116,105,118,101,10,32,32,32,32,105,109,112, + 111,114,116,32,40,101,46,103,46,32,96,96,102,114,111,109, + 32,46,46,112,107,103,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,25,0,0,0,78,114,135,0,0,0, + 114,148,0,0,0,41,9,114,216,0,0,0,114,227,0,0, + 0,218,9,112,97,114,116,105,116,105,111,110,114,195,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, + 114,11,0,0,0,114,221,0,0,0,41,9,114,20,0,0, + 0,114,226,0,0,0,218,6,108,111,99,97,108,115,114,222, + 0,0,0,114,197,0,0,0,114,104,0,0,0,90,8,103, + 108,111,98,97,108,115,95,114,196,0,0,0,90,7,99,117, + 116,95,111,102,102,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,95,105,109,112,111,114,116,95,95, + 92,4,0,0,115,32,0,0,0,8,11,10,1,16,2,8, + 1,12,1,4,1,8,3,18,1,4,1,4,1,26,4,30, + 3,10,1,12,1,4,2,255,128,114,230,0,0,0,99,1, 0,0,0,0,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,106,2,160,3,116,5,161,1,1,0,100,1, - 83,0,41,2,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,231,0,0,0,114,15, - 0,0,0,114,194,0,0,0,114,120,0,0,0,114,162,0, - 0,0,114,177,0,0,0,41,2,114,229,0,0,0,114,230, - 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,159,4,0,0, - 115,8,0,0,0,10,2,12,2,16,1,255,128,114,232,0, - 0,0,99,0,0,0,0,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,1,0,100,2,83,0, - 41,3,122,57,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,101,114,115,32,116,104,97,116,32,114,101,113,117,105, - 114,101,32,101,120,116,101,114,110,97,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,127,0,0,0,114,232,0,0,0,114,15,0,0,0, - 114,93,0,0,0,114,1,0,0,0,41,1,114,233,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,167,4,0, - 0,115,8,0,0,0,8,3,4,1,20,1,255,128,114,234, - 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,53,114,3,0,0,0,114,23,0,0,0,114,195,0,0, - 0,114,65,0,0,0,114,127,0,0,0,114,12,0,0,0, - 114,18,0,0,0,114,60,0,0,0,114,34,0,0,0,114, - 44,0,0,0,114,19,0,0,0,114,20,0,0,0,114,50, - 0,0,0,114,51,0,0,0,114,54,0,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,143,0,0,0,114, - 149,0,0,0,114,153,0,0,0,114,108,0,0,0,114,94, - 0,0,0,114,159,0,0,0,114,160,0,0,0,114,95,0, - 0,0,114,162,0,0,0,114,177,0,0,0,114,182,0,0, - 0,114,191,0,0,0,114,193,0,0,0,114,198,0,0,0, - 114,204,0,0,0,90,15,95,69,82,82,95,77,83,71,95, - 80,82,69,70,73,88,114,206,0,0,0,114,209,0,0,0, - 218,6,111,98,106,101,99,116,114,210,0,0,0,114,211,0, - 0,0,114,212,0,0,0,114,217,0,0,0,114,223,0,0, - 0,114,226,0,0,0,114,227,0,0,0,114,231,0,0,0, - 114,232,0,0,0,114,234,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,1,0,0,0,115,104,0,0, - 0,4,0,4,25,4,1,4,1,4,3,8,3,8,8,4, - 8,4,2,16,3,14,4,14,77,14,21,8,16,8,37,8, - 17,14,11,8,8,8,11,8,12,8,16,14,36,16,101,10, - 26,14,45,8,72,8,17,8,17,8,30,8,37,8,42,14, - 15,14,75,14,79,8,13,8,9,10,9,8,47,4,16,8, - 1,8,2,6,32,8,3,10,16,14,15,8,37,10,27,8, - 37,8,7,8,35,12,8,255,128, + 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,117,0,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,169,0,0,0,114,177,0,0,0,114,83,0,0, + 0,114,167,0,0,0,41,2,114,20,0,0,0,114,103,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,18,95,98,117,105,108,116,105,110,95,102,114,111,109, + 95,110,97,109,101,129,4,0,0,115,10,0,0,0,10,1, + 8,1,12,1,8,1,255,128,114,231,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,5,0, + 0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125,3,125,4,116,5,124, + 4,124,2,131,2,114,26,124,3,116,1,106,6,118,0,114, + 60,116,7,125,5,110,16,116,0,160,8,124,3,161,1,114, + 26,116,9,125,5,110,0,116,10,124,4,124,5,131,2,125, + 6,116,11,124,6,124,4,131,2,1,0,113,26,116,1,106, + 3,116,12,25,0,125,7,100,1,68,0,93,46,125,8,124, + 8,116,1,106,3,118,1,114,136,116,13,124,8,131,1,125, + 9,110,10,116,1,106,3,124,8,25,0,125,9,116,14,124, + 7,124,8,124,9,131,3,1,0,113,112,100,2,83,0,41, + 3,122,250,83,101,116,117,112,32,105,109,112,111,114,116,108, + 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32, + 110,101,101,100,101,100,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,97,110,100,32,105,110,106,101, + 99,116,105,110,103,32,116,104,101,109,10,32,32,32,32,105, + 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110, + 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,65, + 115,32,115,121,115,32,105,115,32,110,101,101,100,101,100,32, + 102,111,114,32,115,121,115,46,109,111,100,117,108,101,115,32, + 97,99,99,101,115,115,32,97,110,100,32,95,105,109,112,32, + 105,115,32,110,101,101,100,101,100,32,116,111,32,108,111,97, + 100,32,98,117,105,108,116,45,105,110,10,32,32,32,32,109, + 111,100,117,108,101,115,44,32,116,104,111,115,101,32,116,119, + 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, + 26,0,0,0,114,95,0,0,0,114,68,0,0,0,78,41, + 15,114,61,0,0,0,114,18,0,0,0,114,3,0,0,0, + 114,99,0,0,0,218,5,105,116,101,109,115,114,203,0,0, + 0,114,82,0,0,0,114,169,0,0,0,114,92,0,0,0, + 114,184,0,0,0,114,149,0,0,0,114,155,0,0,0,114, + 9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0, + 114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,6,95,115,101,116,117,112,136,4,0,0, + 115,38,0,0,0,4,9,4,1,8,3,18,1,10,1,10, + 1,6,1,10,1,6,1,10,3,12,1,10,3,8,1,10, + 1,10,1,10,2,14,1,4,251,255,128,114,235,0,0,0, + 99,2,0,0,0,0,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,106,2,160,3,116,5,161,1,1,0, + 100,1,83,0,41,2,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,235,0,0,0, + 114,18,0,0,0,114,201,0,0,0,114,126,0,0,0,114, + 169,0,0,0,114,184,0,0,0,41,2,114,233,0,0,0, + 114,234,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,8,95,105,110,115,116,97,108,108,171,4, + 0,0,115,8,0,0,0,10,2,12,2,16,1,255,128,114, + 236,0,0,0,99,0,0,0,0,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,1,0,100,2, + 83,0,41,3,122,57,73,110,115,116,97,108,108,32,105,109, + 112,111,114,116,101,114,115,32,116,104,97,116,32,114,101,113, + 117,105,114,101,32,101,120,116,101,114,110,97,108,32,102,105, + 108,101,115,121,115,116,101,109,32,97,99,99,101,115,115,114, + 25,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,133,0,0,0,114,236,0,0,0,114,18,0, + 0,0,114,99,0,0,0,114,9,0,0,0,41,1,114,237, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,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,179, + 4,0,0,115,8,0,0,0,8,3,4,1,20,1,255,128, + 114,238,0,0,0,41,2,78,78,41,1,78,41,2,78,114, + 25,0,0,0,41,4,78,78,114,5,0,0,0,114,25,0, + 0,0,41,54,114,10,0,0,0,114,7,0,0,0,114,26, + 0,0,0,114,95,0,0,0,114,68,0,0,0,114,133,0, + 0,0,114,17,0,0,0,114,21,0,0,0,114,63,0,0, + 0,114,37,0,0,0,114,47,0,0,0,114,22,0,0,0, + 114,23,0,0,0,114,53,0,0,0,114,54,0,0,0,114, + 57,0,0,0,114,69,0,0,0,114,71,0,0,0,114,80, + 0,0,0,114,90,0,0,0,114,94,0,0,0,114,105,0, + 0,0,114,118,0,0,0,114,119,0,0,0,114,98,0,0, + 0,114,149,0,0,0,114,155,0,0,0,114,159,0,0,0, + 114,114,0,0,0,114,100,0,0,0,114,166,0,0,0,114, + 167,0,0,0,114,101,0,0,0,114,169,0,0,0,114,184, + 0,0,0,114,189,0,0,0,114,198,0,0,0,114,200,0, + 0,0,114,202,0,0,0,114,208,0,0,0,90,15,95,69, + 82,82,95,77,83,71,95,80,82,69,70,73,88,114,210,0, + 0,0,114,213,0,0,0,218,6,111,98,106,101,99,116,114, + 214,0,0,0,114,215,0,0,0,114,216,0,0,0,114,221, + 0,0,0,114,227,0,0,0,114,230,0,0,0,114,231,0, + 0,0,114,235,0,0,0,114,236,0,0,0,114,238,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,106,0,0,0,4,0,8,22,4,9,4,1, + 4,1,4,3,8,3,8,8,4,8,4,2,16,3,14,4, + 14,77,14,21,8,16,8,37,8,17,14,11,8,8,8,11, + 8,12,8,19,14,36,16,101,10,26,14,45,8,72,8,17, + 8,17,8,30,8,36,8,45,14,15,14,75,14,80,8,13, + 8,9,10,9,8,47,4,16,8,1,8,2,6,32,8,3, + 10,16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, + 255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 8f18d208d2ec0..58dc10b6f35bc 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1179,13 +1179,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,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,2,122,26,84, - 104,105,115,32,109,111,100,117,108,101,32,105,115,32,100,101, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, 112,114,101,99,97,116,101,100,46,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, 11,108,111,97,100,95,109,111,100,117,108,101,66,3,0,0, - 115,4,0,0,0,12,2,255,128,122,25,95,76,111,97,100, + 115,4,0,0,0,12,3,255,128,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,130,0,0,0,114,129,0,0, 0,114,131,0,0,0,114,132,0,0,0,114,186,0,0,0, @@ -1216,7 +1216,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,32,32,32,78,41,1,114,58,0,0,0,169, 2,114,123,0,0,0,114,52,0,0,0,114,7,0,0,0, 114,7,0,0,0,114,8,0,0,0,218,10,112,97,116,104, - 95,109,116,105,109,101,73,3,0,0,115,4,0,0,0,4, + 95,109,116,105,109,101,74,3,0,0,115,4,0,0,0,4, 6,255,128,122,23,83,111,117,114,99,101,76,111,97,100,101, 114,46,112,97,116,104,95,109,116,105,109,101,99,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, @@ -1250,7 +1250,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,100,46,10,32,32,32,32,32,32,32,32,114,173,0, 0,0,78,41,1,114,230,0,0,0,114,229,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, - 112,97,116,104,95,115,116,97,116,115,81,3,0,0,115,4, + 112,97,116,104,95,115,116,97,116,115,82,3,0,0,115,4, 0,0,0,14,12,255,128,122,23,83,111,117,114,99,101,76, 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, @@ -1274,7 +1274,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,114,123,0,0,0,114,112,0,0,0,90,10,99,97,99, 104,101,95,112,97,116,104,114,37,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,95,3,0,0, + 99,104,101,95,98,121,116,101,99,111,100,101,96,3,0,0, 115,4,0,0,0,12,8,255,128,122,28,83,111,117,114,99, 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98, 121,116,101,99,111,100,101,99,3,0,0,0,0,0,0,0, @@ -1291,7 +1291,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,7,0,0,0,41,3,114,123,0,0,0, 114,52,0,0,0,114,37,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,232,0,0,0,105,3, + 7,0,0,0,114,8,0,0,0,114,232,0,0,0,106,3, 0,0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,5, @@ -1312,7 +1312,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,178, 0,0,0,218,3,101,120,99,114,7,0,0,0,114,7,0, 0,0,114,8,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,112,3,0,0,115,26,0,0,0,10,2,2,1, + 114,99,101,113,3,0,0,115,26,0,0,0,10,2,2,1, 12,1,8,4,14,253,4,1,2,1,4,255,2,1,2,255, 8,128,2,255,255,128,122,23,83,111,117,114,99,101,76,111, 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,114, @@ -1335,7 +1335,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,37,0,0,0,114,52,0,0,0,114,237,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, 0,218,14,115,111,117,114,99,101,95,116,111,95,99,111,100, - 101,122,3,0,0,115,8,0,0,0,12,5,4,1,6,255, + 101,123,3,0,0,115,8,0,0,0,12,5,4,1,6,255, 255,128,122,27,83,111,117,114,99,101,76,111,97,100,101,114, 46,115,111,117,114,99,101,95,116,111,95,99,111,100,101,99, 2,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0, @@ -1412,7 +1412,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,220,0,0,0,130,3,0,0,115,160,0,0,0,10,7, + 114,220,0,0,0,131,3,0,0,115,160,0,0,0,10,7, 4,1,4,1,4,1,4,1,4,1,2,1,12,1,12,1, 12,1,2,2,14,1,12,1,8,1,12,2,2,1,14,1, 12,1,6,1,2,3,2,1,6,254,2,4,12,1,16,1, @@ -1429,7 +1429,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,233,0,0,0,114,232,0,0,0,114,236,0,0,0, 114,240,0,0,0,114,220,0,0,0,114,7,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,228, - 0,0,0,71,3,0,0,115,18,0,0,0,8,0,8,2, + 0,0,0,72,3,0,0,115,18,0,0,0,8,0,8,2, 8,8,8,14,8,10,8,7,14,10,12,8,255,128,114,228, 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,4,0,0,0,0,0,0,0,115,92,0,0, @@ -1456,7 +1456,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,10,32,32,32,32,32,32,32,32,102,105,110,100,101,114, 46,78,114,163,0,0,0,41,3,114,123,0,0,0,114,143, 0,0,0,114,52,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,216,0,0,0,220,3,0,0, + 0,0,114,8,0,0,0,114,216,0,0,0,221,3,0,0, 115,6,0,0,0,6,3,10,1,255,128,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,0,0,0,0,2,0,0, @@ -1466,7 +1466,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,99,108,97,115,115,95,95,114,136,0,0,0,169,2,114, 123,0,0,0,90,5,111,116,104,101,114,114,7,0,0,0, 114,7,0,0,0,114,8,0,0,0,218,6,95,95,101,113, - 95,95,226,3,0,0,115,8,0,0,0,12,1,10,1,2, + 95,95,227,3,0,0,115,8,0,0,0,12,1,10,1,2, 255,255,128,122,17,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,0, 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, @@ -1474,7 +1474,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 106,2,131,1,65,0,83,0,114,114,0,0,0,169,3,218, 4,104,97,115,104,114,121,0,0,0,114,52,0,0,0,169, 1,114,123,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,95,104,97,115,104,95,95,230, + 114,8,0,0,0,218,8,95,95,104,97,115,104,95,95,231, 3,0,0,115,4,0,0,0,20,1,255,128,122,19,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,0,0,0,0,2,0, @@ -1489,7 +1489,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,32,32,32,78,41,3,218,5,115,117,112,101, 114,114,246,0,0,0,114,227,0,0,0,114,226,0,0,0, 169,1,114,248,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,227,0,0,0,233,3,0,0,115,4,0,0,0,16, + 0,114,227,0,0,0,234,3,0,0,115,4,0,0,0,16, 10,255,128,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,0,0,0,0,2,0,0,0,1,0,0,0, @@ -1499,7 +1499,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78,114,56, 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,183,0,0,0,245,3,0,0, + 0,0,114,8,0,0,0,114,183,0,0,0,246,3,0,0, 115,4,0,0,0,6,3,255,128,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,0,0,0,0,3, @@ -1521,7 +1521,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,90,0,0,0,90,4,114,101,97,100,114,73,0,0,0, 41,3,114,123,0,0,0,114,52,0,0,0,114,76,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,234,0,0,0,250,3,0,0,115,14,0,0,0,14,2, + 114,234,0,0,0,251,3,0,0,115,14,0,0,0,14,2, 16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0,3,0, @@ -1533,7 +1533,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,0,0,41,3,114,123,0,0,0,114,223,0,0,0,114, 4,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,19,103,101,116,95,114,101,115,111,117,114,99, - 101,95,114,101,97,100,101,114,3,4,0,0,115,6,0,0, + 101,95,114,101,97,100,101,114,4,4,0,0,115,6,0,0, 0,12,2,8,1,255,128,122,30,70,105,108,101,76,111,97, 100,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, 95,114,101,97,100,101,114,41,13,114,130,0,0,0,114,129, @@ -1542,7 +1542,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,227,0,0,0,114,183,0,0,0,114,234,0,0,0, 114,5,1,0,0,90,13,95,95,99,108,97,115,115,99,101, 108,108,95,95,114,7,0,0,0,114,7,0,0,0,114,0, - 1,0,0,114,8,0,0,0,114,246,0,0,0,215,3,0, + 1,0,0,114,8,0,0,0,114,246,0,0,0,216,3,0, 0,115,26,0,0,0,8,0,4,2,8,3,8,6,8,4, 2,3,14,1,2,11,10,1,8,4,2,9,18,1,255,128, 114,246,0,0,0,99,0,0,0,0,0,0,0,0,0,0, @@ -1565,7 +1565,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,218,8,115,116,95,109,116,105,109,101,90,7,115,116, 95,115,105,122,101,41,3,114,123,0,0,0,114,52,0,0, 0,114,245,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,231,0,0,0,13,4,0,0,115,6, + 114,8,0,0,0,114,231,0,0,0,14,4,0,0,115,6, 0,0,0,8,2,14,1,255,128,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,0,0,0,0,0,0,0, @@ -1576,7 +1576,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 232,0,0,0,41,5,114,123,0,0,0,114,112,0,0,0, 114,111,0,0,0,114,37,0,0,0,114,60,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,233, - 0,0,0,18,4,0,0,115,6,0,0,0,8,2,16,1, + 0,0,0,19,4,0,0,115,6,0,0,0,8,2,16,1, 255,128,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,68,0,0,0,114,8,1,0,0,99,3, @@ -1611,7 +1611,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,218,6,112,97,114,101,110,116,114,101,0,0,0,114,47, 0,0,0,114,43,0,0,0,114,235,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,232,0,0, - 0,23,4,0,0,115,58,0,0,0,12,2,4,1,12,2, + 0,24,4,0,0,115,58,0,0,0,12,2,4,1,12,2, 12,1,12,1,12,2,10,1,2,1,14,1,12,1,4,2, 14,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, 18,1,14,1,8,2,2,1,18,255,8,128,2,254,4,255, @@ -1620,7 +1620,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,7,114,130,0,0,0,114,129,0,0,0,114,131,0,0, 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,6,1,0,0,9,4, + 7,0,0,0,114,8,0,0,0,114,6,1,0,0,10,4, 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, 5,255,128,114,6,1,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, @@ -1643,7 +1643,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, - 0,0,58,4,0,0,115,24,0,0,0,10,1,10,1,2, + 0,0,59,4,0,0,115,24,0,0,0,10,1,10,1,2, 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, 253,255,128,122,29,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,99,111, @@ -1653,14 +1653,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,236,0,0,0,74,4, + 7,0,0,0,114,8,0,0,0,114,236,0,0,0,75,4, 0,0,115,4,0,0,0,4,2,255,128,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, 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,12,1,0,0,54,4,0,0,115,10,0,0,0,8, + 0,114,12,1,0,0,55,4,0,0,115,10,0,0,0,8, 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, 0,0,0,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, @@ -1681,7 +1681,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,0,124,2,124,0,95,1,100,0,83,0,114,114,0,0, 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,216,0,0,0,87,4,0,0,115, + 0,114,8,0,0,0,114,216,0,0,0,88,4,0,0,115, 6,0,0,0,6,1,10,1,255,128,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, @@ -1690,7 +1690,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,22,124,0,106,1,124,1,106,1,107,2,83,0,114,114, 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, - 0,91,4,0,0,115,8,0,0,0,12,1,10,1,2,255, + 0,92,4,0,0,115,8,0,0,0,12,1,10,1,2,255, 255,128,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,0,0,0,0,1,0,0,0,3, @@ -1698,7 +1698,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 106,1,131,1,116,0,124,0,106,2,131,1,65,0,83,0, 114,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, - 0,0,0,95,4,0,0,115,4,0,0,0,20,1,255,128, + 0,0,0,96,4,0,0,115,4,0,0,0,20,1,255,128, 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,0,0,0,0,3,0,0,0,5, @@ -1715,7 +1715,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,219,0,0,0,98,4,0,0,115,16,0,0, + 0,0,0,114,219,0,0,0,99,4,0,0,115,16,0,0, 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, 128,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, @@ -1733,7 +1733,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, - 0,106,4,0,0,115,10,0,0,0,14,2,6,1,8,1, + 0,107,4,0,0,115,10,0,0,0,14,2,6,1,8,1, 8,255,255,128,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,0,0,0, @@ -1751,14 +1751,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, - 0,115,4,0,0,115,8,0,0,0,4,0,2,1,20,255, + 0,116,4,0,0,115,8,0,0,0,4,0,2,1,20,255, 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, - 114,186,0,0,0,112,4,0,0,115,10,0,0,0,14,2, + 114,186,0,0,0,113,4,0,0,115,10,0,0,0,14,2, 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,0,0, @@ -1769,7 +1769,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7, 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,220,0,0,0,118,4,0,0, + 0,0,114,8,0,0,0,114,220,0,0,0,119,4,0,0, 115,4,0,0,0,4,2,255,128,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,0,0,0, @@ -1780,14 +1780,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 118,101,32,110,111,32,115,111,117,114,99,101,32,99,111,100, 101,46,78,114,7,0,0,0,114,226,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, - 0,122,4,0,0,115,4,0,0,0,4,2,255,128,122,30, + 0,123,4,0,0,115,4,0,0,0,4,2,255,128,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,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,1,1,0,0,114,56,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,183,0,0,0,126,4,0,0,115,4,0,0,0,6,3, + 114,183,0,0,0,127,4,0,0,115,4,0,0,0,6,3, 255,128,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,130,0,0,0,114,129,0,0, @@ -1796,7 +1796,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,3,1,0,0,79,4,0,0,115,26,0,0,0,8, + 0,114,3,1,0,0,80,4,0,0,115,26,0,0,0,8, 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, @@ -1839,7 +1839,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,139,4,0,0,115,10,0,0,0,6,1,6,1,14, + 0,0,140,4,0,0,115,10,0,0,0,6,1,6,1,14, 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, @@ -1856,7 +1856,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, 114,8,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,145,4, + 101,110,116,95,112,97,116,104,95,110,97,109,101,115,146,4, 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, @@ -1870,7 +1870,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, - 0,155,4,0,0,115,6,0,0,0,12,1,16,1,255,128, + 0,156,4,0,0,115,6,0,0,0,12,1,16,1,255,128, 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,0,0,0,0,3,0, @@ -1886,7 +1886,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, - 108,97,116,101,159,4,0,0,115,18,0,0,0,12,2,10, + 108,97,116,101,160,4,0,0,115,18,0,0,0,12,2,10, 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, @@ -1895,7 +1895,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 161,0,131,1,83,0,114,114,0,0,0,41,2,218,4,105, 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, - 105,116,101,114,95,95,172,4,0,0,115,4,0,0,0,12, + 105,116,101,114,95,95,173,4,0,0,115,4,0,0,0,12, 1,255,128,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,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, @@ -1903,7 +1903,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,103,101,116,105,116,101,109,95,95,175,4,0,0, + 11,95,95,103,101,116,105,116,101,109,95,95,176,4,0,0, 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, 116,101,109,95,95,99,3,0,0,0,0,0,0,0,0,0, @@ -1912,7 +1912,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,114,0,0,0,41,1,114,20,1,0,0,41,3,114, 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 95,115,101,116,105,116,101,109,95,95,178,4,0,0,115,4, + 95,115,101,116,105,116,101,109,95,95,179,4,0,0,115,4, 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, 109,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, @@ -1920,7 +1920,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,116,0,124,0,160,1,161,0,131,1,83,0,114,114,0, 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,7,95,95,108,101,110,95,95,181,4,0,0,115, + 0,0,218,7,95,95,108,101,110,95,95,182,4,0,0,115, 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, @@ -1929,7 +1929,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,97,109,101,115,112,97,99,101,80,97,116,104,40,123,33, 114,125,41,41,2,114,70,0,0,0,114,20,1,0,0,114, 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,114,101,112,114,95,95,184,4,0, + 0,0,0,218,8,95,95,114,101,112,114,95,95,185,4,0, 0,115,4,0,0,0,12,1,255,128,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,0,0,0,0, @@ -1938,7 +1938,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,187,4,0,0,115,4,0,0,0,12,1,255,128,122,27, + 95,188,4,0,0,115,4,0,0,0,12,1,255,128,122,27, 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, @@ -1946,7 +1946,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,161,1,1,0,100,0,83,0,114,114,0,0,0,41,2, 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, - 0,0,0,190,4,0,0,115,4,0,0,0,16,1,255,128, + 0,0,0,191,4,0,0,115,4,0,0,0,16,1,255,128, 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,15,114,130,0,0,0,114, 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, @@ -1954,7 +1954,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,18,1,0,0,132,4, + 7,0,0,0,114,8,0,0,0,114,18,1,0,0,133,4, 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, 3,255,128,114,18,1,0,0,99,0,0,0,0,0,0,0, @@ -1971,7 +1971,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 131,3,124,0,95,1,100,0,83,0,114,114,0,0,0,41, 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 216,0,0,0,196,4,0,0,115,4,0,0,0,18,1,255, + 216,0,0,0,197,4,0,0,115,4,0,0,0,18,1,255, 128,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,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, @@ -1988,21 +1988,21 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,115,112,97,99,101,41,62,78,41,2,114,70,0,0,0, 114,130,0,0,0,41,1,114,223,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,199,4,0,0,115,4,0,0, + 117,108,101,95,114,101,112,114,200,4,0,0,115,4,0,0, 0,12,7,255,128,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,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,7,0,0,0,114,226, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,186,0,0,0,208,4,0,0,115,4,0,0,0, + 0,0,114,186,0,0,0,209,4,0,0,115,4,0,0,0, 4,1,255,128,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,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,10,0,0,0,114,7,0,0,0, 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,236,0,0,0,211,4,0,0,115,4,0, + 8,0,0,0,114,236,0,0,0,212,4,0,0,115,4,0, 0,0,4,1,255,128,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,0,0,0,0, @@ -2012,20 +2012,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,103,62,114,222,0,0,0,84,41,1,114,238,0,0,0, 41,1,114,239,0,0,0,114,226,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, - 214,4,0,0,115,4,0,0,0,16,1,255,128,122,25,95, + 215,4,0,0,115,4,0,0,0,16,1,255,128,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,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,217,0,0,0,114, 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,219,0,0,0,217,4,0, + 0,0,0,114,8,0,0,0,114,219,0,0,0,218,4,0, 0,115,4,0,0,0,4,0,255,128,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,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,114,0,0, 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,220, + 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,221, 4,0,0,115,4,0,0,0,4,1,255,128,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, @@ -2044,15 +2044,15 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, - 223,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, - 2,255,128,122,28,95,78,97,109,101,115,112,97,99,101,76, + 224,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, + 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131, 0,0,0,114,216,0,0,0,114,213,0,0,0,114,41,1, 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,40,1,0,0,195,4,0,0,115,22,0, + 8,0,0,0,114,40,1,0,0,196,4,0,0,115,22,0, 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, @@ -2089,7 +2089,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,99,104,101,218,5,105,116,101,109,115,114,133,0,0,0, 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,43,1,0,0,241,4,0,0,115,14,0,0, + 0,0,0,114,43,1,0,0,243,4,0,0,115,14,0,0, 0,22,4,8,1,10,1,10,1,10,1,4,252,255,128,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,1,0, @@ -2109,7 +2109,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,142,0,0,0,114,122,0,0,0,41,2,114,52,0,0, 0,90,4,104,111,111,107,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,11,95,112,97,116,104,95,104,111, - 111,107,115,251,4,0,0,115,18,0,0,0,16,3,12,1, + 111,107,115,253,4,0,0,115,18,0,0,0,16,3,12,1, 10,1,2,1,14,1,12,1,6,1,4,2,255,128,122,22, 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,0, @@ -2141,7 +2141,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,52,0,0,0,114,47,1,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,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,8,5,0,0,115,28,0,0,0,8,8,2,1,12, + 104,101,10,5,0,0,115,28,0,0,0,8,8,2,1,12, 1,12,1,8,3,2,1,12,1,4,4,12,253,10,1,12, 1,4,1,2,255,255,128,122,31,80,97,116,104,70,105,110, 100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,116, @@ -2159,7 +2159,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,47,1,0,0,114,144,0,0,0,114,145,0,0,0, 114,191,0,0,0,114,7,0,0,0,114,7,0,0,0,114, 8,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,30,5,0,0,115,20,0,0,0,10, + 116,95,115,112,101,99,32,5,0,0,115,20,0,0,0,10, 4,16,1,10,2,4,1,8,1,12,1,12,1,6,1,4, 1,255,128,122,27,80,97,116,104,70,105,110,100,101,114,46, 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, @@ -2190,7 +2190,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,97,109,101,115,112,97,99,101,95,112,97,116,104,90,5, 101,110,116,114,121,114,47,1,0,0,114,191,0,0,0,114, 145,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,9,95,103,101,116,95,115,112,101,99,45,5, + 0,0,0,218,9,95,103,101,116,95,115,112,101,99,47,5, 0,0,115,42,0,0,0,4,5,8,1,14,1,2,1,10, 1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,8, 1,6,1,8,1,8,1,12,5,12,2,6,1,4,1,255, @@ -2217,7 +2217,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,185,0,0,0,114,18,1,0,0,41,6,114,202,0,0, 0,114,143,0,0,0,114,52,0,0,0,114,206,0,0,0, 114,191,0,0,0,114,55,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,207,0,0,0,77,5, + 7,0,0,0,114,8,0,0,0,114,207,0,0,0,79,5, 0,0,115,28,0,0,0,8,6,6,1,14,1,8,1,4, 1,10,1,6,1,4,1,6,3,16,1,4,1,4,2,4, 2,255,128,122,20,80,97,116,104,70,105,110,100,101,114,46, @@ -2238,7 +2238,7 @@ 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,78,114,208,0,0,0,114,209,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,210,0, - 0,0,101,5,0,0,115,10,0,0,0,12,8,8,1,4, + 0,0,103,5,0,0,115,10,0,0,0,12,8,8,1,4, 1,6,1,255,128,122,22,80,97,116,104,70,105,110,100,101, 114,46,102,105,110,100,95,109,111,100,117,108,101,99,0,0, 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, @@ -2269,7 +2269,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,57,1,0,0,218,18,102,105,110,100,95,100,105,115,116, 114,105,98,117,116,105,111,110,115,41,3,114,124,0,0,0, 114,125,0,0,0,114,57,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,58,1,0,0,114,5, + 7,0,0,0,114,8,0,0,0,114,58,1,0,0,116,5, 0,0,115,6,0,0,0,12,10,16,1,255,128,122,29,80, 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,100, 105,115,116,114,105,98,117,116,105,111,110,115,41,1,78,41, @@ -2279,7 +2279,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,52,1,0,0,114,53,1,0,0,114,56,1,0,0,114, 207,0,0,0,114,210,0,0,0,114,58,1,0,0,114,7, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,42,1,0,0,237,4,0,0,115,38,0,0,0, + 0,0,114,42,1,0,0,239,4,0,0,115,38,0,0,0, 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, 2,21,10,1,2,14,12,1,2,31,12,1,2,23,12,1, 2,12,14,1,255,128,114,42,1,0,0,99,0,0,0,0, @@ -2324,7 +2324,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 14,125,1,124,1,136,0,102,2,86,0,1,0,113,2,100, 0,83,0,114,114,0,0,0,114,7,0,0,0,114,14,1, 0,0,169,1,114,144,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,9,0,0,0,143,5,0,0,115,4,0,0, + 0,0,0,114,9,0,0,0,145,5,0,0,115,4,0,0, 0,22,0,255,128,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,79,0, @@ -2337,7 +2337,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,111,97,100,101,114,95,100,101,116,97,105,108,115,90,7, 108,111,97,100,101,114,115,114,193,0,0,0,114,7,0,0, 0,114,60,1,0,0,114,8,0,0,0,114,216,0,0,0, - 137,5,0,0,115,18,0,0,0,4,4,12,1,26,1,6, + 139,5,0,0,115,18,0,0,0,4,4,12,1,26,1,6, 1,10,2,6,1,8,1,12,1,255,128,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,0,0,0,0,1,0,0, @@ -2347,7 +2347,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,111,114,121,32,109,116,105,109,101,46,114,109,0,0,0, 78,41,1,114,62,1,0,0,114,253,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,43,1,0, - 0,151,5,0,0,115,4,0,0,0,10,2,255,128,122,28, + 0,153,5,0,0,115,4,0,0,0,10,2,255,128,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,0,0,0,0,0,0,3,0,0,0,3,0,0, @@ -2370,7 +2370,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,207,0,0,0,114,144,0,0,0,114,182,0,0,0,41, 3,114,123,0,0,0,114,143,0,0,0,114,191,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 141,0,0,0,157,5,0,0,115,10,0,0,0,10,7,8, + 141,0,0,0,159,5,0,0,115,10,0,0,0,10,7,8, 1,8,1,16,1,255,128,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,0,0,0,0,7,0,0,0, @@ -2381,7 +2381,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,143,0,0,0,114,52,0,0,0,90,4,115,109, 115,108,114,206,0,0,0,114,144,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,56,1,0,0, - 169,5,0,0,115,10,0,0,0,10,1,8,1,2,1,6, + 171,5,0,0,115,10,0,0,0,10,1,8,1,2,1,6, 255,255,128,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,0, 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, @@ -2435,7 +2435,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,191,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,207,0,0,0,174,5,0,0,115,74,0,0,0,4, + 0,114,207,0,0,0,176,5,0,0,115,74,0,0,0,4, 5,14,1,2,1,24,1,12,1,10,1,10,1,8,1,6, 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, 1,8,1,10,1,8,1,24,1,8,4,14,2,16,1,16, @@ -2467,7 +2467,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 146,2,113,4,83,0,114,7,0,0,0,41,1,114,110,0, 0,0,41,2,114,5,0,0,0,90,2,102,110,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,13,0,0, - 0,251,5,0,0,115,4,0,0,0,20,0,255,128,122,41, + 0,253,5,0,0,115,4,0,0,0,20,0,255,128,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,52,0,0, @@ -2484,7 +2484,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,115,114,38,1,0,0,114,121,0,0,0,114,25,1,0, 0,114,15,1,0,0,90,8,110,101,119,95,110,97,109,101, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 67,1,0,0,222,5,0,0,115,38,0,0,0,6,2,2, + 67,1,0,0,224,5,0,0,115,38,0,0,0,6,2,2, 1,22,1,18,1,10,3,12,3,12,1,6,7,8,1,16, 1,4,1,18,1,4,2,12,1,6,1,12,1,20,1,4, 255,255,128,122,22,70,105,108,101,70,105,110,100,101,114,46, @@ -2523,14 +2523,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 169,2,114,202,0,0,0,114,66,1,0,0,114,7,0,0, 0,114,8,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, - 7,6,0,0,115,8,0,0,0,8,2,12,1,16,1,255, + 9,6,0,0,115,8,0,0,0,8,2,12,1,16,1,255, 128,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,78,114,7,0,0,0,41, 3,114,202,0,0,0,114,66,1,0,0,114,72,1,0,0, 114,7,0,0,0,114,71,1,0,0,114,8,0,0,0,218, - 9,112,97,116,104,95,104,111,111,107,253,5,0,0,115,6, + 9,112,97,116,104,95,104,111,111,107,255,5,0,0,115,6, 0,0,0,14,10,4,6,255,128,122,20,70,105,108,101,70, 105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,99, 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, @@ -2539,7 +2539,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2, 114,70,0,0,0,114,52,0,0,0,114,253,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,36, - 1,0,0,15,6,0,0,115,4,0,0,0,12,1,255,128, + 1,0,0,17,6,0,0,115,4,0,0,0,12,1,255,128, 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,130,0,0,0,114, 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, @@ -2547,7 +2547,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,141,0,0,0,114,56,1,0,0,114,207,0,0, 0,114,67,1,0,0,114,214,0,0,0,114,73,1,0,0, 114,36,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,59,1,0,0,128,5, + 7,0,0,0,114,8,0,0,0,114,59,1,0,0,130,5, 0,0,115,26,0,0,0,8,0,4,2,8,7,8,14,4, 4,8,2,8,12,10,5,8,48,2,31,10,1,12,17,255, 128,114,59,1,0,0,99,4,0,0,0,0,0,0,0,0, @@ -2571,7 +2571,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,109,101,90,9,99,112,97,116,104,110,97,109,101,114,144, 0,0,0,114,191,0,0,0,114,7,0,0,0,114,7,0, 0,0,114,8,0,0,0,218,14,95,102,105,120,95,117,112, - 95,109,111,100,117,108,101,21,6,0,0,115,36,0,0,0, + 95,109,111,100,117,108,101,23,6,0,0,115,36,0,0,0, 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, 4,1,14,1,2,1,8,1,8,1,8,1,14,1,12,1, 8,2,255,128,114,78,1,0,0,99,0,0,0,0,0,0, @@ -2591,7 +2591,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,94,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,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,188,0,0,0,44,6,0,0,115,10,0, + 8,0,0,0,114,188,0,0,0,46,6,0,0,115,10,0, 0,0,12,5,8,1,8,1,10,1,255,128,114,188,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, @@ -2599,7 +2599,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, 112,95,109,111,100,117,108,101,114,7,0,0,0,114,7,0, 0,0,114,8,0,0,0,218,21,95,115,101,116,95,98,111, - 111,116,115,116,114,97,112,95,109,111,100,117,108,101,55,6, + 111,116,115,116,114,97,112,95,109,111,100,117,108,101,57,6, 0,0,115,4,0,0,0,8,2,255,128,114,81,1,0,0, 99,1,0,0,0,0,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, @@ -2615,7 +2615,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,42,1,0,0,41,2,114,80,1,0,0,90, 17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, 114,115,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,8,95,105,110,115,116,97,108,108,60,6,0,0,115, + 0,218,8,95,105,110,115,116,97,108,108,62,6,0,0,115, 10,0,0,0,8,2,6,1,20,1,16,1,255,128,114,83, 1,0,0,41,1,114,68,0,0,0,41,1,78,41,3,78, 78,78,41,2,114,0,0,0,0,114,0,0,0,0,41,1, @@ -2662,7 +2662,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,10,1,8,2,6,2,8,2,16,2,8,71,8,40,8, 19,8,12,8,12,8,31,8,17,8,33,8,28,10,24,10, 13,10,10,8,11,6,14,4,3,2,1,12,255,14,68,14, - 64,16,29,0,127,14,17,18,50,18,45,18,25,14,53,14, - 63,14,42,0,127,14,20,0,127,10,22,8,23,8,11,12, + 64,16,30,0,127,14,17,18,50,18,45,18,25,14,53,14, + 63,14,43,0,127,14,20,0,127,10,22,8,23,8,11,12, 5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 79f9741b770fc..cf6e8902ddcfd 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -1,1007 +1,1019 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__zipimport[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,72,1,0,0,100,0, + 0,4,0,0,0,64,0,0,0,115,80,1,0,0,100,0, 90,0,100,1,100,2,108,1,90,2,100,1,100,3,108,1, 109,3,90,3,109,4,90,4,1,0,100,1,100,2,108,5, 90,6,100,1,100,2,108,7,90,7,100,1,100,2,108,8, 90,8,100,1,100,2,108,9,90,9,100,1,100,2,108,10, - 90,10,100,1,100,2,108,11,90,11,100,4,100,5,103,2, - 90,12,101,2,106,13,90,13,101,2,106,14,100,6,100,2, - 133,2,25,0,90,15,71,0,100,7,100,4,132,0,100,4, - 101,16,131,3,90,17,105,0,90,18,101,19,101,10,131,1, - 90,20,100,8,90,21,100,9,90,22,100,10,90,23,71,0, - 100,11,100,5,132,0,100,5,101,2,106,24,131,3,90,25, - 101,13,100,12,23,0,100,13,100,13,102,3,101,13,100,14, - 23,0,100,15,100,13,102,3,100,16,100,17,102,4,90,26, - 100,18,100,19,132,0,90,27,100,20,100,21,132,0,90,28, - 100,22,100,23,132,0,90,29,100,24,100,25,132,0,90,30, - 100,26,90,31,100,15,97,32,100,27,100,28,132,0,90,33, - 100,29,100,30,132,0,90,34,100,31,100,32,132,0,90,35, - 100,33,100,34,132,0,90,36,101,19,101,36,106,37,131,1, - 90,38,100,35,100,36,132,0,90,39,100,37,100,38,132,0, - 90,40,100,39,100,40,132,0,90,41,100,41,100,42,132,0, - 90,42,100,43,100,44,132,0,90,43,100,45,100,46,132,0, - 90,44,100,2,83,0,41,47,97,80,2,0,0,122,105,112, - 105,109,112,111,114,116,32,112,114,111,118,105,100,101,115,32, - 115,117,112,112,111,114,116,32,102,111,114,32,105,109,112,111, - 114,116,105,110,103,32,80,121,116,104,111,110,32,109,111,100, - 117,108,101,115,32,102,114,111,109,32,90,105,112,32,97,114, - 99,104,105,118,101,115,46,10,10,84,104,105,115,32,109,111, - 100,117,108,101,32,101,120,112,111,114,116,115,32,116,104,114, - 101,101,32,111,98,106,101,99,116,115,58,10,45,32,122,105, - 112,105,109,112,111,114,116,101,114,58,32,97,32,99,108,97, - 115,115,59,32,105,116,115,32,99,111,110,115,116,114,117,99, - 116,111,114,32,116,97,107,101,115,32,97,32,112,97,116,104, - 32,116,111,32,97,32,90,105,112,32,97,114,99,104,105,118, - 101,46,10,45,32,90,105,112,73,109,112,111,114,116,69,114, - 114,111,114,58,32,101,120,99,101,112,116,105,111,110,32,114, - 97,105,115,101,100,32,98,121,32,122,105,112,105,109,112,111, - 114,116,101,114,32,111,98,106,101,99,116,115,46,32,73,116, - 39,115,32,97,10,32,32,115,117,98,99,108,97,115,115,32, - 111,102,32,73,109,112,111,114,116,69,114,114,111,114,44,32, - 115,111,32,105,116,32,99,97,110,32,98,101,32,99,97,117, - 103,104,116,32,97,115,32,73,109,112,111,114,116,69,114,114, - 111,114,44,32,116,111,111,46,10,45,32,95,122,105,112,95, - 100,105,114,101,99,116,111,114,121,95,99,97,99,104,101,58, - 32,97,32,100,105,99,116,44,32,109,97,112,112,105,110,103, - 32,97,114,99,104,105,118,101,32,112,97,116,104,115,32,116, - 111,32,122,105,112,32,100,105,114,101,99,116,111,114,121,10, - 32,32,105,110,102,111,32,100,105,99,116,115,44,32,97,115, - 32,117,115,101,100,32,105,110,32,122,105,112,105,109,112,111, - 114,116,101,114,46,95,102,105,108,101,115,46,10,10,73,116, - 32,105,115,32,117,115,117,97,108,108,121,32,110,111,116,32, - 110,101,101,100,101,100,32,116,111,32,117,115,101,32,116,104, - 101,32,122,105,112,105,109,112,111,114,116,32,109,111,100,117, - 108,101,32,101,120,112,108,105,99,105,116,108,121,59,32,105, - 116,32,105,115,10,117,115,101,100,32,98,121,32,116,104,101, - 32,98,117,105,108,116,105,110,32,105,109,112,111,114,116,32, - 109,101,99,104,97,110,105,115,109,32,102,111,114,32,115,121, - 115,46,112,97,116,104,32,105,116,101,109,115,32,116,104,97, - 116,32,97,114,101,32,112,97,116,104,115,10,116,111,32,90, - 105,112,32,97,114,99,104,105,118,101,115,46,10,233,0,0, - 0,0,78,41,2,218,14,95,117,110,112,97,99,107,95,117, - 105,110,116,49,54,218,14,95,117,110,112,97,99,107,95,117, - 105,110,116,51,50,218,14,90,105,112,73,109,112,111,114,116, - 69,114,114,111,114,218,11,122,105,112,105,109,112,111,114,116, - 101,114,233,1,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0, - 115,12,0,0,0,101,0,90,1,100,0,90,2,100,1,83, - 0,41,2,114,3,0,0,0,78,41,3,218,8,95,95,110, - 97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,95, - 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,169, - 0,114,9,0,0,0,114,9,0,0,0,250,18,60,102,114, - 111,122,101,110,32,122,105,112,105,109,112,111,114,116,62,114, - 3,0,0,0,33,0,0,0,115,6,0,0,0,8,0,4, - 1,255,128,233,22,0,0,0,115,4,0,0,0,80,75,5, - 6,105,255,255,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, - 118,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,27,100,5,100,6,132,1, - 90,5,100,28,100,7,100,8,132,1,90,6,100,29,100,9, - 100,10,132,1,90,7,100,11,100,12,132,0,90,8,100,13, - 100,14,132,0,90,9,100,15,100,16,132,0,90,10,100,17, - 100,18,132,0,90,11,100,19,100,20,132,0,90,12,100,21, - 100,22,132,0,90,13,100,23,100,24,132,0,90,14,100,25, - 100,26,132,0,90,15,100,4,83,0,41,30,114,4,0,0, - 0,97,255,1,0,0,122,105,112,105,109,112,111,114,116,101, - 114,40,97,114,99,104,105,118,101,112,97,116,104,41,32,45, - 62,32,122,105,112,105,109,112,111,114,116,101,114,32,111,98, - 106,101,99,116,10,10,32,32,32,32,67,114,101,97,116,101, - 32,97,32,110,101,119,32,122,105,112,105,109,112,111,114,116, - 101,114,32,105,110,115,116,97,110,99,101,46,32,39,97,114, - 99,104,105,118,101,112,97,116,104,39,32,109,117,115,116,32, - 98,101,32,97,32,112,97,116,104,32,116,111,10,32,32,32, - 32,97,32,122,105,112,102,105,108,101,44,32,111,114,32,116, - 111,32,97,32,115,112,101,99,105,102,105,99,32,112,97,116, - 104,32,105,110,115,105,100,101,32,97,32,122,105,112,102,105, - 108,101,46,32,70,111,114,32,101,120,97,109,112,108,101,44, - 32,105,116,32,99,97,110,32,98,101,10,32,32,32,32,39, + 90,10,100,1,100,2,108,11,90,11,100,1,100,2,108,12, + 90,12,100,4,100,5,103,2,90,13,101,2,106,14,90,14, + 101,2,106,15,100,6,100,2,133,2,25,0,90,16,71,0, + 100,7,100,4,132,0,100,4,101,17,131,3,90,18,105,0, + 90,19,101,20,101,10,131,1,90,21,100,8,90,22,100,9, + 90,23,100,10,90,24,71,0,100,11,100,5,132,0,100,5, + 101,2,106,25,131,3,90,26,101,14,100,12,23,0,100,13, + 100,13,102,3,101,14,100,14,23,0,100,15,100,13,102,3, + 100,16,100,17,102,4,90,27,100,18,100,19,132,0,90,28, + 100,20,100,21,132,0,90,29,100,22,100,23,132,0,90,30, + 100,24,100,25,132,0,90,31,100,26,90,32,100,15,97,33, + 100,27,100,28,132,0,90,34,100,29,100,30,132,0,90,35, + 100,31,100,32,132,0,90,36,100,33,100,34,132,0,90,37, + 101,20,101,37,106,38,131,1,90,39,100,35,100,36,132,0, + 90,40,100,37,100,38,132,0,90,41,100,39,100,40,132,0, + 90,42,100,41,100,42,132,0,90,43,100,43,100,44,132,0, + 90,44,100,45,100,46,132,0,90,45,100,2,83,0,41,47, + 97,80,2,0,0,122,105,112,105,109,112,111,114,116,32,112, + 114,111,118,105,100,101,115,32,115,117,112,112,111,114,116,32, + 102,111,114,32,105,109,112,111,114,116,105,110,103,32,80,121, + 116,104,111,110,32,109,111,100,117,108,101,115,32,102,114,111, + 109,32,90,105,112,32,97,114,99,104,105,118,101,115,46,10, + 10,84,104,105,115,32,109,111,100,117,108,101,32,101,120,112, + 111,114,116,115,32,116,104,114,101,101,32,111,98,106,101,99, + 116,115,58,10,45,32,122,105,112,105,109,112,111,114,116,101, + 114,58,32,97,32,99,108,97,115,115,59,32,105,116,115,32, + 99,111,110,115,116,114,117,99,116,111,114,32,116,97,107,101, + 115,32,97,32,112,97,116,104,32,116,111,32,97,32,90,105, + 112,32,97,114,99,104,105,118,101,46,10,45,32,90,105,112, + 73,109,112,111,114,116,69,114,114,111,114,58,32,101,120,99, + 101,112,116,105,111,110,32,114,97,105,115,101,100,32,98,121, + 32,122,105,112,105,109,112,111,114,116,101,114,32,111,98,106, + 101,99,116,115,46,32,73,116,39,115,32,97,10,32,32,115, + 117,98,99,108,97,115,115,32,111,102,32,73,109,112,111,114, + 116,69,114,114,111,114,44,32,115,111,32,105,116,32,99,97, + 110,32,98,101,32,99,97,117,103,104,116,32,97,115,32,73, + 109,112,111,114,116,69,114,114,111,114,44,32,116,111,111,46, + 10,45,32,95,122,105,112,95,100,105,114,101,99,116,111,114, + 121,95,99,97,99,104,101,58,32,97,32,100,105,99,116,44, + 32,109,97,112,112,105,110,103,32,97,114,99,104,105,118,101, + 32,112,97,116,104,115,32,116,111,32,122,105,112,32,100,105, + 114,101,99,116,111,114,121,10,32,32,105,110,102,111,32,100, + 105,99,116,115,44,32,97,115,32,117,115,101,100,32,105,110, + 32,122,105,112,105,109,112,111,114,116,101,114,46,95,102,105, + 108,101,115,46,10,10,73,116,32,105,115,32,117,115,117,97, + 108,108,121,32,110,111,116,32,110,101,101,100,101,100,32,116, + 111,32,117,115,101,32,116,104,101,32,122,105,112,105,109,112, + 111,114,116,32,109,111,100,117,108,101,32,101,120,112,108,105, + 99,105,116,108,121,59,32,105,116,32,105,115,10,117,115,101, + 100,32,98,121,32,116,104,101,32,98,117,105,108,116,105,110, + 32,105,109,112,111,114,116,32,109,101,99,104,97,110,105,115, + 109,32,102,111,114,32,115,121,115,46,112,97,116,104,32,105, + 116,101,109,115,32,116,104,97,116,32,97,114,101,32,112,97, + 116,104,115,10,116,111,32,90,105,112,32,97,114,99,104,105, + 118,101,115,46,10,233,0,0,0,0,78,41,2,218,14,95, + 117,110,112,97,99,107,95,117,105,110,116,49,54,218,14,95, + 117,110,112,97,99,107,95,117,105,110,116,51,50,218,14,90, + 105,112,73,109,112,111,114,116,69,114,114,111,114,218,11,122, + 105,112,105,109,112,111,114,116,101,114,233,1,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,64,0,0,0,115,12,0,0,0,101,0,90, + 1,100,0,90,2,100,1,83,0,41,2,114,3,0,0,0, + 78,41,3,218,8,95,95,110,97,109,101,95,95,218,10,95, + 95,109,111,100,117,108,101,95,95,218,12,95,95,113,117,97, + 108,110,97,109,101,95,95,169,0,114,9,0,0,0,114,9, + 0,0,0,250,18,60,102,114,111,122,101,110,32,122,105,112, + 105,109,112,111,114,116,62,114,3,0,0,0,34,0,0,0, + 115,6,0,0,0,8,0,4,1,255,128,233,22,0,0,0, + 115,4,0,0,0,80,75,5,6,105,255,255,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,64,0,0,0,115,118,0,0,0,101,0,90,1, + 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4, + 100,27,100,5,100,6,132,1,90,5,100,28,100,7,100,8, + 132,1,90,6,100,29,100,9,100,10,132,1,90,7,100,11, + 100,12,132,0,90,8,100,13,100,14,132,0,90,9,100,15, + 100,16,132,0,90,10,100,17,100,18,132,0,90,11,100,19, + 100,20,132,0,90,12,100,21,100,22,132,0,90,13,100,23, + 100,24,132,0,90,14,100,25,100,26,132,0,90,15,100,4, + 83,0,41,30,114,4,0,0,0,97,255,1,0,0,122,105, + 112,105,109,112,111,114,116,101,114,40,97,114,99,104,105,118, + 101,112,97,116,104,41,32,45,62,32,122,105,112,105,109,112, + 111,114,116,101,114,32,111,98,106,101,99,116,10,10,32,32, + 32,32,67,114,101,97,116,101,32,97,32,110,101,119,32,122, + 105,112,105,109,112,111,114,116,101,114,32,105,110,115,116,97, + 110,99,101,46,32,39,97,114,99,104,105,118,101,112,97,116, + 104,39,32,109,117,115,116,32,98,101,32,97,32,112,97,116, + 104,32,116,111,10,32,32,32,32,97,32,122,105,112,102,105, + 108,101,44,32,111,114,32,116,111,32,97,32,115,112,101,99, + 105,102,105,99,32,112,97,116,104,32,105,110,115,105,100,101, + 32,97,32,122,105,112,102,105,108,101,46,32,70,111,114,32, + 101,120,97,109,112,108,101,44,32,105,116,32,99,97,110,32, + 98,101,10,32,32,32,32,39,47,116,109,112,47,109,121,105, + 109,112,111,114,116,46,122,105,112,39,44,32,111,114,32,39, 47,116,109,112,47,109,121,105,109,112,111,114,116,46,122,105, - 112,39,44,32,111,114,32,39,47,116,109,112,47,109,121,105, - 109,112,111,114,116,46,122,105,112,47,109,121,100,105,114,101, - 99,116,111,114,121,39,44,32,105,102,32,109,121,100,105,114, - 101,99,116,111,114,121,32,105,115,32,97,10,32,32,32,32, - 118,97,108,105,100,32,100,105,114,101,99,116,111,114,121,32, - 105,110,115,105,100,101,32,116,104,101,32,97,114,99,104,105, - 118,101,46,10,10,32,32,32,32,39,90,105,112,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,39,97,114,99,104,105,118,101,112,97, - 116,104,39,32,100,111,101,115,110,39,116,32,112,111,105,110, - 116,32,116,111,32,97,32,118,97,108,105,100,32,90,105,112, - 10,32,32,32,32,97,114,99,104,105,118,101,46,10,10,32, - 32,32,32,84,104,101,32,39,97,114,99,104,105,118,101,39, - 32,97,116,116,114,105,98,117,116,101,32,111,102,32,122,105, - 112,105,109,112,111,114,116,101,114,32,111,98,106,101,99,116, - 115,32,99,111,110,116,97,105,110,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,10,32,32,32,32,122, - 105,112,102,105,108,101,32,116,97,114,103,101,116,101,100,46, - 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,9,0,0,0,67,0,0,0,115,32, - 1,0,0,116,0,124,1,116,1,131,2,115,28,100,1,100, - 0,108,2,125,2,124,2,160,3,124,1,161,1,125,1,124, - 1,115,44,116,4,100,2,124,1,100,3,141,2,130,1,116, - 5,114,60,124,1,160,6,116,5,116,7,161,2,125,1,103, - 0,125,3,122,14,116,8,160,9,124,1,161,1,125,4,87, - 0,110,70,4,0,116,10,116,11,102,2,121,148,1,0,1, - 0,1,0,116,8,160,12,124,1,161,1,92,2,125,5,125, - 6,124,5,124,1,107,2,114,130,116,4,100,4,124,1,100, - 3,141,2,130,1,124,5,125,1,124,3,160,13,124,6,161, - 1,1,0,89,0,113,64,48,0,124,4,106,14,100,5,64, - 0,100,6,107,3,114,176,116,4,100,4,124,1,100,3,141, - 2,130,1,122,12,116,15,124,1,25,0,125,7,87,0,110, - 34,4,0,116,16,121,222,1,0,1,0,1,0,116,17,124, - 1,131,1,125,7,124,7,116,15,124,1,60,0,89,0,110, - 2,48,0,124,7,124,0,95,18,124,1,124,0,95,19,116, - 8,106,20,124,3,100,0,100,0,100,7,133,3,25,0,142, - 0,124,0,95,21,124,0,106,21,144,1,114,28,124,0,4, - 0,106,21,116,7,55,0,2,0,95,21,100,0,83,0,100, - 0,83,0,41,8,78,114,0,0,0,0,122,21,97,114,99, - 104,105,118,101,32,112,97,116,104,32,105,115,32,101,109,112, - 116,121,169,1,218,4,112,97,116,104,122,14,110,111,116,32, - 97,32,90,105,112,32,102,105,108,101,105,0,240,0,0,105, - 0,128,0,0,233,255,255,255,255,41,22,218,10,105,115,105, - 110,115,116,97,110,99,101,218,3,115,116,114,218,2,111,115, - 90,8,102,115,100,101,99,111,100,101,114,3,0,0,0,218, - 12,97,108,116,95,112,97,116,104,95,115,101,112,218,7,114, - 101,112,108,97,99,101,218,8,112,97,116,104,95,115,101,112, - 218,19,95,98,111,111,116,115,116,114,97,112,95,101,120,116, - 101,114,110,97,108,90,10,95,112,97,116,104,95,115,116,97, - 116,218,7,79,83,69,114,114,111,114,218,10,86,97,108,117, - 101,69,114,114,111,114,90,11,95,112,97,116,104,95,115,112, - 108,105,116,218,6,97,112,112,101,110,100,90,7,115,116,95, - 109,111,100,101,218,20,95,122,105,112,95,100,105,114,101,99, - 116,111,114,121,95,99,97,99,104,101,218,8,75,101,121,69, - 114,114,111,114,218,15,95,114,101,97,100,95,100,105,114,101, - 99,116,111,114,121,218,6,95,102,105,108,101,115,218,7,97, - 114,99,104,105,118,101,218,10,95,112,97,116,104,95,106,111, - 105,110,218,6,112,114,101,102,105,120,41,8,218,4,115,101, - 108,102,114,13,0,0,0,114,17,0,0,0,114,31,0,0, - 0,90,2,115,116,90,7,100,105,114,110,97,109,101,90,8, - 98,97,115,101,110,97,109,101,218,5,102,105,108,101,115,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, - 95,95,105,110,105,116,95,95,63,0,0,0,115,60,0,0, - 0,10,1,8,1,10,1,4,1,12,1,4,1,12,1,4, - 2,2,2,14,1,16,1,14,3,8,1,12,1,4,1,16, - 1,14,3,12,2,2,3,12,1,12,1,8,1,14,1,6, - 1,6,1,22,2,8,1,18,1,4,255,255,128,122,20,122, - 105,112,105,109,112,111,114,116,101,114,46,95,95,105,110,105, - 116,95,95,78,99,3,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,4,0,0,0,67,0,0,0,115,78,0, - 0,0,116,0,124,0,124,1,131,2,125,3,124,3,100,1, - 117,1,114,26,124,0,103,0,102,2,83,0,116,1,124,0, - 124,1,131,2,125,4,116,2,124,0,124,4,131,2,114,70, - 100,1,124,0,106,3,155,0,116,4,155,0,124,4,155,0, - 157,3,103,1,102,2,83,0,100,1,103,0,102,2,83,0, - 41,2,97,47,2,0,0,102,105,110,100,95,108,111,97,100, - 101,114,40,102,117,108,108,110,97,109,101,44,32,112,97,116, - 104,61,78,111,110,101,41,32,45,62,32,115,101,108,102,44, - 32,115,116,114,32,111,114,32,78,111,110,101,46,10,10,32, - 32,32,32,32,32,32,32,83,101,97,114,99,104,32,102,111, - 114,32,97,32,109,111,100,117,108,101,32,115,112,101,99,105, - 102,105,101,100,32,98,121,32,39,102,117,108,108,110,97,109, - 101,39,46,32,39,102,117,108,108,110,97,109,101,39,32,109, - 117,115,116,32,98,101,32,116,104,101,10,32,32,32,32,32, - 32,32,32,102,117,108,108,121,32,113,117,97,108,105,102,105, - 101,100,32,40,100,111,116,116,101,100,41,32,109,111,100,117, - 108,101,32,110,97,109,101,46,32,73,116,32,114,101,116,117, - 114,110,115,32,116,104,101,32,122,105,112,105,109,112,111,114, - 116,101,114,10,32,32,32,32,32,32,32,32,105,110,115,116, - 97,110,99,101,32,105,116,115,101,108,102,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,119,97,115,32,102,111, - 117,110,100,44,32,97,32,115,116,114,105,110,103,32,99,111, - 110,116,97,105,110,105,110,103,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,32,112,97,116,104,32,110, - 97,109,101,32,105,102,32,105,116,39,115,32,112,111,115,115, - 105,98,108,121,32,97,32,112,111,114,116,105,111,110,32,111, - 102,32,97,32,110,97,109,101,115,112,97,99,101,32,112,97, - 99,107,97,103,101,44,10,32,32,32,32,32,32,32,32,111, - 114,32,78,111,110,101,32,111,116,104,101,114,119,105,115,101, - 46,32,84,104,101,32,111,112,116,105,111,110,97,108,32,39, - 112,97,116,104,39,32,97,114,103,117,109,101,110,116,32,105, - 115,32,105,103,110,111,114,101,100,32,45,45,32,105,116,39, - 115,10,32,32,32,32,32,32,32,32,116,104,101,114,101,32, - 102,111,114,32,99,111,109,112,97,116,105,98,105,108,105,116, - 121,32,119,105,116,104,32,116,104,101,32,105,109,112,111,114, - 116,101,114,32,112,114,111,116,111,99,111,108,46,10,10,32, - 32,32,32,32,32,32,32,68,101,112,114,101,99,97,116,101, - 100,32,115,105,110,99,101,32,80,121,116,104,111,110,32,51, - 46,49,48,46,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,32,32, - 32,32,32,32,32,32,78,41,5,218,16,95,103,101,116,95, - 109,111,100,117,108,101,95,105,110,102,111,218,16,95,103,101, - 116,95,109,111,100,117,108,101,95,112,97,116,104,218,7,95, - 105,115,95,100,105,114,114,29,0,0,0,114,20,0,0,0, - 41,5,114,32,0,0,0,218,8,102,117,108,108,110,97,109, - 101,114,13,0,0,0,218,2,109,105,218,7,109,111,100,112, - 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,11,102,105,110,100,95,108,111,97,100,101,114,109, - 0,0,0,115,16,0,0,0,10,12,8,1,8,2,10,7, - 10,1,24,4,8,2,255,128,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,108,111,97,100,101, - 114,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,4,0,0,0,67,0,0,0,115,16,0,0,0,124, - 0,160,0,124,1,124,2,161,2,100,1,25,0,83,0,41, - 3,97,203,1,0,0,102,105,110,100,95,109,111,100,117,108, - 101,40,102,117,108,108,110,97,109,101,44,32,112,97,116,104, - 61,78,111,110,101,41,32,45,62,32,115,101,108,102,32,111, - 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, - 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, - 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, - 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, - 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, + 112,47,109,121,100,105,114,101,99,116,111,114,121,39,44,32, + 105,102,32,109,121,100,105,114,101,99,116,111,114,121,32,105, + 115,32,97,10,32,32,32,32,118,97,108,105,100,32,100,105, + 114,101,99,116,111,114,121,32,105,110,115,105,100,101,32,116, + 104,101,32,97,114,99,104,105,118,101,46,10,10,32,32,32, + 32,39,90,105,112,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,39,97, + 114,99,104,105,118,101,112,97,116,104,39,32,100,111,101,115, + 110,39,116,32,112,111,105,110,116,32,116,111,32,97,32,118, + 97,108,105,100,32,90,105,112,10,32,32,32,32,97,114,99, + 104,105,118,101,46,10,10,32,32,32,32,84,104,101,32,39, + 97,114,99,104,105,118,101,39,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,122,105,112,105,109,112,111,114,116,101, + 114,32,111,98,106,101,99,116,115,32,99,111,110,116,97,105, + 110,115,32,116,104,101,32,110,97,109,101,32,111,102,32,116, + 104,101,10,32,32,32,32,122,105,112,102,105,108,101,32,116, + 97,114,103,101,116,101,100,46,10,32,32,32,32,99,2,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,9,0, + 0,0,67,0,0,0,115,32,1,0,0,116,0,124,1,116, + 1,131,2,115,28,100,1,100,0,108,2,125,2,124,2,160, + 3,124,1,161,1,125,1,124,1,115,44,116,4,100,2,124, + 1,100,3,141,2,130,1,116,5,114,60,124,1,160,6,116, + 5,116,7,161,2,125,1,103,0,125,3,122,14,116,8,160, + 9,124,1,161,1,125,4,87,0,110,70,4,0,116,10,116, + 11,102,2,121,148,1,0,1,0,1,0,116,8,160,12,124, + 1,161,1,92,2,125,5,125,6,124,5,124,1,107,2,114, + 130,116,4,100,4,124,1,100,3,141,2,130,1,124,5,125, + 1,124,3,160,13,124,6,161,1,1,0,89,0,113,64,48, + 0,124,4,106,14,100,5,64,0,100,6,107,3,114,176,116, + 4,100,4,124,1,100,3,141,2,130,1,122,12,116,15,124, + 1,25,0,125,7,87,0,110,34,4,0,116,16,121,222,1, + 0,1,0,1,0,116,17,124,1,131,1,125,7,124,7,116, + 15,124,1,60,0,89,0,110,2,48,0,124,7,124,0,95, + 18,124,1,124,0,95,19,116,8,106,20,124,3,100,0,100, + 0,100,7,133,3,25,0,142,0,124,0,95,21,124,0,106, + 21,144,1,114,28,124,0,4,0,106,21,116,7,55,0,2, + 0,95,21,100,0,83,0,100,0,83,0,41,8,78,114,0, + 0,0,0,122,21,97,114,99,104,105,118,101,32,112,97,116, + 104,32,105,115,32,101,109,112,116,121,169,1,218,4,112,97, + 116,104,122,14,110,111,116,32,97,32,90,105,112,32,102,105, + 108,101,105,0,240,0,0,105,0,128,0,0,233,255,255,255, + 255,41,22,218,10,105,115,105,110,115,116,97,110,99,101,218, + 3,115,116,114,218,2,111,115,90,8,102,115,100,101,99,111, + 100,101,114,3,0,0,0,218,12,97,108,116,95,112,97,116, + 104,95,115,101,112,218,7,114,101,112,108,97,99,101,218,8, + 112,97,116,104,95,115,101,112,218,19,95,98,111,111,116,115, + 116,114,97,112,95,101,120,116,101,114,110,97,108,90,10,95, + 112,97,116,104,95,115,116,97,116,218,7,79,83,69,114,114, + 111,114,218,10,86,97,108,117,101,69,114,114,111,114,90,11, + 95,112,97,116,104,95,115,112,108,105,116,218,6,97,112,112, + 101,110,100,90,7,115,116,95,109,111,100,101,218,20,95,122, + 105,112,95,100,105,114,101,99,116,111,114,121,95,99,97,99, + 104,101,218,8,75,101,121,69,114,114,111,114,218,15,95,114, + 101,97,100,95,100,105,114,101,99,116,111,114,121,218,6,95, + 102,105,108,101,115,218,7,97,114,99,104,105,118,101,218,10, + 95,112,97,116,104,95,106,111,105,110,218,6,112,114,101,102, + 105,120,41,8,218,4,115,101,108,102,114,13,0,0,0,114, + 17,0,0,0,114,31,0,0,0,90,2,115,116,90,7,100, + 105,114,110,97,109,101,90,8,98,97,115,101,110,97,109,101, + 218,5,102,105,108,101,115,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,8,95,95,105,110,105,116,95,95, + 64,0,0,0,115,60,0,0,0,10,1,8,1,10,1,4, + 1,12,1,4,1,12,1,4,2,2,2,14,1,16,1,14, + 3,8,1,12,1,4,1,16,1,14,3,12,2,2,3,12, + 1,12,1,8,1,14,1,6,1,6,1,22,2,8,1,18, + 1,4,255,255,128,122,20,122,105,112,105,109,112,111,114,116, + 101,114,46,95,95,105,110,105,116,95,95,78,99,3,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0, + 0,67,0,0,0,115,78,0,0,0,116,0,124,0,124,1, + 131,2,125,3,124,3,100,1,117,1,114,26,124,0,103,0, + 102,2,83,0,116,1,124,0,124,1,131,2,125,4,116,2, + 124,0,124,4,131,2,114,70,100,1,124,0,106,3,155,0, + 116,4,155,0,124,4,155,0,157,3,103,1,102,2,83,0, + 100,1,103,0,102,2,83,0,41,2,97,47,2,0,0,102, + 105,110,100,95,108,111,97,100,101,114,40,102,117,108,108,110, + 97,109,101,44,32,112,97,116,104,61,78,111,110,101,41,32, + 45,62,32,115,101,108,102,44,32,115,116,114,32,111,114,32, + 78,111,110,101,46,10,10,32,32,32,32,32,32,32,32,83, + 101,97,114,99,104,32,102,111,114,32,97,32,109,111,100,117, + 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, + 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, + 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, + 104,101,10,32,32,32,32,32,32,32,32,102,117,108,108,121, + 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, + 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, + 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, + 122,105,112,105,109,112,111,114,116,101,114,10,32,32,32,32, + 32,32,32,32,105,110,115,116,97,110,99,101,32,105,116,115, + 101,108,102,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,119,97,115,32,102,111,117,110,100,44,32,97,32,115, + 116,114,105,110,103,32,99,111,110,116,97,105,110,105,110,103, 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, - 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, - 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, - 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, - 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, - 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, - 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,111, - 114,32,78,111,110,101,32,105,102,32,105,116,32,119,97,115, - 110,39,116,46,10,32,32,32,32,32,32,32,32,84,104,101, - 32,111,112,116,105,111,110,97,108,32,39,112,97,116,104,39, - 32,97,114,103,117,109,101,110,116,32,105,115,32,105,103,110, - 111,114,101,100,32,45,45,32,105,116,39,115,32,116,104,101, - 114,101,32,102,111,114,32,99,111,109,112,97,116,105,98,105, - 108,105,116,121,10,32,32,32,32,32,32,32,32,119,105,116, - 104,32,116,104,101,32,105,109,112,111,114,116,101,114,32,112, - 114,111,116,111,99,111,108,46,10,10,32,32,32,32,32,32, - 32,32,68,101,112,114,101,99,97,116,101,100,32,115,105,110, - 99,101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32, - 32,114,0,0,0,0,78,41,1,114,41,0,0,0,41,3, - 114,32,0,0,0,114,38,0,0,0,114,13,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,11, - 102,105,110,100,95,109,111,100,117,108,101,143,0,0,0,115, - 4,0,0,0,16,11,255,128,122,23,122,105,112,105,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,3,0,0,0,0,0,0,0,0,0,0,0,7,0, - 0,0,5,0,0,0,67,0,0,0,115,108,0,0,0,116, - 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, - 34,116,1,106,2,124,1,124,0,124,3,100,2,141,3,83, - 0,116,3,124,0,124,1,131,2,125,4,116,4,124,0,124, - 4,131,2,114,104,124,0,106,5,155,0,116,6,155,0,124, - 4,155,0,157,3,125,5,116,1,106,7,124,1,100,1,100, - 3,100,4,141,3,125,6,124,6,106,8,160,9,124,5,161, - 1,1,0,124,6,83,0,100,1,83,0,41,5,122,107,67, - 114,101,97,116,101,32,97,32,77,111,100,117,108,101,83,112, - 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,115,32,78,111, - 110,101,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,99,97,110,110,111,116,32,98,101,32,102,111,117,110,100, - 46,10,32,32,32,32,32,32,32,32,78,41,1,218,10,105, - 115,95,112,97,99,107,97,103,101,84,41,3,218,4,110,97, - 109,101,90,6,108,111,97,100,101,114,114,43,0,0,0,41, - 10,114,35,0,0,0,218,10,95,98,111,111,116,115,116,114, - 97,112,90,16,115,112,101,99,95,102,114,111,109,95,108,111, - 97,100,101,114,114,36,0,0,0,114,37,0,0,0,114,29, - 0,0,0,114,20,0,0,0,90,10,77,111,100,117,108,101, - 83,112,101,99,90,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, - 114,24,0,0,0,41,7,114,32,0,0,0,114,38,0,0, - 0,90,6,116,97,114,103,101,116,90,11,109,111,100,117,108, - 101,95,105,110,102,111,114,40,0,0,0,114,13,0,0,0, - 90,4,115,112,101,99,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,9,102,105,110,100,95,115,112,101,99, - 156,0,0,0,115,26,0,0,0,10,5,8,1,16,1,10, - 7,10,1,18,4,8,1,2,1,6,255,12,2,4,1,4, - 2,255,128,122,21,122,105,112,105,109,112,111,114,116,101,114, - 46,102,105,110,100,95,115,112,101,99,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,67, - 0,0,0,115,20,0,0,0,116,0,124,0,124,1,131,2, - 92,3,125,2,125,3,125,4,124,2,83,0,41,2,122,163, - 103,101,116,95,99,111,100,101,40,102,117,108,108,110,97,109, - 101,41,32,45,62,32,99,111,100,101,32,111,98,106,101,99, - 116,46,10,10,32,32,32,32,32,32,32,32,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,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,46,32,82,97,105, - 115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,111, - 114,10,32,32,32,32,32,32,32,32,105,102,32,116,104,101, - 32,109,111,100,117,108,101,32,99,111,117,108,100,110,39,116, - 32,98,101,32,102,111,117,110,100,46,10,32,32,32,32,32, - 32,32,32,78,169,1,218,16,95,103,101,116,95,109,111,100, - 117,108,101,95,99,111,100,101,169,5,114,32,0,0,0,114, - 38,0,0,0,218,4,99,111,100,101,218,9,105,115,112,97, - 99,107,97,103,101,114,40,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,103,101,116,95,99, - 111,100,101,183,0,0,0,115,6,0,0,0,16,6,4,1, - 255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0,0,67,0,0, - 0,115,112,0,0,0,116,0,114,16,124,1,160,1,116,0, - 116,2,161,2,125,1,124,1,125,2,124,1,160,3,124,0, - 106,4,116,2,23,0,161,1,114,58,124,1,116,5,124,0, - 106,4,116,2,23,0,131,1,100,1,133,2,25,0,125,2, - 122,14,124,0,106,6,124,2,25,0,125,3,87,0,110,26, - 4,0,116,7,121,98,1,0,1,0,1,0,116,8,100,2, - 100,3,124,2,131,3,130,1,48,0,116,9,124,0,106,4, - 124,3,131,2,83,0,41,4,122,154,103,101,116,95,100,97, - 116,97,40,112,97,116,104,110,97,109,101,41,32,45,62,32, - 115,116,114,105,110,103,32,119,105,116,104,32,102,105,108,101, - 32,100,97,116,97,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,116,104,101,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 39,112,97,116,104,110,97,109,101,39,46,32,82,97,105,115, - 101,32,79,83,69,114,114,111,114,32,105,102,10,32,32,32, - 32,32,32,32,32,116,104,101,32,102,105,108,101,32,119,97, - 115,110,39,116,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,78,114,0,0,0,0,218,0,41,10,114,18, - 0,0,0,114,19,0,0,0,114,20,0,0,0,218,10,115, - 116,97,114,116,115,119,105,116,104,114,29,0,0,0,218,3, - 108,101,110,114,28,0,0,0,114,26,0,0,0,114,22,0, - 0,0,218,9,95,103,101,116,95,100,97,116,97,41,4,114, - 32,0,0,0,218,8,112,97,116,104,110,97,109,101,90,3, - 107,101,121,218,9,116,111,99,95,101,110,116,114,121,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,103, - 101,116,95,100,97,116,97,193,0,0,0,115,22,0,0,0, - 4,6,12,1,4,2,16,1,22,1,2,2,14,1,12,1, - 14,1,12,1,255,128,122,20,122,105,112,105,109,112,111,114, - 116,101,114,46,103,101,116,95,100,97,116,97,99,2,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, - 0,67,0,0,0,115,20,0,0,0,116,0,124,0,124,1, - 131,2,92,3,125,2,125,3,125,4,124,4,83,0,41,2, - 122,106,103,101,116,95,102,105,108,101,110,97,109,101,40,102, - 117,108,108,110,97,109,101,41,32,45,62,32,102,105,108,101, - 110,97,109,101,32,115,116,114,105,110,103,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, - 32,102,105,108,101,110,97,109,101,32,102,111,114,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,46,10,32,32,32,32,32,32,32,32,78,114,47,0, - 0,0,114,49,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,12,103,101,116,95,102,105,108,101, - 110,97,109,101,214,0,0,0,115,6,0,0,0,16,7,4, - 1,255,128,122,24,122,105,112,105,109,112,111,114,116,101,114, - 46,103,101,116,95,102,105,108,101,110,97,109,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, - 0,0,67,0,0,0,115,126,0,0,0,116,0,124,0,124, - 1,131,2,125,2,124,2,100,1,117,0,114,36,116,1,100, - 2,124,1,155,2,157,2,124,1,100,3,141,2,130,1,116, - 2,124,0,124,1,131,2,125,3,124,2,114,64,116,3,160, - 4,124,3,100,4,161,2,125,4,110,10,124,3,155,0,100, - 5,157,2,125,4,122,14,124,0,106,5,124,4,25,0,125, - 5,87,0,110,20,4,0,116,6,121,108,1,0,1,0,1, - 0,89,0,100,1,83,0,48,0,116,7,124,0,106,8,124, - 5,131,2,160,9,161,0,83,0,41,6,122,253,103,101,116, - 95,115,111,117,114,99,101,40,102,117,108,108,110,97,109,101, - 41,32,45,62,32,115,111,117,114,99,101,32,115,116,114,105, - 110,103,46,10,10,32,32,32,32,32,32,32,32,82,101,116, - 117,114,110,32,116,104,101,32,115,111,117,114,99,101,32,99, - 111,100,101,32,102,111,114,32,116,104,101,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,97, - 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,102,111,117,110,100,44,32,114,101,116,117, - 114,110,32,78,111,110,101,32,105,102,32,116,104,101,32,97, - 114,99,104,105,118,101,32,100,111,101,115,10,32,32,32,32, - 32,32,32,32,99,111,110,116,97,105,110,32,116,104,101,32, - 109,111,100,117,108,101,44,32,98,117,116,32,104,97,115,32, - 110,111,32,115,111,117,114,99,101,32,102,111,114,32,105,116, - 46,10,32,32,32,32,32,32,32,32,78,250,18,99,97,110, - 39,116,32,102,105,110,100,32,109,111,100,117,108,101,32,169, - 1,114,44,0,0,0,250,11,95,95,105,110,105,116,95,95, - 46,112,121,250,3,46,112,121,41,10,114,35,0,0,0,114, - 3,0,0,0,114,36,0,0,0,114,21,0,0,0,114,30, - 0,0,0,114,28,0,0,0,114,26,0,0,0,114,56,0, - 0,0,114,29,0,0,0,218,6,100,101,99,111,100,101,41, - 6,114,32,0,0,0,114,38,0,0,0,114,39,0,0,0, - 114,13,0,0,0,218,8,102,117,108,108,112,97,116,104,114, - 58,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,225, - 0,0,0,115,26,0,0,0,10,7,8,1,18,1,10,2, - 4,1,14,1,10,2,2,2,14,1,12,1,8,2,16,1, - 255,128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0,67, - 0,0,0,115,40,0,0,0,116,0,124,0,124,1,131,2, - 125,2,124,2,100,1,117,0,114,36,116,1,100,2,124,1, - 155,2,157,2,124,1,100,3,141,2,130,1,124,2,83,0, - 41,4,122,171,105,115,95,112,97,99,107,97,103,101,40,102, - 117,108,108,110,97,109,101,41,32,45,62,32,98,111,111,108, - 46,10,10,32,32,32,32,32,32,32,32,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, - 121,32,102,117,108,108,110,97,109,101,32,105,115,32,97,32, - 112,97,99,107,97,103,101,46,10,32,32,32,32,32,32,32, - 32,82,97,105,115,101,32,90,105,112,73,109,112,111,114,116, - 69,114,114,111,114,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, - 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,78, - 114,61,0,0,0,114,62,0,0,0,41,2,114,35,0,0, - 0,114,3,0,0,0,41,3,114,32,0,0,0,114,38,0, - 0,0,114,39,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,43,0,0,0,251,0,0,0,115, - 10,0,0,0,10,6,8,1,18,1,4,1,255,128,122,22, - 122,105,112,105,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,8,0,0,0,8,0,0,0,67,0,0,0,115, - 236,0,0,0,116,0,124,0,124,1,131,2,92,3,125,2, - 125,3,125,4,116,1,106,2,160,3,124,1,161,1,125,5, - 124,5,100,1,117,0,115,46,116,4,124,5,116,5,131,2, - 115,64,116,5,124,1,131,1,125,5,124,5,116,1,106,2, - 124,1,60,0,124,0,124,5,95,6,122,84,124,3,114,108, - 116,7,124,0,124,1,131,2,125,6,116,8,160,9,124,0, - 106,10,124,6,161,2,125,7,124,7,103,1,124,5,95,11, - 116,12,124,5,100,2,131,2,115,124,116,13,124,5,95,13, - 116,8,160,14,124,5,106,15,124,1,124,4,161,3,1,0, - 116,16,124,2,124,5,106,15,131,2,1,0,87,0,110,16, - 1,0,1,0,1,0,116,1,106,2,124,1,61,0,130,0, - 122,14,116,1,106,2,124,1,25,0,125,5,87,0,110,30, - 4,0,116,17,121,216,1,0,1,0,1,0,116,18,100,3, - 124,1,155,2,100,4,157,3,131,1,130,1,48,0,116,19, - 160,20,100,5,124,1,124,4,161,3,1,0,124,5,83,0, - 41,6,97,55,1,0,0,108,111,97,100,95,109,111,100,117, - 108,101,40,102,117,108,108,110,97,109,101,41,32,45,62,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,76,111,97,100,32,116,104,101,32,109,111,100,117,108,101, - 32,115,112,101,99,105,102,105,101,100,32,98,121,32,39,102, - 117,108,108,110,97,109,101,39,46,32,39,102,117,108,108,110, - 97,109,101,39,32,109,117,115,116,32,98,101,32,116,104,101, - 10,32,32,32,32,32,32,32,32,102,117,108,108,121,32,113, - 117,97,108,105,102,105,101,100,32,40,100,111,116,116,101,100, - 41,32,109,111,100,117,108,101,32,110,97,109,101,46,32,73, - 116,32,114,101,116,117,114,110,115,32,116,104,101,32,105,109, - 112,111,114,116,101,100,10,32,32,32,32,32,32,32,32,109, - 111,100,117,108,101,44,32,111,114,32,114,97,105,115,101,115, - 32,90,105,112,73,109,112,111,114,116,69,114,114,111,114,32, - 105,102,32,105,116,32,119,97,115,110,39,116,32,102,111,117, - 110,100,46,10,10,32,32,32,32,32,32,32,32,68,101,112, - 114,101,99,97,116,101,100,32,115,105,110,99,101,32,80,121, - 116,104,111,110,32,51,46,49,48,46,32,117,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,32,32,32,32,32,32,32,32,78,218, - 12,95,95,98,117,105,108,116,105,110,115,95,95,122,14,76, - 111,97,100,101,100,32,109,111,100,117,108,101,32,122,25,32, - 110,111,116,32,102,111,117,110,100,32,105,110,32,115,121,115, - 46,109,111,100,117,108,101,115,122,30,105,109,112,111,114,116, - 32,123,125,32,35,32,108,111,97,100,101,100,32,102,114,111, - 109,32,90,105,112,32,123,125,41,21,114,48,0,0,0,218, - 3,115,121,115,218,7,109,111,100,117,108,101,115,218,3,103, - 101,116,114,15,0,0,0,218,12,95,109,111,100,117,108,101, - 95,116,121,112,101,218,10,95,95,108,111,97,100,101,114,95, - 95,114,36,0,0,0,114,21,0,0,0,114,30,0,0,0, - 114,29,0,0,0,90,8,95,95,112,97,116,104,95,95,218, - 7,104,97,115,97,116,116,114,114,68,0,0,0,90,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,218,8,95, - 95,100,105,99,116,95,95,218,4,101,120,101,99,114,26,0, - 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,114, - 45,0,0,0,218,16,95,118,101,114,98,111,115,101,95,109, - 101,115,115,97,103,101,41,8,114,32,0,0,0,114,38,0, - 0,0,114,50,0,0,0,114,51,0,0,0,114,40,0,0, - 0,90,3,109,111,100,114,13,0,0,0,114,66,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 11,108,111,97,100,95,109,111,100,117,108,101,8,1,0,0, - 115,50,0,0,0,16,9,12,1,18,1,8,1,10,1,6, - 1,2,2,4,1,10,3,14,1,8,1,10,2,6,1,16, - 1,16,1,6,1,8,1,2,1,2,2,14,1,12,1,18, - 1,14,1,4,1,255,128,122,23,122,105,112,105,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,0,0,0,0,3,0,0, - 0,8,0,0,0,67,0,0,0,115,64,0,0,0,122,20, - 124,0,160,0,124,1,161,1,115,18,87,0,100,1,83,0, - 87,0,110,20,4,0,116,1,121,40,1,0,1,0,1,0, - 89,0,100,1,83,0,48,0,100,2,100,3,108,2,109,3, - 125,2,1,0,124,2,124,0,124,1,131,2,83,0,41,4, - 122,204,82,101,116,117,114,110,32,116,104,101,32,82,101,115, - 111,117,114,99,101,82,101,97,100,101,114,32,102,111,114,32, - 97,32,112,97,99,107,97,103,101,32,105,110,32,97,32,122, - 105,112,32,102,105,108,101,46,10,10,32,32,32,32,32,32, - 32,32,73,102,32,39,102,117,108,108,110,97,109,101,39,32, - 105,115,32,97,32,112,97,99,107,97,103,101,32,119,105,116, - 104,105,110,32,116,104,101,32,122,105,112,32,102,105,108,101, - 44,32,114,101,116,117,114,110,32,116,104,101,10,32,32,32, - 32,32,32,32,32,39,82,101,115,111,117,114,99,101,82,101, - 97,100,101,114,39,32,111,98,106,101,99,116,32,102,111,114, - 32,116,104,101,32,112,97,99,107,97,103,101,46,32,32,79, - 116,104,101,114,119,105,115,101,32,114,101,116,117,114,110,32, - 78,111,110,101,46,10,32,32,32,32,32,32,32,32,78,114, - 0,0,0,0,41,1,218,9,90,105,112,82,101,97,100,101, - 114,41,4,114,43,0,0,0,114,3,0,0,0,90,17,105, - 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,80,0,0,0,41,3,114,32,0,0,0,114,38,0,0, - 0,114,80,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,48,1,0,0,115,16, - 0,0,0,2,6,10,1,10,1,12,1,8,1,12,1,10, - 1,255,128,122,31,122,105,112,105,109,112,111,114,116,101,114, - 46,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,5,0,0,0,67,0,0,0,115,24,0, - 0,0,100,1,124,0,106,0,155,0,116,1,155,0,124,0, - 106,2,155,0,100,2,157,5,83,0,41,3,78,122,21,60, - 122,105,112,105,109,112,111,114,116,101,114,32,111,98,106,101, - 99,116,32,34,122,2,34,62,41,3,114,29,0,0,0,114, - 20,0,0,0,114,31,0,0,0,41,1,114,32,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 8,95,95,114,101,112,114,95,95,63,1,0,0,115,4,0, - 0,0,24,1,255,128,122,20,122,105,112,105,109,112,111,114, - 116,101,114,46,95,95,114,101,112,114,95,95,41,1,78,41, - 1,78,41,1,78,41,16,114,6,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,7,95,95,100,111,99,95,95,114, - 34,0,0,0,114,41,0,0,0,114,42,0,0,0,114,46, - 0,0,0,114,52,0,0,0,114,59,0,0,0,114,60,0, - 0,0,114,67,0,0,0,114,43,0,0,0,114,79,0,0, - 0,114,81,0,0,0,114,82,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,114, - 4,0,0,0,45,0,0,0,115,30,0,0,0,8,0,4, - 1,8,17,10,46,10,34,10,13,8,27,8,10,8,21,8, - 11,8,26,8,13,8,40,12,15,255,128,122,12,95,95,105, - 110,105,116,95,95,46,112,121,99,84,114,63,0,0,0,70, - 41,3,122,4,46,112,121,99,84,70,41,3,114,64,0,0, - 0,70,70,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,67,0,0,0,115,20,0,0, - 0,124,0,106,0,124,1,160,1,100,1,161,1,100,2,25, - 0,23,0,83,0,41,3,78,218,1,46,233,2,0,0,0, - 41,2,114,31,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,41,2,114,32,0,0,0,114,38,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,36, - 0,0,0,81,1,0,0,115,4,0,0,0,20,1,255,128, - 114,36,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,18, - 0,0,0,124,1,116,0,23,0,125,2,124,2,124,0,106, - 1,118,0,83,0,169,1,78,41,2,114,20,0,0,0,114, - 28,0,0,0,41,3,114,32,0,0,0,114,13,0,0,0, - 90,7,100,105,114,112,97,116,104,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,37,0,0,0,85,1,0, - 0,115,6,0,0,0,8,4,10,2,255,128,114,37,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,7,0, - 0,0,4,0,0,0,67,0,0,0,115,54,0,0,0,116, - 0,124,0,124,1,131,2,125,2,116,1,68,0,93,34,92, - 3,125,3,125,4,125,5,124,2,124,3,23,0,125,6,124, - 6,124,0,106,2,118,0,114,14,124,5,2,0,1,0,83, - 0,100,0,83,0,114,87,0,0,0,41,3,114,36,0,0, - 0,218,16,95,122,105,112,95,115,101,97,114,99,104,111,114, - 100,101,114,114,28,0,0,0,41,7,114,32,0,0,0,114, - 38,0,0,0,114,13,0,0,0,218,6,115,117,102,102,105, - 120,218,10,105,115,98,121,116,101,99,111,100,101,114,51,0, - 0,0,114,66,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,35,0,0,0,94,1,0,0,115, - 14,0,0,0,10,1,14,1,8,1,10,1,8,1,4,1, - 255,128,114,35,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,26,0,0,0,9,0,0,0,67,0,0,0, - 115,230,4,0,0,122,14,116,0,160,1,124,0,161,1,125, - 1,87,0,110,32,4,0,116,2,121,46,1,0,1,0,1, - 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,48,0,124,1,144,4,143,140,1,0,122,36,124, - 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, - 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,87, - 0,110,32,4,0,116,2,121,124,1,0,1,0,1,0,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,48,0,116,8,124,3,131,1,116,5,107,3,114,156,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,3,100,0,100,5,133,2,25,0,116,9,107,3,144, - 1,114,154,122,24,124,1,160,4,100,6,100,3,161,2,1, - 0,124,1,160,6,161,0,125,4,87,0,110,32,4,0,116, - 2,121,230,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,48,0,116,10,124, - 4,116,11,24,0,116,5,24,0,100,6,131,2,125,5,122, - 22,124,1,160,4,124,5,161,1,1,0,124,1,160,7,161, - 0,125,6,87,0,110,34,4,0,116,2,144,1,121,50,1, - 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,48,0,124,6,160,12,116,9,161, - 1,125,7,124,7,100,6,107,0,144,1,114,90,116,3,100, - 7,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 6,124,7,124,7,116,5,23,0,133,2,25,0,125,3,116, - 8,124,3,131,1,116,5,107,3,144,1,114,138,116,3,100, - 8,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 4,116,8,124,6,131,1,24,0,124,7,23,0,125,2,116, - 13,124,3,100,9,100,10,133,2,25,0,131,1,125,8,116, - 13,124,3,100,10,100,11,133,2,25,0,131,1,125,9,124, - 2,124,8,107,0,144,1,114,214,116,3,100,12,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,2,124,9,107, - 0,144,1,114,242,116,3,100,13,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,2,124,8,56,0,125,2,124, - 2,124,9,24,0,125,10,124,10,100,6,107,0,144,2,114, - 30,116,3,100,14,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,105,0,125,11,100,6,125,12,122,14,124,1,160, - 4,124,2,161,1,1,0,87,0,110,34,4,0,116,2,144, - 2,121,86,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,48,0,124,1,160, - 7,100,15,161,1,125,3,116,8,124,3,131,1,100,5,107, - 0,144,2,114,120,116,14,100,16,131,1,130,1,124,3,100, - 0,100,5,133,2,25,0,100,17,107,3,144,2,114,142,144, - 4,113,180,116,8,124,3,131,1,100,15,107,3,144,2,114, - 164,116,14,100,16,131,1,130,1,116,15,124,3,100,18,100, - 19,133,2,25,0,131,1,125,13,116,15,124,3,100,19,100, - 9,133,2,25,0,131,1,125,14,116,15,124,3,100,9,100, - 20,133,2,25,0,131,1,125,15,116,15,124,3,100,20,100, - 10,133,2,25,0,131,1,125,16,116,13,124,3,100,10,100, - 11,133,2,25,0,131,1,125,17,116,13,124,3,100,11,100, - 21,133,2,25,0,131,1,125,18,116,13,124,3,100,21,100, - 22,133,2,25,0,131,1,125,4,116,15,124,3,100,22,100, - 23,133,2,25,0,131,1,125,19,116,15,124,3,100,23,100, - 24,133,2,25,0,131,1,125,20,116,15,124,3,100,24,100, - 25,133,2,25,0,131,1,125,21,116,13,124,3,100,26,100, - 15,133,2,25,0,131,1,125,22,124,19,124,20,23,0,124, - 21,23,0,125,8,124,22,124,9,107,4,144,3,114,124,116, - 3,100,27,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,22,124,10,55,0,125,22,122,14,124,1,160,7,124, - 19,161,1,125,23,87,0,110,34,4,0,116,2,144,3,121, - 180,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,48,0,116,8,124,23,131, - 1,124,19,107,3,144,3,114,214,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,122,50,116,8,124, - 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, - 19,24,0,107,3,144,4,114,6,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,87,0,110,34,4, - 0,116,2,144,4,121,42,1,0,1,0,1,0,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,48, - 0,124,13,100,28,64,0,144,4,114,64,124,23,160,16,161, - 0,125,23,110,52,122,14,124,23,160,16,100,29,161,1,125, - 23,87,0,110,36,4,0,116,17,144,4,121,114,1,0,1, - 0,1,0,124,23,160,16,100,30,161,1,160,18,116,19,161, - 1,125,23,89,0,110,2,48,0,124,23,160,20,100,31,116, - 21,161,2,125,23,116,22,160,23,124,0,124,23,161,2,125, - 24,124,24,124,14,124,18,124,4,124,22,124,15,124,16,124, - 17,102,8,125,25,124,25,124,11,124,23,60,0,124,12,100, - 32,55,0,125,12,144,2,113,88,87,0,100,0,4,0,4, - 0,131,3,1,0,110,18,49,0,144,4,115,202,48,0,1, - 0,1,0,1,0,89,0,1,0,116,24,160,25,100,33,124, - 12,124,0,161,3,1,0,124,11,83,0,41,34,78,122,21, - 99,97,110,39,116,32,111,112,101,110,32,90,105,112,32,102, - 105,108,101,58,32,114,12,0,0,0,114,85,0,0,0,250, - 21,99,97,110,39,116,32,114,101,97,100,32,90,105,112,32, - 102,105,108,101,58,32,233,4,0,0,0,114,0,0,0,0, - 122,16,110,111,116,32,97,32,90,105,112,32,102,105,108,101, - 58,32,122,18,99,111,114,114,117,112,116,32,90,105,112,32, - 102,105,108,101,58,32,233,12,0,0,0,233,16,0,0,0, - 233,20,0,0,0,122,28,98,97,100,32,99,101,110,116,114, - 97,108,32,100,105,114,101,99,116,111,114,121,32,115,105,122, - 101,58,32,122,30,98,97,100,32,99,101,110,116,114,97,108, - 32,100,105,114,101,99,116,111,114,121,32,111,102,102,115,101, - 116,58,32,122,38,98,97,100,32,99,101,110,116,114,97,108, - 32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,32, - 111,114,32,111,102,102,115,101,116,58,32,233,46,0,0,0, - 250,27,69,79,70,32,114,101,97,100,32,119,104,101,114,101, - 32,110,111,116,32,101,120,112,101,99,116,101,100,115,4,0, - 0,0,80,75,1,2,233,8,0,0,0,233,10,0,0,0, - 233,14,0,0,0,233,24,0,0,0,233,28,0,0,0,233, - 30,0,0,0,233,32,0,0,0,233,34,0,0,0,233,42, - 0,0,0,122,25,98,97,100,32,108,111,99,97,108,32,104, - 101,97,100,101,114,32,111,102,102,115,101,116,58,32,105,0, - 8,0,0,218,5,97,115,99,105,105,90,6,108,97,116,105, - 110,49,250,1,47,114,5,0,0,0,122,33,122,105,112,105, - 109,112,111,114,116,58,32,102,111,117,110,100,32,123,125,32, - 110,97,109,101,115,32,105,110,32,123,33,114,125,41,26,218, - 3,95,105,111,218,9,111,112,101,110,95,99,111,100,101,114, - 22,0,0,0,114,3,0,0,0,218,4,115,101,101,107,218, - 20,69,78,68,95,67,69,78,84,82,65,76,95,68,73,82, - 95,83,73,90,69,90,4,116,101,108,108,218,4,114,101,97, - 100,114,55,0,0,0,218,18,83,84,82,73,78,71,95,69, - 78,68,95,65,82,67,72,73,86,69,218,3,109,97,120,218, - 15,77,65,88,95,67,79,77,77,69,78,84,95,76,69,78, - 218,5,114,102,105,110,100,114,2,0,0,0,218,8,69,79, - 70,69,114,114,111,114,114,1,0,0,0,114,65,0,0,0, - 218,18,85,110,105,99,111,100,101,68,101,99,111,100,101,69, - 114,114,111,114,218,9,116,114,97,110,115,108,97,116,101,218, - 11,99,112,52,51,55,95,116,97,98,108,101,114,19,0,0, - 0,114,20,0,0,0,114,21,0,0,0,114,30,0,0,0, - 114,45,0,0,0,114,78,0,0,0,41,26,114,29,0,0, - 0,218,2,102,112,90,15,104,101,97,100,101,114,95,112,111, - 115,105,116,105,111,110,218,6,98,117,102,102,101,114,218,9, - 102,105,108,101,95,115,105,122,101,90,17,109,97,120,95,99, - 111,109,109,101,110,116,95,115,116,97,114,116,218,4,100,97, - 116,97,90,3,112,111,115,218,11,104,101,97,100,101,114,95, - 115,105,122,101,90,13,104,101,97,100,101,114,95,111,102,102, - 115,101,116,90,10,97,114,99,95,111,102,102,115,101,116,114, - 33,0,0,0,218,5,99,111,117,110,116,218,5,102,108,97, - 103,115,218,8,99,111,109,112,114,101,115,115,218,4,116,105, - 109,101,218,4,100,97,116,101,218,3,99,114,99,218,9,100, - 97,116,97,95,115,105,122,101,218,9,110,97,109,101,95,115, - 105,122,101,218,10,101,120,116,114,97,95,115,105,122,101,90, - 12,99,111,109,109,101,110,116,95,115,105,122,101,218,11,102, - 105,108,101,95,111,102,102,115,101,116,114,44,0,0,0,114, - 13,0,0,0,218,1,116,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,27,0,0,0,125,1,0,0,115, - 214,0,0,0,2,1,14,1,12,1,20,1,8,2,2,1, - 14,1,8,1,14,1,12,1,20,1,12,1,18,1,18,1, - 2,3,12,1,12,1,12,1,10,1,2,1,8,255,8,2, - 2,1,2,255,2,1,4,255,2,2,10,1,12,1,14,1, - 10,1,2,1,8,255,10,2,10,1,10,1,2,1,6,255, - 16,2,14,1,10,1,2,1,6,255,16,2,16,2,16,1, - 10,1,18,1,10,1,18,1,8,1,8,1,10,1,18,1, - 4,2,4,2,2,1,14,1,14,1,20,1,10,2,14,1, - 8,1,18,2,4,1,14,1,8,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, - 12,1,10,1,18,1,8,1,2,2,14,1,14,1,20,1, - 14,1,18,1,2,4,28,1,22,1,14,1,20,1,10,2, - 10,2,2,3,14,1,14,1,22,1,12,2,12,1,20,1, - 8,1,44,1,14,1,4,1,255,128,114,27,0,0,0,117, - 190,1,0,0,0,1,2,3,4,5,6,7,8,9,10,11, - 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43, - 44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, - 76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91, - 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, - 108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, - 124,125,126,127,195,135,195,188,195,169,195,162,195,164,195,160, - 195,165,195,167,195,170,195,171,195,168,195,175,195,174,195,172, - 195,132,195,133,195,137,195,166,195,134,195,180,195,182,195,178, - 195,187,195,185,195,191,195,150,195,156,194,162,194,163,194,165, - 226,130,167,198,146,195,161,195,173,195,179,195,186,195,177,195, - 145,194,170,194,186,194,191,226,140,144,194,172,194,189,194,188, - 194,161,194,171,194,187,226,150,145,226,150,146,226,150,147,226, - 148,130,226,148,164,226,149,161,226,149,162,226,149,150,226,149, - 149,226,149,163,226,149,145,226,149,151,226,149,157,226,149,156, - 226,149,155,226,148,144,226,148,148,226,148,180,226,148,172,226, - 148,156,226,148,128,226,148,188,226,149,158,226,149,159,226,149, - 154,226,149,148,226,149,169,226,149,166,226,149,160,226,149,144, - 226,149,172,226,149,167,226,149,168,226,149,164,226,149,165,226, - 149,153,226,149,152,226,149,146,226,149,147,226,149,171,226,149, - 170,226,148,152,226,148,140,226,150,136,226,150,132,226,150,140, - 226,150,144,226,150,128,206,177,195,159,206,147,207,128,206,163, - 207,131,194,181,207,132,206,166,206,152,206,169,206,180,226,136, - 158,207,134,206,181,226,136,169,226,137,161,194,177,226,137,165, - 226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,176, - 226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,160, - 194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,8,0,0,0,67,0,0,0,115,106,0,0,0, - 116,0,114,22,116,1,160,2,100,1,161,1,1,0,116,3, - 100,2,131,1,130,1,100,3,97,0,122,58,122,16,100,4, - 100,5,108,4,109,5,125,0,1,0,87,0,110,32,4,0, - 116,6,121,76,1,0,1,0,1,0,116,1,160,2,100,1, - 161,1,1,0,116,3,100,2,131,1,130,1,48,0,87,0, - 100,6,97,0,110,6,100,6,97,0,48,0,116,1,160,2, - 100,7,161,1,1,0,124,0,83,0,41,8,78,122,27,122, - 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,85, - 78,65,86,65,73,76,65,66,76,69,250,41,99,97,110,39, - 116,32,100,101,99,111,109,112,114,101,115,115,32,100,97,116, - 97,59,32,122,108,105,98,32,110,111,116,32,97,118,97,105, - 108,97,98,108,101,84,114,0,0,0,0,169,1,218,10,100, - 101,99,111,109,112,114,101,115,115,70,122,25,122,105,112,105, - 109,112,111,114,116,58,32,122,108,105,98,32,97,118,97,105, - 108,97,98,108,101,41,7,218,15,95,105,109,112,111,114,116, - 105,110,103,95,122,108,105,98,114,45,0,0,0,114,78,0, - 0,0,114,3,0,0,0,90,4,122,108,105,98,114,140,0, - 0,0,218,9,69,120,99,101,112,116,105,111,110,114,139,0, + 108,32,112,97,116,104,32,110,97,109,101,32,105,102,32,105, + 116,39,115,32,112,111,115,115,105,98,108,121,32,97,32,112, + 111,114,116,105,111,110,32,111,102,32,97,32,110,97,109,101, + 115,112,97,99,101,32,112,97,99,107,97,103,101,44,10,32, + 32,32,32,32,32,32,32,111,114,32,78,111,110,101,32,111, + 116,104,101,114,119,105,115,101,46,32,84,104,101,32,111,112, + 116,105,111,110,97,108,32,39,112,97,116,104,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,32,45,45,32,105,116,39,115,10,32,32,32,32,32,32, + 32,32,116,104,101,114,101,32,102,111,114,32,99,111,109,112, + 97,116,105,98,105,108,105,116,121,32,119,105,116,104,32,116, + 104,101,32,105,109,112,111,114,116,101,114,32,112,114,111,116, + 111,99,111,108,46,10,10,32,32,32,32,32,32,32,32,68, + 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, + 80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,78,41, + 5,218,16,95,103,101,116,95,109,111,100,117,108,101,95,105, + 110,102,111,218,16,95,103,101,116,95,109,111,100,117,108,101, + 95,112,97,116,104,218,7,95,105,115,95,100,105,114,114,29, + 0,0,0,114,20,0,0,0,41,5,114,32,0,0,0,218, + 8,102,117,108,108,110,97,109,101,114,13,0,0,0,218,2, + 109,105,218,7,109,111,100,112,97,116,104,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,11,102,105,110,100, + 95,108,111,97,100,101,114,110,0,0,0,115,16,0,0,0, + 10,12,8,1,8,2,10,7,10,1,24,4,8,2,255,128, + 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,108,111,97,100,101,114,99,3,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, + 0,0,115,16,0,0,0,124,0,160,0,124,1,124,2,161, + 2,100,1,25,0,83,0,41,3,97,203,1,0,0,102,105, + 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, + 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, + 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, + 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, + 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, + 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, + 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, + 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, + 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, + 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, + 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, + 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, + 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, + 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, + 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, + 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, + 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, + 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, + 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, + 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, + 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, + 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, + 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, + 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, + 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,114,0,0,0,0,78,41, + 1,114,41,0,0,0,41,3,114,32,0,0,0,114,38,0, + 0,0,114,13,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,144,0,0,0,115,4,0,0,0,16,11,255,128, + 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,99,3,0,0,0,0,0, + 0,0,0,0,0,0,7,0,0,0,5,0,0,0,67,0, + 0,0,115,108,0,0,0,116,0,124,0,124,1,131,2,125, + 3,124,3,100,1,117,1,114,34,116,1,106,2,124,1,124, + 0,124,3,100,2,141,3,83,0,116,3,124,0,124,1,131, + 2,125,4,116,4,124,0,124,4,131,2,114,104,124,0,106, + 5,155,0,116,6,155,0,124,4,155,0,157,3,125,5,116, + 1,106,7,124,1,100,1,100,3,100,4,141,3,125,6,124, + 6,106,8,160,9,124,5,161,1,1,0,124,6,83,0,100, + 1,83,0,41,5,122,107,67,114,101,97,116,101,32,97,32, + 77,111,100,117,108,101,83,112,101,99,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,115,32,78,111,110,101,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,99,97,110,110,111,116,32, + 98,101,32,102,111,117,110,100,46,10,32,32,32,32,32,32, + 32,32,78,41,1,218,10,105,115,95,112,97,99,107,97,103, + 101,84,41,3,218,4,110,97,109,101,90,6,108,111,97,100, + 101,114,114,43,0,0,0,41,10,114,35,0,0,0,218,10, + 95,98,111,111,116,115,116,114,97,112,90,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,114,36,0,0, + 0,114,37,0,0,0,114,29,0,0,0,114,20,0,0,0, + 90,10,77,111,100,117,108,101,83,112,101,99,90,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,114,24,0,0,0,41,7,114, + 32,0,0,0,114,38,0,0,0,90,6,116,97,114,103,101, + 116,90,11,109,111,100,117,108,101,95,105,110,102,111,114,40, + 0,0,0,114,13,0,0,0,90,4,115,112,101,99,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,9,102, + 105,110,100,95,115,112,101,99,157,0,0,0,115,26,0,0, + 0,10,5,8,1,16,1,10,7,10,1,18,4,8,1,2, + 1,6,255,12,2,4,1,4,2,255,128,122,21,122,105,112, + 105,109,112,111,114,116,101,114,46,102,105,110,100,95,115,112, + 101,99,99,2,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, + 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, + 124,2,83,0,41,2,122,163,103,101,116,95,99,111,100,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, + 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, + 32,32,32,32,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,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, + 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, + 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, + 99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,110, + 100,46,10,32,32,32,32,32,32,32,32,78,169,1,218,16, + 95,103,101,116,95,109,111,100,117,108,101,95,99,111,100,101, + 169,5,114,32,0,0,0,114,38,0,0,0,218,4,99,111, + 100,101,218,9,105,115,112,97,99,107,97,103,101,114,40,0, 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,20,95,103,101,116,95,100,101,99,111,109,112,114,101, - 115,115,95,102,117,110,99,27,2,0,0,115,26,0,0,0, - 4,2,10,3,8,1,4,2,4,1,16,1,12,1,10,1, - 12,1,12,2,10,2,4,1,255,128,114,143,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0, - 9,0,0,0,67,0,0,0,115,132,1,0,0,124,1,92, - 8,125,2,125,3,125,4,125,5,125,6,125,7,125,8,125, - 9,124,4,100,1,107,0,114,36,116,0,100,2,131,1,130, - 1,116,1,160,2,124,0,161,1,144,1,143,6,125,10,122, - 14,124,10,160,3,124,6,161,1,1,0,87,0,110,32,4, - 0,116,4,121,96,1,0,1,0,1,0,116,0,100,3,124, - 0,155,2,157,2,124,0,100,4,141,2,130,1,48,0,124, - 10,160,5,100,5,161,1,125,11,116,6,124,11,131,1,100, - 5,107,3,114,128,116,7,100,6,131,1,130,1,124,11,100, - 0,100,7,133,2,25,0,100,8,107,3,114,162,116,0,100, - 9,124,0,155,2,157,2,124,0,100,4,141,2,130,1,116, - 8,124,11,100,10,100,11,133,2,25,0,131,1,125,12,116, - 8,124,11,100,11,100,5,133,2,25,0,131,1,125,13,100, - 5,124,12,23,0,124,13,23,0,125,14,124,6,124,14,55, - 0,125,6,122,14,124,10,160,3,124,6,161,1,1,0,87, - 0,110,34,4,0,116,4,144,1,121,6,1,0,1,0,1, - 0,116,0,100,3,124,0,155,2,157,2,124,0,100,4,141, - 2,130,1,48,0,124,10,160,5,124,4,161,1,125,15,116, - 6,124,15,131,1,124,4,107,3,144,1,114,40,116,4,100, - 12,131,1,130,1,87,0,100,0,4,0,4,0,131,3,1, - 0,110,18,49,0,144,1,115,62,48,0,1,0,1,0,1, - 0,89,0,1,0,124,3,100,1,107,2,144,1,114,86,124, - 15,83,0,122,10,116,9,131,0,125,16,87,0,110,24,4, - 0,116,10,144,1,121,120,1,0,1,0,1,0,116,0,100, - 13,131,1,130,1,48,0,124,16,124,15,100,14,131,2,83, - 0,41,15,78,114,0,0,0,0,122,18,110,101,103,97,116, - 105,118,101,32,100,97,116,97,32,115,105,122,101,114,91,0, - 0,0,114,12,0,0,0,114,103,0,0,0,114,97,0,0, - 0,114,92,0,0,0,115,4,0,0,0,80,75,3,4,122, - 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32, - 104,101,97,100,101,114,58,32,233,26,0,0,0,114,102,0, - 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99, - 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,138, - 0,0,0,105,241,255,255,255,41,11,114,3,0,0,0,114, - 109,0,0,0,114,110,0,0,0,114,111,0,0,0,114,22, - 0,0,0,114,113,0,0,0,114,55,0,0,0,114,118,0, - 0,0,114,1,0,0,0,114,143,0,0,0,114,142,0,0, - 0,41,17,114,29,0,0,0,114,58,0,0,0,90,8,100, - 97,116,97,112,97,116,104,114,129,0,0,0,114,133,0,0, - 0,114,124,0,0,0,114,136,0,0,0,114,130,0,0,0, - 114,131,0,0,0,114,132,0,0,0,114,122,0,0,0,114, - 123,0,0,0,114,134,0,0,0,114,135,0,0,0,114,126, - 0,0,0,90,8,114,97,119,95,100,97,116,97,114,140,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,56,0,0,0,48,2,0,0,115,64,0,0,0,20, - 1,8,1,8,1,14,2,2,2,14,1,12,1,20,1,10, - 1,12,1,8,1,16,2,18,2,16,2,16,1,12,1,8, - 1,2,1,14,1,14,1,20,1,10,1,14,1,40,1,10, - 2,4,2,2,3,10,1,14,1,10,1,10,1,255,128,114, - 56,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,67,0,0,0,115,16,0, - 0,0,116,0,124,0,124,1,24,0,131,1,100,1,107,1, - 83,0,41,2,78,114,5,0,0,0,41,1,218,3,97,98, - 115,41,2,90,2,116,49,90,2,116,50,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,9,95,101,113,95, - 109,116,105,109,101,94,2,0,0,115,4,0,0,0,16,2, - 255,128,114,146,0,0,0,99,5,0,0,0,0,0,0,0, - 0,0,0,0,14,0,0,0,8,0,0,0,67,0,0,0, - 115,60,1,0,0,124,3,124,2,100,1,156,2,125,5,122, - 18,116,0,160,1,124,4,124,3,124,5,161,3,125,6,87, - 0,110,20,4,0,116,2,121,48,1,0,1,0,1,0,89, - 0,100,0,83,0,48,0,124,6,100,2,64,0,100,3,107, - 3,125,7,124,7,114,182,124,6,100,4,64,0,100,3,107, - 3,125,8,116,3,106,4,100,5,107,3,144,1,114,10,124, - 8,115,106,116,3,106,4,100,6,107,2,144,1,114,10,116, - 5,124,0,124,2,131,2,125,9,124,9,100,0,117,1,144, - 1,114,10,116,3,160,6,116,0,106,7,124,9,161,2,125, - 10,122,20,116,0,160,8,124,4,124,10,124,3,124,5,161, - 4,1,0,87,0,110,104,4,0,116,2,121,180,1,0,1, - 0,1,0,89,0,100,0,83,0,48,0,116,9,124,0,124, - 2,131,2,92,2,125,11,125,12,124,11,144,1,114,10,116, - 10,116,11,124,4,100,7,100,8,133,2,25,0,131,1,124, - 11,131,2,114,246,116,11,124,4,100,8,100,9,133,2,25, - 0,131,1,124,12,107,3,144,1,114,10,116,12,160,13,100, - 10,124,3,155,2,157,2,161,1,1,0,100,0,83,0,116, - 14,160,15,124,4,100,9,100,0,133,2,25,0,161,1,125, - 13,116,16,124,13,116,17,131,2,144,1,115,56,116,18,100, - 11,124,1,155,2,100,12,157,3,131,1,130,1,124,13,83, - 0,41,13,78,41,2,114,44,0,0,0,114,13,0,0,0, - 114,5,0,0,0,114,0,0,0,0,114,85,0,0,0,90, - 5,110,101,118,101,114,90,6,97,108,119,97,121,115,114,98, - 0,0,0,114,93,0,0,0,114,94,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,122,16,99,111,109,112,105,108,101,100,32, - 109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,116, - 32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,19, - 114,21,0,0,0,90,13,95,99,108,97,115,115,105,102,121, - 95,112,121,99,114,77,0,0,0,218,4,95,105,109,112,90, - 21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,101, - 100,95,112,121,99,115,218,15,95,103,101,116,95,112,121,99, - 95,115,111,117,114,99,101,218,11,115,111,117,114,99,101,95, - 104,97,115,104,90,17,95,82,65,87,95,77,65,71,73,67, - 95,78,85,77,66,69,82,90,18,95,118,97,108,105,100,97, - 116,101,95,104,97,115,104,95,112,121,99,218,29,95,103,101, - 116,95,109,116,105,109,101,95,97,110,100,95,115,105,122,101, - 95,111,102,95,115,111,117,114,99,101,114,146,0,0,0,114, - 2,0,0,0,114,45,0,0,0,114,78,0,0,0,218,7, - 109,97,114,115,104,97,108,90,5,108,111,97,100,115,114,15, - 0,0,0,218,10,95,99,111,100,101,95,116,121,112,101,218, - 9,84,121,112,101,69,114,114,111,114,41,14,114,32,0,0, - 0,114,57,0,0,0,114,66,0,0,0,114,38,0,0,0, - 114,125,0,0,0,90,11,101,120,99,95,100,101,116,97,105, - 108,115,114,128,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,90,12,115,111,117,114,99,101,95,98,121,116,101,115,114, - 149,0,0,0,90,12,115,111,117,114,99,101,95,109,116,105, - 109,101,90,11,115,111,117,114,99,101,95,115,105,122,101,114, - 50,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, - 99,111,100,101,104,2,0,0,115,84,0,0,0,2,2,2, - 1,6,254,2,5,18,1,12,1,8,1,12,2,4,1,12, - 1,12,1,2,1,2,255,8,1,4,255,10,2,10,1,4, - 1,4,1,2,1,4,254,2,5,4,1,8,1,8,255,12, - 2,8,1,8,3,6,255,6,3,22,3,18,1,4,255,4, - 2,8,1,4,255,4,2,18,2,12,1,16,1,4,1,255, - 128,114,154,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, - 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, - 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, - 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, - 243,1,0,0,0,13,41,1,114,19,0,0,0,41,1,218, - 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, - 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,155, - 2,0,0,115,8,0,0,0,12,1,12,1,4,1,255,128, - 114,158,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,24, - 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, - 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,76, - 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, - 101,114,105,116,41,2,114,158,0,0,0,218,7,99,111,109, - 112,105,108,101,41,2,114,57,0,0,0,114,157,0,0,0, + 0,218,8,103,101,116,95,99,111,100,101,184,0,0,0,115, + 6,0,0,0,16,6,4,1,255,128,122,20,122,105,112,105, + 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,0,0,0,0,4,0,0, + 0,8,0,0,0,67,0,0,0,115,112,0,0,0,116,0, + 114,16,124,1,160,1,116,0,116,2,161,2,125,1,124,1, + 125,2,124,1,160,3,124,0,106,4,116,2,23,0,161,1, + 114,58,124,1,116,5,124,0,106,4,116,2,23,0,131,1, + 100,1,133,2,25,0,125,2,122,14,124,0,106,6,124,2, + 25,0,125,3,87,0,110,26,4,0,116,7,121,98,1,0, + 1,0,1,0,116,8,100,2,100,3,124,2,131,3,130,1, + 48,0,116,9,124,0,106,4,124,3,131,2,83,0,41,4, + 122,154,103,101,116,95,100,97,116,97,40,112,97,116,104,110, + 97,109,101,41,32,45,62,32,115,116,114,105,110,103,32,119, + 105,116,104,32,102,105,108,101,32,100,97,116,97,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,100,97,116,97,32,97,115,115,111,99,105,97,116, + 101,100,32,119,105,116,104,32,39,112,97,116,104,110,97,109, + 101,39,46,32,82,97,105,115,101,32,79,83,69,114,114,111, + 114,32,105,102,10,32,32,32,32,32,32,32,32,116,104,101, + 32,102,105,108,101,32,119,97,115,110,39,116,32,102,111,117, + 110,100,46,10,32,32,32,32,32,32,32,32,78,114,0,0, + 0,0,218,0,41,10,114,18,0,0,0,114,19,0,0,0, + 114,20,0,0,0,218,10,115,116,97,114,116,115,119,105,116, + 104,114,29,0,0,0,218,3,108,101,110,114,28,0,0,0, + 114,26,0,0,0,114,22,0,0,0,218,9,95,103,101,116, + 95,100,97,116,97,41,4,114,32,0,0,0,218,8,112,97, + 116,104,110,97,109,101,90,3,107,101,121,218,9,116,111,99, + 95,101,110,116,114,121,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,8,103,101,116,95,100,97,116,97,194, + 0,0,0,115,22,0,0,0,4,6,12,1,4,2,16,1, + 22,1,2,2,14,1,12,1,14,1,12,1,255,128,122,20, + 122,105,112,105,109,112,111,114,116,101,114,46,103,101,116,95, + 100,97,116,97,99,2,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,3,0,0,0,67,0,0,0,115,20,0, + 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, + 125,4,124,4,83,0,41,2,122,106,103,101,116,95,102,105, + 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, + 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, + 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, + 101,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,117,108,101,46,10,32,32,32,32, + 32,32,32,32,78,114,47,0,0,0,114,49,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,12, + 103,101,116,95,102,105,108,101,110,97,109,101,215,0,0,0, + 115,6,0,0,0,16,7,4,1,255,128,122,24,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,102,105,108, + 101,110,97,109,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,126, + 0,0,0,116,0,124,0,124,1,131,2,125,2,124,2,100, + 1,117,0,114,36,116,1,100,2,124,1,155,2,157,2,124, + 1,100,3,141,2,130,1,116,2,124,0,124,1,131,2,125, + 3,124,2,114,64,116,3,160,4,124,3,100,4,161,2,125, + 4,110,10,124,3,155,0,100,5,157,2,125,4,122,14,124, + 0,106,5,124,4,25,0,125,5,87,0,110,20,4,0,116, + 6,121,108,1,0,1,0,1,0,89,0,100,1,83,0,48, + 0,116,7,124,0,106,8,124,5,131,2,160,9,161,0,83, + 0,41,6,122,253,103,101,116,95,115,111,117,114,99,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,115,111,117, + 114,99,101,32,115,116,114,105,110,103,46,10,10,32,32,32, + 32,32,32,32,32,82,101,116,117,114,110,32,116,104,101,32, + 115,111,117,114,99,101,32,99,111,100,101,32,102,111,114,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,46,32,82,97,105,115,101,32,90,105,112,73, + 109,112,111,114,116,69,114,114,111,114,10,32,32,32,32,32, + 32,32,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117, + 110,100,44,32,114,101,116,117,114,110,32,78,111,110,101,32, + 105,102,32,116,104,101,32,97,114,99,104,105,118,101,32,100, + 111,101,115,10,32,32,32,32,32,32,32,32,99,111,110,116, + 97,105,110,32,116,104,101,32,109,111,100,117,108,101,44,32, + 98,117,116,32,104,97,115,32,110,111,32,115,111,117,114,99, + 101,32,102,111,114,32,105,116,46,10,32,32,32,32,32,32, + 32,32,78,250,18,99,97,110,39,116,32,102,105,110,100,32, + 109,111,100,117,108,101,32,169,1,114,44,0,0,0,250,11, + 95,95,105,110,105,116,95,95,46,112,121,250,3,46,112,121, + 41,10,114,35,0,0,0,114,3,0,0,0,114,36,0,0, + 0,114,21,0,0,0,114,30,0,0,0,114,28,0,0,0, + 114,26,0,0,0,114,56,0,0,0,114,29,0,0,0,218, + 6,100,101,99,111,100,101,41,6,114,32,0,0,0,114,38, + 0,0,0,114,39,0,0,0,114,13,0,0,0,218,8,102, + 117,108,108,112,97,116,104,114,58,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,10,103,101,116, + 95,115,111,117,114,99,101,226,0,0,0,115,26,0,0,0, + 10,7,8,1,18,1,10,2,4,1,14,1,10,2,2,2, + 14,1,12,1,8,2,16,1,255,128,122,22,122,105,112,105, + 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,0,0,0,0,3, + 0,0,0,4,0,0,0,67,0,0,0,115,40,0,0,0, + 116,0,124,0,124,1,131,2,125,2,124,2,100,1,117,0, + 114,36,116,1,100,2,124,1,155,2,157,2,124,1,100,3, + 141,2,130,1,124,2,83,0,41,4,122,171,105,115,95,112, + 97,99,107,97,103,101,40,102,117,108,108,110,97,109,101,41, + 32,45,62,32,98,111,111,108,46,10,10,32,32,32,32,32, + 32,32,32,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,109,111,100,117,108,101,32,115,112,101, + 99,105,102,105,101,100,32,98,121,32,102,117,108,108,110,97, + 109,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, + 10,32,32,32,32,32,32,32,32,82,97,105,115,101,32,90, + 105,112,73,109,112,111,114,116,69,114,114,111,114,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,99,111,117,108, + 100,110,39,116,32,98,101,32,102,111,117,110,100,46,10,32, + 32,32,32,32,32,32,32,78,114,61,0,0,0,114,62,0, + 0,0,41,2,114,35,0,0,0,114,3,0,0,0,41,3, + 114,32,0,0,0,114,38,0,0,0,114,39,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,43, + 0,0,0,252,0,0,0,115,10,0,0,0,10,6,8,1, + 18,1,4,1,255,128,122,22,122,105,112,105,109,112,111,114, + 116,101,114,46,105,115,95,112,97,99,107,97,103,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,8, + 0,0,0,67,0,0,0,115,252,0,0,0,100,1,125,2, + 116,0,160,1,124,2,116,2,161,2,1,0,116,3,124,0, + 124,1,131,2,92,3,125,3,125,4,125,5,116,4,106,5, + 160,6,124,1,161,1,125,6,124,6,100,2,117,0,115,62, + 116,7,124,6,116,8,131,2,115,80,116,8,124,1,131,1, + 125,6,124,6,116,4,106,5,124,1,60,0,124,0,124,6, + 95,9,122,84,124,4,114,124,116,10,124,0,124,1,131,2, + 125,7,116,11,160,12,124,0,106,13,124,7,161,2,125,8, + 124,8,103,1,124,6,95,14,116,15,124,6,100,3,131,2, + 115,140,116,16,124,6,95,16,116,11,160,17,124,6,106,18, + 124,1,124,5,161,3,1,0,116,19,124,3,124,6,106,18, + 131,2,1,0,87,0,110,16,1,0,1,0,1,0,116,4, + 106,5,124,1,61,0,130,0,122,14,116,4,106,5,124,1, + 25,0,125,6,87,0,110,30,4,0,116,20,121,232,1,0, + 1,0,1,0,116,21,100,4,124,1,155,2,100,5,157,3, + 131,1,130,1,48,0,116,22,160,23,100,6,124,1,124,5, + 161,3,1,0,124,6,83,0,41,7,97,55,1,0,0,108, + 111,97,100,95,109,111,100,117,108,101,40,102,117,108,108,110, + 97,109,101,41,32,45,62,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,32,32,32,32,76,111,97,100,32,116,104, + 101,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, + 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, + 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, + 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, + 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, + 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, + 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, + 115,32,116,104,101,32,105,109,112,111,114,116,101,100,10,32, + 32,32,32,32,32,32,32,109,111,100,117,108,101,44,32,111, + 114,32,114,97,105,115,101,115,32,90,105,112,73,109,112,111, + 114,116,69,114,114,111,114,32,105,102,32,105,116,32,119,97, + 115,110,39,116,32,102,111,117,110,100,46,10,10,32,32,32, + 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, + 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, + 48,46,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,32,32, + 32,32,32,32,32,32,122,114,122,105,112,105,109,112,111,114, + 116,46,122,105,112,105,109,112,111,114,116,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,105,110,115,116,101,97,100,78,218,12,95,95,98, + 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, + 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, + 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, + 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, + 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, + 112,32,123,125,41,24,218,9,95,119,97,114,110,105,110,103, + 115,90,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,114,48,0,0,0, + 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, + 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, + 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, + 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, + 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, + 218,7,104,97,115,97,116,116,114,114,68,0,0,0,90,14, + 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, + 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, + 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, + 114,45,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,41,9,114,32,0,0,0,114,38, + 0,0,0,218,3,109,115,103,114,50,0,0,0,114,51,0, + 0,0,114,40,0,0,0,90,3,109,111,100,114,13,0,0, + 0,114,66,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,108,111,97,100,95,109,111,100,117, + 108,101,9,1,0,0,115,54,0,0,0,4,9,12,2,16, + 1,12,1,18,1,8,1,10,1,6,1,2,2,4,1,10, + 3,14,1,8,1,10,2,6,1,16,1,16,1,6,1,8, + 1,2,1,2,2,14,1,12,1,18,1,14,1,4,1,255, + 128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,64,0,0,0,122,20,124,0,160,0,124,1, + 161,1,115,18,87,0,100,1,83,0,87,0,110,20,4,0, + 116,1,121,40,1,0,1,0,1,0,89,0,100,1,83,0, + 48,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, + 124,0,124,1,131,2,83,0,41,4,122,204,82,101,116,117, + 114,110,32,116,104,101,32,82,101,115,111,117,114,99,101,82, + 101,97,100,101,114,32,102,111,114,32,97,32,112,97,99,107, + 97,103,101,32,105,110,32,97,32,122,105,112,32,102,105,108, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, + 102,117,108,108,110,97,109,101,39,32,105,115,32,97,32,112, + 97,99,107,97,103,101,32,119,105,116,104,105,110,32,116,104, + 101,32,122,105,112,32,102,105,108,101,44,32,114,101,116,117, + 114,110,32,116,104,101,10,32,32,32,32,32,32,32,32,39, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,39,32, + 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,112, + 97,99,107,97,103,101,46,32,32,79,116,104,101,114,119,105, + 115,101,32,114,101,116,117,114,110,32,78,111,110,101,46,10, + 32,32,32,32,32,32,32,32,78,114,0,0,0,0,41,1, + 218,9,90,105,112,82,101,97,100,101,114,41,4,114,43,0, + 0,0,114,3,0,0,0,90,17,105,109,112,111,114,116,108, + 105,98,46,114,101,97,100,101,114,115,114,83,0,0,0,41, + 3,114,32,0,0,0,114,38,0,0,0,114,83,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 15,95,99,111,109,112,105,108,101,95,115,111,117,114,99,101, - 162,2,0,0,115,6,0,0,0,8,1,16,1,255,128,114, - 160,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,11,0,0,0,67,0,0,0,115,68,0, - 0,0,116,0,160,1,124,0,100,1,63,0,100,2,23,0, - 124,0,100,3,63,0,100,4,64,0,124,0,100,5,64,0, - 124,1,100,6,63,0,124,1,100,3,63,0,100,7,64,0, - 124,1,100,5,64,0,100,8,20,0,100,9,100,9,100,9, - 102,9,161,1,83,0,41,10,78,233,9,0,0,0,105,188, - 7,0,0,233,5,0,0,0,233,15,0,0,0,233,31,0, - 0,0,233,11,0,0,0,233,63,0,0,0,114,85,0,0, - 0,114,14,0,0,0,41,2,114,130,0,0,0,90,6,109, - 107,116,105,109,101,41,2,218,1,100,114,137,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,14, - 95,112,97,114,115,101,95,100,111,115,116,105,109,101,168,2, - 0,0,115,20,0,0,0,4,1,10,1,10,1,6,1,6, - 1,10,1,10,1,6,1,6,249,255,128,114,168,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,10,0,0,0,67,0,0,0,115,110,0,0,0,122,82, - 124,1,100,1,100,0,133,2,25,0,100,2,118,0,115,22, - 74,0,130,1,124,1,100,0,100,1,133,2,25,0,125,1, - 124,0,106,0,124,1,25,0,125,2,124,2,100,3,25,0, - 125,3,124,2,100,4,25,0,125,4,124,2,100,5,25,0, - 125,5,116,1,124,4,124,3,131,2,124,5,102,2,87,0, - 83,0,4,0,116,2,116,3,116,4,102,3,121,108,1,0, - 1,0,1,0,89,0,100,6,83,0,48,0,41,7,78,114, - 14,0,0,0,169,2,218,1,99,218,1,111,114,162,0,0, - 0,233,6,0,0,0,233,3,0,0,0,41,2,114,0,0, - 0,0,114,0,0,0,0,41,5,114,28,0,0,0,114,168, - 0,0,0,114,26,0,0,0,218,10,73,110,100,101,120,69, - 114,114,111,114,114,153,0,0,0,41,6,114,32,0,0,0, - 114,13,0,0,0,114,58,0,0,0,114,130,0,0,0,114, - 131,0,0,0,90,17,117,110,99,111,109,112,114,101,115,115, - 101,100,95,115,105,122,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,150,0,0,0,181,2,0,0,115, - 22,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, - 8,1,16,1,18,1,8,1,255,128,114,150,0,0,0,99, + 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,52,1,0,0,115,16,0,0,0,2,6,10, + 1,10,1,12,1,8,1,12,1,10,1,255,128,122,31,122, + 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5, + 0,0,0,67,0,0,0,115,24,0,0,0,100,1,124,0, + 106,0,155,0,116,1,155,0,124,0,106,2,155,0,100,2, + 157,5,83,0,41,3,78,122,21,60,122,105,112,105,109,112, + 111,114,116,101,114,32,111,98,106,101,99,116,32,34,122,2, + 34,62,41,3,114,29,0,0,0,114,20,0,0,0,114,31, + 0,0,0,41,1,114,32,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, + 114,95,95,67,1,0,0,115,4,0,0,0,24,1,255,128, + 122,20,122,105,112,105,109,112,111,114,116,101,114,46,95,95, + 114,101,112,114,95,95,41,1,78,41,1,78,41,1,78,41, + 16,114,6,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,7,95,95,100,111,99,95,95,114,34,0,0,0,114,41, + 0,0,0,114,42,0,0,0,114,46,0,0,0,114,52,0, + 0,0,114,59,0,0,0,114,60,0,0,0,114,67,0,0, + 0,114,43,0,0,0,114,82,0,0,0,114,84,0,0,0, + 114,85,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,4,0,0,0,46,0, + 0,0,115,30,0,0,0,8,0,4,1,8,17,10,46,10, + 34,10,13,8,27,8,10,8,21,8,11,8,26,8,13,8, + 43,12,15,255,128,122,12,95,95,105,110,105,116,95,95,46, + 112,121,99,84,114,63,0,0,0,70,41,3,122,4,46,112, + 121,99,84,70,41,3,114,64,0,0,0,70,70,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,20,0,0,0,124,0,106,0,124, + 1,160,1,100,1,161,1,100,2,25,0,23,0,83,0,41, + 3,78,218,1,46,233,2,0,0,0,41,2,114,31,0,0, + 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114, + 32,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,36,0,0,0,85,1,0, + 0,115,4,0,0,0,20,1,255,128,114,36,0,0,0,99, 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 8,0,0,0,67,0,0,0,115,80,0,0,0,124,1,100, - 1,100,0,133,2,25,0,100,2,118,0,115,20,74,0,130, - 1,124,1,100,0,100,1,133,2,25,0,125,1,122,14,124, - 0,106,0,124,1,25,0,125,2,87,0,110,20,4,0,116, - 1,121,66,1,0,1,0,1,0,89,0,100,0,83,0,48, - 0,116,2,124,0,106,3,124,2,131,2,83,0,41,3,78, - 114,14,0,0,0,114,169,0,0,0,41,4,114,28,0,0, - 0,114,26,0,0,0,114,56,0,0,0,114,29,0,0,0, - 41,3,114,32,0,0,0,114,13,0,0,0,114,58,0,0, + 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,169, + 1,78,41,2,114,20,0,0,0,114,28,0,0,0,41,3, + 114,32,0,0,0,114,13,0,0,0,90,7,100,105,114,112, + 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,37,0,0,0,89,1,0,0,115,6,0,0,0, + 8,4,10,2,255,128,114,37,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,124,0,124,1,131, + 2,125,2,116,1,68,0,93,34,92,3,125,3,125,4,125, + 5,124,2,124,3,23,0,125,6,124,6,124,0,106,2,118, + 0,114,14,124,5,2,0,1,0,83,0,100,0,83,0,114, + 90,0,0,0,41,3,114,36,0,0,0,218,16,95,122,105, + 112,95,115,101,97,114,99,104,111,114,100,101,114,114,28,0, + 0,0,41,7,114,32,0,0,0,114,38,0,0,0,114,13, + 0,0,0,218,6,115,117,102,102,105,120,218,10,105,115,98, + 121,116,101,99,111,100,101,114,51,0,0,0,114,66,0,0, 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,148,0,0,0,200,2,0,0,115,16,0,0,0,20,2, - 12,1,2,2,14,1,12,1,8,1,12,2,255,128,114,148, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 11,0,0,0,9,0,0,0,67,0,0,0,115,190,0,0, - 0,116,0,124,0,124,1,131,2,125,2,116,1,68,0,93, - 156,92,3,125,3,125,4,125,5,124,2,124,3,23,0,125, - 6,116,2,106,3,100,1,124,0,106,4,116,5,124,6,100, - 2,100,3,141,5,1,0,122,14,124,0,106,6,124,6,25, - 0,125,7,87,0,110,18,4,0,116,7,121,86,1,0,1, - 0,1,0,89,0,113,14,48,0,124,7,100,4,25,0,125, - 8,116,8,124,0,106,4,124,7,131,2,125,9,124,4,114, - 130,116,9,124,0,124,8,124,6,124,1,124,9,131,5,125, - 10,110,10,116,10,124,8,124,9,131,2,125,10,124,10,100, - 0,117,0,114,150,113,14,124,7,100,4,25,0,125,8,124, - 10,124,5,124,8,102,3,2,0,1,0,83,0,116,11,100, - 5,124,1,155,2,157,2,124,1,100,6,141,2,130,1,41, - 7,78,122,13,116,114,121,105,110,103,32,123,125,123,125,123, - 125,114,85,0,0,0,41,1,90,9,118,101,114,98,111,115, - 105,116,121,114,0,0,0,0,114,61,0,0,0,114,62,0, - 0,0,41,12,114,36,0,0,0,114,88,0,0,0,114,45, - 0,0,0,114,78,0,0,0,114,29,0,0,0,114,20,0, - 0,0,114,28,0,0,0,114,26,0,0,0,114,56,0,0, - 0,114,154,0,0,0,114,160,0,0,0,114,3,0,0,0, - 41,11,114,32,0,0,0,114,38,0,0,0,114,13,0,0, - 0,114,89,0,0,0,114,90,0,0,0,114,51,0,0,0, - 114,66,0,0,0,114,58,0,0,0,114,40,0,0,0,114, - 125,0,0,0,114,50,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,48,0,0,0,215,2,0, - 0,115,38,0,0,0,10,1,14,1,8,1,22,1,2,1, - 14,1,12,1,6,1,8,2,12,1,4,1,18,1,10,2, - 8,1,2,3,8,1,14,1,18,2,255,128,114,48,0,0, - 0,41,45,114,83,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2, - 0,0,0,90,17,95,102,114,111,122,101,110,95,105,109,112, - 111,114,116,108,105,98,114,45,0,0,0,114,147,0,0,0, - 114,109,0,0,0,114,151,0,0,0,114,69,0,0,0,114, - 130,0,0,0,90,7,95,95,97,108,108,95,95,114,20,0, - 0,0,90,15,112,97,116,104,95,115,101,112,97,114,97,116, - 111,114,115,114,18,0,0,0,114,77,0,0,0,114,3,0, - 0,0,114,25,0,0,0,218,4,116,121,112,101,114,72,0, - 0,0,114,112,0,0,0,114,114,0,0,0,114,116,0,0, - 0,90,13,95,76,111,97,100,101,114,66,97,115,105,99,115, - 114,4,0,0,0,114,88,0,0,0,114,36,0,0,0,114, - 37,0,0,0,114,35,0,0,0,114,27,0,0,0,114,121, - 0,0,0,114,141,0,0,0,114,143,0,0,0,114,56,0, - 0,0,114,146,0,0,0,114,154,0,0,0,218,8,95,95, - 99,111,100,101,95,95,114,152,0,0,0,114,158,0,0,0, - 114,160,0,0,0,114,168,0,0,0,114,150,0,0,0,114, - 148,0,0,0,114,48,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,60, - 109,111,100,117,108,101,62,1,0,0,0,115,90,0,0,0, - 4,0,8,16,16,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, - 4,1,4,1,18,2,0,127,0,127,12,30,12,1,2,1, - 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, - 4,29,8,5,8,21,8,46,8,10,10,46,8,5,8,7, - 8,6,8,13,8,19,12,15,255,128, + 114,35,0,0,0,98,1,0,0,115,14,0,0,0,10,1, + 14,1,8,1,10,1,8,1,4,1,255,128,114,35,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,26,0, + 0,0,9,0,0,0,67,0,0,0,115,230,4,0,0,122, + 14,116,0,160,1,124,0,161,1,125,1,87,0,110,32,4, + 0,116,2,121,46,1,0,1,0,1,0,116,3,100,1,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,48,0,124, + 1,144,4,143,140,1,0,122,36,124,1,160,4,116,5,11, + 0,100,3,161,2,1,0,124,1,160,6,161,0,125,2,124, + 1,160,7,116,5,161,1,125,3,87,0,110,32,4,0,116, + 2,121,124,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,48,0,116,8,124, + 3,131,1,116,5,107,3,114,156,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,3,100,0,100, + 5,133,2,25,0,116,9,107,3,144,1,114,154,122,24,124, + 1,160,4,100,6,100,3,161,2,1,0,124,1,160,6,161, + 0,125,4,87,0,110,32,4,0,116,2,121,230,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,48,0,116,10,124,4,116,11,24,0,116, + 5,24,0,100,6,131,2,125,5,122,22,124,1,160,4,124, + 5,161,1,1,0,124,1,160,7,161,0,125,6,87,0,110, + 34,4,0,116,2,144,1,121,50,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,48,0,124,6,160,12,116,9,161,1,125,7,124,7,100, + 6,107,0,144,1,114,90,116,3,100,7,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,6,124,7,124,7,116, + 5,23,0,133,2,25,0,125,3,116,8,124,3,131,1,116, + 5,107,3,144,1,114,138,116,3,100,8,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,4,116,8,124,6,131, + 1,24,0,124,7,23,0,125,2,116,13,124,3,100,9,100, + 10,133,2,25,0,131,1,125,8,116,13,124,3,100,10,100, + 11,133,2,25,0,131,1,125,9,124,2,124,8,107,0,144, + 1,114,214,116,3,100,12,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,9,107,0,144,1,114,242,116, + 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, + 10,124,10,100,6,107,0,144,2,114,30,116,3,100,14,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, + 11,100,6,125,12,122,14,124,1,160,4,124,2,161,1,1, + 0,87,0,110,34,4,0,116,2,144,2,121,86,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,48,0,124,1,160,7,100,15,161,1,125, + 3,116,8,124,3,131,1,100,5,107,0,144,2,114,120,116, + 14,100,16,131,1,130,1,124,3,100,0,100,5,133,2,25, + 0,100,17,107,3,144,2,114,142,144,4,113,180,116,8,124, + 3,131,1,100,15,107,3,144,2,114,164,116,14,100,16,131, + 1,130,1,116,15,124,3,100,18,100,19,133,2,25,0,131, + 1,125,13,116,15,124,3,100,19,100,9,133,2,25,0,131, + 1,125,14,116,15,124,3,100,9,100,20,133,2,25,0,131, + 1,125,15,116,15,124,3,100,20,100,10,133,2,25,0,131, + 1,125,16,116,13,124,3,100,10,100,11,133,2,25,0,131, + 1,125,17,116,13,124,3,100,11,100,21,133,2,25,0,131, + 1,125,18,116,13,124,3,100,21,100,22,133,2,25,0,131, + 1,125,4,116,15,124,3,100,22,100,23,133,2,25,0,131, + 1,125,19,116,15,124,3,100,23,100,24,133,2,25,0,131, + 1,125,20,116,15,124,3,100,24,100,25,133,2,25,0,131, + 1,125,21,116,13,124,3,100,26,100,15,133,2,25,0,131, + 1,125,22,124,19,124,20,23,0,124,21,23,0,125,8,124, + 22,124,9,107,4,144,3,114,124,116,3,100,27,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,22,124,10,55, + 0,125,22,122,14,124,1,160,7,124,19,161,1,125,23,87, + 0,110,34,4,0,116,2,144,3,121,180,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,48,0,116,8,124,23,131,1,124,19,107,3,144, + 3,114,214,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,122,50,116,8,124,1,160,7,124,8,124, + 19,24,0,161,1,131,1,124,8,124,19,24,0,107,3,144, + 4,114,6,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,87,0,110,34,4,0,116,2,144,4,121, + 42,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,48,0,124,13,100,28,64, + 0,144,4,114,64,124,23,160,16,161,0,125,23,110,52,122, + 14,124,23,160,16,100,29,161,1,125,23,87,0,110,36,4, + 0,116,17,144,4,121,114,1,0,1,0,1,0,124,23,160, + 16,100,30,161,1,160,18,116,19,161,1,125,23,89,0,110, + 2,48,0,124,23,160,20,100,31,116,21,161,2,125,23,116, + 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, + 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, + 25,124,11,124,23,60,0,124,12,100,32,55,0,125,12,144, + 2,113,88,87,0,100,0,4,0,4,0,131,3,1,0,110, + 18,49,0,144,4,115,202,48,0,1,0,1,0,1,0,89, + 0,1,0,116,24,160,25,100,33,124,12,124,0,161,3,1, + 0,124,11,83,0,41,34,78,122,21,99,97,110,39,116,32, + 111,112,101,110,32,90,105,112,32,102,105,108,101,58,32,114, + 12,0,0,0,114,88,0,0,0,250,21,99,97,110,39,116, + 32,114,101,97,100,32,90,105,112,32,102,105,108,101,58,32, + 233,4,0,0,0,114,0,0,0,0,122,16,110,111,116,32, + 97,32,90,105,112,32,102,105,108,101,58,32,122,18,99,111, + 114,114,117,112,116,32,90,105,112,32,102,105,108,101,58,32, + 233,12,0,0,0,233,16,0,0,0,233,20,0,0,0,122, + 28,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, + 101,99,116,111,114,121,32,115,105,122,101,58,32,122,30,98, + 97,100,32,99,101,110,116,114,97,108,32,100,105,114,101,99, + 116,111,114,121,32,111,102,102,115,101,116,58,32,122,38,98, + 97,100,32,99,101,110,116,114,97,108,32,100,105,114,101,99, + 116,111,114,121,32,115,105,122,101,32,111,114,32,111,102,102, + 115,101,116,58,32,233,46,0,0,0,250,27,69,79,70,32, + 114,101,97,100,32,119,104,101,114,101,32,110,111,116,32,101, + 120,112,101,99,116,101,100,115,4,0,0,0,80,75,1,2, + 233,8,0,0,0,233,10,0,0,0,233,14,0,0,0,233, + 24,0,0,0,233,28,0,0,0,233,30,0,0,0,233,32, + 0,0,0,233,34,0,0,0,233,42,0,0,0,122,25,98, + 97,100,32,108,111,99,97,108,32,104,101,97,100,101,114,32, + 111,102,102,115,101,116,58,32,105,0,8,0,0,218,5,97, + 115,99,105,105,90,6,108,97,116,105,110,49,250,1,47,114, + 5,0,0,0,122,33,122,105,112,105,109,112,111,114,116,58, + 32,102,111,117,110,100,32,123,125,32,110,97,109,101,115,32, + 105,110,32,123,33,114,125,41,26,218,3,95,105,111,218,9, + 111,112,101,110,95,99,111,100,101,114,22,0,0,0,114,3, + 0,0,0,218,4,115,101,101,107,218,20,69,78,68,95,67, + 69,78,84,82,65,76,95,68,73,82,95,83,73,90,69,90, + 4,116,101,108,108,218,4,114,101,97,100,114,55,0,0,0, + 218,18,83,84,82,73,78,71,95,69,78,68,95,65,82,67, + 72,73,86,69,218,3,109,97,120,218,15,77,65,88,95,67, + 79,77,77,69,78,84,95,76,69,78,218,5,114,102,105,110, + 100,114,2,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,1,0,0,0,114,65,0,0,0,218,18,85,110,105,99, + 111,100,101,68,101,99,111,100,101,69,114,114,111,114,218,9, + 116,114,97,110,115,108,97,116,101,218,11,99,112,52,51,55, + 95,116,97,98,108,101,114,19,0,0,0,114,20,0,0,0, + 114,21,0,0,0,114,30,0,0,0,114,45,0,0,0,114, + 80,0,0,0,41,26,114,29,0,0,0,218,2,102,112,90, + 15,104,101,97,100,101,114,95,112,111,115,105,116,105,111,110, + 218,6,98,117,102,102,101,114,218,9,102,105,108,101,95,115, + 105,122,101,90,17,109,97,120,95,99,111,109,109,101,110,116, + 95,115,116,97,114,116,218,4,100,97,116,97,90,3,112,111, + 115,218,11,104,101,97,100,101,114,95,115,105,122,101,90,13, + 104,101,97,100,101,114,95,111,102,102,115,101,116,90,10,97, + 114,99,95,111,102,102,115,101,116,114,33,0,0,0,218,5, + 99,111,117,110,116,218,5,102,108,97,103,115,218,8,99,111, + 109,112,114,101,115,115,218,4,116,105,109,101,218,4,100,97, + 116,101,218,3,99,114,99,218,9,100,97,116,97,95,115,105, + 122,101,218,9,110,97,109,101,95,115,105,122,101,218,10,101, + 120,116,114,97,95,115,105,122,101,90,12,99,111,109,109,101, + 110,116,95,115,105,122,101,218,11,102,105,108,101,95,111,102, + 102,115,101,116,114,44,0,0,0,114,13,0,0,0,218,1, + 116,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,27,0,0,0,129,1,0,0,115,214,0,0,0,2,1, + 14,1,12,1,20,1,8,2,2,1,14,1,8,1,14,1, + 12,1,20,1,12,1,18,1,18,1,2,3,12,1,12,1, + 12,1,10,1,2,1,8,255,8,2,2,1,2,255,2,1, + 4,255,2,2,10,1,12,1,14,1,10,1,2,1,8,255, + 10,2,10,1,10,1,2,1,6,255,16,2,14,1,10,1, + 2,1,6,255,16,2,16,2,16,1,10,1,18,1,10,1, + 18,1,8,1,8,1,10,1,18,1,4,2,4,2,2,1, + 14,1,14,1,20,1,10,2,14,1,8,1,18,2,4,1, + 14,1,8,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,12,1,10,1,18,1, + 8,1,2,2,14,1,14,1,20,1,14,1,18,1,2,4, + 28,1,22,1,14,1,20,1,10,2,10,2,2,3,14,1, + 14,1,22,1,12,2,12,1,20,1,8,1,44,1,14,1, + 4,1,255,128,114,27,0,0,0,117,190,1,0,0,0,1, + 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, + 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33, + 34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, + 50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, + 66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81, + 82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97, + 98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113, + 114,115,116,117,118,119,120,121,122,123,124,125,126,127,195,135, + 195,188,195,169,195,162,195,164,195,160,195,165,195,167,195,170, + 195,171,195,168,195,175,195,174,195,172,195,132,195,133,195,137, + 195,166,195,134,195,180,195,182,195,178,195,187,195,185,195,191, + 195,150,195,156,194,162,194,163,194,165,226,130,167,198,146,195, + 161,195,173,195,179,195,186,195,177,195,145,194,170,194,186,194, + 191,226,140,144,194,172,194,189,194,188,194,161,194,171,194,187, + 226,150,145,226,150,146,226,150,147,226,148,130,226,148,164,226, + 149,161,226,149,162,226,149,150,226,149,149,226,149,163,226,149, + 145,226,149,151,226,149,157,226,149,156,226,149,155,226,148,144, + 226,148,148,226,148,180,226,148,172,226,148,156,226,148,128,226, + 148,188,226,149,158,226,149,159,226,149,154,226,149,148,226,149, + 169,226,149,166,226,149,160,226,149,144,226,149,172,226,149,167, + 226,149,168,226,149,164,226,149,165,226,149,153,226,149,152,226, + 149,146,226,149,147,226,149,171,226,149,170,226,148,152,226,148, + 140,226,150,136,226,150,132,226,150,140,226,150,144,226,150,128, + 206,177,195,159,206,147,207,128,206,163,207,131,194,181,207,132, + 206,166,206,152,206,169,206,180,226,136,158,207,134,206,181,226, + 136,169,226,137,161,194,177,226,137,165,226,137,164,226,140,160, + 226,140,161,195,183,226,137,136,194,176,226,136,153,194,183,226, + 136,154,226,129,191,194,178,226,150,160,194,160,99,0,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, + 0,67,0,0,0,115,106,0,0,0,116,0,114,22,116,1, + 160,2,100,1,161,1,1,0,116,3,100,2,131,1,130,1, + 100,3,97,0,122,58,122,16,100,4,100,5,108,4,109,5, + 125,0,1,0,87,0,110,32,4,0,116,6,121,76,1,0, + 1,0,1,0,116,1,160,2,100,1,161,1,1,0,116,3, + 100,2,131,1,130,1,48,0,87,0,100,6,97,0,110,6, + 100,6,97,0,48,0,116,1,160,2,100,7,161,1,1,0, + 124,0,83,0,41,8,78,122,27,122,105,112,105,109,112,111, + 114,116,58,32,122,108,105,98,32,85,78,65,86,65,73,76, + 65,66,76,69,250,41,99,97,110,39,116,32,100,101,99,111, + 109,112,114,101,115,115,32,100,97,116,97,59,32,122,108,105, + 98,32,110,111,116,32,97,118,97,105,108,97,98,108,101,84, + 114,0,0,0,0,169,1,218,10,100,101,99,111,109,112,114, + 101,115,115,70,122,25,122,105,112,105,109,112,111,114,116,58, + 32,122,108,105,98,32,97,118,97,105,108,97,98,108,101,41, + 7,218,15,95,105,109,112,111,114,116,105,110,103,95,122,108, + 105,98,114,45,0,0,0,114,80,0,0,0,114,3,0,0, + 0,90,4,122,108,105,98,114,143,0,0,0,218,9,69,120, + 99,101,112,116,105,111,110,114,142,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,20,95,103,101, + 116,95,100,101,99,111,109,112,114,101,115,115,95,102,117,110, + 99,31,2,0,0,115,26,0,0,0,4,2,10,3,8,1, + 4,2,4,1,16,1,12,1,10,1,12,1,12,2,10,2, + 4,1,255,128,114,146,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,17,0,0,0,9,0,0,0,67,0, + 0,0,115,132,1,0,0,124,1,92,8,125,2,125,3,125, + 4,125,5,125,6,125,7,125,8,125,9,124,4,100,1,107, + 0,114,36,116,0,100,2,131,1,130,1,116,1,160,2,124, + 0,161,1,144,1,143,6,125,10,122,14,124,10,160,3,124, + 6,161,1,1,0,87,0,110,32,4,0,116,4,121,96,1, + 0,1,0,1,0,116,0,100,3,124,0,155,2,157,2,124, + 0,100,4,141,2,130,1,48,0,124,10,160,5,100,5,161, + 1,125,11,116,6,124,11,131,1,100,5,107,3,114,128,116, + 7,100,6,131,1,130,1,124,11,100,0,100,7,133,2,25, + 0,100,8,107,3,114,162,116,0,100,9,124,0,155,2,157, + 2,124,0,100,4,141,2,130,1,116,8,124,11,100,10,100, + 11,133,2,25,0,131,1,125,12,116,8,124,11,100,11,100, + 5,133,2,25,0,131,1,125,13,100,5,124,12,23,0,124, + 13,23,0,125,14,124,6,124,14,55,0,125,6,122,14,124, + 10,160,3,124,6,161,1,1,0,87,0,110,34,4,0,116, + 4,144,1,121,6,1,0,1,0,1,0,116,0,100,3,124, + 0,155,2,157,2,124,0,100,4,141,2,130,1,48,0,124, + 10,160,5,124,4,161,1,125,15,116,6,124,15,131,1,124, + 4,107,3,144,1,114,40,116,4,100,12,131,1,130,1,87, + 0,100,0,4,0,4,0,131,3,1,0,110,18,49,0,144, + 1,115,62,48,0,1,0,1,0,1,0,89,0,1,0,124, + 3,100,1,107,2,144,1,114,86,124,15,83,0,122,10,116, + 9,131,0,125,16,87,0,110,24,4,0,116,10,144,1,121, + 120,1,0,1,0,1,0,116,0,100,13,131,1,130,1,48, + 0,124,16,124,15,100,14,131,2,83,0,41,15,78,114,0, + 0,0,0,122,18,110,101,103,97,116,105,118,101,32,100,97, + 116,97,32,115,105,122,101,114,94,0,0,0,114,12,0,0, + 0,114,106,0,0,0,114,100,0,0,0,114,95,0,0,0, + 115,4,0,0,0,80,75,3,4,122,23,98,97,100,32,108, + 111,99,97,108,32,102,105,108,101,32,104,101,97,100,101,114, + 58,32,233,26,0,0,0,114,105,0,0,0,122,26,122,105, + 112,105,109,112,111,114,116,58,32,99,97,110,39,116,32,114, + 101,97,100,32,100,97,116,97,114,141,0,0,0,105,241,255, + 255,255,41,11,114,3,0,0,0,114,112,0,0,0,114,113, + 0,0,0,114,114,0,0,0,114,22,0,0,0,114,116,0, + 0,0,114,55,0,0,0,114,121,0,0,0,114,1,0,0, + 0,114,146,0,0,0,114,145,0,0,0,41,17,114,29,0, + 0,0,114,58,0,0,0,90,8,100,97,116,97,112,97,116, + 104,114,132,0,0,0,114,136,0,0,0,114,127,0,0,0, + 114,139,0,0,0,114,133,0,0,0,114,134,0,0,0,114, + 135,0,0,0,114,125,0,0,0,114,126,0,0,0,114,137, + 0,0,0,114,138,0,0,0,114,129,0,0,0,90,8,114, + 97,119,95,100,97,116,97,114,143,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,56,0,0,0, + 52,2,0,0,115,64,0,0,0,20,1,8,1,8,1,14, + 2,2,2,14,1,12,1,20,1,10,1,12,1,8,1,16, + 2,18,2,16,2,16,1,12,1,8,1,2,1,14,1,14, + 1,20,1,10,1,14,1,40,1,10,2,4,2,2,3,10, + 1,14,1,10,1,10,1,255,128,114,56,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,67,0,0,0,115,16,0,0,0,116,0,124,0, + 124,1,24,0,131,1,100,1,107,1,83,0,41,2,78,114, + 5,0,0,0,41,1,218,3,97,98,115,41,2,90,2,116, + 49,90,2,116,50,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,9,95,101,113,95,109,116,105,109,101,98, + 2,0,0,115,4,0,0,0,16,2,255,128,114,149,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,14,0, + 0,0,8,0,0,0,67,0,0,0,115,60,1,0,0,124, + 3,124,2,100,1,156,2,125,5,122,18,116,0,160,1,124, + 4,124,3,124,5,161,3,125,6,87,0,110,20,4,0,116, + 2,121,48,1,0,1,0,1,0,89,0,100,0,83,0,48, + 0,124,6,100,2,64,0,100,3,107,3,125,7,124,7,114, + 182,124,6,100,4,64,0,100,3,107,3,125,8,116,3,106, + 4,100,5,107,3,144,1,114,10,124,8,115,106,116,3,106, + 4,100,6,107,2,144,1,114,10,116,5,124,0,124,2,131, + 2,125,9,124,9,100,0,117,1,144,1,114,10,116,3,160, + 6,116,0,106,7,124,9,161,2,125,10,122,20,116,0,160, + 8,124,4,124,10,124,3,124,5,161,4,1,0,87,0,110, + 104,4,0,116,2,121,180,1,0,1,0,1,0,89,0,100, + 0,83,0,48,0,116,9,124,0,124,2,131,2,92,2,125, + 11,125,12,124,11,144,1,114,10,116,10,116,11,124,4,100, + 7,100,8,133,2,25,0,131,1,124,11,131,2,114,246,116, + 11,124,4,100,8,100,9,133,2,25,0,131,1,124,12,107, + 3,144,1,114,10,116,12,160,13,100,10,124,3,155,2,157, + 2,161,1,1,0,100,0,83,0,116,14,160,15,124,4,100, + 9,100,0,133,2,25,0,161,1,125,13,116,16,124,13,116, + 17,131,2,144,1,115,56,116,18,100,11,124,1,155,2,100, + 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, + 114,44,0,0,0,114,13,0,0,0,114,5,0,0,0,114, + 0,0,0,0,114,88,0,0,0,90,5,110,101,118,101,114, + 90,6,97,108,119,97,121,115,114,101,0,0,0,114,96,0, + 0,0,114,97,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,122, + 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, + 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, + 101,32,111,98,106,101,99,116,41,19,114,21,0,0,0,90, + 13,95,99,108,97,115,115,105,102,121,95,112,121,99,114,79, + 0,0,0,218,4,95,105,109,112,90,21,99,104,101,99,107, + 95,104,97,115,104,95,98,97,115,101,100,95,112,121,99,115, + 218,15,95,103,101,116,95,112,121,99,95,115,111,117,114,99, + 101,218,11,115,111,117,114,99,101,95,104,97,115,104,90,17, + 95,82,65,87,95,77,65,71,73,67,95,78,85,77,66,69, + 82,90,18,95,118,97,108,105,100,97,116,101,95,104,97,115, + 104,95,112,121,99,218,29,95,103,101,116,95,109,116,105,109, + 101,95,97,110,100,95,115,105,122,101,95,111,102,95,115,111, + 117,114,99,101,114,149,0,0,0,114,2,0,0,0,114,45, + 0,0,0,114,80,0,0,0,218,7,109,97,114,115,104,97, + 108,90,5,108,111,97,100,115,114,15,0,0,0,218,10,95, + 99,111,100,101,95,116,121,112,101,218,9,84,121,112,101,69, + 114,114,111,114,41,14,114,32,0,0,0,114,57,0,0,0, + 114,66,0,0,0,114,38,0,0,0,114,128,0,0,0,90, + 11,101,120,99,95,100,101,116,97,105,108,115,114,131,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,90,12,115,111,117, + 114,99,101,95,98,121,116,101,115,114,152,0,0,0,90,12, + 115,111,117,114,99,101,95,109,116,105,109,101,90,11,115,111, + 117,114,99,101,95,115,105,122,101,114,50,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,15,95, + 117,110,109,97,114,115,104,97,108,95,99,111,100,101,108,2, + 0,0,115,84,0,0,0,2,2,2,1,6,254,2,5,18, + 1,12,1,8,1,12,2,4,1,12,1,12,1,2,1,2, + 255,8,1,4,255,10,2,10,1,4,1,4,1,2,1,4, + 254,2,5,4,1,8,1,8,255,12,2,8,1,8,3,6, + 255,6,3,22,3,18,1,4,255,4,2,8,1,4,255,4, + 2,18,2,12,1,16,1,4,1,255,128,114,157,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,28,0,0,0,124,0, + 160,0,100,1,100,2,161,2,125,0,124,0,160,0,100,3, + 100,2,161,2,125,0,124,0,83,0,41,4,78,115,2,0, + 0,0,13,10,243,1,0,0,0,10,243,1,0,0,0,13, + 41,1,114,19,0,0,0,41,1,218,6,115,111,117,114,99, + 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,23,95,110,111,114,109,97,108,105,122,101,95,108,105,110, + 101,95,101,110,100,105,110,103,115,159,2,0,0,115,8,0, + 0,0,12,1,12,1,4,1,255,128,114,161,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 6,0,0,0,67,0,0,0,115,24,0,0,0,116,0,124, + 1,131,1,125,1,116,1,124,1,124,0,100,1,100,2,100, + 3,141,4,83,0,41,4,78,114,78,0,0,0,84,41,1, + 90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,2, + 114,161,0,0,0,218,7,99,111,109,112,105,108,101,41,2, + 114,57,0,0,0,114,160,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,112, + 105,108,101,95,115,111,117,114,99,101,166,2,0,0,115,6, + 0,0,0,8,1,16,1,255,128,114,163,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11, + 0,0,0,67,0,0,0,115,68,0,0,0,116,0,160,1, + 124,0,100,1,63,0,100,2,23,0,124,0,100,3,63,0, + 100,4,64,0,124,0,100,5,64,0,124,1,100,6,63,0, + 124,1,100,3,63,0,100,7,64,0,124,1,100,5,64,0, + 100,8,20,0,100,9,100,9,100,9,102,9,161,1,83,0, + 41,10,78,233,9,0,0,0,105,188,7,0,0,233,5,0, + 0,0,233,15,0,0,0,233,31,0,0,0,233,11,0,0, + 0,233,63,0,0,0,114,88,0,0,0,114,14,0,0,0, + 41,2,114,133,0,0,0,90,6,109,107,116,105,109,101,41, + 2,218,1,100,114,140,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,218,14,95,112,97,114,115,101, + 95,100,111,115,116,105,109,101,172,2,0,0,115,20,0,0, + 0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,6, + 1,6,249,255,128,114,171,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,10,0,0,0,67, + 0,0,0,115,110,0,0,0,122,82,124,1,100,1,100,0, + 133,2,25,0,100,2,118,0,115,22,74,0,130,1,124,1, + 100,0,100,1,133,2,25,0,125,1,124,0,106,0,124,1, + 25,0,125,2,124,2,100,3,25,0,125,3,124,2,100,4, + 25,0,125,4,124,2,100,5,25,0,125,5,116,1,124,4, + 124,3,131,2,124,5,102,2,87,0,83,0,4,0,116,2, + 116,3,116,4,102,3,121,108,1,0,1,0,1,0,89,0, + 100,6,83,0,48,0,41,7,78,114,14,0,0,0,169,2, + 218,1,99,218,1,111,114,165,0,0,0,233,6,0,0,0, + 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0, + 0,41,5,114,28,0,0,0,114,171,0,0,0,114,26,0, + 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,156, + 0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,114, + 58,0,0,0,114,133,0,0,0,114,134,0,0,0,90,17, + 117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122, + 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,153,0,0,0,185,2,0,0,115,22,0,0,0,2,1, + 20,2,12,1,10,1,8,3,8,1,8,1,16,1,18,1, + 8,1,255,128,114,153,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, + 0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25, + 0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100, + 1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25, + 0,125,2,87,0,110,20,4,0,116,1,121,66,1,0,1, + 0,1,0,89,0,100,0,83,0,48,0,116,2,124,0,106, + 3,124,2,131,2,83,0,41,3,78,114,14,0,0,0,114, + 172,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0, + 114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0, + 0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,151,0,0,0,204, + 2,0,0,115,16,0,0,0,20,2,12,1,2,2,14,1, + 12,1,8,1,12,2,255,128,114,151,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,11,0,0,0,9,0, + 0,0,67,0,0,0,115,190,0,0,0,116,0,124,0,124, + 1,131,2,125,2,116,1,68,0,93,156,92,3,125,3,125, + 4,125,5,124,2,124,3,23,0,125,6,116,2,106,3,100, + 1,124,0,106,4,116,5,124,6,100,2,100,3,141,5,1, + 0,122,14,124,0,106,6,124,6,25,0,125,7,87,0,110, + 18,4,0,116,7,121,86,1,0,1,0,1,0,89,0,113, + 14,48,0,124,7,100,4,25,0,125,8,116,8,124,0,106, + 4,124,7,131,2,125,9,124,4,114,130,116,9,124,0,124, + 8,124,6,124,1,124,9,131,5,125,10,110,10,116,10,124, + 8,124,9,131,2,125,10,124,10,100,0,117,0,114,150,113, + 14,124,7,100,4,25,0,125,8,124,10,124,5,124,8,102, + 3,2,0,1,0,83,0,116,11,100,5,124,1,155,2,157, + 2,124,1,100,6,141,2,130,1,41,7,78,122,13,116,114, + 121,105,110,103,32,123,125,123,125,123,125,114,88,0,0,0, + 41,1,90,9,118,101,114,98,111,115,105,116,121,114,0,0, + 0,0,114,61,0,0,0,114,62,0,0,0,41,12,114,36, + 0,0,0,114,91,0,0,0,114,45,0,0,0,114,80,0, + 0,0,114,29,0,0,0,114,20,0,0,0,114,28,0,0, + 0,114,26,0,0,0,114,56,0,0,0,114,157,0,0,0, + 114,163,0,0,0,114,3,0,0,0,41,11,114,32,0,0, + 0,114,38,0,0,0,114,13,0,0,0,114,92,0,0,0, + 114,93,0,0,0,114,51,0,0,0,114,66,0,0,0,114, + 58,0,0,0,114,40,0,0,0,114,128,0,0,0,114,50, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,48,0,0,0,219,2,0,0,115,38,0,0,0, + 10,1,14,1,8,1,22,1,2,1,14,1,12,1,6,1, + 8,2,12,1,4,1,18,1,10,2,8,1,2,3,8,1, + 14,1,18,2,255,128,114,48,0,0,0,41,46,114,86,0, + 0,0,90,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,21, + 0,0,0,114,1,0,0,0,114,2,0,0,0,90,17,95, + 102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,98, + 114,45,0,0,0,114,150,0,0,0,114,112,0,0,0,114, + 154,0,0,0,114,71,0,0,0,114,133,0,0,0,114,69, + 0,0,0,90,7,95,95,97,108,108,95,95,114,20,0,0, + 0,90,15,112,97,116,104,95,115,101,112,97,114,97,116,111, + 114,115,114,18,0,0,0,114,79,0,0,0,114,3,0,0, + 0,114,25,0,0,0,218,4,116,121,112,101,114,74,0,0, + 0,114,115,0,0,0,114,117,0,0,0,114,119,0,0,0, + 90,13,95,76,111,97,100,101,114,66,97,115,105,99,115,114, + 4,0,0,0,114,91,0,0,0,114,36,0,0,0,114,37, + 0,0,0,114,35,0,0,0,114,27,0,0,0,114,124,0, + 0,0,114,144,0,0,0,114,146,0,0,0,114,56,0,0, + 0,114,149,0,0,0,114,157,0,0,0,218,8,95,95,99, + 111,100,101,95,95,114,155,0,0,0,114,161,0,0,0,114, + 163,0,0,0,114,171,0,0,0,114,153,0,0,0,114,151, + 0,0,0,114,48,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,8,60,109, + 111,100,117,108,101,62,1,0,0,0,115,92,0,0,0,4, + 0,8,16,16,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,2,6,3,14,1,16,3,4,4,8,2,4, + 2,4,1,4,1,18,2,0,127,0,127,12,33,12,1,2, + 1,2,1,4,252,8,9,8,4,8,9,8,31,2,126,2, + 254,4,29,8,5,8,21,8,46,8,10,10,46,8,5,8, + 7,8,6,8,13,8,19,12,15,255,128, }; From webhook-mailer at python.org Fri Dec 4 22:46:01 2020 From: webhook-mailer at python.org (brandtbucher) Date: Sat, 05 Dec 2020 03:46:01 -0000 Subject: [Python-checkins] bpo-42536: GC track recycled tuples (GH-23623) Message-ID: https://github.com/python/cpython/commit/226a012d1cd61f42ecd3056c554922f359a1a35d commit: 226a012d1cd61f42ecd3056c554922f359a1a35d branch: master author: Brandt Bucher committer: brandtbucher date: 2020-12-04T19:45:57-08:00 summary: bpo-42536: GC track recycled tuples (GH-23623) Several built-in and standard library types now ensure that their internal result tuples are always tracked by the garbage collector: - collections.OrderedDict.items - dict.items - enumerate - functools.reduce - itertools.combinations - itertools.combinations_with_replacement - itertools.permutations - itertools.product - itertools.zip_longest - zip Previously, they could have become untracked by a prior garbage collection. files: A Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst M Lib/test/test_builtin.py M Lib/test/test_dict.py M Lib/test/test_enumerate.py M Lib/test/test_itertools.py M Lib/test/test_ordered_dict.py M Modules/_functoolsmodule.c M Modules/itertoolsmodule.c M Objects/dictobject.c M Objects/enumobject.c M Objects/odictobject.c M Python/bltinmodule.c diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index edb4ec092e358..8c9573731ae2e 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -6,6 +6,7 @@ import collections import decimal import fractions +import gc import io import locale import os @@ -1756,6 +1757,18 @@ def __next__(self): l8 = self.iter_error(zip(Iter(3), "AB", strict=True), ValueError) self.assertEqual(l8, [(2, "A"), (1, "B")]) + @support.cpython_only + def test_zip_result_gc(self): + # bpo-42536: zip's tuple-reuse speed trick breaks the GC's assumptions + # about what can be untracked. Make sure we re-track result tuples + # whenever we reuse them. + it = zip([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + def test_format(self): # Test the basic machinery of the format() builtin. Don't test # the specifics of the various formatters diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 9ff8b7d501aad..4b31cdc79415f 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -1452,6 +1452,25 @@ def items(self): d = CustomReversedDict(pairs) self.assertEqual(pairs[::-1], list(dict(d).items())) + @support.cpython_only + def test_dict_items_result_gc(self): + # bpo-42536: dict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter({None: []}.items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_dict_items_result_gc(self): + # Same as test_dict_items_result_gc above, but reversed. + it = reversed({None: []}.items()) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + class CAPITest(unittest.TestCase): diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index 5785cb46492ef..906bfc21a26ae 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -2,6 +2,7 @@ import operator import sys import pickle +import gc from test import support @@ -134,6 +135,18 @@ def test_tuple_reuse(self): self.assertEqual(len(set(map(id, list(enumerate(self.seq))))), len(self.seq)) self.assertEqual(len(set(map(id, enumerate(self.seq)))), min(1,len(self.seq))) + @support.cpython_only + def test_enumerate_result_gc(self): + # bpo-42536: enumerate's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = self.enum([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + class MyEnum(enumerate): pass diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index df2997e87d494..a99b5e2bb71db 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -12,6 +12,8 @@ import sys import struct import threading +import gc + maxsize = support.MAX_Py_ssize_t minsize = -maxsize-1 @@ -1573,6 +1575,51 @@ def test_StopIteration(self): self.assertRaises(StopIteration, next, f(lambda x:x, [])) self.assertRaises(StopIteration, next, f(lambda x:x, StopNow())) + @support.cpython_only + def test_combinations_result_gc(self): + # bpo-42536: combinations's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = combinations([None, []], 1) + next(it) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which has the value (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_combinations_with_replacement_result_gc(self): + # Ditto for combinations_with_replacement. + it = combinations_with_replacement([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_permutations_result_gc(self): + # Ditto for permutations. + it = permutations([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_product_result_gc(self): + # Ditto for product. + it = product([None, []]) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_zip_longest_result_gc(self): + # Ditto for zip_longest. + it = zip_longest([[]]) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + class TestExamples(unittest.TestCase): def test_accumulate(self): diff --git a/Lib/test/test_ordered_dict.py b/Lib/test/test_ordered_dict.py index 31759f20d2834..eb404463e9255 100644 --- a/Lib/test/test_ordered_dict.py +++ b/Lib/test/test_ordered_dict.py @@ -700,6 +700,17 @@ def test_merge_operator(self): with self.assertRaises(ValueError): a |= "BAD" + @support.cpython_only + def test_ordered_dict_items_result_gc(self): + # bpo-42536: OrderedDict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter(self.OrderedDict({None: []}).items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) class PurePythonOrderedDictTests(OrderedDictTests, unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst new file mode 100644 index 0000000000000..6ccacab1f64f6 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst @@ -0,0 +1,26 @@ +Several built-in and standard library types now ensure that their internal +result tuples are always tracked by the :term:`garbage collector +`: + +- :meth:`collections.OrderedDict.items() ` + +- :meth:`dict.items` + +- :func:`enumerate` + +- :func:`functools.reduce` + +- :func:`itertools.combinations` + +- :func:`itertools.combinations_with_replacement` + +- :func:`itertools.permutations` + +- :func:`itertools.product` + +- :func:`itertools.zip_longest` + +- :func:`zip` + +Previously, they could have become untracked by a prior garbage collection. +Patch by Brandt Bucher. diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index ff03c334766b8..621b721d011df 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -1,5 +1,6 @@ #include "Python.h" #include "pycore_long.h" // _PyLong_GetZero() +#include "pycore_object.h" // _PyObject_GC_TRACK #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_tuple.h" // _PyTuple_ITEMS() #include "structmember.h" // PyMemberDef @@ -673,6 +674,11 @@ functools_reduce(PyObject *self, PyObject *args) if ((result = PyObject_Call(func, args, NULL)) == NULL) { goto Fail; } + // bpo-42536: The GC may have untracked this args tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(args)) { + _PyObject_GC_TRACK(args); + } } } diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 7144856c352f8..293735a886428 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -3,6 +3,7 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" #include "pycore_long.h" // _PyLong_GetZero() +#include "pycore_object.h" // _PyObject_GC_TRACK() #include "pycore_tuple.h" // _PyTuple_ITEMS() #include // offsetof() @@ -2378,6 +2379,11 @@ product_next(productobject *lz) lz->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert (npools==0 || Py_REFCNT(result) == 1); @@ -2701,6 +2707,11 @@ combinations_next(combinationsobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place * CPython's empty tuple is a singleton and cached in * PyTuple's freelist. @@ -3035,6 +3046,11 @@ cwr_next(cwrobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place CPython's empty tuple is a singleton and cached in PyTuple's freelist. */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -3379,6 +3395,11 @@ permutations_next(permutationsobject *po) po->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -4649,6 +4670,11 @@ zip_longest_next(ziplongestobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 7a37313df8a6b..35e881fe27230 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3989,6 +3989,11 @@ dictiter_iternextitem(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); @@ -4104,6 +4109,11 @@ dictreviter_iternext(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since + // we're recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Objects/enumobject.c b/Objects/enumobject.c index 8b5e7d3a3c6dd..98ece3f13fc6f 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -2,6 +2,7 @@ #include "Python.h" #include "pycore_long.h" // _PyLong_GetOne() +#include "pycore_object.h" // _PyObject_GC_TRACK() #include "clinic/enumobject.c.h" @@ -131,6 +132,11 @@ enum_next_long(enumobject *en, PyObject* next_item) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); @@ -176,6 +182,11 @@ enum_next(enumobject *en) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); diff --git a/Objects/odictobject.c b/Objects/odictobject.c index 4eb15f999bd1e..6c7f1175cd652 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -1814,6 +1814,11 @@ odictiter_iternext(odictiterobject *di) Py_INCREF(result); Py_DECREF(PyTuple_GET_ITEM(result, 0)); /* borrowed */ Py_DECREF(PyTuple_GET_ITEM(result, 1)); /* borrowed */ + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index a73b8cb320e97..352fb83d55e05 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2636,6 +2636,11 @@ zip_next(zipobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) From webhook-mailer at python.org Fri Dec 4 23:02:19 2020 From: webhook-mailer at python.org (ned-deily) Date: Sat, 05 Dec 2020 04:02:19 -0000 Subject: [Python-checkins] bpo-41116: Fix setup.py test for macOS Tcl/Tk frameworks (GH-23649) Message-ID: https://github.com/python/cpython/commit/29afab6c5f656f07ac85c9b2cf089631b2557a11 commit: 29afab6c5f656f07ac85c9b2cf089631b2557a11 branch: master author: Ned Deily committer: ned-deily date: 2020-12-04T23:02:09-05:00 summary: bpo-41116: Fix setup.py test for macOS Tcl/Tk frameworks (GH-23649) If no explicit macOS SDK was specified, setup.py should check for Tcl and TK frameworks in /Library/Frameworks; the previous commit inadvertently broke that test. files: M setup.py diff --git a/setup.py b/setup.py index 0c9a425016869..90588e8b1d1fc 100644 --- a/setup.py +++ b/setup.py @@ -177,10 +177,11 @@ def macosx_sdk_root(): m = re.search(r'-isysroot\s*(\S+)', cflags) if m is not None: MACOS_SDK_ROOT = m.group(1) + MACOS_SDK_SPECIFIED = MACOS_SDK_ROOT != '/' else: MACOS_SDK_ROOT = _osx_support._default_sysroot( sysconfig.get_config_var('CC')) - MACOS_SDK_SPECIFIED = MACOS_SDK_ROOT != '/' + MACOS_SDK_SPECIFIED = False return MACOS_SDK_ROOT From webhook-mailer at python.org Fri Dec 4 23:27:21 2020 From: webhook-mailer at python.org (ned-deily) Date: Sat, 05 Dec 2020 04:27:21 -0000 Subject: [Python-checkins] [3.9] bpo-41116: Fix setup.py test for macOS Tcl/Tk frameworks (GH-23649) (GH-23650) Message-ID: https://github.com/python/cpython/commit/06002b3f0d4570424feef37103c7e9b7d16bd63d commit: 06002b3f0d4570424feef37103c7e9b7d16bd63d branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-04T23:26:59-05:00 summary: [3.9] bpo-41116: Fix setup.py test for macOS Tcl/Tk frameworks (GH-23649) (GH-23650) If no explicit macOS SDK was specified, setup.py should check for Tcl and TK frameworks in /Library/Frameworks; the previous commit inadvertently broke that test. (cherry picked from commit 29afab6c5f656f07ac85c9b2cf089631b2557a11) Co-authored-by: Ned Deily files: A Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst M setup.py diff --git a/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst b/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst new file mode 100644 index 0000000000000..2c8e5ea029734 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst @@ -0,0 +1,3 @@ +If no explicit macOS SDK was specified, setup.py should check for Tcl and TK +frameworks in /Library/Frameworks; the previous commit inadvertently broke +that test. diff --git a/setup.py b/setup.py index bfe621d0b50da..bd5f73692441c 100644 --- a/setup.py +++ b/setup.py @@ -177,10 +177,11 @@ def macosx_sdk_root(): m = re.search(r'-isysroot\s*(\S+)', cflags) if m is not None: MACOS_SDK_ROOT = m.group(1) + MACOS_SDK_SPECIFIED = MACOS_SDK_ROOT != '/' else: MACOS_SDK_ROOT = _osx_support._default_sysroot( sysconfig.get_config_var('CC')) - MACOS_SDK_SPECIFIED = MACOS_SDK_ROOT != '/' + MACOS_SDK_SPECIFIED = False return MACOS_SDK_ROOT From webhook-mailer at python.org Sat Dec 5 05:35:21 2020 From: webhook-mailer at python.org (vstinner) Date: Sat, 05 Dec 2020 10:35:21 -0000 Subject: [Python-checkins] bpo-30459: Cast the result of PyList_SET_ITEM() to void (GH-19975) Message-ID: https://github.com/python/cpython/commit/556d97f473fa538cef780f84bd29239ecf57d9c5 commit: 556d97f473fa538cef780f84bd29239ecf57d9c5 branch: master author: Zackery Spytz committer: vstinner date: 2020-12-05T11:34:51+01:00 summary: bpo-30459: Cast the result of PyList_SET_ITEM() to void (GH-19975) Do the same for PyTuple_SET_ITEM(). files: A Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst M Include/cpython/listobject.h M Include/cpython/tupleobject.h diff --git a/Include/cpython/listobject.h b/Include/cpython/listobject.h index e1b9462d5b361..e3239152c497c 100644 --- a/Include/cpython/listobject.h +++ b/Include/cpython/listobject.h @@ -30,5 +30,5 @@ PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out); #define _PyList_CAST(op) (assert(PyList_Check(op)), (PyListObject *)(op)) #define PyList_GET_ITEM(op, i) (_PyList_CAST(op)->ob_item[i]) -#define PyList_SET_ITEM(op, i, v) (_PyList_CAST(op)->ob_item[i] = (v)) +#define PyList_SET_ITEM(op, i, v) ((void)(_PyList_CAST(op)->ob_item[i] = (v))) #define PyList_GET_SIZE(op) Py_SIZE(_PyList_CAST(op)) diff --git a/Include/cpython/tupleobject.h b/Include/cpython/tupleobject.h index 51dcd4237be18..7cada8848c49f 100644 --- a/Include/cpython/tupleobject.h +++ b/Include/cpython/tupleobject.h @@ -23,6 +23,6 @@ PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *); #define PyTuple_GET_ITEM(op, i) (_PyTuple_CAST(op)->ob_item[i]) /* Macro, *only* to be used to fill in brand new tuples */ -#define PyTuple_SET_ITEM(op, i, v) (_PyTuple_CAST(op)->ob_item[i] = v) +#define PyTuple_SET_ITEM(op, i, v) ((void)(_PyTuple_CAST(op)->ob_item[i] = v)) PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out); diff --git a/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst b/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst new file mode 100644 index 0000000000000..e3ee6dccdaa76 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst @@ -0,0 +1,2 @@ +Cast the result of :c:func:`PyList_SET_ITEM` and :c:func:`PyTuple_SET_ITEM` +to void. From webhook-mailer at python.org Sat Dec 5 08:26:28 2020 From: webhook-mailer at python.org (orsenthil) Date: Sat, 05 Dec 2020 13:26:28 -0000 Subject: [Python-checkins] GH-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed (#23638) Message-ID: https://github.com/python/cpython/commit/da3d2abe6be9fcf18cac12ec5d7d9f1180d94b5e commit: da3d2abe6be9fcf18cac12ec5d7d9f1180d94b5e branch: master author: Senthil Kumaran committer: orsenthil date: 2020-12-05T05:26:24-08:00 summary: GH-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed (#23638) files: A Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst M Lib/http/server.py M Lib/test/test_httpservers.py diff --git a/Lib/http/server.py b/Lib/http/server.py index c611381177d43..94f730ed3445b 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -1122,12 +1122,7 @@ def run_cgi(self): referer = self.headers.get('referer') if referer: env['HTTP_REFERER'] = referer - accept = [] - for line in self.headers.getallmatchingheaders('accept'): - if line[:1] in "\t\n\r ": - accept.append(line.strip()) - else: - accept = accept + line[7:].split(',') + accept = self.headers.get_all('accept', ()) env['HTTP_ACCEPT'] = ','.join(accept) ua = self.headers.get('user-agent') if ua: diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index 2859abb21fc9f..c3d7c8feb1ec0 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -3,7 +3,7 @@ Written by Cody A.W. Somerville , Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest. """ - +from collections import OrderedDict from http.server import BaseHTTPRequestHandler, HTTPServer, \ SimpleHTTPRequestHandler, CGIHTTPRequestHandler from http import server, HTTPStatus @@ -19,7 +19,7 @@ import email.message import email.utils import html -import http.client +import http, http.client import urllib.parse import tempfile import time @@ -588,6 +588,15 @@ def test_html_escape_filename(self): print(os.environ["%s"]) """ +cgi_file6 = """\ +#!%s +import os + +print("Content-type: text/plain") +print() +print(repr(os.environ)) +""" + @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, "This test can't be run reliably as root (issue #13308).") @@ -666,6 +675,11 @@ def setUp(self): file5.write(cgi_file1 % self.pythonexe) os.chmod(self.file5_path, 0o777) + self.file6_path = os.path.join(self.cgi_dir, 'file6.py') + with open(self.file6_path, 'w', encoding='utf-8') as file6: + file6.write(cgi_file6 % self.pythonexe) + os.chmod(self.file6_path, 0o777) + os.chdir(self.parent_dir) def tearDown(self): @@ -685,6 +699,8 @@ def tearDown(self): os.remove(self.file4_path) if self.file5_path: os.remove(self.file5_path) + if self.file6_path: + os.remove(self.file6_path) os.rmdir(self.cgi_child_dir) os.rmdir(self.cgi_dir) os.rmdir(self.cgi_dir_in_sub_dir) @@ -818,6 +834,23 @@ def test_cgi_path_in_sub_directories(self): finally: CGIHTTPRequestHandler.cgi_directories.remove('/sub/dir/cgi-bin') + def test_accept(self): + browser_accept = \ + 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + tests = ( + ((('Accept', browser_accept),), browser_accept), + ((), ''), + # Hack case to get two values for the one header + ((('Accept', 'text/html'), ('ACCEPT', 'text/plain')), + 'text/html,text/plain'), + ) + for headers, expected in tests: + headers = OrderedDict(headers) + with self.subTest(headers): + res = self.request('/cgi-bin/file6.py', 'GET', headers=headers) + self.assertEqual(http.HTTPStatus.OK, res.status) + expected = f"'HTTP_ACCEPT': {expected!r}" + self.assertIn(expected.encode('ascii'), res.read()) class SocketlessRequestHandler(SimpleHTTPRequestHandler): diff --git a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst new file mode 100644 index 0000000000000..ad8163c7c1d20 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst @@ -0,0 +1,5 @@ +CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the +special purpose getallmatchingheaders with generic get_all method and add +relevant tests. + +Original Patch by Martin Panter. Modified by Senthil Kumaran. From webhook-mailer at python.org Sat Dec 5 10:26:45 2020 From: webhook-mailer at python.org (miss-islington) Date: Sat, 05 Dec 2020 15:26:45 -0000 Subject: [Python-checkins] [3.9] bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed (GH-23638) (GH-23657) Message-ID: https://github.com/python/cpython/commit/b630ca7bc13ba9bdf95cd7dce0ac8e1578fb53a0 commit: b630ca7bc13ba9bdf95cd7dce0ac8e1578fb53a0 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-05T07:26:37-08:00 summary: [3.9] bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed (GH-23638) (GH-23657) (cherry picked from commit da3d2abe6be9fcf18cac12ec5d7d9f1180d94b5e) Co-authored-by: Senthil Kumaran Automerge-Triggered-By: GH:orsenthil files: A Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst M Lib/http/server.py M Lib/test/test_httpservers.py diff --git a/Lib/http/server.py b/Lib/http/server.py index fa204fbc15e3d..def05f46be4f9 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -1123,12 +1123,7 @@ def run_cgi(self): referer = self.headers.get('referer') if referer: env['HTTP_REFERER'] = referer - accept = [] - for line in self.headers.getallmatchingheaders('accept'): - if line[:1] in "\t\n\r ": - accept.append(line.strip()) - else: - accept = accept + line[7:].split(',') + accept = self.headers.get_all('accept', ()) env['HTTP_ACCEPT'] = ','.join(accept) ua = self.headers.get('user-agent') if ua: diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index c442f5571a868..8df0b5251f1ae 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -3,7 +3,7 @@ Written by Cody A.W. Somerville , Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest. """ - +from collections import OrderedDict from http.server import BaseHTTPRequestHandler, HTTPServer, \ SimpleHTTPRequestHandler, CGIHTTPRequestHandler from http import server, HTTPStatus @@ -19,7 +19,7 @@ import email.message import email.utils import html -import http.client +import http, http.client import urllib.parse import tempfile import time @@ -586,6 +586,15 @@ def test_html_escape_filename(self): print(os.environ["%s"]) """ +cgi_file6 = """\ +#!%s +import os + +print("Content-type: text/plain") +print() +print(repr(os.environ)) +""" + @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, "This test can't be run reliably as root (issue #13308).") @@ -664,6 +673,11 @@ def setUp(self): file5.write(cgi_file1 % self.pythonexe) os.chmod(self.file5_path, 0o777) + self.file6_path = os.path.join(self.cgi_dir, 'file6.py') + with open(self.file6_path, 'w', encoding='utf-8') as file6: + file6.write(cgi_file6 % self.pythonexe) + os.chmod(self.file6_path, 0o777) + os.chdir(self.parent_dir) def tearDown(self): @@ -683,6 +697,8 @@ def tearDown(self): os.remove(self.file4_path) if self.file5_path: os.remove(self.file5_path) + if self.file6_path: + os.remove(self.file6_path) os.rmdir(self.cgi_child_dir) os.rmdir(self.cgi_dir) os.rmdir(self.cgi_dir_in_sub_dir) @@ -816,6 +832,23 @@ def test_cgi_path_in_sub_directories(self): finally: CGIHTTPRequestHandler.cgi_directories.remove('/sub/dir/cgi-bin') + def test_accept(self): + browser_accept = \ + 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + tests = ( + ((('Accept', browser_accept),), browser_accept), + ((), ''), + # Hack case to get two values for the one header + ((('Accept', 'text/html'), ('ACCEPT', 'text/plain')), + 'text/html,text/plain'), + ) + for headers, expected in tests: + headers = OrderedDict(headers) + with self.subTest(headers): + res = self.request('/cgi-bin/file6.py', 'GET', headers=headers) + self.assertEqual(http.HTTPStatus.OK, res.status) + expected = f"'HTTP_ACCEPT': {expected!r}" + self.assertIn(expected.encode('ascii'), res.read()) class SocketlessRequestHandler(SimpleHTTPRequestHandler): diff --git a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst new file mode 100644 index 0000000000000..ad8163c7c1d20 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst @@ -0,0 +1,5 @@ +CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the +special purpose getallmatchingheaders with generic get_all method and add +relevant tests. + +Original Patch by Martin Panter. Modified by Senthil Kumaran. From webhook-mailer at python.org Sat Dec 5 11:02:24 2020 From: webhook-mailer at python.org (miss-islington) Date: Sat, 05 Dec 2020 16:02:24 -0000 Subject: [Python-checkins] bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (GH-23656) Message-ID: https://github.com/python/cpython/commit/804d6893b801e8f30318afc38c20d4d0e6161db3 commit: 804d6893b801e8f30318afc38c20d4d0e6161db3 branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-05T08:02:14-08:00 summary: bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (GH-23656) Use `_PyArg_NoKeywords` instead of `_PyArg_NoKwnames` when checking the `kwds` tuple when creating `GenericAlias`. This fixes an interpreter crash when passing in keyword arguments to `GenericAlias`'s constructor. Needs backport to 3.9. Automerge-Triggered-By: GH:gvanrossum files: A Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst M Lib/test/test_genericalias.py M Objects/genericaliasobject.c diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 912fb33af1a21..c113e538248e9 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -302,6 +302,11 @@ def test_weakref(self): alias = t[int] self.assertEqual(ref(alias)(), alias) + def test_no_kwargs(self): + # bpo-42576 + with self.assertRaises(TypeError): + GenericAlias(bad=float) + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst new file mode 100644 index 0000000000000..7290b47dcc15c --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst @@ -0,0 +1,3 @@ +``types.GenericAlias`` will now raise a ``TypeError`` when attempting to +initialize with a keyword argument. Previously, this would cause the +interpreter to crash. Patch by Ken Jin. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 6102e05c165c5..51a12377b7e30 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -567,7 +567,7 @@ static PyGetSetDef ga_properties[] = { static PyObject * ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - if (!_PyArg_NoKwnames("GenericAlias", kwds)) { + if (!_PyArg_NoKeywords("GenericAlias", kwds)) { return NULL; } if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) { From webhook-mailer at python.org Sat Dec 5 11:24:42 2020 From: webhook-mailer at python.org (miss-islington) Date: Sat, 05 Dec 2020 16:24:42 -0000 Subject: [Python-checkins] bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (GH-23656) Message-ID: https://github.com/python/cpython/commit/d5c029b1a9b47737efb8966f804d28b99a2de239 commit: d5c029b1a9b47737efb8966f804d28b99a2de239 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-05T08:24:38-08:00 summary: bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (GH-23656) Use `_PyArg_NoKeywords` instead of `_PyArg_NoKwnames` when checking the `kwds` tuple when creating `GenericAlias`. This fixes an interpreter crash when passing in keyword arguments to `GenericAlias`'s constructor. Needs backport to 3.9. Automerge-Triggered-By: GH:gvanrossum (cherry picked from commit 804d6893b801e8f30318afc38c20d4d0e6161db3) Co-authored-by: kj <28750310+Fidget-Spinner at users.noreply.github.com> files: A Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst M Lib/test/test_genericalias.py M Objects/genericaliasobject.c diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 912fb33af1a21..c113e538248e9 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -302,6 +302,11 @@ def test_weakref(self): alias = t[int] self.assertEqual(ref(alias)(), alias) + def test_no_kwargs(self): + # bpo-42576 + with self.assertRaises(TypeError): + GenericAlias(bad=float) + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst new file mode 100644 index 0000000000000..7290b47dcc15c --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst @@ -0,0 +1,3 @@ +``types.GenericAlias`` will now raise a ``TypeError`` when attempting to +initialize with a keyword argument. Previously, this would cause the +interpreter to crash. Patch by Ken Jin. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 4b6c8c6ed8d1f..c5a81a5c1aab2 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -566,7 +566,7 @@ static PyGetSetDef ga_properties[] = { static PyObject * ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - if (!_PyArg_NoKwnames("GenericAlias", kwds)) { + if (!_PyArg_NoKeywords("GenericAlias", kwds)) { return NULL; } if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) { From webhook-mailer at python.org Sun Dec 6 05:00:00 2020 From: webhook-mailer at python.org (cjw296) Date: Sun, 06 Dec 2020 10:00:00 -0000 Subject: [Python-checkins] bpo-42532: Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function (GH23613) Message-ID: https://github.com/python/cpython/commit/c598a04dd29b89ad072245ddaf738badcfb41ac7 commit: c598a04dd29b89ad072245ddaf738badcfb41ac7 branch: master author: idanw206 <31290383+idanw206 at users.noreply.github.com> committer: cjw296 date: 2020-12-06T09:59:36Z summary: bpo-42532: Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function (GH23613) Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function files: A Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst M Lib/unittest/mock.py M Lib/unittest/test/testmock/testmock.py diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index f5f502f257244..4db1bacf4b10c 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -406,7 +406,7 @@ def __new__(cls, /, *args, **kw): # Check if spec is an async object or function bound_args = _MOCK_SIG.bind_partial(cls, *args, **kw).arguments spec_arg = bound_args.get('spec_set', bound_args.get('spec')) - if spec_arg and _is_async_obj(spec_arg): + if spec_arg is not None and _is_async_obj(spec_arg): bases = (AsyncMockMixin, cls) new = type(cls.__name__, bases, {'__doc__': cls.__doc__}) instance = _safe_super(NonCallableMock, cls).__new__(new) diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index 194ce3f61bbfd..dfcf1ef2ee030 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -2165,6 +2165,16 @@ def trace(frame, event, arg): # pragma: no cover obj = mock(spec=Something) self.assertIsInstance(obj, Something) + def test_bool_not_called_when_passing_spec_arg(self): + class Something: + def __init__(self): + self.obj_with_bool_func = unittest.mock.MagicMock() + + obj = Something() + with unittest.mock.patch.object(obj, 'obj_with_bool_func', autospec=True): pass + + self.assertEqual(obj.obj_with_bool_func.__bool__.call_count, 0) + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst b/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst new file mode 100644 index 0000000000000..7465cb8e2e3d7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst @@ -0,0 +1 @@ +Remove unexpected call of ``__bool__`` when passing a ``spec_arg`` argument to a Mock. From webhook-mailer at python.org Sun Dec 6 11:38:07 2020 From: webhook-mailer at python.org (miss-islington) Date: Sun, 06 Dec 2020 16:38:07 -0000 Subject: [Python-checkins] bpo-42576: Clarify only debug builds are affected in news (GH-23663) Message-ID: https://github.com/python/cpython/commit/6a7fb9d31bce8590e30c44458d1fc1da4539743d commit: 6a7fb9d31bce8590e30c44458d1fc1da4539743d branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-06T08:37:59-08:00 summary: bpo-42576: Clarify only debug builds are affected in news (GH-23663) files: M Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst index 7290b47dcc15c..154c9d8a915de 100644 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst @@ -1,3 +1,4 @@ ``types.GenericAlias`` will now raise a ``TypeError`` when attempting to initialize with a keyword argument. Previously, this would cause the -interpreter to crash. Patch by Ken Jin. +interpreter to crash if the interpreter was compiled with debug symbols. +This does not affect interpreters compiled for release. Patch by Ken Jin. From webhook-mailer at python.org Sun Dec 6 11:55:07 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sun, 06 Dec 2020 16:55:07 -0000 Subject: [Python-checkins] bpo-42582: Remove asyncio._all_tasks_compat(). (GH-23664) Message-ID: https://github.com/python/cpython/commit/8a62887dfb4bb2835048780ad673362f7ee3c7bf commit: 8a62887dfb4bb2835048780ad673362f7ee3c7bf branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-06T18:54:33+02:00 summary: bpo-42582: Remove asyncio._all_tasks_compat(). (GH-23664) It was used to implement now removed asyncio.Task.all_tasks(). files: M Lib/asyncio/__init__.py M Lib/asyncio/tasks.py diff --git a/Lib/asyncio/__init__.py b/Lib/asyncio/__init__.py index eb84bfb189ccf..200b14c2a3f21 100644 --- a/Lib/asyncio/__init__.py +++ b/Lib/asyncio/__init__.py @@ -20,10 +20,6 @@ from .threads import * from .transports import * -# Exposed for _asynciomodule.c to implement now deprecated -# Task.all_tasks() method. This function will be removed in 3.9. -from .tasks import _all_tasks_compat # NoQA - __all__ = (base_events.__all__ + coroutines.__all__ + events.__all__ + diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index eef7f8808eb06..0d3a24b7853f5 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -61,30 +61,6 @@ def all_tasks(loop=None): if futures._get_loop(t) is loop and not t.done()} -def _all_tasks_compat(loop=None): - # Different from "all_task()" by returning *all* Tasks, including - # the completed ones. Used to implement deprecated "Tasks.all_task()" - # method. - if loop is None: - loop = events.get_event_loop() - # Looping over a WeakSet (_all_tasks) isn't safe as it can be updated from another - # thread while we do so. Therefore we cast it to list prior to filtering. The list - # cast itself requires iteration, so we repeat it several times ignoring - # RuntimeErrors (which are not very likely to occur). See issues 34970 and 36607 for - # details. - i = 0 - while True: - try: - tasks = list(_all_tasks) - except RuntimeError: - i += 1 - if i >= 1000: - raise - else: - break - return {t for t in tasks if futures._get_loop(t) is loop} - - def _set_task_name(task, name): if name is not None: try: From webhook-mailer at python.org Sun Dec 6 12:01:06 2020 From: webhook-mailer at python.org (miss-islington) Date: Sun, 06 Dec 2020 17:01:06 -0000 Subject: [Python-checkins] [3.9] bpo-42576: Clarify only debug builds are affected in news (GH-23663) (GH-23666) Message-ID: https://github.com/python/cpython/commit/8502d46e3649bedf6b58a30b0a4b6b726e32b84b commit: 8502d46e3649bedf6b58a30b0a4b6b726e32b84b branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-06T09:00:57-08:00 summary: [3.9] bpo-42576: Clarify only debug builds are affected in news (GH-23663) (GH-23666) (cherry picked from commit 6a7fb9d31bce8590e30c44458d1fc1da4539743d) Co-authored-by: kj <28750310+Fidget-Spinner at users.noreply.github.com> Automerge-Triggered-By: GH:gvanrossum files: M Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst index 7290b47dcc15c..154c9d8a915de 100644 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst @@ -1,3 +1,4 @@ ``types.GenericAlias`` will now raise a ``TypeError`` when attempting to initialize with a keyword argument. Previously, this would cause the -interpreter to crash. Patch by Ken Jin. +interpreter to crash if the interpreter was compiled with debug symbols. +This does not affect interpreters compiled for release. Patch by Ken Jin. From webhook-mailer at python.org Sun Dec 6 21:29:37 2020 From: webhook-mailer at python.org (rhettinger) Date: Mon, 07 Dec 2020 02:29:37 -0000 Subject: [Python-checkins] bpo-38843: Document behavior of default when the attribute is already set (GH-23653) Message-ID: https://github.com/python/cpython/commit/752cdf21eb2be0a26ea6a34a0de33a458459aead commit: 752cdf21eb2be0a26ea6a34a0de33a458459aead branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-06T18:29:08-08:00 summary: bpo-38843: Document behavior of default when the attribute is already set (GH-23653) files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index a32b99901a7b4..02cd70f4f71cd 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -696,7 +696,7 @@ The add_argument() method * const_ - A constant value required by some action_ and nargs_ selections. * default_ - The value produced if the argument is absent from the - command line. + command line and if it is absent from the namespace object. * type_ - The type to which the command-line argument should be converted. @@ -1006,6 +1006,14 @@ was not present at the command line:: >>> parser.parse_args([]) Namespace(foo=42) +If the target namespace already has an attribute set, the action *default* +will not over write it:: + + >>> parser = argparse.ArgumentParser() + >>> parser.add_argument('--foo', default=42) + >>> parser.parse_args([], namespace=argparse.Namespace(foo=101)) + Namespace(foo=101) + If the ``default`` value is a string, the parser parses the value as if it were a command-line argument. In particular, the parser applies any type_ conversion argument, if provided, before setting the attribute on the From webhook-mailer at python.org Sun Dec 6 22:22:46 2020 From: webhook-mailer at python.org (ned-deily) Date: Mon, 07 Dec 2020 03:22:46 -0000 Subject: [Python-checkins] bpo-42508: Keep IDLE running on macOS (GH-23577) Message-ID: https://github.com/python/cpython/commit/57e511361047895231f5ee7abfdfbbc60e11d2db commit: 57e511361047895231f5ee7abfdfbbc60e11d2db branch: master author: Terry Jan Reedy committer: ned-deily date: 2020-12-06T22:22:33-05:00 summary: bpo-42508: Keep IDLE running on macOS (GH-23577) Remove obsolete workaround that prevented running files with shortcuts when using new universal2 installers built on macOS 11. Ignore buggy 2nd run_module_event call. files: A Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst M Lib/idlelib/NEWS.txt M Lib/idlelib/runscript.py diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 34f28d6084f7a..7167314ca7e59 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,10 @@ Released on 2021-10-04? ====================================== +bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround +that prevented running files with shortcuts when using new universal2 +installers built on macOS 11. + bpo-42426: Fix reporting offset of the RE error in searchengine. bpo-42416: Get docstrings for IDLE calltips more often diff --git a/Lib/idlelib/runscript.py b/Lib/idlelib/runscript.py index a54108794ab59..028b0dbd21dfe 100644 --- a/Lib/idlelib/runscript.py +++ b/Lib/idlelib/runscript.py @@ -11,6 +11,7 @@ """ import os import tabnanny +import time import tokenize import tkinter.messagebox as tkMessageBox @@ -42,9 +43,7 @@ def __init__(self, editwin): self.root = self.editwin.root # cli_args is list of strings that extends sys.argv self.cli_args = [] - - if macosx.isCocoaTk(): - self.editwin.text_frame.bind('<>', self._run_module_event) + self.perf = 0.0 # Workaround for macOS 11 Uni2; see bpo-42508. def check_module_event(self, event): if isinstance(self.editwin, outwin.OutputWindow): @@ -107,24 +106,10 @@ def checksyntax(self, filename): finally: shell.set_warning_stream(saved_stream) - def run_module_event(self, event): - if macosx.isCocoaTk(): - # Tk-Cocoa in MacOSX is broken until at least - # Tk 8.5.9, and without this rather - # crude workaround IDLE would hang when a user - # tries to run a module using the keyboard shortcut - # (the menu item works fine). - self.editwin.text_frame.after(200, - lambda: self.editwin.text_frame.event_generate( - '<>')) - return 'break' - else: - return self._run_module_event(event) - def run_custom_event(self, event): - return self._run_module_event(event, customize=True) + return self.run_module_event(event, customize=True) - def _run_module_event(self, event, *, customize=False): + def run_module_event(self, event, *, customize=False): """Run the module after setting up the environment. First check the syntax. Next get customization. If OK, make @@ -133,6 +118,8 @@ def _run_module_event(self, event, *, customize=False): module being executed and also add that directory to its sys.path if not already included. """ + if macosx.isCocoaTk() and (time.perf_counter() - self.perf < .05): + return 'break' if isinstance(self.editwin, outwin.OutputWindow): self.editwin.text.bell() return 'break' @@ -218,6 +205,7 @@ def errorbox(self, title, message): # XXX This should really be a function of EditorWindow... tkMessageBox.showerror(title, message, parent=self.editwin.text) self.editwin.text.focus_set() + self.perf = time.perf_counter() if __name__ == "__main__": diff --git a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst new file mode 100644 index 0000000000000..b449351f7f458 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst @@ -0,0 +1,3 @@ +Keep IDLE running on macOS. Remove obsolete workaround that prevented +running files with shortcuts when using new universal2 installers built +on macOS 11. From webhook-mailer at python.org Sun Dec 6 22:49:06 2020 From: webhook-mailer at python.org (ned-deily) Date: Mon, 07 Dec 2020 03:49:06 -0000 Subject: [Python-checkins] bpo-42508: Keep IDLE running on macOS (GH-23577) (GH-23669) Message-ID: https://github.com/python/cpython/commit/2a9a883d361d37b40fb0b0011dd300bb83ceb73c commit: 2a9a883d361d37b40fb0b0011dd300bb83ceb73c branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-06T22:48:48-05:00 summary: bpo-42508: Keep IDLE running on macOS (GH-23577) (GH-23669) Remove obsolete workaround that prevented running files with shortcuts when using new universal2 installers built on macOS 11. Ignore buggy 2nd run_module_event call. (cherry picked from commit 57e511361047895231f5ee7abfdfbbc60e11d2db) Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst M Lib/idlelib/NEWS.txt M Lib/idlelib/runscript.py diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index e257ee9fdeb32..869be0a62b7db 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,10 @@ Released on 2020-12-07? ====================================== +bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround +that prevented running files with shortcuts when using new universal2 +installers built on macOS 11. + bpo-42426: Fix reporting offset of the RE error in searchengine. bpo-42416: Get docstrings for IDLE calltips more often diff --git a/Lib/idlelib/runscript.py b/Lib/idlelib/runscript.py index a54108794ab59..028b0dbd21dfe 100644 --- a/Lib/idlelib/runscript.py +++ b/Lib/idlelib/runscript.py @@ -11,6 +11,7 @@ """ import os import tabnanny +import time import tokenize import tkinter.messagebox as tkMessageBox @@ -42,9 +43,7 @@ def __init__(self, editwin): self.root = self.editwin.root # cli_args is list of strings that extends sys.argv self.cli_args = [] - - if macosx.isCocoaTk(): - self.editwin.text_frame.bind('<>', self._run_module_event) + self.perf = 0.0 # Workaround for macOS 11 Uni2; see bpo-42508. def check_module_event(self, event): if isinstance(self.editwin, outwin.OutputWindow): @@ -107,24 +106,10 @@ def checksyntax(self, filename): finally: shell.set_warning_stream(saved_stream) - def run_module_event(self, event): - if macosx.isCocoaTk(): - # Tk-Cocoa in MacOSX is broken until at least - # Tk 8.5.9, and without this rather - # crude workaround IDLE would hang when a user - # tries to run a module using the keyboard shortcut - # (the menu item works fine). - self.editwin.text_frame.after(200, - lambda: self.editwin.text_frame.event_generate( - '<>')) - return 'break' - else: - return self._run_module_event(event) - def run_custom_event(self, event): - return self._run_module_event(event, customize=True) + return self.run_module_event(event, customize=True) - def _run_module_event(self, event, *, customize=False): + def run_module_event(self, event, *, customize=False): """Run the module after setting up the environment. First check the syntax. Next get customization. If OK, make @@ -133,6 +118,8 @@ def _run_module_event(self, event, *, customize=False): module being executed and also add that directory to its sys.path if not already included. """ + if macosx.isCocoaTk() and (time.perf_counter() - self.perf < .05): + return 'break' if isinstance(self.editwin, outwin.OutputWindow): self.editwin.text.bell() return 'break' @@ -218,6 +205,7 @@ def errorbox(self, title, message): # XXX This should really be a function of EditorWindow... tkMessageBox.showerror(title, message, parent=self.editwin.text) self.editwin.text.focus_set() + self.perf = time.perf_counter() if __name__ == "__main__": diff --git a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst new file mode 100644 index 0000000000000..b449351f7f458 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst @@ -0,0 +1,3 @@ +Keep IDLE running on macOS. Remove obsolete workaround that prevented +running files with shortcuts when using new universal2 installers built +on macOS 11. From webhook-mailer at python.org Sun Dec 6 22:55:21 2020 From: webhook-mailer at python.org (ned-deily) Date: Mon, 07 Dec 2020 03:55:21 -0000 Subject: [Python-checkins] Update macos installer ReadMe for 3.10.0a3 (GH-23671) Message-ID: https://github.com/python/cpython/commit/212337369a64aa96d8b370f39b70113078ad0020 commit: 212337369a64aa96d8b370f39b70113078ad0020 branch: master author: Ned Deily committer: ned-deily date: 2020-12-06T22:55:12-05:00 summary: Update macos installer ReadMe for 3.10.0a3 (GH-23671) files: M Mac/BuildScript/resources/ReadMe.rtf diff --git a/Mac/BuildScript/resources/ReadMe.rtf b/Mac/BuildScript/resources/ReadMe.rtf index a4dd8b5ee4102..c82e4b6303a52 100644 --- a/Mac/BuildScript/resources/ReadMe.rtf +++ b/Mac/BuildScript/resources/ReadMe.rtf @@ -3,7 +3,7 @@ \f3\fmodern\fcharset0 CourierNewPSMT;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} -\margl1440\margr1440\vieww13380\viewh14600\viewkind0 +\margl1440\margr1440\vieww13380\viewh14580\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f0\fs24 \cf0 This package will install Python $FULL_VERSION for macOS $MACOSX_DEPLOYMENT_TARGET for the following architecture(s): $ARCHITECTURES.\ @@ -56,7 +56,15 @@ Due to new security checks on macOS 10.15 Catalina, when launching IDLE macOS ma \f0\b0 button to proceed.\ \ -\f1\b \ul Other changes\ +\f1\b \ul macOS 11.0 (Big Sur) and Apple Silicon Mac support [new in 3.10.0a3]\ + +\f0\b0 \ulnone \ +As of 2020-11, macOS 11.0 (Big Sur) is the latest release of macOS and one of its major features is the support of new Apple Silicon Macs that are based on the ARM64 CPU architecture specification rather than the Intel 64 (x86_64) architecture used previously. There are other changes in Big Sur that affect Python operation regardless of CPU architecture.\ +\ +Beginning with 3.10.0a3, we provide a new "universal2" installer variant that provides universal binaries for both ARM64 and Intel 64 architectures and is also supported on all Macs that support macOS 10.9 or later. Some of the advantages of the new installer variant: native ARM64 code on Apple Silicon Macs should run significantly faster than Rosetta2-emulated code; some operating system functions and options introduced in macOS releases since 10.9 are now exposed when available (primarily in the os module); the new installer variant includes Tcl/Tk 8.6.10 rather than 8.6.8.\ + +\f1\b \ul \ +Other changes\ \f0\b0 \ulnone \ For other changes in this release, see the From webhook-mailer at python.org Mon Dec 7 00:17:17 2020 From: webhook-mailer at python.org (rhettinger) Date: Mon, 07 Dec 2020 05:17:17 -0000 Subject: [Python-checkins] bpo-38843: Document behavior of default when the attribute is already set (GH-23653) (#23668) Message-ID: https://github.com/python/cpython/commit/facca72eae3c0b59b4e89bab81c936dff10fb58a commit: facca72eae3c0b59b4e89bab81c936dff10fb58a branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-06T21:17:09-08:00 summary: bpo-38843: Document behavior of default when the attribute is already set (GH-23653) (#23668) (cherry picked from commit 752cdf21eb2be0a26ea6a34a0de33a458459aead) Co-authored-by: Raymond Hettinger Co-authored-by: Raymond Hettinger files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index a32b99901a7b4..02cd70f4f71cd 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -696,7 +696,7 @@ The add_argument() method * const_ - A constant value required by some action_ and nargs_ selections. * default_ - The value produced if the argument is absent from the - command line. + command line and if it is absent from the namespace object. * type_ - The type to which the command-line argument should be converted. @@ -1006,6 +1006,14 @@ was not present at the command line:: >>> parser.parse_args([]) Namespace(foo=42) +If the target namespace already has an attribute set, the action *default* +will not over write it:: + + >>> parser = argparse.ArgumentParser() + >>> parser.add_argument('--foo', default=42) + >>> parser.parse_args([], namespace=argparse.Namespace(foo=101)) + Namespace(foo=101) + If the ``default`` value is a string, the parser parses the value as if it were a command-line argument. In particular, the parser applies any type_ conversion argument, if provided, before setting the attribute on the From webhook-mailer at python.org Mon Dec 7 03:17:44 2020 From: webhook-mailer at python.org (ethanfurman) Date: Mon, 07 Dec 2020 08:17:44 -0000 Subject: [Python-checkins] bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) Message-ID: https://github.com/python/cpython/commit/c266736ec1f9ebef38b134ceb4832df015711b38 commit: c266736ec1f9ebef38b134ceb4832df015711b38 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-07T00:17:31-08:00 summary: bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) files: A Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 40ff25b9cdad3..d670ad7d86196 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -146,8 +146,9 @@ def __new__(metacls, cls, bases, classdict): for key in ignore: classdict.pop(key, None) member_type, first_enum = metacls._get_mixins_(cls, bases) - __new__, save_new, use_args = metacls._find_new_(classdict, member_type, - first_enum) + __new__, save_new, use_args = metacls._find_new_( + classdict, member_type, first_enum, + ) # save enum items into separate mapping so they don't get baked into # the new class @@ -501,12 +502,16 @@ def _find_data_type(bases): for base in chain.__mro__: if base is object: continue + elif issubclass(base, Enum): + if base._member_type_ is not object: + data_types.append(base._member_type_) + break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue data_types.append(candidate or base) break - elif not issubclass(base, Enum): + else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 3431040f98a72..d1dd2e78d455f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2021,6 +2021,32 @@ class Decision2(MyEnum): REVERT_ALL = "REVERT_ALL" RETRY = "RETRY" + def test_multiple_mixin_inherited(self): + class MyInt(int): + def __new__(cls, value): + return super().__new__(cls, value) + + class HexMixin: + def __repr__(self): + return hex(self) + + class MyIntEnum(HexMixin, MyInt, enum.Enum): + pass + + class Foo(MyIntEnum): + TEST = 1 + self.assertTrue(isinstance(Foo.TEST, MyInt)) + self.assertEqual(repr(Foo.TEST), "0x1") + + class Fee(MyIntEnum): + TEST = 1 + def __new__(cls, value): + value += 1 + member = int.__new__(cls, value) + member._value_ = value + return member + self.assertEqual(Fee.TEST, 2) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst new file mode 100644 index 0000000000000..768865ae62116 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst @@ -0,0 +1 @@ +Enum: fix regression involving inheriting a multiply-inherited enum From webhook-mailer at python.org Mon Dec 7 05:56:28 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 07 Dec 2020 10:56:28 -0000 Subject: [Python-checkins] bpo-30459: Cast the result of PyCell_SET to void (GH-23654) Message-ID: https://github.com/python/cpython/commit/0ef96c2b2a291c9d2d9c0ba42bbc1900a21e65f3 commit: 0ef96c2b2a291c9d2d9c0ba42bbc1900a21e65f3 branch: master author: Victor Stinner committer: vstinner date: 2020-12-07T11:56:20+01:00 summary: bpo-30459: Cast the result of PyCell_SET to void (GH-23654) files: M Doc/whatsnew/3.10.rst M Include/cellobject.h M Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 019dd1817d2b6..a5cb4e30616cd 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -611,6 +611,13 @@ Porting to Python 3.10 :ref:`Python Path Configuration. `. (Contributed by Victor Stinner in :issue:`42260`.) +* :c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and + :c:func:`PyCell_SET` macros can no longer be used as l-value or r-value. + For example, ``x = PyList_SET_ITEM(a, b, c)`` and + ``PyList_SET_ITEM(a, b, c) = x`` now fail with a compiler error. It prevents + bugs like ``if (PyList_SET_ITEM (a, b, c) < 0) ...`` test. + (Contributed by Zackery Spytz and Victor Stinner in :issue:`30459`.) + Deprecated ---------- diff --git a/Include/cellobject.h b/Include/cellobject.h index f12aa90a42a8f..81bc784d36f3e 100644 --- a/Include/cellobject.h +++ b/Include/cellobject.h @@ -20,7 +20,7 @@ PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *); PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *); #define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref) -#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v) +#define PyCell_SET(op, v) ((void)(((PyCellObject *)(op))->ob_ref = v)) #ifdef __cplusplus } diff --git a/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst b/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst index e3ee6dccdaa76..092d457855a41 100644 --- a/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst +++ b/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst @@ -1,2 +1,6 @@ -Cast the result of :c:func:`PyList_SET_ITEM` and :c:func:`PyTuple_SET_ITEM` -to void. +:c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and :c:func:`PyCell_SET` +macros can no longer be used as l-value or r-value. For example, +``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, c) = x`` now fail +with a compiler error. It prevents bugs like +``if (PyList_SET_ITEM (a, b, c) < 0) ...`` test. +Patch by Zackery Spytz and Victor Stinner. From webhook-mailer at python.org Mon Dec 7 12:33:37 2020 From: webhook-mailer at python.org (zooba) Date: Mon, 07 Dec 2020 17:33:37 -0000 Subject: [Python-checkins] bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) Message-ID: https://github.com/python/cpython/commit/c0afb7fa0ebd1c0e95c0760bbe75a99a8dd12ea6 commit: c0afb7fa0ebd1c0e95c0760bbe75a99a8dd12ea6 branch: master author: Matti Picus committer: zooba date: 2020-12-07T17:33:20Z summary: bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) files: A Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst M Lib/sysconfig.py M Lib/test/test_sysconfig.py diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index 6c87b06634c45..e1b2f93f876d7 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -424,10 +424,11 @@ def _init_posix(vars): def _init_non_posix(vars): """Initialize the module as appropriate for NT""" # set basic install directories + import _imp vars['LIBDEST'] = get_path('stdlib') vars['BINLIBDEST'] = get_path('platstdlib') vars['INCLUDEPY'] = get_path('include') - vars['EXT_SUFFIX'] = '.pyd' + vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] vars['EXE'] = '.exe' vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index d07d28df607ce..352dbdea817e6 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -360,10 +360,12 @@ def test_SO_value(self): @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, 'EXT_SUFFIX required for this test') - def test_SO_in_vars(self): + def test_EXT_SUFFIX_in_vars(self): + import _imp vars = sysconfig.get_config_vars() self.assertIsNotNone(vars['SO']) self.assertEqual(vars['SO'], vars['EXT_SUFFIX']) + self.assertEqual(vars['EXT_SUFFIX'], _imp.extension_suffixes()[0]) @unittest.skipUnless(sys.platform == 'linux' and hasattr(sys.implementation, '_multiarch'), diff --git a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst new file mode 100644 index 0000000000000..c337731f43584 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst @@ -0,0 +1,5 @@ +Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected +full ``platform_tag.extension`` format. Previously it was hard-coded to +``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result +in something like ``.cp38-win_amd64.pyd``. This brings windows into +conformance with the other platforms. From webhook-mailer at python.org Mon Dec 7 12:50:58 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 07 Dec 2020 17:50:58 -0000 Subject: [Python-checkins] bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) Message-ID: https://github.com/python/cpython/commit/ca52aa3ddd949ce2d259b4263344339b56db00b7 commit: ca52aa3ddd949ce2d259b4263344339b56db00b7 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-07T09:50:48-08:00 summary: bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) (cherry picked from commit c0afb7fa0ebd1c0e95c0760bbe75a99a8dd12ea6) Co-authored-by: Matti Picus files: A Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst M Lib/sysconfig.py M Lib/test/test_sysconfig.py diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index b9e2fafbc084a..9caf158019a2e 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -426,10 +426,11 @@ def _init_posix(vars): def _init_non_posix(vars): """Initialize the module as appropriate for NT""" # set basic install directories + import _imp vars['LIBDEST'] = get_path('stdlib') vars['BINLIBDEST'] = get_path('platstdlib') vars['INCLUDEPY'] = get_path('include') - vars['EXT_SUFFIX'] = '.pyd' + vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] vars['EXE'] = '.exe' vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 44e44bf5ea995..0ca5c9390dbb9 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -358,10 +358,12 @@ def test_SO_value(self): @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, 'EXT_SUFFIX required for this test') - def test_SO_in_vars(self): + def test_EXT_SUFFIX_in_vars(self): + import _imp vars = sysconfig.get_config_vars() self.assertIsNotNone(vars['SO']) self.assertEqual(vars['SO'], vars['EXT_SUFFIX']) + self.assertEqual(vars['EXT_SUFFIX'], _imp.extension_suffixes()[0]) @unittest.skipUnless(sys.platform == 'linux' and hasattr(sys.implementation, '_multiarch'), diff --git a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst new file mode 100644 index 0000000000000..c337731f43584 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst @@ -0,0 +1,5 @@ +Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected +full ``platform_tag.extension`` format. Previously it was hard-coded to +``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result +in something like ``.cp38-win_amd64.pyd``. This brings windows into +conformance with the other platforms. From webhook-mailer at python.org Mon Dec 7 12:57:01 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 07 Dec 2020 17:57:01 -0000 Subject: [Python-checkins] bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) Message-ID: https://github.com/python/cpython/commit/e9a6dcdefabb6c19074566f4ee0e02daaf57be18 commit: e9a6dcdefabb6c19074566f4ee0e02daaf57be18 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-07T09:56:44-08:00 summary: bpo-39825: Fixes sysconfig.get_config_var('EXT_SUFFIX') on Windows to match distutils (GH-22088) (cherry picked from commit c0afb7fa0ebd1c0e95c0760bbe75a99a8dd12ea6) Co-authored-by: Matti Picus files: A Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst M Lib/sysconfig.py M Lib/test/test_sysconfig.py diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index bf04ac541e6b0..59da8e529025d 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -424,10 +424,11 @@ def _init_posix(vars): def _init_non_posix(vars): """Initialize the module as appropriate for NT""" # set basic install directories + import _imp vars['LIBDEST'] = get_path('stdlib') vars['BINLIBDEST'] = get_path('platstdlib') vars['INCLUDEPY'] = get_path('include') - vars['EXT_SUFFIX'] = '.pyd' + vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] vars['EXE'] = '.exe' vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 44e44bf5ea995..0ca5c9390dbb9 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -358,10 +358,12 @@ def test_SO_value(self): @unittest.skipIf(sysconfig.get_config_var('EXT_SUFFIX') is None, 'EXT_SUFFIX required for this test') - def test_SO_in_vars(self): + def test_EXT_SUFFIX_in_vars(self): + import _imp vars = sysconfig.get_config_vars() self.assertIsNotNone(vars['SO']) self.assertEqual(vars['SO'], vars['EXT_SUFFIX']) + self.assertEqual(vars['EXT_SUFFIX'], _imp.extension_suffixes()[0]) @unittest.skipUnless(sys.platform == 'linux' and hasattr(sys.implementation, '_multiarch'), diff --git a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst new file mode 100644 index 0000000000000..c337731f43584 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst @@ -0,0 +1,5 @@ +Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected +full ``platform_tag.extension`` format. Previously it was hard-coded to +``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result +in something like ``.cp38-win_amd64.pyd``. This brings windows into +conformance with the other platforms. From webhook-mailer at python.org Mon Dec 7 15:05:43 2020 From: webhook-mailer at python.org (pablogsal) Date: Mon, 07 Dec 2020 20:05:43 -0000 Subject: [Python-checkins] bpo-42579: Make workaround for various versions of Sphinx more robust (GH-23662) Message-ID: https://github.com/python/cpython/commit/b63a620014b67a6e63d10783149c41baaf59def8 commit: b63a620014b67a6e63d10783149c41baaf59def8 branch: master author: Mat?j Cepl committer: pablogsal date: 2020-12-07T20:05:13Z summary: bpo-42579: Make workaround for various versions of Sphinx more robust (GH-23662) The solution in gh#python/cpython#13236 is too strict because it effectively requires the use of Sphinx >= 2.0. It is not too difficult to make the same solution more robust so it works with all normal versions of Sphinx. files: M Doc/tools/extensions/pyspecific.py diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py index 80fbd96d56fdc..28994399e25cf 100644 --- a/Doc/tools/extensions/pyspecific.py +++ b/Doc/tools/extensions/pyspecific.py @@ -394,7 +394,12 @@ def run(self): translatable=False) node.append(para) env = self.state.document.settings.env - env.get_domain('changeset').note_changeset(node) + # deprecated pre-Sphinx-2 method + if hasattr(env, 'note_versionchange'): + env.note_versionchange('deprecated', version[0], node, self.lineno) + # new method + else: + env.get_domain('changeset').note_changeset(node) return [node] + messages From webhook-mailer at python.org Mon Dec 7 15:07:53 2020 From: webhook-mailer at python.org (pablogsal) Date: Mon, 07 Dec 2020 20:07:53 -0000 Subject: [Python-checkins] bpo-42536: GC track recycled tuples (GH-23623) (GH-23651) Message-ID: https://github.com/python/cpython/commit/60463e8e4f79e5b5e96dc43fb83ded373b489e33 commit: 60463e8e4f79e5b5e96dc43fb83ded373b489e33 branch: 3.9 author: Brandt Bucher committer: pablogsal date: 2020-12-07T20:07:48Z summary: bpo-42536: GC track recycled tuples (GH-23623) (GH-23651) Several built-in and standard library types now ensure that their internal result tuples are always tracked by the garbage collector: - collections.OrderedDict.items - dict.items - enumerate - functools.reduce - itertools.combinations - itertools.combinations_with_replacement - itertools.permutations - itertools.product - itertools.zip_longest - zip Previously, they could have become untracked by a prior garbage collection. (cherry picked from commit 226a012d1cd61f42ecd3056c554922f359a1a35d) files: A Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst M Lib/test/test_builtin.py M Lib/test/test_dict.py M Lib/test/test_enumerate.py M Lib/test/test_itertools.py M Lib/test/test_ordered_dict.py M Modules/_functoolsmodule.c M Modules/itertoolsmodule.c M Objects/dictobject.c M Objects/enumobject.c M Objects/odictobject.c M Python/bltinmodule.c diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 4df1b95bca79a..d009f57e47e05 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -6,6 +6,7 @@ import collections import decimal import fractions +import gc import io import locale import os @@ -1606,6 +1607,18 @@ def __iter__(self): self.assertIs(cm.exception, exception) + @support.cpython_only + def test_zip_result_gc(self): + # bpo-42536: zip's tuple-reuse speed trick breaks the GC's assumptions + # about what can be untracked. Make sure we re-track result tuples + # whenever we reuse them. + it = zip([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + def test_format(self): # Test the basic machinery of the format() builtin. Don't test # the specifics of the various formatters diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index 6b8596fff6a9f..b10c07534ddb2 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -1422,6 +1422,25 @@ def items(self): d = CustomReversedDict(pairs) self.assertEqual(pairs[::-1], list(dict(d).items())) + @support.cpython_only + def test_dict_items_result_gc(self): + # bpo-42536: dict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter({None: []}.items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_dict_items_result_gc(self): + # Same as test_dict_items_result_gc above, but reversed. + it = reversed({None: []}.items()) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + class CAPITest(unittest.TestCase): diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index 5785cb46492ef..906bfc21a26ae 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -2,6 +2,7 @@ import operator import sys import pickle +import gc from test import support @@ -134,6 +135,18 @@ def test_tuple_reuse(self): self.assertEqual(len(set(map(id, list(enumerate(self.seq))))), len(self.seq)) self.assertEqual(len(set(map(id, enumerate(self.seq)))), min(1,len(self.seq))) + @support.cpython_only + def test_enumerate_result_gc(self): + # bpo-42536: enumerate's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = self.enum([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + class MyEnum(enumerate): pass diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 702cf0820316b..7101264284919 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -12,6 +12,8 @@ import sys import struct import threading +import gc + maxsize = support.MAX_Py_ssize_t minsize = -maxsize-1 @@ -1554,6 +1556,51 @@ def test_StopIteration(self): self.assertRaises(StopIteration, next, f(lambda x:x, [])) self.assertRaises(StopIteration, next, f(lambda x:x, StopNow())) + @support.cpython_only + def test_combinations_result_gc(self): + # bpo-42536: combinations's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = combinations([None, []], 1) + next(it) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which has the value (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_combinations_with_replacement_result_gc(self): + # Ditto for combinations_with_replacement. + it = combinations_with_replacement([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_permutations_result_gc(self): + # Ditto for permutations. + it = permutations([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_product_result_gc(self): + # Ditto for product. + it = product([None, []]) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_zip_longest_result_gc(self): + # Ditto for zip_longest. + it = zip_longest([[]]) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + class TestExamples(unittest.TestCase): def test_accumulate(self): diff --git a/Lib/test/test_ordered_dict.py b/Lib/test/test_ordered_dict.py index fdea44e4d8596..9df4efbfffa22 100644 --- a/Lib/test/test_ordered_dict.py +++ b/Lib/test/test_ordered_dict.py @@ -697,6 +697,17 @@ def test_merge_operator(self): with self.assertRaises(ValueError): a |= "BAD" + @support.cpython_only + def test_ordered_dict_items_result_gc(self): + # bpo-42536: OrderedDict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter(self.OrderedDict({None: []}).items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) class PurePythonOrderedDictTests(OrderedDictTests, unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst new file mode 100644 index 0000000000000..6ccacab1f64f6 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst @@ -0,0 +1,26 @@ +Several built-in and standard library types now ensure that their internal +result tuples are always tracked by the :term:`garbage collector +`: + +- :meth:`collections.OrderedDict.items() ` + +- :meth:`dict.items` + +- :func:`enumerate` + +- :func:`functools.reduce` + +- :func:`itertools.combinations` + +- :func:`itertools.combinations_with_replacement` + +- :func:`itertools.permutations` + +- :func:`itertools.product` + +- :func:`itertools.zip_longest` + +- :func:`zip` + +Previously, they could have become untracked by a prior garbage collection. +Patch by Brandt Bucher. diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index d158d3bae157b..42764a181d26b 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -1,4 +1,5 @@ #include "Python.h" +#include "pycore_object.h" // _PyObject_GC_TRACK #include "pycore_pystate.h" // _PyThreadState_GET() #include "pycore_tupleobject.h" #include "structmember.h" // PyMemberDef @@ -673,6 +674,11 @@ functools_reduce(PyObject *self, PyObject *args) if ((result = PyObject_Call(func, args, NULL)) == NULL) { goto Fail; } + // bpo-42536: The GC may have untracked this args tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(args)) { + _PyObject_GC_TRACK(args); + } } } diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 18fcebdf25b46..95ef8d79a1653 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -2,6 +2,7 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" #include "pycore_tupleobject.h" +#include "pycore_object.h" // _PyObject_GC_TRACK() #include // offsetof() /* Itertools module written and maintained @@ -2245,6 +2246,11 @@ product_next(productobject *lz) lz->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert (npools==0 || Py_REFCNT(result) == 1); @@ -2568,6 +2574,11 @@ combinations_next(combinationsobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place * CPython's empty tuple is a singleton and cached in * PyTuple's freelist. @@ -2902,6 +2913,11 @@ cwr_next(cwrobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place CPython's empty tuple is a singleton and cached in PyTuple's freelist. */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -3246,6 +3262,11 @@ permutations_next(permutationsobject *po) po->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -4515,6 +4536,11 @@ zip_longest_next(ziplongestobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index faee6bc901eeb..8a056530a4545 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3861,6 +3861,11 @@ dictiter_iternextitem(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); @@ -3976,6 +3981,11 @@ dictreviter_iternext(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since + // we're recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Objects/enumobject.c b/Objects/enumobject.c index 4a83bb45aa667..bdd0ea5f3971b 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -1,6 +1,7 @@ /* enumerate object */ #include "Python.h" +#include "pycore_object.h" // _PyObject_GC_TRACK() #include "clinic/enumobject.c.h" @@ -130,6 +131,11 @@ enum_next_long(enumobject *en, PyObject* next_item) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); @@ -175,6 +181,11 @@ enum_next(enumobject *en) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); diff --git a/Objects/odictobject.c b/Objects/odictobject.c index d5bf499575d09..b9f2169a72a8a 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -1817,6 +1817,11 @@ odictiter_iternext(odictiterobject *di) Py_INCREF(result); Py_DECREF(PyTuple_GET_ITEM(result, 0)); /* borrowed */ Py_DECREF(PyTuple_GET_ITEM(result, 1)); /* borrowed */ + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 199b09c4d8c41..614012df9b12a 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2619,6 +2619,11 @@ zip_next(zipobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) From webhook-mailer at python.org Mon Dec 7 15:08:29 2020 From: webhook-mailer at python.org (pablogsal) Date: Mon, 07 Dec 2020 20:08:29 -0000 Subject: [Python-checkins] bpo-42536: GC track recycled tuples (GH-23623) (GH-23652) Message-ID: https://github.com/python/cpython/commit/7c797982383ebfd9cca39c480dcf6132979dd06f commit: 7c797982383ebfd9cca39c480dcf6132979dd06f branch: 3.8 author: Brandt Bucher committer: pablogsal date: 2020-12-07T20:08:24Z summary: bpo-42536: GC track recycled tuples (GH-23623) (GH-23652) Several built-in and standard library types now ensure that their internal result tuples are always tracked by the garbage collector: - collections.OrderedDict.items - dict.items - enumerate - functools.reduce - itertools.combinations - itertools.combinations_with_replacement - itertools.permutations - itertools.product - itertools.zip_longest - zip Previously, they could have become untracked by a prior garbage collection. (cherry picked from commit 226a012d1cd61f42ecd3056c554922f359a1a35d) files: A Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst M Lib/test/test_builtin.py M Lib/test/test_dict.py M Lib/test/test_enumerate.py M Lib/test/test_itertools.py M Lib/test/test_ordered_dict.py M Modules/_functoolsmodule.c M Modules/itertoolsmodule.c M Objects/dictobject.c M Objects/enumobject.c M Objects/odictobject.c M Python/bltinmodule.c diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 4a498262ba637..729f15dc4b232 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -6,6 +6,7 @@ import collections import decimal import fractions +import gc import io import locale import os @@ -27,7 +28,7 @@ from operator import neg from test.support import ( EnvironmentVarGuard, TESTFN, check_warnings, swap_attr, unlink, - maybe_get_event_loop_policy) + maybe_get_event_loop_policy, cpython_only) from test.support.script_helper import assert_python_ok from unittest.mock import MagicMock, patch try: @@ -1573,6 +1574,18 @@ def __iter__(self): self.assertIs(cm.exception, exception) + @cpython_only + def test_zip_result_gc(self): + # bpo-42536: zip's tuple-reuse speed trick breaks the GC's assumptions + # about what can be untracked. Make sure we re-track result tuples + # whenever we reuse them. + it = zip([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + def test_format(self): # Test the basic machinery of the format() builtin. Don't test # the specifics of the various formatters diff --git a/Lib/test/test_dict.py b/Lib/test/test_dict.py index de483ab552155..ce044c8684ff9 100644 --- a/Lib/test/test_dict.py +++ b/Lib/test/test_dict.py @@ -1377,6 +1377,25 @@ def items(self): d = CustomReversedDict(pairs) self.assertEqual(pairs[::-1], list(dict(d).items())) + @support.cpython_only + def test_dict_items_result_gc(self): + # bpo-42536: dict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter({None: []}.items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_dict_items_result_gc(self): + # Same as test_dict_items_result_gc above, but reversed. + it = reversed({None: []}.items()) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + class CAPITest(unittest.TestCase): diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index 5785cb46492ef..906bfc21a26ae 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -2,6 +2,7 @@ import operator import sys import pickle +import gc from test import support @@ -134,6 +135,18 @@ def test_tuple_reuse(self): self.assertEqual(len(set(map(id, list(enumerate(self.seq))))), len(self.seq)) self.assertEqual(len(set(map(id, enumerate(self.seq)))), min(1,len(self.seq))) + @support.cpython_only + def test_enumerate_result_gc(self): + # bpo-42536: enumerate's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = self.enum([[]]) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + class MyEnum(enumerate): pass diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index eaa6197bec395..d7c09222b7009 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -12,6 +12,8 @@ import sys import struct import threading +import gc + maxsize = support.MAX_Py_ssize_t minsize = -maxsize-1 @@ -1554,6 +1556,51 @@ def test_StopIteration(self): self.assertRaises(StopIteration, next, f(lambda x:x, [])) self.assertRaises(StopIteration, next, f(lambda x:x, StopNow())) + @support.cpython_only + def test_combinations_result_gc(self): + # bpo-42536: combinations's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = combinations([None, []], 1) + next(it) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which has the value (None,). Make sure it's re-tracked when + # it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_combinations_with_replacement_result_gc(self): + # Ditto for combinations_with_replacement. + it = combinations_with_replacement([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_permutations_result_gc(self): + # Ditto for permutations. + it = permutations([None, []], 1) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_product_result_gc(self): + # Ditto for product. + it = product([None, []]) + next(it) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + @support.cpython_only + def test_zip_longest_result_gc(self): + # Ditto for zip_longest. + it = zip_longest([[]]) + gc.collect() + self.assertTrue(gc.is_tracked(next(it))) + + class TestExamples(unittest.TestCase): def test_accumulate(self): diff --git a/Lib/test/test_ordered_dict.py b/Lib/test/test_ordered_dict.py index 085e5f60ed93b..bcda8f83cea7c 100644 --- a/Lib/test/test_ordered_dict.py +++ b/Lib/test/test_ordered_dict.py @@ -654,6 +654,17 @@ def test_free_after_iterating(self): support.check_free_after_iterating(self, lambda d: iter(d.values()), self.OrderedDict) support.check_free_after_iterating(self, lambda d: iter(d.items()), self.OrderedDict) + @support.cpython_only + def test_ordered_dict_items_result_gc(self): + # bpo-42536: OrderedDict.items's tuple-reuse speed trick breaks the GC's + # assumptions about what can be untracked. Make sure we re-track result + # tuples whenever we reuse them. + it = iter(self.OrderedDict({None: []}).items()) + gc.collect() + # That GC collection probably untracked the recycled internal result + # tuple, which is initialized to (None, None). Make sure it's re-tracked + # when it's mutated and returned from __next__: + self.assertTrue(gc.is_tracked(next(it))) class PurePythonOrderedDictTests(OrderedDictTests, unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst new file mode 100644 index 0000000000000..6ccacab1f64f6 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst @@ -0,0 +1,26 @@ +Several built-in and standard library types now ensure that their internal +result tuples are always tracked by the :term:`garbage collector +`: + +- :meth:`collections.OrderedDict.items() ` + +- :meth:`dict.items` + +- :func:`enumerate` + +- :func:`functools.reduce` + +- :func:`itertools.combinations` + +- :func:`itertools.combinations_with_replacement` + +- :func:`itertools.permutations` + +- :func:`itertools.product` + +- :func:`itertools.zip_longest` + +- :func:`zip` + +Previously, they could have become untracked by a prior garbage collection. +Patch by Brandt Bucher. diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index a101363bf02a0..148d051714f89 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -3,6 +3,7 @@ #include "pycore_pystate.h" #include "pycore_tupleobject.h" #include "structmember.h" +#include "pycore_object.h" // _PyObject_GC_TRACK /* _functools module written and maintained by Hye-Shik Chang @@ -633,6 +634,11 @@ functools_reduce(PyObject *self, PyObject *args) if ((result = PyObject_Call(func, args, NULL)) == NULL) { goto Fail; } + // bpo-42536: The GC may have untracked this args tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(args)) { + _PyObject_GC_TRACK(args); + } } } diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index eba59ba1b8803..eb04c26beb81d 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -3,6 +3,7 @@ #include "Python.h" #include "pycore_tupleobject.h" #include "structmember.h" +#include "pycore_object.h" // _PyObject_GC_TRACK() /* Itertools module written and maintained by Raymond D. Hettinger @@ -2255,6 +2256,11 @@ product_next(productobject *lz) lz->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert (npools==0 || Py_REFCNT(result) == 1); @@ -2580,6 +2586,11 @@ combinations_next(combinationsobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place * CPython's empty tuple is a singleton and cached in * PyTuple's freelist. @@ -2916,6 +2927,11 @@ cwr_next(cwrobject *co) co->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place CPython's empty tuple is a singleton and cached in PyTuple's freelist. */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -3259,6 +3275,11 @@ permutations_next(permutationsobject *po) po->result = result; Py_DECREF(old_result); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + else if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } /* Now, we've got the only copy so we can update it in-place */ assert(r == 0 || Py_REFCNT(result) == 1); @@ -4536,6 +4557,11 @@ zip_longest_next(ziplongestobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 3c56f4a515e8a..edc02372a1d92 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3769,6 +3769,11 @@ dictiter_iternextitem(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); @@ -3884,6 +3889,11 @@ dictreviter_iternext(dictiterobject *di) Py_INCREF(result); Py_DECREF(oldkey); Py_DECREF(oldvalue); + // bpo-42536: The GC may have untracked this result tuple. Since + // we're recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Objects/enumobject.c b/Objects/enumobject.c index 4786297c41ace..478a9dd93a32c 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -1,6 +1,7 @@ /* enumerate object */ #include "Python.h" +#include "pycore_object.h" // _PyObject_GC_TRACK() #include "clinic/enumobject.c.h" @@ -130,6 +131,11 @@ enum_next_long(enumobject *en, PyObject* next_item) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); @@ -175,6 +181,11 @@ enum_next(enumobject *en) PyTuple_SET_ITEM(result, 1, next_item); Py_DECREF(old_index); Py_DECREF(old_item); + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } return result; } result = PyTuple_New(2); diff --git a/Objects/odictobject.c b/Objects/odictobject.c index ac0da9bd5bae3..6076b03455f62 100644 --- a/Objects/odictobject.c +++ b/Objects/odictobject.c @@ -1766,6 +1766,11 @@ odictiter_iternext(odictiterobject *di) Py_INCREF(result); Py_DECREF(PyTuple_GET_ITEM(result, 0)); /* borrowed */ Py_DECREF(PyTuple_GET_ITEM(result, 1)); /* borrowed */ + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(2); diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index e42d5f246c37a..3767f552bb17a 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -4,6 +4,7 @@ #include #include "ast.h" #undef Yield /* undefine macro conflicting with */ +#include "pycore_object.h" // _PyObject_GC_TRACK() #include "pycore_pystate.h" #include "pycore_tupleobject.h" @@ -2618,6 +2619,11 @@ zip_next(zipobject *lz) PyTuple_SET_ITEM(result, i, item); Py_DECREF(olditem); } + // bpo-42536: The GC may have untracked this result tuple. Since we're + // recycling it, make sure it's tracked again: + if (!_PyObject_GC_IS_TRACKED(result)) { + _PyObject_GC_TRACK(result); + } } else { result = PyTuple_New(tuplesize); if (result == NULL) From webhook-mailer at python.org Mon Dec 7 15:41:41 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 07 Dec 2020 20:41:41 -0000 Subject: [Python-checkins] bpo-41462: Add os.set_blocking() support for VxWorks RTOS (GH-21713) Message-ID: https://github.com/python/cpython/commit/06afac6c5740bb81d2b7ab9639d2b08cccf77d33 commit: 06afac6c5740bb81d2b7ab9639d2b08cccf77d33 branch: master author: pxinwr committer: vstinner date: 2020-12-07T21:41:12+01:00 summary: bpo-41462: Add os.set_blocking() support for VxWorks RTOS (GH-21713) files: A Misc/NEWS.d/next/Library/2020-08-03-17-54-32.bpo-41462.ek38d_.rst M Python/fileutils.c diff --git a/Misc/NEWS.d/next/Library/2020-08-03-17-54-32.bpo-41462.ek38d_.rst b/Misc/NEWS.d/next/Library/2020-08-03-17-54-32.bpo-41462.ek38d_.rst new file mode 100644 index 0000000000000..ca5da1b17b436 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-03-17-54-32.bpo-41462.ek38d_.rst @@ -0,0 +1 @@ +Add :func:`os.set_blocking()` support for VxWorks RTOS. diff --git a/Python/fileutils.c b/Python/fileutils.c index b589d7390d46d..ac38282117421 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -2070,7 +2070,9 @@ _Py_get_blocking(int fd) int _Py_set_blocking(int fd, int blocking) { -#if defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO) +/* bpo-41462: On VxWorks, ioctl(FIONBIO) only works on sockets. + Use fcntl() instead. */ +#if defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO) && !defined(__VXWORKS__) int arg = !blocking; if (ioctl(fd, FIONBIO, &arg) < 0) goto error; From webhook-mailer at python.org Mon Dec 7 18:45:28 2020 From: webhook-mailer at python.org (pablogsal) Date: Mon, 07 Dec 2020 23:45:28 -0000 Subject: [Python-checkins] bpo-42574: Use format() instead of f-string in Tools/clinic/clinic.py to allow using older Python versions (GH-23685) Message-ID: https://github.com/python/cpython/commit/b6d6f5367da1f2e3f749c358ae8563c56a0cc395 commit: b6d6f5367da1f2e3f749c358ae8563c56a0cc395 branch: 3.8 author: Pablo Galindo committer: pablogsal date: 2020-12-07T23:45:21Z summary: bpo-42574: Use format() instead of f-string in Tools/clinic/clinic.py to allow using older Python versions (GH-23685) files: M Tools/clinic/clinic.py diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 40c95e454cd88..d350a9a9d72ea 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -1769,7 +1769,7 @@ def write_file(filename, new_contents): pass # Atomic write using a temporary file and os.replace() - filename_new = f"{filename}.new" + filename_new = "{}.new".format(filename) with open(filename_new, "w", encoding="utf-8") as fp: fp.write(new_contents) From webhook-mailer at python.org Mon Dec 7 18:50:28 2020 From: webhook-mailer at python.org (ethanfurman) Date: Mon, 07 Dec 2020 23:50:28 -0000 Subject: [Python-checkins] bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23672) Message-ID: https://github.com/python/cpython/commit/699e5e448919283578afe445069ab93b34bf8eae commit: 699e5e448919283578afe445069ab93b34bf8eae branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-07T15:50:14-08:00 summary: bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23672) (cherry picked from commit c266736ec1f9ebef38b134ceb4832df015711b38) files: A Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index de9ed4c1ec371..da809e2689114 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -145,8 +145,9 @@ def __new__(metacls, cls, bases, classdict): for key in ignore: classdict.pop(key, None) member_type, first_enum = metacls._get_mixins_(cls, bases) - __new__, save_new, use_args = metacls._find_new_(classdict, member_type, - first_enum) + __new__, save_new, use_args = metacls._find_new_( + classdict, member_type, first_enum, + ) # save enum items into separate mapping so they don't get baked into # the new class @@ -506,12 +507,16 @@ def _find_data_type(bases): for base in chain.__mro__: if base is object: continue + elif issubclass(base, Enum): + if base._member_type_ is not object: + data_types.append(base._member_type_) + break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue data_types.append(candidate or base) break - elif not issubclass(base, Enum): + else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 745962a1e66fe..7f6e6bf092b6f 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2000,6 +2000,32 @@ class Decision2(MyEnum): REVERT_ALL = "REVERT_ALL" RETRY = "RETRY" + def test_multiple_mixin_inherited(self): + class MyInt(int): + def __new__(cls, value): + return super().__new__(cls, value) + + class HexMixin: + def __repr__(self): + return hex(self) + + class MyIntEnum(HexMixin, MyInt, enum.Enum): + pass + + class Foo(MyIntEnum): + TEST = 1 + self.assertTrue(isinstance(Foo.TEST, MyInt)) + self.assertEqual(repr(Foo.TEST), "0x1") + + class Fee(MyIntEnum): + TEST = 1 + def __new__(cls, value): + value += 1 + member = int.__new__(cls, value) + member._value_ = value + return member + self.assertEqual(Fee.TEST, 2) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst new file mode 100644 index 0000000000000..768865ae62116 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst @@ -0,0 +1 @@ +Enum: fix regression involving inheriting a multiply-inherited enum From webhook-mailer at python.org Mon Dec 7 18:51:20 2020 From: webhook-mailer at python.org (ethanfurman) Date: Mon, 07 Dec 2020 23:51:20 -0000 Subject: [Python-checkins] bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23673) Message-ID: https://github.com/python/cpython/commit/be52ca45d9eb9c3e8941e46ddc67a210f0f4c6fa commit: be52ca45d9eb9c3e8941e46ddc67a210f0f4c6fa branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-07T15:51:16-08:00 summary: bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23673) (cherry picked from commit c266736ec1f9ebef38b134ceb4832df015711b38) files: A Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index ebadd9f662a13..3ce205d48fc2a 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -145,8 +145,9 @@ def __new__(metacls, cls, bases, classdict): for key in ignore: classdict.pop(key, None) member_type, first_enum = metacls._get_mixins_(cls, bases) - __new__, save_new, use_args = metacls._find_new_(classdict, member_type, - first_enum) + __new__, save_new, use_args = metacls._find_new_( + classdict, member_type, first_enum, + ) # save enum items into separate mapping so they don't get baked into # the new class @@ -500,12 +501,16 @@ def _find_data_type(bases): for base in chain.__mro__: if base is object: continue + elif issubclass(base, Enum): + if base._member_type_ is not object: + data_types.append(base._member_type_) + break elif '__new__' in base.__dict__: if issubclass(base, Enum): continue data_types.append(candidate or base) break - elif not issubclass(base, Enum): + else: candidate = base if len(data_types) > 1: raise TypeError('%r: too many data types: %r' % (class_name, data_types)) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 0e6b1b16ca323..cd73d26e63e22 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1998,6 +1998,32 @@ class Decision2(MyEnum): REVERT_ALL = "REVERT_ALL" RETRY = "RETRY" + def test_multiple_mixin_inherited(self): + class MyInt(int): + def __new__(cls, value): + return super().__new__(cls, value) + + class HexMixin: + def __repr__(self): + return hex(self) + + class MyIntEnum(HexMixin, MyInt, enum.Enum): + pass + + class Foo(MyIntEnum): + TEST = 1 + self.assertTrue(isinstance(Foo.TEST, MyInt)) + self.assertEqual(repr(Foo.TEST), "0x1") + + class Fee(MyIntEnum): + TEST = 1 + def __new__(cls, value): + value += 1 + member = int.__new__(cls, value) + member._value_ = value + return member + self.assertEqual(Fee.TEST, 2) + def test_empty_globals(self): # bpo-35717: sys._getframe(2).f_globals['__name__'] fails with KeyError # when using compile and exec because f_globals is empty diff --git a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst new file mode 100644 index 0000000000000..768865ae62116 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst @@ -0,0 +1 @@ +Enum: fix regression involving inheriting a multiply-inherited enum From webhook-mailer at python.org Mon Dec 7 21:07:53 2020 From: webhook-mailer at python.org (ambv) Date: Tue, 08 Dec 2020 02:07:53 -0000 Subject: [Python-checkins] Python 3.8.7rc1 Message-ID: https://github.com/python/cpython/commit/e3201094af2af2a9958333bd1cb212253941d644 commit: e3201094af2af2a9958333bd1cb212253941d644 branch: 3.8 author: ?ukasz Langa committer: ambv date: 2020-12-07T15:13:36+01:00 summary: Python 3.8.7rc1 files: A Misc/NEWS.d/3.8.7rc1.rst D Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst D Misc/NEWS.d/next/C API/2020-10-09-22-50-46.bpo-41986.JUPE59.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-02-11-35-33.bpo-41894.ffmtOt.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-04-10-55-12.bpo-41909.BqHPcm.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-14-16-19-43.bpo-41984.SEtKMr.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-21-14-40-54.bpo-41910.CzBMit.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-27-21-34-05.bpo-42143.N6KXUO.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst D Misc/NEWS.d/next/Documentation/2020-01-22-05-14-53.bpo-39416.uYjhEm.rst D Misc/NEWS.d/next/Documentation/2020-09-24-15-35-13.bpo-41774.5IqdGP.rst D Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst D Misc/NEWS.d/next/IDLE/2020-04-22-09-37-40.bpo-38439.ieXL-c.rst D Misc/NEWS.d/next/IDLE/2020-06-16-12-16-13.bpo-40511.XkihpM.rst D Misc/NEWS.d/next/IDLE/2020-09-24-14-31-16.bpo-41775.sB8Vre.rst D Misc/NEWS.d/next/IDLE/2020-10-24-21-27-37.bpo-33987.fIh9JL.rst D Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst D Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst D Misc/NEWS.d/next/Library/2019-08-20-05-17-32.bpo-32793.cgpXl6.rst D Misc/NEWS.d/next/Library/2020-01-19-18-40-26.bpo-27321.8e6SpM.rst D Misc/NEWS.d/next/Library/2020-04-03-16-13-59.bpo-40105.hfM2c0.rst D Misc/NEWS.d/next/Library/2020-05-04-12-16-00.bpo-40492.ONk9Na.rst D Misc/NEWS.d/next/Library/2020-05-14-16-01-34.bpo-40592.Cmk855.rst D Misc/NEWS.d/next/Library/2020-07-08-09-45-00.bpo-16936.z8o8Pn.rst D Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst D Misc/NEWS.d/next/Library/2020-07-28-12-08-58.bpo-41316.bSCbK4.rst D Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst D Misc/NEWS.d/next/Library/2020-08-29-16-07-36.bpo-41662.Mn79zh.rst D Misc/NEWS.d/next/Library/2020-08-30-21-38-57.bpo-41662.6e9iZn.rst D Misc/NEWS.d/next/Library/2020-09-22-11-07-50.bpo-41831.k-Eop_.rst D Misc/NEWS.d/next/Library/2020-09-23-23-17-59.bpo-41840.QRFr4L.rst D Misc/NEWS.d/next/Library/2020-09-24-16-45-59.bpo-41855.q6Y1nm.rst D Misc/NEWS.d/next/Library/2020-10-01-10-50-12.bpo-41900.Cho7oh.rst D Misc/NEWS.d/next/Library/2020-10-08-18-22-28.bpo-41976.Svm0wb.rst D Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst D Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst D Misc/NEWS.d/next/Library/2020-10-18-19-22-39.bpo-32498.MoqSgo.rst D Misc/NEWS.d/next/Library/2020-10-19-14-02-09.bpo-41491.d1BUWH.rst D Misc/NEWS.d/next/Library/2020-10-23-19-20-14.bpo-42103.C5obK2.rst D Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst D Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst D Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst D Misc/NEWS.d/next/Library/2020-11-02-14-10-48.bpo-35455.Q1xTIo.rst D Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst D Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst D Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst D Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst D Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst D Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst D Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst D Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst D Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst D Misc/NEWS.d/next/Security/2020-10-19-10-56-27.bpo-42051.EU_B7u.rst D Misc/NEWS.d/next/Security/2020-10-23-19-19-30.bpo-42103.cILT66.rst D Misc/NEWS.d/next/Tests/2020-08-03-13-44-37.bpo-41306.VDoWXI.rst D Misc/NEWS.d/next/Tests/2020-08-25-19-25-36.bpo-41602.Z64s0I.rst D Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst D Misc/NEWS.d/next/Tests/2020-10-05-09-37-43.bpo-41939.P4OlbA.rst D Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst D Misc/NEWS.d/next/Tests/2020-10-12-00-11-47.bpo-41739.wSCc4K.rst D Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst D Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst D Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst D Misc/NEWS.d/next/Windows/2020-05-30-02-46-43.bpo-38324.476M-5.rst D Misc/NEWS.d/next/Windows/2020-08-26-09-35-06.bpo-41557.vt00cQ.rst D Misc/NEWS.d/next/Windows/2020-10-20-13-19-42.bpo-38439.eMLi-t.rst D Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst D Misc/NEWS.d/next/macOS/2020-08-26-09-31-37.bpo-41557.mcQ75z.rst D Misc/NEWS.d/next/macOS/2020-10-19-12-25-19.bpo-41471.gwA7un.rst D Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index e5aade9e94492..7cf4b6f656db8 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 8 -#define PY_MICRO_VERSION 6 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL -#define PY_RELEASE_SERIAL 0 +#define PY_MICRO_VERSION 7 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA +#define PY_RELEASE_SERIAL 1 /* Version as a string */ -#define PY_VERSION "3.8.6+" +#define PY_VERSION "3.8.7rc1" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index d760056197ac1..93b54c8ef08ed 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Wed Sep 23 14:35:51 2020 +# Autogenerated by Sphinx on Mon Dec 7 15:10:25 2020 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -99,27 +99,26 @@ 'assigned,\n' ' from left to right, to the corresponding targets.\n' '\n' - ' * If the target list contains one target prefixed with an\n' - ' asterisk, called a ?starred? target: The object must be ' - 'an\n' - ' iterable with at least as many items as there are targets ' - 'in the\n' - ' target list, minus one. The first items of the iterable ' - 'are\n' - ' assigned, from left to right, to the targets before the ' + ' * If the target list contains one target prefixed with an ' + 'asterisk,\n' + ' called a ?starred? target: The object must be an iterable ' + 'with at\n' + ' least as many items as there are targets in the target ' + 'list, minus\n' + ' one. The first items of the iterable are assigned, from ' + 'left to\n' + ' right, to the targets before the starred target. The ' + 'final items\n' + ' of the iterable are assigned to the targets after the ' 'starred\n' - ' target. The final items of the iterable are assigned to ' - 'the\n' - ' targets after the starred target. A list of the remaining ' - 'items\n' - ' in the iterable is then assigned to the starred target ' - '(the list\n' - ' can be empty).\n' + ' target. A list of the remaining items in the iterable is ' + 'then\n' + ' assigned to the starred target (the list can be empty).\n' '\n' ' * Else: The object must be an iterable with the same number ' - 'of\n' - ' items as there are targets in the target list, and the ' - 'items are\n' + 'of items\n' + ' as there are targets in the target list, and the items ' + 'are\n' ' assigned, from left to right, to the corresponding ' 'targets.\n' '\n' @@ -135,10 +134,10 @@ 'in the\n' ' current local namespace.\n' '\n' - ' * Otherwise: the name is bound to the object in the global\n' - ' namespace or the outer namespace determined by ' - '"nonlocal",\n' - ' respectively.\n' + ' * Otherwise: the name is bound to the object in the global ' + 'namespace\n' + ' or the outer namespace determined by "nonlocal", ' + 'respectively.\n' '\n' ' The name is rebound if it was already bound. This may cause ' 'the\n' @@ -225,26 +224,27 @@ 'called with\n' ' appropriate arguments.\n' '\n' - '* If the target is a slicing: The primary expression in the\n' - ' reference is evaluated. It should yield a mutable sequence ' - 'object\n' - ' (such as a list). The assigned object should be a sequence ' - 'object\n' - ' of the same type. Next, the lower and upper bound ' - 'expressions are\n' - ' evaluated, insofar they are present; defaults are zero and ' - 'the\n' - ' sequence?s length. The bounds should evaluate to integers. ' - 'If\n' - ' either bound is negative, the sequence?s length is added to ' - 'it. The\n' - ' resulting bounds are clipped to lie between zero and the ' + '* If the target is a slicing: The primary expression in the ' + 'reference\n' + ' is evaluated. It should yield a mutable sequence object ' + '(such as a\n' + ' list). The assigned object should be a sequence object of ' + 'the same\n' + ' type. Next, the lower and upper bound expressions are ' + 'evaluated,\n' + ' insofar they are present; defaults are zero and the ' 'sequence?s\n' - ' length, inclusive. Finally, the sequence object is asked to ' - 'replace\n' - ' the slice with the items of the assigned sequence. The ' - 'length of\n' - ' the slice may be different from the length of the assigned ' + ' length. The bounds should evaluate to integers. If either ' + 'bound is\n' + ' negative, the sequence?s length is added to it. The ' + 'resulting\n' + ' bounds are clipped to lie between zero and the sequence?s ' + 'length,\n' + ' inclusive. Finally, the sequence object is asked to replace ' + 'the\n' + ' slice with the items of the assigned sequence. The length ' + 'of the\n' + ' slice may be different from the length of the assigned ' 'sequence,\n' ' thus changing the length of the target sequence, if the ' 'target\n' @@ -544,13 +544,17 @@ '\n' '-[ Footnotes ]-\n' '\n' - '[1] The exception is propagated to the invocation stack unless\n' - ' there is a "finally" clause which happens to raise another\n' - ' exception. That new exception causes the old one to be lost.\n' + '[1] The exception is propagated to the invocation stack unless ' + 'there\n' + ' is a "finally" clause which happens to raise another ' + 'exception.\n' + ' That new exception causes the old one to be lost.\n' '\n' - '[2] A string literal appearing as the first statement in the\n' - ' function body is transformed into the function?s "__doc__"\n' - ' attribute and therefore the function?s *docstring*.\n' + '[2] A string literal appearing as the first statement in the ' + 'function\n' + ' body is transformed into the function?s "__doc__" attribute ' + 'and\n' + ' therefore the function?s *docstring*.\n' '\n' '[3] A string literal appearing as the first statement in the class\n' ' body is transformed into the namespace?s "__doc__" item and\n' @@ -688,11 +692,18 @@ 'needs, for\n' ' example, "object.__getattribute__(self, name)".\n' '\n' - ' Note: This method may still be bypassed when looking ' - 'up special\n' - ' methods as the result of implicit invocation via ' - 'language syntax\n' - ' or built-in functions. See Special method lookup.\n' + ' Note:\n' + '\n' + ' This method may still be bypassed when looking up ' + 'special methods\n' + ' as the result of implicit invocation via language ' + 'syntax or\n' + ' built-in functions. See Special method lookup.\n' + '\n' + ' For certain sensitive attribute accesses, raises an ' + 'auditing event\n' + ' "object.__getattr__" with arguments "obj" and ' + '"name".\n' '\n' 'object.__setattr__(self, name, value)\n' '\n' @@ -710,6 +721,11 @@ 'for example,\n' ' "object.__setattr__(self, name, value)".\n' '\n' + ' For certain sensitive attribute assignments, raises ' + 'an auditing\n' + ' event "object.__setattr__" with arguments "obj", ' + '"name", "value".\n' + '\n' 'object.__delattr__(self, name)\n' '\n' ' Like "__setattr__()" but for attribute deletion ' @@ -718,6 +734,11 @@ 'obj.name" is\n' ' meaningful for the object.\n' '\n' + ' For certain sensitive attribute deletions, raises an ' + 'auditing event\n' + ' "object.__delattr__" with arguments "obj" and ' + '"name".\n' + '\n' 'object.__dir__(self)\n' '\n' ' Called when "dir()" is called on the object. A ' @@ -776,15 +797,16 @@ '\n' ' sys.modules[__name__].__class__ = VerboseModule\n' '\n' - 'Note: Defining module "__getattr__" and setting module ' - '"__class__"\n' - ' only affect lookups made using the attribute access ' - 'syntax ?\n' - ' directly accessing the module globals (whether by code ' - 'within the\n' - ' module, or via a reference to the module?s globals ' - 'dictionary) is\n' - ' unaffected.\n' + 'Note:\n' + '\n' + ' Defining module "__getattr__" and setting module ' + '"__class__" only\n' + ' affect lookups made using the attribute access syntax ' + '? directly\n' + ' accessing the module globals (whether by code within ' + 'the module, or\n' + ' via a reference to the module?s globals dictionary) is ' + 'unaffected.\n' '\n' 'Changed in version 3.5: "__class__" module attribute is ' 'now writable.\n' @@ -867,12 +889,14 @@ 'created. The\n' ' descriptor has been assigned to *name*.\n' '\n' - ' Note: "__set_name__()" is only called implicitly as ' - 'part of the\n' - ' "type" constructor, so it will need to be called ' - 'explicitly with\n' - ' the appropriate parameters when a descriptor is ' - 'added to a class\n' + ' Note:\n' + '\n' + ' "__set_name__()" is only called implicitly as part ' + 'of the "type"\n' + ' constructor, so it will need to be called ' + 'explicitly with the\n' + ' appropriate parameters when a descriptor is added ' + 'to a class\n' ' after initial creation:\n' '\n' ' class A:\n' @@ -1032,10 +1056,9 @@ '--------------------------\n' '\n' '* When inheriting from a class without *__slots__*, the ' - '*__dict__*\n' - ' and *__weakref__* attribute of the instances will ' - 'always be\n' - ' accessible.\n' + '*__dict__* and\n' + ' *__weakref__* attribute of the instances will always ' + 'be accessible.\n' '\n' '* Without a *__dict__* variable, instances cannot be ' 'assigned new\n' @@ -1050,14 +1073,12 @@ ' declaration.\n' '\n' '* Without a *__weakref__* variable for each instance, ' - 'classes\n' - ' defining *__slots__* do not support weak references to ' - 'its\n' - ' instances. If weak reference support is needed, then ' - 'add\n' - ' "\'__weakref__\'" to the sequence of strings in the ' - '*__slots__*\n' - ' declaration.\n' + 'classes defining\n' + ' *__slots__* do not support weak references to its ' + 'instances. If weak\n' + ' reference support is needed, then add ' + '"\'__weakref__\'" to the\n' + ' sequence of strings in the *__slots__* declaration.\n' '\n' '* *__slots__* are implemented at the class level by ' 'creating\n' @@ -1070,24 +1091,23 @@ ' attribute would overwrite the descriptor assignment.\n' '\n' '* The action of a *__slots__* declaration is not limited ' - 'to the\n' - ' class where it is defined. *__slots__* declared in ' - 'parents are\n' - ' available in child classes. However, child subclasses ' - 'will get a\n' - ' *__dict__* and *__weakref__* unless they also define ' - '*__slots__*\n' - ' (which should only contain names of any *additional* ' - 'slots).\n' + 'to the class\n' + ' where it is defined. *__slots__* declared in parents ' + 'are available\n' + ' in child classes. However, child subclasses will get a ' + '*__dict__*\n' + ' and *__weakref__* unless they also define *__slots__* ' + '(which should\n' + ' only contain names of any *additional* slots).\n' '\n' '* If a class defines a slot also defined in a base ' - 'class, the\n' - ' instance variable defined by the base class slot is ' - 'inaccessible\n' - ' (except by retrieving its descriptor directly from the ' - 'base class).\n' - ' This renders the meaning of the program undefined. In ' - 'the future, a\n' + 'class, the instance\n' + ' variable defined by the base class slot is ' + 'inaccessible (except by\n' + ' retrieving its descriptor directly from the base ' + 'class). This\n' + ' renders the meaning of the program undefined. In the ' + 'future, a\n' ' check may be added to prevent this.\n' '\n' '* Nonempty *__slots__* does not work for classes derived ' @@ -1096,9 +1116,9 @@ '"bytes" and "tuple".\n' '\n' '* Any non-string iterable may be assigned to ' - '*__slots__*. Mappings\n' - ' may also be used; however, in the future, special ' - 'meaning may be\n' + '*__slots__*. Mappings may\n' + ' also be used; however, in the future, special meaning ' + 'may be\n' ' assigned to the values corresponding to each key.\n' '\n' '* *__class__* assignment works only if both classes have ' @@ -1114,9 +1134,9 @@ ' raise "TypeError".\n' '\n' '* If an iterator is used for *__slots__* then a ' - 'descriptor is\n' - ' created for each of the iterator?s values. However, ' - 'the *__slots__*\n' + 'descriptor is created\n' + ' for each of the iterator?s values. However, the ' + '*__slots__*\n' ' attribute will be an empty iterator.\n', 'attribute-references': 'Attribute references\n' '********************\n' @@ -1458,8 +1478,8 @@ '\n' ' Called when the instance is ?called? as a function; if ' 'this method\n' - ' is defined, "x(arg1, arg2, ...)" is a shorthand for\n' - ' "x.__call__(arg1, arg2, ...)".\n', + ' is defined, "x(arg1, arg2, ...)" roughly translates to\n' + ' "type(x).__call__(x, arg1, ...)".\n', 'calls': 'Calls\n' '*****\n' '\n' @@ -1877,10 +1897,10 @@ ' != x" is true. This behavior is compliant with IEEE 754.\n' '\n' '* "None" and "NotImplemented" are singletons. **PEP 8** ' - 'advises\n' - ' that comparisons for singletons should always be done with ' - '"is" or\n' - ' "is not", never the equality operators.\n' + 'advises that\n' + ' comparisons for singletons should always be done with "is" ' + 'or "is\n' + ' not", never the equality operators.\n' '\n' '* Binary sequences (instances of "bytes" or "bytearray") can ' 'be\n' @@ -1896,15 +1916,15 @@ '\n' ' Strings and binary sequences cannot be directly compared.\n' '\n' - '* Sequences (instances of "tuple", "list", or "range") can ' - 'be\n' - ' compared only within each of their types, with the ' - 'restriction that\n' - ' ranges do not support order comparison. Equality ' - 'comparison across\n' - ' these types results in inequality, and ordering comparison ' - 'across\n' - ' these types raises "TypeError".\n' + '* Sequences (instances of "tuple", "list", or "range") can be ' + 'compared\n' + ' only within each of their types, with the restriction that ' + 'ranges do\n' + ' not support order comparison. Equality comparison across ' + 'these\n' + ' types results in inequality, and ordering comparison across ' + 'these\n' + ' types raises "TypeError".\n' '\n' ' Sequences compare lexicographically using comparison of\n' ' corresponding elements. The built-in containers typically ' @@ -1928,8 +1948,8 @@ ' false because the type is not the same).\n' '\n' ' * Collections that support order comparison are ordered the ' - 'same\n' - ' as their first unequal elements (for example, "[1,2,x] <= ' + 'same as\n' + ' their first unequal elements (for example, "[1,2,x] <= ' '[1,2,y]"\n' ' has the same value as "x <= y"). If a corresponding ' 'element does\n' @@ -1947,8 +1967,8 @@ '"TypeError".\n' '\n' '* Sets (instances of "set" or "frozenset") can be compared ' - 'within\n' - ' and across their types.\n' + 'within and\n' + ' across their types.\n' '\n' ' They define order comparison operators to mean subset and ' 'superset\n' @@ -1967,8 +1987,8 @@ ' Comparison of sets enforces reflexivity of its elements.\n' '\n' '* Most other built-in types have no comparison methods ' - 'implemented,\n' - ' so they inherit the default comparison behavior.\n' + 'implemented, so\n' + ' they inherit the default comparison behavior.\n' '\n' 'User-defined classes that customize their comparison behavior ' 'should\n' @@ -2017,10 +2037,10 @@ ' "total_ordering()" decorator.\n' '\n' '* The "hash()" result should be consistent with equality. ' - 'Objects\n' - ' that are equal should either have the same hash value, or ' - 'be marked\n' - ' as unhashable.\n' + 'Objects that\n' + ' are equal should either have the same hash value, or be ' + 'marked as\n' + ' unhashable.\n' '\n' 'Python does not enforce these consistency rules. In fact, ' 'the\n' @@ -2294,10 +2314,11 @@ ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, ' '2]".\n' '\n' - 'Note: There is a subtlety when the sequence is being modified by ' - 'the\n' - ' loop (this can only occur for mutable sequences, e.g. lists). ' - 'An\n' + 'Note:\n' + '\n' + ' There is a subtlety when the sequence is being modified by the ' + 'loop\n' + ' (this can only occur for mutable sequences, e.g. lists). An\n' ' internal counter is used to keep track of which item is used ' 'next,\n' ' and this is incremented on each iteration. When this counter ' @@ -2520,8 +2541,8 @@ 'follows:\n' '\n' '1. The context expression (the expression given in the ' - '"with_item")\n' - ' is evaluated to obtain a context manager.\n' + '"with_item") is\n' + ' evaluated to obtain a context manager.\n' '\n' '2. The context manager?s "__enter__()" is loaded for later use.\n' '\n' @@ -2529,13 +2550,15 @@ '\n' '4. The context manager?s "__enter__()" method is invoked.\n' '\n' - '5. If a target was included in the "with" statement, the return\n' - ' value from "__enter__()" is assigned to it.\n' + '5. If a target was included in the "with" statement, the return ' + 'value\n' + ' from "__enter__()" is assigned to it.\n' + '\n' + ' Note:\n' '\n' - ' Note: The "with" statement guarantees that if the ' - '"__enter__()"\n' - ' method returns without an error, then "__exit__()" will ' - 'always be\n' + ' The "with" statement guarantees that if the "__enter__()" ' + 'method\n' + ' returns without an error, then "__exit__()" will always be\n' ' called. Thus, if an error occurs during the assignment to ' 'the\n' ' target list, it will be treated the same as an error ' @@ -3040,14 +3063,17 @@ '\n' '-[ Footnotes ]-\n' '\n' - '[1] The exception is propagated to the invocation stack unless\n' - ' there is a "finally" clause which happens to raise another\n' - ' exception. That new exception causes the old one to be ' - 'lost.\n' + '[1] The exception is propagated to the invocation stack unless ' + 'there\n' + ' is a "finally" clause which happens to raise another ' + 'exception.\n' + ' That new exception causes the old one to be lost.\n' '\n' - '[2] A string literal appearing as the first statement in the\n' - ' function body is transformed into the function?s "__doc__"\n' - ' attribute and therefore the function?s *docstring*.\n' + '[2] A string literal appearing as the first statement in the ' + 'function\n' + ' body is transformed into the function?s "__doc__" attribute ' + 'and\n' + ' therefore the function?s *docstring*.\n' '\n' '[3] A string literal appearing as the first statement in the ' 'class\n' @@ -3146,8 +3172,8 @@ ' complex;\n' '\n' '* otherwise, if either argument is a floating point number, ' - 'the\n' - ' other is converted to floating point;\n' + 'the other\n' + ' is converted to floating point;\n' '\n' '* otherwise, both must be integers and no conversion is ' 'necessary.\n' @@ -3257,7 +3283,9 @@ 'for\n' ' objects that still exist when the interpreter exits.\n' '\n' - ' Note: "del x" doesn?t directly call "x.__del__()" ? the ' + ' Note:\n' + '\n' + ' "del x" doesn?t directly call "x.__del__()" ? the ' 'former\n' ' decrements the reference count for "x" by one, and the ' 'latter is\n' @@ -3281,13 +3309,15 @@ '\n' ' See also: Documentation for the "gc" module.\n' '\n' - ' Warning: Due to the precarious circumstances under ' - 'which\n' - ' "__del__()" methods are invoked, exceptions that occur ' - 'during\n' - ' their execution are ignored, and a warning is printed ' - 'to\n' - ' "sys.stderr" instead. In particular:\n' + ' Warning:\n' + '\n' + ' Due to the precarious circumstances under which ' + '"__del__()"\n' + ' methods are invoked, exceptions that occur during ' + 'their execution\n' + ' are ignored, and a warning is printed to "sys.stderr" ' + 'instead.\n' + ' In particular:\n' '\n' ' * "__del__()" can be invoked when arbitrary code is ' 'being\n' @@ -3300,22 +3330,20 @@ ' that gets interrupted to execute "__del__()".\n' '\n' ' * "__del__()" can be executed during interpreter ' - 'shutdown. As\n' - ' a consequence, the global variables it needs to ' - 'access\n' - ' (including other modules) may already have been ' - 'deleted or set\n' - ' to "None". Python guarantees that globals whose name ' - 'begins\n' - ' with a single underscore are deleted from their ' - 'module before\n' - ' other globals are deleted; if no other references to ' - 'such\n' - ' globals exist, this may help in assuring that ' - 'imported modules\n' - ' are still available at the time when the "__del__()" ' - 'method is\n' - ' called.\n' + 'shutdown. As a\n' + ' consequence, the global variables it needs to access ' + '(including\n' + ' other modules) may already have been deleted or set ' + 'to "None".\n' + ' Python guarantees that globals whose name begins ' + 'with a single\n' + ' underscore are deleted from their module before ' + 'other globals\n' + ' are deleted; if no other references to such globals ' + 'exist, this\n' + ' may help in assuring that imported modules are still ' + 'available\n' + ' at the time when the "__del__()" method is called.\n' '\n' 'object.__repr__(self)\n' '\n' @@ -3434,16 +3462,21 @@ ' on the value to determine if the result is true or ' 'false.\n' '\n' - ' By default, "__ne__()" delegates to "__eq__()" and ' - 'inverts the\n' - ' result unless it is "NotImplemented". There are no ' - 'other implied\n' - ' relationships among the comparison operators, for ' - 'example, the\n' - ' truth of "(x>> 'Py' in 'Python'\n" ' True\n' @@ -10015,8 +10144,9 @@ ' formatting options that can be specified in format ' 'strings.\n' '\n' - ' Note: When formatting a number ("int", "float", ' - '"complex",\n' + ' Note:\n' + '\n' + ' When formatting a number ("int", "float", "complex",\n' ' "decimal.Decimal" and subclasses) with the "n" type ' '(ex:\n' ' "\'{:n}\'.format(1234)"), the function temporarily ' @@ -10863,17 +10993,20 @@ '\n' '2. Unlike in Standard C, exactly two hex digits are required.\n' '\n' - '3. In a bytes literal, hexadecimal and octal escapes denote the\n' - ' byte with the given value. In a string literal, these escapes\n' - ' denote a Unicode character with the given value.\n' + '3. In a bytes literal, hexadecimal and octal escapes denote the ' + 'byte\n' + ' with the given value. In a string literal, these escapes ' + 'denote a\n' + ' Unicode character with the given value.\n' '\n' '4. Changed in version 3.3: Support for name aliases [1] has been\n' ' added.\n' '\n' '5. Exactly four hex digits are required.\n' '\n' - '6. Any Unicode character can be encoded this way. Exactly eight\n' - ' hex digits are required.\n' + '6. Any Unicode character can be encoded this way. Exactly eight ' + 'hex\n' + ' digits are required.\n' '\n' 'Unlike Standard C, all unrecognized escape sequences are left in ' 'the\n' @@ -11207,6 +11340,27 @@ 'representation\n' ' in computers.\n' '\n' + ' The string representations of the Numeric classes, computed by\n' + ' "__repr__()" and "__str__()", have the following properties:\n' + '\n' + ' * They are valid numeric literals which, when passed to their ' + 'class\n' + ' constructor, produce an object having the value of the ' + 'original\n' + ' numeric.\n' + '\n' + ' * The representation is in base 10, when possible.\n' + '\n' + ' * Leading zeros, possibly excepting a single zero before a ' + 'decimal\n' + ' point, are not shown.\n' + '\n' + ' * Trailing zeros, possibly excepting a single zero after a ' + 'decimal\n' + ' point, are not shown.\n' + '\n' + ' * A sign is shown only when the number is negative.\n' + '\n' ' Python distinguishes between integers, floating point numbers, ' 'and\n' ' complex numbers:\n' @@ -12258,6 +12412,21 @@ 'positional\n' ' argument and a possibly empty set of keyword arguments.\n' '\n' + ' Dictionaries can be created by several means:\n' + '\n' + ' * Use a comma-separated list of "key: value" pairs within ' + 'braces:\n' + ' "{\'jack\': 4098, \'sjoerd\': 4127}" or "{4098: ' + "'jack', 4127:\n" + ' \'sjoerd\'}"\n' + '\n' + ' * Use a dict comprehension: "{}", "{x: x ** 2 for x in ' + 'range(10)}"\n' + '\n' + ' * Use the type constructor: "dict()", "dict([(\'foo\', ' + "100), ('bar',\n" + ' 200)])", "dict(foo=100, bar=200)"\n' + '\n' ' If no positional argument is given, an empty dictionary ' 'is created.\n' ' If a positional argument is given and it is a mapping ' @@ -12540,9 +12709,11 @@ '\n' ' Changed in version 3.8: Dictionaries are now reversible.\n' '\n' - 'See also: "types.MappingProxyType" can be used to create a ' - 'read-only\n' - ' view of a "dict".\n' + 'See also:\n' + '\n' + ' "types.MappingProxyType" can be used to create a read-only ' + 'view of a\n' + ' "dict".\n' '\n' '\n' 'Dictionary view objects\n' @@ -12926,13 +13097,14 @@ '"None", it\n' ' is treated like "1".\n' '\n' - '6. Concatenating immutable sequences always results in a new\n' - ' object. This means that building up a sequence by repeated\n' - ' concatenation will have a quadratic runtime cost in the ' - 'total\n' - ' sequence length. To get a linear runtime cost, you must ' - 'switch to\n' - ' one of the alternatives below:\n' + '6. Concatenating immutable sequences always results in a new ' + 'object.\n' + ' This means that building up a sequence by repeated ' + 'concatenation\n' + ' will have a quadratic runtime cost in the total sequence ' + 'length.\n' + ' To get a linear runtime cost, you must switch to one of the\n' + ' alternatives below:\n' '\n' ' * if concatenating "str" objects, you can build a list and ' 'use\n' @@ -12950,24 +13122,25 @@ ' * for other types, investigate the relevant class ' 'documentation\n' '\n' - '7. Some sequence types (such as "range") only support item\n' - ' sequences that follow specific patterns, and hence don?t ' - 'support\n' - ' sequence concatenation or repetition.\n' - '\n' - '8. "index" raises "ValueError" when *x* is not found in *s*. ' - 'Not\n' - ' all implementations support passing the additional arguments ' - '*i*\n' - ' and *j*. These arguments allow efficient searching of ' - 'subsections\n' - ' of the sequence. Passing the extra arguments is roughly ' - 'equivalent\n' - ' to using "s[i:j].index(x)", only without copying any data and ' - 'with\n' - ' the returned index being relative to the start of the ' + '7. Some sequence types (such as "range") only support item ' + 'sequences\n' + ' that follow specific patterns, and hence don?t support ' 'sequence\n' - ' rather than the start of the slice.\n' + ' concatenation or repetition.\n' + '\n' + '8. "index" raises "ValueError" when *x* is not found in *s*. Not ' + 'all\n' + ' implementations support passing the additional arguments *i* ' + 'and\n' + ' *j*. These arguments allow efficient searching of subsections ' + 'of\n' + ' the sequence. Passing the extra arguments is roughly ' + 'equivalent to\n' + ' using "s[i:j].index(x)", only without copying any data and ' + 'with the\n' + ' returned index being relative to the start of the sequence ' + 'rather\n' + ' than the start of the slice.\n' '\n' '\n' 'Immutable Sequence Types\n' @@ -13095,17 +13268,17 @@ '1. *t* must have the same length as the slice it is replacing.\n' '\n' '2. The optional argument *i* defaults to "-1", so that by ' - 'default\n' - ' the last item is removed and returned.\n' + 'default the\n' + ' last item is removed and returned.\n' '\n' '3. "remove()" raises "ValueError" when *x* is not found in *s*.\n' '\n' - '4. The "reverse()" method modifies the sequence in place for\n' - ' economy of space when reversing a large sequence. To remind ' - 'users\n' - ' that it operates by side effect, it does not return the ' - 'reversed\n' - ' sequence.\n' + '4. The "reverse()" method modifies the sequence in place for ' + 'economy\n' + ' of space when reversing a large sequence. To remind users ' + 'that it\n' + ' operates by side effect, it does not return the reversed ' + 'sequence.\n' '\n' '5. "clear()" and "copy()" are included for consistency with the\n' ' interfaces of mutable containers that don?t support slicing\n' @@ -13142,9 +13315,9 @@ ' * Using a pair of square brackets to denote the empty list: ' '"[]"\n' '\n' - ' * Using square brackets, separating items with commas: ' - '"[a]",\n' - ' "[a, b, c]"\n' + ' * Using square brackets, separating items with commas: "[a]", ' + '"[a,\n' + ' b, c]"\n' '\n' ' * Using a list comprehension: "[x for x in iterable]"\n' '\n' @@ -13447,9 +13620,9 @@ '\n' 'See also:\n' '\n' - ' * The linspace recipe shows how to implement a lazy version ' - 'of\n' - ' range suitable for floating point applications.\n', + ' * The linspace recipe shows how to implement a lazy version of ' + 'range\n' + ' suitable for floating point applications.\n', 'typesseq-mutable': 'Mutable Sequence Types\n' '**********************\n' '\n' @@ -13560,19 +13733,18 @@ 'replacing.\n' '\n' '2. The optional argument *i* defaults to "-1", so that ' - 'by default\n' - ' the last item is removed and returned.\n' + 'by default the\n' + ' last item is removed and returned.\n' '\n' '3. "remove()" raises "ValueError" when *x* is not found ' 'in *s*.\n' '\n' '4. The "reverse()" method modifies the sequence in place ' - 'for\n' - ' economy of space when reversing a large sequence. To ' - 'remind users\n' - ' that it operates by side effect, it does not return ' - 'the reversed\n' - ' sequence.\n' + 'for economy\n' + ' of space when reversing a large sequence. To remind ' + 'users that it\n' + ' operates by side effect, it does not return the ' + 'reversed sequence.\n' '\n' '5. "clear()" and "copy()" are included for consistency ' 'with the\n' @@ -13655,8 +13827,9 @@ 'The execution of the "with" statement with one ?item? proceeds as\n' 'follows:\n' '\n' - '1. The context expression (the expression given in the "with_item")\n' - ' is evaluated to obtain a context manager.\n' + '1. The context expression (the expression given in the "with_item") ' + 'is\n' + ' evaluated to obtain a context manager.\n' '\n' '2. The context manager?s "__enter__()" is loaded for later use.\n' '\n' @@ -13664,12 +13837,15 @@ '\n' '4. The context manager?s "__enter__()" method is invoked.\n' '\n' - '5. If a target was included in the "with" statement, the return\n' - ' value from "__enter__()" is assigned to it.\n' + '5. If a target was included in the "with" statement, the return ' + 'value\n' + ' from "__enter__()" is assigned to it.\n' + '\n' + ' Note:\n' '\n' - ' Note: The "with" statement guarantees that if the "__enter__()"\n' - ' method returns without an error, then "__exit__()" will always ' - 'be\n' + ' The "with" statement guarantees that if the "__enter__()" ' + 'method\n' + ' returns without an error, then "__exit__()" will always be\n' ' called. Thus, if an error occurs during the assignment to the\n' ' target list, it will be treated the same as an error occurring\n' ' within the suite would be. See step 6 below.\n' diff --git a/Misc/NEWS.d/3.8.7rc1.rst b/Misc/NEWS.d/3.8.7rc1.rst new file mode 100644 index 0000000000000..37fb72566a2f4 --- /dev/null +++ b/Misc/NEWS.d/3.8.7rc1.rst @@ -0,0 +1,696 @@ +.. bpo: 42103 +.. date: 2020-10-23-19-19-30 +.. nonce: cILT66 +.. release date: 2020-12-07 +.. section: Security + +Prevented potential DoS attack via CPU and RAM exhaustion when processing +malformed Apple Property List files in binary format. + +.. + +.. bpo: 42051 +.. date: 2020-10-19-10-56-27 +.. nonce: EU_B7u +.. section: Security + +The :mod:`plistlib` module no longer accepts entity declarations in XML +plist files to avoid XML vulnerabilities. This should not affect users as +entity declarations are not used in regular plist files. + +.. + +.. bpo: 40791 +.. date: 2020-05-28-06-06-47 +.. nonce: QGZClX +.. section: Security + +Add ``volatile`` to the accumulator variable in ``hmac.compare_digest``, +making constant-time-defeating optimizations less likely. + +.. + +.. bpo: 41686 +.. date: 2020-11-17-16-25-50 +.. nonce: hX77kL +.. section: Core and Builtins + +On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is now created +even if Python is configured to not install signal handlers (if +:c:member:`PyConfig.install_signal_handlers` equals to 0, or +``Py_InitializeEx(0)``). + +.. + +.. bpo: 42143 +.. date: 2020-10-27-21-34-05 +.. nonce: N6KXUO +.. section: Core and Builtins + +Fix handling of errors during creation of ``PyFunctionObject``, which +resulted in operations on uninitialized memory. Patch by Yonatan +Goldschmidt. + +.. + +.. bpo: 41910 +.. date: 2020-10-21-14-40-54 +.. nonce: CzBMit +.. section: Core and Builtins + +Document the default implementation of `object.__eq__`. + +.. + +.. bpo: 41984 +.. date: 2020-10-14-16-19-43 +.. nonce: SEtKMr +.. section: Core and Builtins + +The garbage collector now tracks all user-defined classes. Patch by Brandt +Bucher. + +.. + +.. bpo: 41909 +.. date: 2020-10-04-10-55-12 +.. nonce: BqHPcm +.. section: Core and Builtins + +Fixed stack overflow in :func:`issubclass` and :func:`isinstance` when +getting the ``__bases__`` attribute leads to infinite recursion. + +.. + +.. bpo: 41894 +.. date: 2020-10-02-11-35-33 +.. nonce: ffmtOt +.. section: Core and Builtins + +When loading a native module and a load failure occurs, prevent a possible +UnicodeDecodeError when not running in a UTF-8 locale by decoding the load +error message using the current locale's encoding. + +.. + +.. bpo: 17735 +.. date: 2020-12-03-22-22-24 +.. nonce: Qsaaue +.. section: Library + +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than +the file length. This can happen, for example, when a file is edited after +it was imported. PR by Irit Katriel. + +.. + +.. bpo: 42116 +.. date: 2020-12-03-15-42-32 +.. nonce: yIwroP +.. section: Library + +Fix handling of trailing comments by :func:`inspect.getsource`. + +.. + +.. bpo: 42482 +.. date: 2020-11-27-16-46-58 +.. nonce: EJC3sd +.. section: Library + +:class:`~traceback.TracebackException` no longer holds a reference to the +exception's traceback object. Consequently, instances of TracebackException +for equivalent but non-equal exceptions now compare as equal. + +.. + +.. bpo: 42406 +.. date: 2020-11-19-10-44-41 +.. nonce: r9rNCj +.. section: Library + +We fixed an issue in `pickle.whichmodule` in which importing +`multiprocessing` could change the how pickle identifies which module an +object belongs to, potentially breaking the unpickling of those objects. + +.. + +.. bpo: 42328 +.. date: 2020-11-15-17-02-00 +.. nonce: bqpPlR +.. section: Library + +Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now the +representation of the default state as empty sequence (as returned by +``Style.map()``). The structure of the result is now the same on all +platform and does not depend on the value of ``wantobjects``. + +.. + +.. bpo: 42014 +.. date: 2020-11-10-15-40-56 +.. nonce: ShM37l +.. section: Library + +The ``onerror`` callback from ``shutil.rmtree`` now receives correct +function when ``os.open`` fails. + +.. + +.. bpo: 42237 +.. date: 2020-11-10-14-27-49 +.. nonce: F363jO +.. section: Library + +Fix `os.sendfile()` on illumos. + +.. + +.. bpo: 42249 +.. date: 2020-11-03-09-22-56 +.. nonce: vfNO2u +.. section: Library + +Fixed writing binary Plist files larger than 4 GiB. + +.. + +.. bpo: 35455 +.. date: 2020-11-02-14-10-48 +.. nonce: Q1xTIo +.. section: Library + +On Solaris, :func:`~time.thread_time` is now implemented with +``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not +always available. Patch by Jakub Kulik. + +.. + +.. bpo: 41754 +.. date: 2020-11-01-15-07-20 +.. nonce: DraSZh +.. section: Library + +webbrowser: Ignore *NotADirectoryError* when calling ``xdg-settings``. + +.. + +.. bpo: 29566 +.. date: 2020-10-31-13-28-36 +.. nonce: 6aDbty +.. section: Library + +``binhex.binhex()`` consisently writes macOS 9 line endings. + +.. + +.. bpo: 42183 +.. date: 2020-10-29-11-17-35 +.. nonce: 50ZcIi +.. section: Library + +Fix a stack overflow error for asyncio Task or Future repr(). + +The overflow occurs under some circumstances when a Task or Future +recursively returns itself. + +.. + +.. bpo: 42103 +.. date: 2020-10-23-19-20-14 +.. nonce: C5obK2 +.. section: Library + +:exc:`~plistlib.InvalidFileException` and :exc:`RecursionError` are now the +only errors caused by loading malformed binary Plist file (previously +ValueError and TypeError could be raised in some specific cases). + +.. + +.. bpo: 41491 +.. date: 2020-10-19-14-02-09 +.. nonce: d1BUWH +.. section: Library + +plistlib: fix parsing XML plists with hexadecimal integer values + +.. + +.. bpo: 32498 +.. date: 2020-10-18-19-22-39 +.. nonce: MoqSgo +.. section: Library + +Clearer exception message when passing an argument of type bytes to +:func:`urllib.parse.unquote`. This is only for 3.8; in 3.9 and later this +function accepts bytes inputs as well. PR by Irit Katriel. + +.. + +.. bpo: 42065 +.. date: 2020-10-17-23-17-18 +.. nonce: 85BsRA +.. section: Library + +Fix an incorrectly formatted error from :meth:`_codecs.charmap_decode` when +called with a mapped value outside the range of valid Unicode code points. +PR by Max Bernstein. + +.. + +.. bpo: 41966 +.. date: 2020-10-17-07-52-53 +.. nonce: gwEQRZ +.. section: Library + +Fix pickling pure Python :class:`datetime.time` subclasses. Patch by Dean +Inwood. + +.. + +.. bpo: 41976 +.. date: 2020-10-08-18-22-28 +.. nonce: Svm0wb +.. section: Library + +Fixed a bug that was causing :func:`ctypes.util.find_library` to return +``None`` when triying to locate a library in an environment when gcc>=9 is +available and ``ldconfig`` is not. Patch by Pablo Galindo + +.. + +.. bpo: 41900 +.. date: 2020-10-01-10-50-12 +.. nonce: Cho7oh +.. section: Library + +C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed +attributes when a default namespace was defined. + +.. + +.. bpo: 41855 +.. date: 2020-09-24-16-45-59 +.. nonce: q6Y1nm +.. section: Library + +In ``importlib.metadata``, fix issue where multiple children can be returned +from ``FastPath.zip_children()``. Backport of +`python-devs/importlib_metadata#117 +`_. + +.. + +.. bpo: 41840 +.. date: 2020-09-23-23-17-59 +.. nonce: QRFr4L +.. section: Library + +Fix a bug in the :mod:`symtable` module that was causing module-scope global +variables to not be reported as both local and global. Patch by Pablo +Galindo. + +.. + +.. bpo: 41831 +.. date: 2020-09-22-11-07-50 +.. nonce: k-Eop_ +.. section: Library + +``str()`` for the ``type`` attribute of the ``tkinter.Event`` object always +returns now the numeric code returned by Tk instead of the name of the event +type. + +.. + +.. bpo: 41662 +.. date: 2020-08-30-21-38-57 +.. nonce: 6e9iZn +.. section: Library + +No longer override exceptions raised in ``__len__()`` of a sequence of +parameters in :mod:`sqlite3` with :exc:`~sqlite3.ProgrammingError`. + +.. + +.. bpo: 41662 +.. date: 2020-08-29-16-07-36 +.. nonce: Mn79zh +.. section: Library + +Fixed crash when mutate list of parameters during iteration in +:mod:`sqlite3`. + +.. + +.. bpo: 34215 +.. date: 2020-08-19-20-17-51 +.. nonce: _Cv8c- +.. section: Library + +Clarify the error message for :exc:`asyncio.IncompleteReadError` when +``expected`` is ``None``. + +.. + +.. bpo: 41316 +.. date: 2020-07-28-12-08-58 +.. nonce: bSCbK4 +.. section: Library + +Fix the :mod:`tarfile` module to write only basename of TAR file to GZIP +compression header. + +.. + +.. bpo: 12800 +.. date: 2020-07-09-11-32-28 +.. nonce: fNgWwx +.. section: Library + +Extracting a symlink from a tarball should succeed and overwrite the symlink +if it already exists. The fix is to remove the existing file or symlink +before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and +Senthil Kumaran. + +.. + +.. bpo: 16936 +.. date: 2020-07-08-09-45-00 +.. nonce: z8o8Pn +.. section: Library + +Allow ``ctypes.wintypes`` to be imported on non-Windows systems. + +.. + +.. bpo: 40592 +.. date: 2020-05-14-16-01-34 +.. nonce: Cmk855 +.. section: Library + +:func:`shutil.which` now ignores empty entries in :envvar:`PATHEXT` instead +of treating them as a match. + +.. + +.. bpo: 40492 +.. date: 2020-05-04-12-16-00 +.. nonce: ONk9Na +.. section: Library + +Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not writing the +output file in the original directory when the program being profiled +changes the working directory. PR by Anthony Sottile. + +.. + +.. bpo: 40105 +.. date: 2020-04-03-16-13-59 +.. nonce: hfM2c0 +.. section: Library + +ZipFile truncates files to avoid corruption when a shorter comment is +provided in append ("a") mode. Patch by Jan Mazur. + +.. + +.. bpo: 27321 +.. date: 2020-01-19-18-40-26 +.. nonce: 8e6SpM +.. section: Library + +Fixed KeyError exception when flattening an email to a string attempts to +replace a non-existent Content-Transfer-Encoding header. + +.. + +.. bpo: 32793 +.. date: 2019-08-20-05-17-32 +.. nonce: cgpXl6 +.. section: Library + +Fix a duplicated debug message when :meth:`smtplib.SMTP.connect` is called. + +.. + +.. bpo: 42153 +.. date: 2020-11-15-13-46-31 +.. nonce: KjBhx3 +.. section: Documentation + +Fix the URL for the IMAP protocol documents. + +.. + +.. bpo: 41774 +.. date: 2020-09-24-15-35-13 +.. nonce: 5IqdGP +.. section: Documentation + +In Programming FAQ "Sequences (Tuples/Lists)" section, add "How do you +remove multiple items from a list". + +.. + +.. bpo: 39416 +.. date: 2020-01-22-05-14-53 +.. nonce: uYjhEm +.. section: Documentation + +Document some restrictions on the default string representations of numeric +classes. + +.. + +.. bpo: 41473 +.. date: 2020-12-04-11-47-09 +.. nonce: W_updK +.. section: Tests + +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. + +.. + +.. bpo: 42553 +.. date: 2020-12-03-13-32-44 +.. nonce: 2TRE2N +.. section: Tests + +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. + +.. + +.. bpo: 40754 +.. date: 2020-11-13-21-51-34 +.. nonce: Ekoxkg +.. section: Tests + +Include ``_testinternalcapi`` module in Windows installer for test suite + +.. + +.. bpo: 41739 +.. date: 2020-10-12-00-11-47 +.. nonce: wSCc4K +.. section: Tests + +Fix test_logging.test_race_between_set_target_and_flush(): the test now +waits until all threads complete to avoid leaking running threads. + +.. + +.. bpo: 41944 +.. date: 2020-10-05-17-43-46 +.. nonce: rf1dYb +.. section: Tests + +Tests for CJK codecs no longer call ``eval()`` on content received via HTTP. + +.. + +.. bpo: 41939 +.. date: 2020-10-05-09-37-43 +.. nonce: P4OlbA +.. section: Tests + +Fix test_site.test_license_exists_at_url(): call +``urllib.request.urlcleanup()`` to reset the global +``urllib.request._opener``. Patch by Victor Stinner. + +.. + +.. bpo: 41561 +.. date: 2020-09-18-16-14-03 +.. nonce: uPnwrW +.. section: Tests + +test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available + +.. + +.. bpo: 41602 +.. date: 2020-08-25-19-25-36 +.. nonce: Z64s0I +.. section: Tests + +Add tests for SIGINT handling in the runpy module. + +.. + +.. bpo: 41306 +.. date: 2020-08-03-13-44-37 +.. nonce: VDoWXI +.. section: Tests + +Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening when +executing the test with Tk 8.6.10. + +.. + +.. bpo: 42398 +.. date: 2020-11-18-11-58-44 +.. nonce: Yt5wO8 +.. section: Build + +Fix a race condition in "make regen-all" when make -jN option is used to run +jobs in parallel. The clinic.py script now only use atomic write to write +files. Moveover, generated files are now left unchanged if the content does +not change, to not change the file modification time. + +.. + +.. bpo: 42120 +.. date: 2020-11-16-22-41-02 +.. nonce: 9scgko +.. section: Windows + +Remove macro definition of ``copysign`` (to ``_copysign``) in headers. + +.. + +.. bpo: 38439 +.. date: 2020-10-20-13-19-42 +.. nonce: eMLi-t +.. section: Windows + +Updates the icons for IDLE in the Windows Store package. + +.. + +.. bpo: 41557 +.. date: 2020-08-26-09-35-06 +.. nonce: vt00cQ +.. section: Windows + +Update Windows installer to use SQLite 3.33.0. + +.. + +.. bpo: 38324 +.. date: 2020-05-30-02-46-43 +.. nonce: 476M-5 +.. section: Windows + +Avoid Unicode errors when accessing certain locale data on Windows. + +.. + +.. bpo: 38443 +.. date: 2020-10-23-10-26-53 +.. nonce: vu64tl +.. section: macOS + +The ``--enable-universalsdk`` and ``--with-universal-archs`` options for the +configure script now check that the specified architectures can be used. + +.. + +.. bpo: 41471 +.. date: 2020-10-19-12-25-19 +.. nonce: gwA7un +.. section: macOS + +Ignore invalid prefix lengths in system proxy excludes. + +.. + +.. bpo: 41557 +.. date: 2020-08-26-09-31-37 +.. nonce: mcQ75z +.. section: macOS + +Update macOS installer to use SQLite 3.33.0. + +.. + +.. bpo: 42426 +.. date: 2020-11-21-17-21-21 +.. nonce: kNnPoC +.. section: IDLE + +Fix reporting offset of the RE error in searchengine. + +.. + +.. bpo: 42415 +.. date: 2020-11-20-01-30-27 +.. nonce: CyD-va +.. section: IDLE + +Get docstrings for IDLE calltips more often by using inspect.getdoc. + +.. + +.. bpo: 33987 +.. date: 2020-10-24-21-27-37 +.. nonce: fIh9JL +.. section: IDLE + +Mostly finish using ttk widgets, mainly for editor, settings, and searches. +Some patches by Mark Roseman. + +.. + +.. bpo: 41775 +.. date: 2020-09-24-14-31-16 +.. nonce: sB8Vre +.. section: IDLE + +Use 'IDLE Shell' as shell title + +.. + +.. bpo: 40511 +.. date: 2020-06-16-12-16-13 +.. nonce: XkihpM +.. section: IDLE + +Typing opening and closing parentheses inside the parentheses of a function +call will no longer cause unnecessary "flashing" off and on of an existing +open call-tip, e.g. when typed in a string literal. + +.. + +.. bpo: 38439 +.. date: 2020-04-22-09-37-40 +.. nonce: ieXL-c +.. section: IDLE + +Add a 256?256 pixel IDLE icon to the Windows .ico file. Created by Andrew +Clover. Remove the low-color gif variations from the .ico file. + +.. + +.. bpo: 41986 +.. date: 2020-10-09-22-50-46 +.. nonce: JUPE59 +.. section: C API + +:c:data:`Py_FileSystemDefaultEncodeErrors` and :c:data:`Py_UTF8Mode` are +available again in limited API. diff --git a/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst b/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst deleted file mode 100644 index 9ab99d0e69dd1..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix a race condition in "make regen-all" when make -jN option is used to run -jobs in parallel. The clinic.py script now only use atomic write to write -files. Moveover, generated files are now left unchanged if the content does not -change, to not change the file modification time. diff --git a/Misc/NEWS.d/next/C API/2020-10-09-22-50-46.bpo-41986.JUPE59.rst b/Misc/NEWS.d/next/C API/2020-10-09-22-50-46.bpo-41986.JUPE59.rst deleted file mode 100644 index d456ba66bafd6..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-10-09-22-50-46.bpo-41986.JUPE59.rst +++ /dev/null @@ -1,2 +0,0 @@ -:c:data:`Py_FileSystemDefaultEncodeErrors` and :c:data:`Py_UTF8Mode` are -available again in limited API. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-02-11-35-33.bpo-41894.ffmtOt.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-02-11-35-33.bpo-41894.ffmtOt.rst deleted file mode 100644 index 571f5dae1a4a1..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-02-11-35-33.bpo-41894.ffmtOt.rst +++ /dev/null @@ -1,3 +0,0 @@ -When loading a native module and a load failure occurs, prevent a possible -UnicodeDecodeError when not running in a UTF-8 locale by decoding the load -error message using the current locale's encoding. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-04-10-55-12.bpo-41909.BqHPcm.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-04-10-55-12.bpo-41909.BqHPcm.rst deleted file mode 100644 index 388cfea065eed..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-04-10-55-12.bpo-41909.BqHPcm.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed stack overflow in :func:`issubclass` and :func:`isinstance` when -getting the ``__bases__`` attribute leads to infinite recursion. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-14-16-19-43.bpo-41984.SEtKMr.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-14-16-19-43.bpo-41984.SEtKMr.rst deleted file mode 100644 index e70d5dc2b8dde..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-14-16-19-43.bpo-41984.SEtKMr.rst +++ /dev/null @@ -1,2 +0,0 @@ -The garbage collector now tracks all user-defined classes. Patch by Brandt -Bucher. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-21-14-40-54.bpo-41910.CzBMit.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-21-14-40-54.bpo-41910.CzBMit.rst deleted file mode 100644 index a40e2519a62c6..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-21-14-40-54.bpo-41910.CzBMit.rst +++ /dev/null @@ -1 +0,0 @@ -Document the default implementation of `object.__eq__`. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-27-21-34-05.bpo-42143.N6KXUO.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-27-21-34-05.bpo-42143.N6KXUO.rst deleted file mode 100644 index 2b16e69da73b5..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-27-21-34-05.bpo-42143.N6KXUO.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix handling of errors during creation of ``PyFunctionObject``, which resulted -in operations on uninitialized memory. Patch by Yonatan Goldschmidt. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst deleted file mode 100644 index 0265d48660a3c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst +++ /dev/null @@ -1,4 +0,0 @@ -On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is now created -even if Python is configured to not install signal handlers (if -:c:member:`PyConfig.install_signal_handlers` equals to 0, or -``Py_InitializeEx(0)``). diff --git a/Misc/NEWS.d/next/Documentation/2020-01-22-05-14-53.bpo-39416.uYjhEm.rst b/Misc/NEWS.d/next/Documentation/2020-01-22-05-14-53.bpo-39416.uYjhEm.rst deleted file mode 100644 index 279a5f18ff855..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-01-22-05-14-53.bpo-39416.uYjhEm.rst +++ /dev/null @@ -1 +0,0 @@ -Document some restrictions on the default string representations of numeric classes. diff --git a/Misc/NEWS.d/next/Documentation/2020-09-24-15-35-13.bpo-41774.5IqdGP.rst b/Misc/NEWS.d/next/Documentation/2020-09-24-15-35-13.bpo-41774.5IqdGP.rst deleted file mode 100644 index af8e02437cb2b..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-09-24-15-35-13.bpo-41774.5IqdGP.rst +++ /dev/null @@ -1,2 +0,0 @@ -In Programming FAQ "Sequences (Tuples/Lists)" section, add "How do you -remove multiple items from a list". diff --git a/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst b/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst deleted file mode 100644 index 0a9451a63fb4f..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst +++ /dev/null @@ -1 +0,0 @@ -Fix the URL for the IMAP protocol documents. diff --git a/Misc/NEWS.d/next/IDLE/2020-04-22-09-37-40.bpo-38439.ieXL-c.rst b/Misc/NEWS.d/next/IDLE/2020-04-22-09-37-40.bpo-38439.ieXL-c.rst deleted file mode 100644 index d8d59015f20e3..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-04-22-09-37-40.bpo-38439.ieXL-c.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add a 256?256 pixel IDLE icon to the Windows .ico file. Created by Andrew -Clover. Remove the low-color gif variations from the .ico file. diff --git a/Misc/NEWS.d/next/IDLE/2020-06-16-12-16-13.bpo-40511.XkihpM.rst b/Misc/NEWS.d/next/IDLE/2020-06-16-12-16-13.bpo-40511.XkihpM.rst deleted file mode 100644 index cc96798138176..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-06-16-12-16-13.bpo-40511.XkihpM.rst +++ /dev/null @@ -1,3 +0,0 @@ -Typing opening and closing parentheses inside the parentheses of a function -call will no longer cause unnecessary "flashing" off and on of an existing -open call-tip, e.g. when typed in a string literal. diff --git a/Misc/NEWS.d/next/IDLE/2020-09-24-14-31-16.bpo-41775.sB8Vre.rst b/Misc/NEWS.d/next/IDLE/2020-09-24-14-31-16.bpo-41775.sB8Vre.rst deleted file mode 100644 index 59605fa40235f..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-09-24-14-31-16.bpo-41775.sB8Vre.rst +++ /dev/null @@ -1 +0,0 @@ -Use 'IDLE Shell' as shell title diff --git a/Misc/NEWS.d/next/IDLE/2020-10-24-21-27-37.bpo-33987.fIh9JL.rst b/Misc/NEWS.d/next/IDLE/2020-10-24-21-27-37.bpo-33987.fIh9JL.rst deleted file mode 100644 index 1e67edc03c658..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-10-24-21-27-37.bpo-33987.fIh9JL.rst +++ /dev/null @@ -1,3 +0,0 @@ -Mostly finish using ttk widgets, mainly for editor, settings, -and searches. Some patches by Mark Roseman. - diff --git a/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst b/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst deleted file mode 100644 index b61032c1e48e2..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst +++ /dev/null @@ -1 +0,0 @@ -Get docstrings for IDLE calltips more often by using inspect.getdoc. diff --git a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst deleted file mode 100644 index 0ab7972aad982..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst +++ /dev/null @@ -1 +0,0 @@ -Fix reporting offset of the RE error in searchengine. diff --git a/Misc/NEWS.d/next/Library/2019-08-20-05-17-32.bpo-32793.cgpXl6.rst b/Misc/NEWS.d/next/Library/2019-08-20-05-17-32.bpo-32793.cgpXl6.rst deleted file mode 100644 index f715a816efda9..0000000000000 --- a/Misc/NEWS.d/next/Library/2019-08-20-05-17-32.bpo-32793.cgpXl6.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a duplicated debug message when :meth:`smtplib.SMTP.connect` is called. diff --git a/Misc/NEWS.d/next/Library/2020-01-19-18-40-26.bpo-27321.8e6SpM.rst b/Misc/NEWS.d/next/Library/2020-01-19-18-40-26.bpo-27321.8e6SpM.rst deleted file mode 100644 index 28acf7f6ef919..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-01-19-18-40-26.bpo-27321.8e6SpM.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed KeyError exception when flattening an email to a string attempts to -replace a non-existent Content-Transfer-Encoding header. diff --git a/Misc/NEWS.d/next/Library/2020-04-03-16-13-59.bpo-40105.hfM2c0.rst b/Misc/NEWS.d/next/Library/2020-04-03-16-13-59.bpo-40105.hfM2c0.rst deleted file mode 100644 index f71a7a1e697a4..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-04-03-16-13-59.bpo-40105.hfM2c0.rst +++ /dev/null @@ -1,2 +0,0 @@ -ZipFile truncates files to avoid corruption when a shorter comment is provided -in append ("a") mode. Patch by Jan Mazur. diff --git a/Misc/NEWS.d/next/Library/2020-05-04-12-16-00.bpo-40492.ONk9Na.rst b/Misc/NEWS.d/next/Library/2020-05-04-12-16-00.bpo-40492.ONk9Na.rst deleted file mode 100644 index 86bc08c79e21e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-05-04-12-16-00.bpo-40492.ONk9Na.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not writing the output -file in the original directory when the program being profiled changes the -working directory. PR by Anthony Sottile. diff --git a/Misc/NEWS.d/next/Library/2020-05-14-16-01-34.bpo-40592.Cmk855.rst b/Misc/NEWS.d/next/Library/2020-05-14-16-01-34.bpo-40592.Cmk855.rst deleted file mode 100644 index 3211a1bc345fa..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-05-14-16-01-34.bpo-40592.Cmk855.rst +++ /dev/null @@ -1 +0,0 @@ -:func:`shutil.which` now ignores empty entries in :envvar:`PATHEXT` instead of treating them as a match. diff --git a/Misc/NEWS.d/next/Library/2020-07-08-09-45-00.bpo-16936.z8o8Pn.rst b/Misc/NEWS.d/next/Library/2020-07-08-09-45-00.bpo-16936.z8o8Pn.rst deleted file mode 100644 index c76db4eedecff..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-08-09-45-00.bpo-16936.z8o8Pn.rst +++ /dev/null @@ -1 +0,0 @@ -Allow ``ctypes.wintypes`` to be imported on non-Windows systems. diff --git a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst b/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst deleted file mode 100644 index fdd7c5e74f33a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst +++ /dev/null @@ -1,4 +0,0 @@ -Extracting a symlink from a tarball should succeed and overwrite the symlink -if it already exists. The fix is to remove the existing file or symlink -before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and -Senthil Kumaran. diff --git a/Misc/NEWS.d/next/Library/2020-07-28-12-08-58.bpo-41316.bSCbK4.rst b/Misc/NEWS.d/next/Library/2020-07-28-12-08-58.bpo-41316.bSCbK4.rst deleted file mode 100644 index 139a170866ed4..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-28-12-08-58.bpo-41316.bSCbK4.rst +++ /dev/null @@ -1 +0,0 @@ -Fix the :mod:`tarfile` module to write only basename of TAR file to GZIP compression header. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst b/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst deleted file mode 100644 index 4d91678948f40..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify the error message for :exc:`asyncio.IncompleteReadError` when -``expected`` is ``None``. diff --git a/Misc/NEWS.d/next/Library/2020-08-29-16-07-36.bpo-41662.Mn79zh.rst b/Misc/NEWS.d/next/Library/2020-08-29-16-07-36.bpo-41662.Mn79zh.rst deleted file mode 100644 index 0571c2d110bee..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-29-16-07-36.bpo-41662.Mn79zh.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed crash when mutate list of parameters during iteration in :mod:`sqlite3`. diff --git a/Misc/NEWS.d/next/Library/2020-08-30-21-38-57.bpo-41662.6e9iZn.rst b/Misc/NEWS.d/next/Library/2020-08-30-21-38-57.bpo-41662.6e9iZn.rst deleted file mode 100644 index aecb0a1ea4d08..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-30-21-38-57.bpo-41662.6e9iZn.rst +++ /dev/null @@ -1,2 +0,0 @@ -No longer override exceptions raised in ``__len__()`` of a sequence of -parameters in :mod:`sqlite3` with :exc:`~sqlite3.ProgrammingError`. diff --git a/Misc/NEWS.d/next/Library/2020-09-22-11-07-50.bpo-41831.k-Eop_.rst b/Misc/NEWS.d/next/Library/2020-09-22-11-07-50.bpo-41831.k-Eop_.rst deleted file mode 100644 index 84a3f5253a060..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-22-11-07-50.bpo-41831.k-Eop_.rst +++ /dev/null @@ -1,3 +0,0 @@ -``str()`` for the ``type`` attribute of the ``tkinter.Event`` object always -returns now the numeric code returned by Tk instead of the name of the event -type. diff --git a/Misc/NEWS.d/next/Library/2020-09-23-23-17-59.bpo-41840.QRFr4L.rst b/Misc/NEWS.d/next/Library/2020-09-23-23-17-59.bpo-41840.QRFr4L.rst deleted file mode 100644 index e96942d8ebd07..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-23-23-17-59.bpo-41840.QRFr4L.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix a bug in the :mod:`symtable` module that was causing module-scope global -variables to not be reported as both local and global. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Library/2020-09-24-16-45-59.bpo-41855.q6Y1nm.rst b/Misc/NEWS.d/next/Library/2020-09-24-16-45-59.bpo-41855.q6Y1nm.rst deleted file mode 100644 index c499c10e66120..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-24-16-45-59.bpo-41855.q6Y1nm.rst +++ /dev/null @@ -1,4 +0,0 @@ -In ``importlib.metadata``, fix issue where multiple children can be returned -from ``FastPath.zip_children()``. Backport of -`python-devs/importlib_metadata#117 -`_. diff --git a/Misc/NEWS.d/next/Library/2020-10-01-10-50-12.bpo-41900.Cho7oh.rst b/Misc/NEWS.d/next/Library/2020-10-01-10-50-12.bpo-41900.Cho7oh.rst deleted file mode 100644 index 6586c09ec985d..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-01-10-50-12.bpo-41900.Cho7oh.rst +++ /dev/null @@ -1,2 +0,0 @@ -C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes -when a default namespace was defined. diff --git a/Misc/NEWS.d/next/Library/2020-10-08-18-22-28.bpo-41976.Svm0wb.rst b/Misc/NEWS.d/next/Library/2020-10-08-18-22-28.bpo-41976.Svm0wb.rst deleted file mode 100644 index c8b3fc771845e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-08-18-22-28.bpo-41976.Svm0wb.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fixed a bug that was causing :func:`ctypes.util.find_library` to return -``None`` when triying to locate a library in an environment when gcc>=9 is -available and ``ldconfig`` is not. Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst b/Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst deleted file mode 100644 index 0e7fad40077be..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix pickling pure Python :class:`datetime.time` subclasses. Patch by Dean -Inwood. diff --git a/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst b/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst deleted file mode 100644 index 83c86c0799ebf..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-17-23-17-18.bpo-42065.85BsRA.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix an incorrectly formatted error from :meth:`_codecs.charmap_decode` when -called with a mapped value outside the range of valid Unicode code points. -PR by Max Bernstein. diff --git a/Misc/NEWS.d/next/Library/2020-10-18-19-22-39.bpo-32498.MoqSgo.rst b/Misc/NEWS.d/next/Library/2020-10-18-19-22-39.bpo-32498.MoqSgo.rst deleted file mode 100644 index 3083ded758a8f..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-18-19-22-39.bpo-32498.MoqSgo.rst +++ /dev/null @@ -1,3 +0,0 @@ -Clearer exception message when passing an argument of type bytes to -:func:`urllib.parse.unquote`. This is only for 3.8; in 3.9 and later this -function accepts bytes inputs as well. PR by Irit Katriel. diff --git a/Misc/NEWS.d/next/Library/2020-10-19-14-02-09.bpo-41491.d1BUWH.rst b/Misc/NEWS.d/next/Library/2020-10-19-14-02-09.bpo-41491.d1BUWH.rst deleted file mode 100644 index 4f39c91b284fa..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-19-14-02-09.bpo-41491.d1BUWH.rst +++ /dev/null @@ -1 +0,0 @@ -plistlib: fix parsing XML plists with hexadecimal integer values diff --git a/Misc/NEWS.d/next/Library/2020-10-23-19-20-14.bpo-42103.C5obK2.rst b/Misc/NEWS.d/next/Library/2020-10-23-19-20-14.bpo-42103.C5obK2.rst deleted file mode 100644 index 4eb694c16a063..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-23-19-20-14.bpo-42103.C5obK2.rst +++ /dev/null @@ -1,3 +0,0 @@ -:exc:`~plistlib.InvalidFileException` and :exc:`RecursionError` are now -the only errors caused by loading malformed binary Plist file (previously -ValueError and TypeError could be raised in some specific cases). diff --git a/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst b/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst deleted file mode 100644 index f6d7653f2cf09..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix a stack overflow error for asyncio Task or Future repr(). - -The overflow occurs under some circumstances when a Task or Future -recursively returns itself. diff --git a/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst b/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst deleted file mode 100644 index d54c714688531..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-31-13-28-36.bpo-29566.6aDbty.rst +++ /dev/null @@ -1 +0,0 @@ -``binhex.binhex()`` consisently writes macOS 9 line endings. diff --git a/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst b/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst deleted file mode 100644 index 181c2d9650a14..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst +++ /dev/null @@ -1 +0,0 @@ -webbrowser: Ignore *NotADirectoryError* when calling ``xdg-settings``. diff --git a/Misc/NEWS.d/next/Library/2020-11-02-14-10-48.bpo-35455.Q1xTIo.rst b/Misc/NEWS.d/next/Library/2020-11-02-14-10-48.bpo-35455.Q1xTIo.rst deleted file mode 100644 index e72c7d277a112..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-02-14-10-48.bpo-35455.Q1xTIo.rst +++ /dev/null @@ -1,3 +0,0 @@ -On Solaris, :func:`~time.thread_time` is now implemented with -``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not -always available. Patch by Jakub Kulik. diff --git a/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst b/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst deleted file mode 100644 index 071a0fdda1ff8..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed writing binary Plist files larger than 4 GiB. diff --git a/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst b/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst deleted file mode 100644 index 50cab6e1f11f8..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst +++ /dev/null @@ -1 +0,0 @@ -Fix `os.sendfile()` on illumos. diff --git a/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst b/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst deleted file mode 100644 index d3e1abcd84c1e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst +++ /dev/null @@ -1 +0,0 @@ -The ``onerror`` callback from ``shutil.rmtree`` now receives correct function when ``os.open`` fails. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst b/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst deleted file mode 100644 index 7e6a176c88941..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now the -representation of the default state as empty sequence (as returned by -``Style.map()``). The structure of the result is now the same on all platform -and does not depend on the value of ``wantobjects``. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst b/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst deleted file mode 100644 index c157df138a5ea..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst +++ /dev/null @@ -1,3 +0,0 @@ -We fixed an issue in `pickle.whichmodule` in which importing -`multiprocessing` could change the how pickle identifies which module an -object belongs to, potentially breaking the unpickling of those objects. diff --git a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst b/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst deleted file mode 100644 index 79afa654f352e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst +++ /dev/null @@ -1 +0,0 @@ -:class:`~traceback.TracebackException` no longer holds a reference to the exception's traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst deleted file mode 100644 index febda89338ddc..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst +++ /dev/null @@ -1 +0,0 @@ -Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst deleted file mode 100644 index 655781e3d2edd..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst +++ /dev/null @@ -1,4 +0,0 @@ -:func:`inspect.findsource` now raises :exc:`OSError` instead of -:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the -file length. This can happen, for example, when a file is edited after it was -imported. PR by Irit Katriel. diff --git a/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst b/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst deleted file mode 100644 index 69b9de1beae0d..0000000000000 --- a/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst +++ /dev/null @@ -1 +0,0 @@ -Add ``volatile`` to the accumulator variable in ``hmac.compare_digest``, making constant-time-defeating optimizations less likely. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Security/2020-10-19-10-56-27.bpo-42051.EU_B7u.rst b/Misc/NEWS.d/next/Security/2020-10-19-10-56-27.bpo-42051.EU_B7u.rst deleted file mode 100644 index e865ed12a0387..0000000000000 --- a/Misc/NEWS.d/next/Security/2020-10-19-10-56-27.bpo-42051.EU_B7u.rst +++ /dev/null @@ -1,3 +0,0 @@ -The :mod:`plistlib` module no longer accepts entity declarations in XML -plist files to avoid XML vulnerabilities. This should not affect users as -entity declarations are not used in regular plist files. diff --git a/Misc/NEWS.d/next/Security/2020-10-23-19-19-30.bpo-42103.cILT66.rst b/Misc/NEWS.d/next/Security/2020-10-23-19-19-30.bpo-42103.cILT66.rst deleted file mode 100644 index 15d7b6549ed46..0000000000000 --- a/Misc/NEWS.d/next/Security/2020-10-23-19-19-30.bpo-42103.cILT66.rst +++ /dev/null @@ -1,2 +0,0 @@ -Prevented potential DoS attack via CPU and RAM exhaustion when processing -malformed Apple Property List files in binary format. diff --git a/Misc/NEWS.d/next/Tests/2020-08-03-13-44-37.bpo-41306.VDoWXI.rst b/Misc/NEWS.d/next/Tests/2020-08-03-13-44-37.bpo-41306.VDoWXI.rst deleted file mode 100644 index 5e9ba2d8a2741..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-08-03-13-44-37.bpo-41306.VDoWXI.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening when executing the test with Tk 8.6.10. diff --git a/Misc/NEWS.d/next/Tests/2020-08-25-19-25-36.bpo-41602.Z64s0I.rst b/Misc/NEWS.d/next/Tests/2020-08-25-19-25-36.bpo-41602.Z64s0I.rst deleted file mode 100644 index fa3d2f1aa374e..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-08-25-19-25-36.bpo-41602.Z64s0I.rst +++ /dev/null @@ -1 +0,0 @@ -Add tests for SIGINT handling in the runpy module. diff --git a/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst b/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst deleted file mode 100644 index 10bce825961c3..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst +++ /dev/null @@ -1 +0,0 @@ -test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available diff --git a/Misc/NEWS.d/next/Tests/2020-10-05-09-37-43.bpo-41939.P4OlbA.rst b/Misc/NEWS.d/next/Tests/2020-10-05-09-37-43.bpo-41939.P4OlbA.rst deleted file mode 100644 index e58ad2616da1b..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-10-05-09-37-43.bpo-41939.P4OlbA.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix test_site.test_license_exists_at_url(): call -``urllib.request.urlcleanup()`` to reset the global -``urllib.request._opener``. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst b/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst deleted file mode 100644 index 4f9782f1c85af..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst +++ /dev/null @@ -1 +0,0 @@ -Tests for CJK codecs no longer call ``eval()`` on content received via HTTP. diff --git a/Misc/NEWS.d/next/Tests/2020-10-12-00-11-47.bpo-41739.wSCc4K.rst b/Misc/NEWS.d/next/Tests/2020-10-12-00-11-47.bpo-41739.wSCc4K.rst deleted file mode 100644 index 7aee2b9444472..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-10-12-00-11-47.bpo-41739.wSCc4K.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_logging.test_race_between_set_target_and_flush(): the test now -waits until all threads complete to avoid leaking running threads. diff --git a/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst b/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst deleted file mode 100644 index 4bd423b54a449..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst +++ /dev/null @@ -1 +0,0 @@ -Include ``_testinternalcapi`` module in Windows installer for test suite diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst deleted file mode 100644 index 872214284728b..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio -performance in the ``call_later()`` unit test. The test failed randomly on -the CI. diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst deleted file mode 100644 index 9e0a375a9b7f2..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst +++ /dev/null @@ -1,3 +0,0 @@ -Reenable test_gdb on gdb 9.2 and newer: -https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb -10.1. diff --git a/Misc/NEWS.d/next/Windows/2020-05-30-02-46-43.bpo-38324.476M-5.rst b/Misc/NEWS.d/next/Windows/2020-05-30-02-46-43.bpo-38324.476M-5.rst deleted file mode 100644 index c45aa13091429..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-05-30-02-46-43.bpo-38324.476M-5.rst +++ /dev/null @@ -1 +0,0 @@ -Avoid Unicode errors when accessing certain locale data on Windows. diff --git a/Misc/NEWS.d/next/Windows/2020-08-26-09-35-06.bpo-41557.vt00cQ.rst b/Misc/NEWS.d/next/Windows/2020-08-26-09-35-06.bpo-41557.vt00cQ.rst deleted file mode 100644 index 9d85461f00923..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-08-26-09-35-06.bpo-41557.vt00cQ.rst +++ /dev/null @@ -1 +0,0 @@ -Update Windows installer to use SQLite 3.33.0. diff --git a/Misc/NEWS.d/next/Windows/2020-10-20-13-19-42.bpo-38439.eMLi-t.rst b/Misc/NEWS.d/next/Windows/2020-10-20-13-19-42.bpo-38439.eMLi-t.rst deleted file mode 100644 index acbc80c10f5e2..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-10-20-13-19-42.bpo-38439.eMLi-t.rst +++ /dev/null @@ -1 +0,0 @@ -Updates the icons for IDLE in the Windows Store package. diff --git a/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst b/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst deleted file mode 100644 index c574956d11d93..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst +++ /dev/null @@ -1 +0,0 @@ -Remove macro definition of ``copysign`` (to ``_copysign``) in headers. diff --git a/Misc/NEWS.d/next/macOS/2020-08-26-09-31-37.bpo-41557.mcQ75z.rst b/Misc/NEWS.d/next/macOS/2020-08-26-09-31-37.bpo-41557.mcQ75z.rst deleted file mode 100644 index 5f2d9937c0606..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-08-26-09-31-37.bpo-41557.mcQ75z.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS installer to use SQLite 3.33.0. diff --git a/Misc/NEWS.d/next/macOS/2020-10-19-12-25-19.bpo-41471.gwA7un.rst b/Misc/NEWS.d/next/macOS/2020-10-19-12-25-19.bpo-41471.gwA7un.rst deleted file mode 100644 index db5dd00b19b0d..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-10-19-12-25-19.bpo-41471.gwA7un.rst +++ /dev/null @@ -1 +0,0 @@ -Ignore invalid prefix lengths in system proxy excludes. diff --git a/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst b/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst deleted file mode 100644 index 008c972e5c6ab..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst +++ /dev/null @@ -1,2 +0,0 @@ -The ``--enable-universalsdk`` and ``--with-universal-archs`` options for the -configure script now check that the specified architectures can be used. diff --git a/README.rst b/README.rst index 97a7191ca6af9..9ad101c39b2c5 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.8.6 -============================ +This is Python version 3.8.7rc1 +=============================== .. image:: https://travis-ci.org/python/cpython.svg?branch=3.8 :alt: CPython build status on Travis CI From webhook-mailer at python.org Mon Dec 7 21:10:21 2020 From: webhook-mailer at python.org (ambv) Date: Tue, 08 Dec 2020 02:10:21 -0000 Subject: [Python-checkins] Python 3.9.1 Message-ID: https://github.com/python/cpython/commit/1e5d33e9b9b8631b36f061103a30208b206fd03a commit: 1e5d33e9b9b8631b36f061103a30208b206fd03a branch: 3.9 author: ?ukasz Langa committer: ambv date: 2020-12-07T15:02:38+01:00 summary: Python 3.9.1 files: A Misc/NEWS.d/3.9.1.rst D Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst D Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst D Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst D Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst D Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst D Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst D Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst D Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst D Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst D Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst D Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst D Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst D Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst D Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 09db42f19fd76..0b5d280bd4fd4 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -19,11 +19,11 @@ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 9 #define PY_MICRO_VERSION 1 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.9.1rc1+" +#define PY_VERSION "3.9.1" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 6411c8cd6be75..d8dd8c536aa70 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Tue Nov 24 17:42:56 2020 +# Autogenerated by Sphinx on Mon Dec 7 15:00:07 2020 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5307,24 +5307,23 @@ 'for the\n' 'conversion. The alternate form is defined differently for ' 'different\n' - 'types. This option is only valid for integer, float, ' - 'complex and\n' - 'Decimal types. For integers, when binary, octal, or ' - 'hexadecimal output\n' - 'is used, this option adds the prefix respective "\'0b\'", ' - '"\'0o\'", or\n' - '"\'0x\'" to the output value. For floats, complex and ' - 'Decimal the\n' - 'alternate form causes the result of the conversion to ' - 'always contain a\n' - 'decimal-point character, even if no digits follow it. ' - 'Normally, a\n' - 'decimal-point character appears in the result of these ' - 'conversions\n' - 'only if a digit follows it. In addition, for "\'g\'" and ' - '"\'G\'"\n' - 'conversions, trailing zeros are not removed from the ' - 'result.\n' + 'types. This option is only valid for integer, float and ' + 'complex\n' + 'types. For integers, when binary, octal, or hexadecimal ' + 'output is\n' + 'used, this option adds the prefix respective "\'0b\'", ' + '"\'0o\'", or "\'0x\'"\n' + 'to the output value. For float and complex the alternate ' + 'form causes\n' + 'the result of the conversion to always contain a ' + 'decimal-point\n' + 'character, even if no digits follow it. Normally, a ' + 'decimal-point\n' + 'character appears in the result of these conversions only ' + 'if a digit\n' + 'follows it. In addition, for "\'g\'" and "\'G\'" ' + 'conversions, trailing\n' + 'zeros are not removed from the result.\n' '\n' 'The "\',\'" option signals the use of a comma for a ' 'thousands separator.\n' @@ -5462,9 +5461,8 @@ 'the integer\n' 'to a floating point number before formatting.\n' '\n' - 'The available presentation types for floating point and ' - 'decimal values\n' - 'are:\n' + 'The available presentation types for "float" and "Decimal" ' + 'values are:\n' '\n' ' ' '+-----------+------------------------------------------------------------+\n' @@ -5473,24 +5471,50 @@ '|\n' ' ' '|===========|============================================================|\n' - ' | "\'e\'" | Exponent notation. Prints the number in ' - 'scientific |\n' - ' | | notation using the letter ?e? to indicate ' - 'the exponent. |\n' - ' | | The default precision is ' - '"6". |\n' + ' | "\'e\'" | Scientific notation. For a given ' + 'precision "p", formats |\n' + ' | | the number in scientific notation with the ' + 'letter ?e? |\n' + ' | | separating the coefficient from the ' + 'exponent. The |\n' + ' | | coefficient has one digit before and "p" ' + 'digits after the |\n' + ' | | decimal point, for a total of "p + 1" ' + 'significant digits. |\n' + ' | | With no precision given, uses a precision ' + 'of "6" digits |\n' + ' | | after the decimal point for "float", and ' + 'shows all |\n' + ' | | coefficient digits for "Decimal". If no ' + 'digits follow the |\n' + ' | | decimal point, the decimal point is also ' + 'removed unless |\n' + ' | | the "#" option is ' + 'used. |\n' ' ' '+-----------+------------------------------------------------------------+\n' - ' | "\'E\'" | Exponent notation. Same as "\'e\'" ' - 'except it uses an upper |\n' + ' | "\'E\'" | Scientific notation. Same as "\'e\'" ' + 'except it uses an upper |\n' ' | | case ?E? as the separator ' 'character. |\n' ' ' '+-----------+------------------------------------------------------------+\n' - ' | "\'f\'" | Fixed-point notation. Displays the ' - 'number as a fixed-point |\n' - ' | | number. The default precision is ' - '"6". |\n' + ' | "\'f\'" | Fixed-point notation. For a given ' + 'precision "p", formats |\n' + ' | | the number as a decimal number with ' + 'exactly "p" digits |\n' + ' | | following the decimal point. With no ' + 'precision given, uses |\n' + ' | | a precision of "6" digits after the ' + 'decimal point for |\n' + ' | | "float", and uses a precision large enough ' + 'to show all |\n' + ' | | coefficient digits for "Decimal". If no ' + 'digits follow the |\n' + ' | | decimal point, the decimal point is also ' + 'removed unless |\n' + ' | | the "#" option is ' + 'used. |\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'F\'" | Fixed-point notation. Same as "\'f\'", ' @@ -5536,9 +5560,14 @@ ' | | regardless of the precision. A precision ' 'of "0" is |\n' ' | | treated as equivalent to a precision of ' - '"1". The default |\n' - ' | | precision is ' - '"6". |\n' + '"1". With no |\n' + ' | | precision given, uses a precision of "6" ' + 'significant |\n' + ' | | digits for "float", and shows all ' + 'coefficient digits for |\n' + ' | | ' + '"Decimal". ' + '|\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'G\'" | General format. Same as "\'g\'" except ' diff --git a/Misc/NEWS.d/3.9.1.rst b/Misc/NEWS.d/3.9.1.rst new file mode 100644 index 0000000000000..3942753a60e29 --- /dev/null +++ b/Misc/NEWS.d/3.9.1.rst @@ -0,0 +1,150 @@ +.. bpo: 42576 +.. date: 2020-12-05-22-34-47 +.. nonce: lEeEl7 +.. release date: 2020-12-07 +.. section: Core and Builtins + +``types.GenericAlias`` will now raise a ``TypeError`` when attempting to +initialize with a keyword argument. Previously, this would cause the +interpreter to crash if the interpreter was compiled with debug symbols. +This does not affect interpreters compiled for release. Patch by Ken Jin. + +.. + +.. bpo: 5054 +.. date: 2020-12-04-03-51-12 +.. nonce: 53StYZ +.. section: Library + +CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the +special purpose getallmatchingheaders with generic get_all method and add +relevant tests. + +Original Patch by Martin Panter. Modified by Senthil Kumaran. + +.. + +.. bpo: 17735 +.. date: 2020-12-03-22-22-24 +.. nonce: Qsaaue +.. section: Library + +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than +the file length. This can happen, for example, when a file is edited after +it was imported. PR by Irit Katriel. + +.. + +.. bpo: 42116 +.. date: 2020-12-03-15-42-32 +.. nonce: yIwroP +.. section: Library + +Fix handling of trailing comments by :func:`inspect.getsource`. + +.. + +.. bpo: 42487 +.. date: 2020-11-28-04-31-20 +.. nonce: iqtC4L +.. section: Library + +ChainMap.__iter__ no longer calls __getitem__ on underlying maps + +.. + +.. bpo: 42482 +.. date: 2020-11-27-16-46-58 +.. nonce: EJC3sd +.. section: Library + +:class:`~traceback.TracebackException` no longer holds a reference to the +exception's traceback object. Consequently, instances of TracebackException +for equivalent but non-equal exceptions now compare as equal. + +.. + +.. bpo: 42406 +.. date: 2020-11-19-10-44-41 +.. nonce: r9rNCj +.. section: Library + +We fixed an issue in `pickle.whichmodule` in which importing +`multiprocessing` could change the how pickle identifies which module an +object belongs to, potentially breaking the unpickling of those objects. + +.. + +.. bpo: 34215 +.. date: 2020-08-19-20-17-51 +.. nonce: _Cv8c- +.. section: Library + +Clarify the error message for :exc:`asyncio.IncompleteReadError` when +``expected`` is ``None``. + +.. + +.. bpo: 12800 +.. date: 2020-07-09-11-32-28 +.. nonce: fNgWwx +.. section: Library + +Extracting a symlink from a tarball should succeed and overwrite the symlink +if it already exists. The fix is to remove the existing file or symlink +before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and +Senthil Kumaran. + +.. + +.. bpo: 41473 +.. date: 2020-12-04-11-47-09 +.. nonce: W_updK +.. section: Tests + +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. + +.. + +.. bpo: 42553 +.. date: 2020-12-03-13-32-44 +.. nonce: 2TRE2N +.. section: Tests + +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. + +.. + +.. bpo: 41116 +.. date: 2020-12-04-23-09-11 +.. nonce: mSbXyV +.. section: macOS + +If no explicit macOS SDK was specified, setup.py should check for Tcl and TK +frameworks in /Library/Frameworks; the previous commit inadvertently broke +that test. + +.. + +.. bpo: 42504 +.. date: 2020-12-02-15-48-40 +.. nonce: RQmMOR +.. section: macOS + +Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 + +.. + +.. bpo: 42508 +.. date: 2020-11-30-19-46-05 +.. nonce: fE7w4M +.. section: IDLE + +Keep IDLE running on macOS. Remove obsolete workaround that prevented +running files with shortcuts when using new universal2 installers built on +macOS 11. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst deleted file mode 100644 index 154c9d8a915de..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst +++ /dev/null @@ -1,4 +0,0 @@ -``types.GenericAlias`` will now raise a ``TypeError`` when attempting to -initialize with a keyword argument. Previously, this would cause the -interpreter to crash if the interpreter was compiled with debug symbols. -This does not affect interpreters compiled for release. Patch by Ken Jin. diff --git a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst deleted file mode 100644 index b449351f7f458..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst +++ /dev/null @@ -1,3 +0,0 @@ -Keep IDLE running on macOS. Remove obsolete workaround that prevented -running files with shortcuts when using new universal2 installers built -on macOS 11. diff --git a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst b/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst deleted file mode 100644 index fdd7c5e74f33a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst +++ /dev/null @@ -1,4 +0,0 @@ -Extracting a symlink from a tarball should succeed and overwrite the symlink -if it already exists. The fix is to remove the existing file or symlink -before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and -Senthil Kumaran. diff --git a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst b/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst deleted file mode 100644 index 4d91678948f40..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify the error message for :exc:`asyncio.IncompleteReadError` when -``expected`` is ``None``. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst b/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst deleted file mode 100644 index c157df138a5ea..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst +++ /dev/null @@ -1,3 +0,0 @@ -We fixed an issue in `pickle.whichmodule` in which importing -`multiprocessing` could change the how pickle identifies which module an -object belongs to, potentially breaking the unpickling of those objects. diff --git a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst b/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst deleted file mode 100644 index 79afa654f352e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst +++ /dev/null @@ -1 +0,0 @@ -:class:`~traceback.TracebackException` no longer holds a reference to the exception's traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst b/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst deleted file mode 100644 index 8c67d747b614e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst +++ /dev/null @@ -1 +0,0 @@ -ChainMap.__iter__ no longer calls __getitem__ on underlying maps diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst deleted file mode 100644 index febda89338ddc..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst +++ /dev/null @@ -1 +0,0 @@ -Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst deleted file mode 100644 index 655781e3d2edd..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst +++ /dev/null @@ -1,4 +0,0 @@ -:func:`inspect.findsource` now raises :exc:`OSError` instead of -:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the -file length. This can happen, for example, when a file is edited after it was -imported. PR by Irit Katriel. diff --git a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst deleted file mode 100644 index ad8163c7c1d20..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst +++ /dev/null @@ -1,5 +0,0 @@ -CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the -special purpose getallmatchingheaders with generic get_all method and add -relevant tests. - -Original Patch by Martin Panter. Modified by Senthil Kumaran. diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst deleted file mode 100644 index 872214284728b..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio -performance in the ``call_later()`` unit test. The test failed randomly on -the CI. diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst deleted file mode 100644 index 9e0a375a9b7f2..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst +++ /dev/null @@ -1,3 +0,0 @@ -Reenable test_gdb on gdb 9.2 and newer: -https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb -10.1. diff --git a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst deleted file mode 100644 index c83bc2b9eeec5..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst +++ /dev/null @@ -1 +0,0 @@ -Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 \ No newline at end of file diff --git a/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst b/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst deleted file mode 100644 index 2c8e5ea029734..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-12-04-23-09-11.bpo-41116.mSbXyV.rst +++ /dev/null @@ -1,3 +0,0 @@ -If no explicit macOS SDK was specified, setup.py should check for Tcl and TK -frameworks in /Library/Frameworks; the previous commit inadvertently broke -that test. diff --git a/README.rst b/README.rst index 18dd74caf23a6..a9ab26056c588 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.9.1rc1 -=============================== +This is Python version 3.9.1 +============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.9 :alt: CPython build status on Travis CI From webhook-mailer at python.org Mon Dec 7 21:31:51 2020 From: webhook-mailer at python.org (pablogsal) Date: Tue, 08 Dec 2020 02:31:51 -0000 Subject: [Python-checkins] Python 3.10.0a3 Message-ID: https://github.com/python/cpython/commit/8bae2a958e8ffb306d00cebdfa1f74247ad81349 commit: 8bae2a958e8ffb306d00cebdfa1f74247ad81349 branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-07T19:34:10Z summary: Python 3.10.0a3 files: A Misc/NEWS.d/3.10.0a3.rst D Misc/NEWS.d/next/Build/2020-06-17-09-05-02.bpo-40998.sgqmg9.rst D Misc/NEWS.d/next/Build/2020-10-19-15-41-05.bpo-42087.2AhRFP.rst D Misc/NEWS.d/next/Build/2020-11-12-13-45-15.bpo-38823.C0z_Fe.rst D Misc/NEWS.d/next/Build/2020-11-13-15-04-53.bpo-41617.98_oaE.rst D Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst D Misc/NEWS.d/next/Build/2020-11-19-17-01-50.bpo-31904.894dk2.rst D Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst D Misc/NEWS.d/next/C API/2020-07-08-21-01-49.bpo-41073.VqQZON.rst D Misc/NEWS.d/next/C API/2020-10-19-15-58-16.bpo-42085.NhEf3W.rst D Misc/NEWS.d/next/C API/2020-10-27-21-10-14.bpo-42171.S3FWTP.rst D Misc/NEWS.d/next/C API/2020-11-03-11-52-27.bpo-1635741.aDYJKB.rst D Misc/NEWS.d/next/C API/2020-11-03-19-47-06.bpo-41832.dL1VJJ.rst D Misc/NEWS.d/next/C API/2020-11-04-16-31-55.bpo-42260.CmgHtF.rst D Misc/NEWS.d/next/C API/2020-11-04-17-22-36.bpo-42262.fCWzBb.rst D Misc/NEWS.d/next/C API/2020-11-05-18-02-07.bpo-42260.pAeaNR.rst D Misc/NEWS.d/next/C API/2020-11-10-14-27-39.bpo-42260.-Br3Co.rst D Misc/NEWS.d/next/C API/2020-11-13-01-40-28.bpo-40170.uh8lEf.rst D Misc/NEWS.d/next/C API/2020-11-17-15-39-10.bpo-41713.Rq99Vc.rst D Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst D Misc/NEWS.d/next/C API/2020-11-18-09-16-23.bpo-1635741.gkoI7Y.rst D Misc/NEWS.d/next/C API/2020-11-18-09-46-35.bpo-1635741.SH8OIT.rst D Misc/NEWS.d/next/C API/2020-11-18-10-52-38.bpo-1635741.FrWAwJ.rst D Misc/NEWS.d/next/C API/2020-11-18-15-21-59.bpo-39573.VB3G2y.rst D Misc/NEWS.d/next/C API/2020-11-18-20-11-13.bpo-1635741.fe3iRb.rst D Misc/NEWS.d/next/C API/2020-11-18-20-33-35.bpo-1635741.B4ztSk.rst D Misc/NEWS.d/next/C API/2020-11-19-09-17-01.bpo-1635741.6F9o6L.rst D Misc/NEWS.d/next/C API/2020-11-19-12-06-43.bpo-1635741.KEfZpn.rst D Misc/NEWS.d/next/C API/2020-11-19-15-33-42.bpo-1635741.9tVsZt.rst D Misc/NEWS.d/next/C API/2020-11-19-16-54-16.bpo-1635741.9tVsZt.rst D Misc/NEWS.d/next/C API/2020-11-19-17-44-36.bpo-1635741.qBZc3o.rst D Misc/NEWS.d/next/C API/2020-11-21-12-27-19.bpo-42423.ByJHhY.rst D Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-01-23-34-56.bpo-42233.zOSzja.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-02-14-39-48.bpo-40077.grY9TG.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-02-15-48-17.bpo-42246.3CNQEX.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-03-21-58-27.bpo-40077.a9qM1j.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-04-23-03-25.bpo-42266.G4hGDe.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-07-21-02-05.bpo-42282.M1W4Wj.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-12-23-16-14.bpo-42332.fEQIdk.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-13-13-53-11.bpo-42296.DuGrLJ.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-13-17-25-44.bpo-42349.JdWxez.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-30-03.bpo-42316._DdmpQ.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-57-09.bpo-42374.t7np1E.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-16-18-13-07.bpo-42202.ZxenYD.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-16-23-45-56.bpo-42381.G4AWxL.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-18-23-46-31.bpo-1635741.GVOQ-m.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-22-14-34-55.bpo-42435.uwlB2W.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst D Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst D Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst D Misc/NEWS.d/next/Documentation/2020-06-18-23-37-03.bpo-41028.vM8bC8.rst D Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst D Misc/NEWS.d/next/Documentation/2020-11-24-22-54-49.bpo-42238.62EOTu.rst D Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst D Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst D Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst D Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst D Misc/NEWS.d/next/Library/2020-01-21-16-38-25.bpo-39411.9uHFqT.rst D Misc/NEWS.d/next/Library/2020-05-08-21-30-54.bpo-40550.i7GWkb.rst D Misc/NEWS.d/next/Library/2020-05-29-15-25-41.bpo-40816.w61Pob.rst D Misc/NEWS.d/next/Library/2020-06-17-12-24-26.bpo-41001.5mi7b0.rst D Misc/NEWS.d/next/Library/2020-06-18-11-35-16.bpo-40968.R8Edbv.rst D Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst D Misc/NEWS.d/next/Library/2020-07-18-17-39-28.bpo-41332.QRGmA5.rst D Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst D Misc/NEWS.d/next/Library/2020-08-14-00-39-04.bpo-41543.RpcRjb.rst D Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst D Misc/NEWS.d/next/Library/2020-08-24-16-59-04.bpo-41625.Cc967V.rst D Misc/NEWS.d/next/Library/2020-09-06-21-55-44.bpo-28850.HJNggD.rst D Misc/NEWS.d/next/Library/2020-09-08-03-19-04.bpo-40624.0-gYfx.rst D Misc/NEWS.d/next/Library/2020-10-01-15-44-52.bpo-41861.YTqJ7z.rst D Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst D Misc/NEWS.d/next/Library/2020-10-08-23-51-55.bpo-26389.uga44e.rst D Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst D Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst D Misc/NEWS.d/next/Library/2020-10-23-15-47-47.bpo-42133.BzizYV.rst D Misc/NEWS.d/next/Library/2020-10-24-04-02-36.bpo-42140.miLqvb.rst D Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst D Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst D Misc/NEWS.d/next/Library/2020-11-02-23-05-17.bpo-42236.aJ6ZBR.rst D Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst D Misc/NEWS.d/next/Library/2020-11-03-14-15-35.bpo-42251.6TC32V.rst D Misc/NEWS.d/next/Library/2020-11-05-13-32-41.bpo-42264.r4KYUU.rst D Misc/NEWS.d/next/Library/2020-11-05-16-00-03.bpo-41877.FHbngM.rst D Misc/NEWS.d/next/Library/2020-11-06-18-20-47.bpo-42131.l2rjjG.rst D Misc/NEWS.d/next/Library/2020-11-10-12-09-13.bpo-42308.yaJHH9.rst D Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst D Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst D Misc/NEWS.d/next/Library/2020-11-12-18-21-15.bpo-42333.J9vFmV.rst D Misc/NEWS.d/next/Library/2020-11-13-18-53-50.bpo-42350.rsql7V.rst D Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst D Misc/NEWS.d/next/Library/2020-11-14-14-34-32.bpo-37205.iDbHrw.rst D Misc/NEWS.d/next/Library/2020-11-15-15-23-34.bpo-42345.hiIR7x.rst D Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst D Misc/NEWS.d/next/Library/2020-11-16-15-08-12.bpo-37205.Wh5svI.rst D Misc/NEWS.d/next/Library/2020-11-17-23-00-27.bpo-41713.-Us0tf.rst D Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst D Misc/NEWS.d/next/Library/2020-11-19-09-59-07.bpo-1635741.7cMypH.rst D Misc/NEWS.d/next/Library/2020-11-19-10-12-39.bpo-42403.t7q5AX.rst D Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst D Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst D Misc/NEWS.d/next/Library/2020-11-19-20-27-51.bpo-42413.fjHrHx.rst D Misc/NEWS.d/next/Library/2020-11-20-10-38-34.bpo-15450.E-y9PA.rst D Misc/NEWS.d/next/Library/2020-11-20-14-01-29.bpo-42392.-OUzvl.rst D Misc/NEWS.d/next/Library/2020-11-20-14-44-07.bpo-41818.33soAw.rst D Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst D Misc/NEWS.d/next/Library/2020-11-23-23-42-08.bpo-42299.Fdn4Wf.rst D Misc/NEWS.d/next/Library/2020-11-24-13-18-05.bpo-28468.8Gh2d4.rst D Misc/NEWS.d/next/Library/2020-11-25-22-44-59.bpo-42392.T_DAEl.rst D Misc/NEWS.d/next/Library/2020-11-26-12-40-16.bpo-42392.GbmdHE.rst D Misc/NEWS.d/next/Library/2020-11-27-09-19-43.bpo-41818.KWYUbL.rst D Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst D Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst D Misc/NEWS.d/next/Library/2020-11-28-06-34-53.bpo-41818.mFSMc2.rst D Misc/NEWS.d/next/Library/2020-11-28-22-52-57.bpo-38200.DuWGlW.rst D Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst D Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst D Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst D Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst D Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst D Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst D Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst D Misc/NEWS.d/next/Tests/2020-05-20-17-28-46.bpo-31904.yt83Ge.rst D Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst D Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst D Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst D Misc/NEWS.d/next/Tests/2020-11-23-11-11-29.bpo-31904.V3sUZk.rst D Misc/NEWS.d/next/Tests/2020-11-24-17-26-41.bpo-31904.eug834.rst D Misc/NEWS.d/next/Tests/2020-11-25-17-00-53.bpo-31904.ue4hd9.rst D Misc/NEWS.d/next/Tests/2020-11-26-11-13-13.bpo-31904.ay4g89.rst D Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst D Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst D Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst D Misc/NEWS.d/next/Tools-Demos/2020-05-03-01-30-46.bpo-36310.xDxxwY.rst D Misc/NEWS.d/next/Tools-Demos/2020-11-20-15-11-05.bpo-42212.sjzgOf.rst D Misc/NEWS.d/next/Windows/2020-11-15-23-01-14.bpo-38506.hhdnuP.rst D Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst D Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst D Misc/NEWS.d/next/macOS/2020-11-01-15-10-28.bpo-42232.2zI1GN.rst D Misc/NEWS.d/next/macOS/2020-11-01-16-40-23.bpo-41100.BApztP.rst D Misc/NEWS.d/next/macOS/2020-11-15-16-43-45.bpo-41116.oCkbrF.rst D Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index b7d2a9aa2e1b9..6174cb6d5f8a3 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -20,10 +20,10 @@ #define PY_MINOR_VERSION 10 #define PY_MICRO_VERSION 0 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA -#define PY_RELEASE_SERIAL 2 +#define PY_RELEASE_SERIAL 3 /* Version as a string */ -#define PY_VERSION "3.10.0a2+" +#define PY_VERSION "3.10.0a3" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index b424b1d0f9b22..49630bb4b81d7 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Tue Nov 3 00:01:01 2020 +# Autogenerated by Sphinx on Mon Dec 7 19:34:00 2020 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5301,24 +5301,23 @@ 'for the\n' 'conversion. The alternate form is defined differently for ' 'different\n' - 'types. This option is only valid for integer, float, ' - 'complex and\n' - 'Decimal types. For integers, when binary, octal, or ' - 'hexadecimal output\n' - 'is used, this option adds the prefix respective "\'0b\'", ' - '"\'0o\'", or\n' - '"\'0x\'" to the output value. For floats, complex and ' - 'Decimal the\n' - 'alternate form causes the result of the conversion to ' - 'always contain a\n' - 'decimal-point character, even if no digits follow it. ' - 'Normally, a\n' - 'decimal-point character appears in the result of these ' - 'conversions\n' - 'only if a digit follows it. In addition, for "\'g\'" and ' - '"\'G\'"\n' - 'conversions, trailing zeros are not removed from the ' - 'result.\n' + 'types. This option is only valid for integer, float and ' + 'complex\n' + 'types. For integers, when binary, octal, or hexadecimal ' + 'output is\n' + 'used, this option adds the prefix respective "\'0b\'", ' + '"\'0o\'", or "\'0x\'"\n' + 'to the output value. For float and complex the alternate ' + 'form causes\n' + 'the result of the conversion to always contain a ' + 'decimal-point\n' + 'character, even if no digits follow it. Normally, a ' + 'decimal-point\n' + 'character appears in the result of these conversions only ' + 'if a digit\n' + 'follows it. In addition, for "\'g\'" and "\'G\'" ' + 'conversions, trailing\n' + 'zeros are not removed from the result.\n' '\n' 'The "\',\'" option signals the use of a comma for a ' 'thousands separator.\n' @@ -5456,9 +5455,8 @@ 'the integer\n' 'to a floating point number before formatting.\n' '\n' - 'The available presentation types for floating point and ' - 'decimal values\n' - 'are:\n' + 'The available presentation types for "float" and "Decimal" ' + 'values are:\n' '\n' ' ' '+-----------+------------------------------------------------------------+\n' @@ -5467,24 +5465,50 @@ '|\n' ' ' '|===========|============================================================|\n' - ' | "\'e\'" | Exponent notation. Prints the number in ' - 'scientific |\n' - ' | | notation using the letter ?e? to indicate ' - 'the exponent. |\n' - ' | | The default precision is ' - '"6". |\n' + ' | "\'e\'" | Scientific notation. For a given ' + 'precision "p", formats |\n' + ' | | the number in scientific notation with the ' + 'letter ?e? |\n' + ' | | separating the coefficient from the ' + 'exponent. The |\n' + ' | | coefficient has one digit before and "p" ' + 'digits after the |\n' + ' | | decimal point, for a total of "p + 1" ' + 'significant digits. |\n' + ' | | With no precision given, uses a precision ' + 'of "6" digits |\n' + ' | | after the decimal point for "float", and ' + 'shows all |\n' + ' | | coefficient digits for "Decimal". If no ' + 'digits follow the |\n' + ' | | decimal point, the decimal point is also ' + 'removed unless |\n' + ' | | the "#" option is ' + 'used. |\n' ' ' '+-----------+------------------------------------------------------------+\n' - ' | "\'E\'" | Exponent notation. Same as "\'e\'" ' - 'except it uses an upper |\n' + ' | "\'E\'" | Scientific notation. Same as "\'e\'" ' + 'except it uses an upper |\n' ' | | case ?E? as the separator ' 'character. |\n' ' ' '+-----------+------------------------------------------------------------+\n' - ' | "\'f\'" | Fixed-point notation. Displays the ' - 'number as a fixed-point |\n' - ' | | number. The default precision is ' - '"6". |\n' + ' | "\'f\'" | Fixed-point notation. For a given ' + 'precision "p", formats |\n' + ' | | the number as a decimal number with ' + 'exactly "p" digits |\n' + ' | | following the decimal point. With no ' + 'precision given, uses |\n' + ' | | a precision of "6" digits after the ' + 'decimal point for |\n' + ' | | "float", and uses a precision large enough ' + 'to show all |\n' + ' | | coefficient digits for "Decimal". If no ' + 'digits follow the |\n' + ' | | decimal point, the decimal point is also ' + 'removed unless |\n' + ' | | the "#" option is ' + 'used. |\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'F\'" | Fixed-point notation. Same as "\'f\'", ' @@ -5530,9 +5554,14 @@ ' | | regardless of the precision. A precision ' 'of "0" is |\n' ' | | treated as equivalent to a precision of ' - '"1". The default |\n' - ' | | precision is ' - '"6". |\n' + '"1". With no |\n' + ' | | precision given, uses a precision of "6" ' + 'significant |\n' + ' | | digits for "float", and shows all ' + 'coefficient digits for |\n' + ' | | ' + '"Decimal". ' + '|\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'G\'" | General format. Same as "\'g\'" except ' diff --git a/Misc/NEWS.d/3.10.0a3.rst b/Misc/NEWS.d/3.10.0a3.rst new file mode 100644 index 0000000000000..0b76367f94445 --- /dev/null +++ b/Misc/NEWS.d/3.10.0a3.rst @@ -0,0 +1,1504 @@ +.. bpo: 40791 +.. date: 2020-05-28-06-06-47 +.. nonce: QGZClX +.. release date: 2020-12-07 +.. section: Security + +Add ``volatile`` to the accumulator variable in ``hmac.compare_digest``, +making constant-time-defeating optimizations less likely. + +.. + +.. bpo: 42576 +.. date: 2020-12-05-22-34-47 +.. nonce: lEeEl7 +.. section: Core and Builtins + +``types.GenericAlias`` will now raise a ``TypeError`` when attempting to +initialize with a keyword argument. Previously, this would cause the +interpreter to crash if the interpreter was compiled with debug symbols. +This does not affect interpreters compiled for release. Patch by Ken Jin. + +.. + +.. bpo: 42536 +.. date: 2020-12-02-20-23-31 +.. nonce: Kx3ZOu +.. section: Core and Builtins + +Several built-in and standard library types now ensure that their internal +result tuples are always tracked by the :term:`garbage collector `: + +- :meth:`collections.OrderedDict.items() ` + +- :meth:`dict.items` + +- :func:`enumerate` + +- :func:`functools.reduce` + +- :func:`itertools.combinations` + +- :func:`itertools.combinations_with_replacement` + +- :func:`itertools.permutations` + +- :func:`itertools.product` + +- :func:`itertools.zip_longest` + +- :func:`zip` + +Previously, they could have become untracked by a prior garbage collection. +Patch by Brandt Bucher. + +.. + +.. bpo: 42500 +.. date: 2020-11-30-14-27-29 +.. nonce: excVKU +.. section: Core and Builtins + +Improve handling of exceptions near recursion limit. Converts a number of +Fatal Errors in RecursionErrors. + +.. + +.. bpo: 42246 +.. date: 2020-11-24-14-01-43 +.. nonce: c9k9hj +.. section: Core and Builtins + +PEP 626: After a return, the f_lineno attribute of a frame is always the +last line executed. + +.. + +.. bpo: 42435 +.. date: 2020-11-22-14-34-55 +.. nonce: uwlB2W +.. section: Core and Builtins + +Speed up comparison of bytes objects with non-bytes objects when option +:option:`-b` is specified. Speed up comparison of bytarray objects with +non-buffer object. + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-23-46-31 +.. nonce: GVOQ-m +.. section: Core and Builtins + +Port the ``_warnings`` extension module to the multi-phase initialization +API (:pep:`489`). Patch by Victor Stinner. + +.. + +.. bpo: 41686 +.. date: 2020-11-17-16-25-50 +.. nonce: hX77kL +.. section: Core and Builtins + +On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is now created +even if Python is configured to not install signal handlers (if +:c:member:`PyConfig.install_signal_handlers` equals to 0, or +``Py_InitializeEx(0)``). + +.. + +.. bpo: 42381 +.. date: 2020-11-16-23-45-56 +.. nonce: G4AWxL +.. section: Core and Builtins + +Allow assignment expressions in set literals and set comprehensions as per +PEP 572. Patch by Pablo Galindo. + +.. + +.. bpo: 42202 +.. date: 2020-11-16-18-13-07 +.. nonce: ZxenYD +.. section: Core and Builtins + +Change function parameters annotations internal representation to tuple of +strings. Patch provided by Yurii Karabas. + +.. + +.. bpo: 42374 +.. date: 2020-11-16-17-57-09 +.. nonce: t7np1E +.. section: Core and Builtins + +Fix a regression introduced by the new parser, where an unparenthesized +walrus operator was not allowed within generator expressions. + +.. + +.. bpo: 42316 +.. date: 2020-11-16-17-30-03 +.. nonce: _DdmpQ +.. section: Core and Builtins + +Allow an unparenthesized walrus in subscript indexes. + +.. + +.. bpo: 42349 +.. date: 2020-11-13-17-25-44 +.. nonce: JdWxez +.. section: Core and Builtins + +Make sure that the compiler front-end produces a well-formed control flow +graph. Be be more aggressive in the compiler back-end, as it is now safe to +do so. + +.. + +.. bpo: 42296 +.. date: 2020-11-13-13-53-11 +.. nonce: DuGrLJ +.. section: Core and Builtins + +On Windows, fix a regression in signal handling which prevented to interrupt +a program using CTRL+C. The signal handler can be run in a thread different +than the Python thread, in which case the test deciding if the thread can +handle signals is wrong. + +.. + +.. bpo: 42332 +.. date: 2020-11-12-23-16-14 +.. nonce: fEQIdk +.. section: Core and Builtins + +:class:`types.GenericAlias` objects can now be the targets of weakrefs. + +.. + +.. bpo: 42282 +.. date: 2020-11-07-21-02-05 +.. nonce: M1W4Wj +.. section: Core and Builtins + +Optimise constant subexpressions that appear as part of named expressions +(previously the AST optimiser did not descend into named expressions). Patch +by Nick Coghlan. + +.. + +.. bpo: 42266 +.. date: 2020-11-04-23-03-25 +.. nonce: G4hGDe +.. section: Core and Builtins + +Fixed a bug with the LOAD_ATTR opcode cache that was not respecting +monkey-patching a class-level attribute to make it a descriptor. Patch by +Pablo Galindo. + +.. + +.. bpo: 40077 +.. date: 2020-11-03-21-58-27 +.. nonce: a9qM1j +.. section: Core and Builtins + +Convert :mod:`queue` to use heap types. + +.. + +.. bpo: 42246 +.. date: 2020-11-02-15-48-17 +.. nonce: 3CNQEX +.. section: Core and Builtins + +Improved accuracy of line tracing events and f_lineno attribute of Frame +objects. See PEP 626 for details. + +.. + +.. bpo: 40077 +.. date: 2020-11-02-14-39-48 +.. nonce: grY9TG +.. section: Core and Builtins + +Convert :mod:`mmap` to use heap types. + +.. + +.. bpo: 42233 +.. date: 2020-11-01-23-34-56 +.. nonce: zOSzja +.. section: Core and Builtins + +Allow ``GenericAlias`` objects to use :ref:`union type expressions +`. This allows expressions like ``list[int] | dict[float, +str]`` where previously a ``TypeError`` would have been thrown. This also +fixes union type expressions not de-duplicating ``GenericAlias`` objects. +(Contributed by Ken Jin in :issue:`42233`.) + +.. + +.. bpo: 26131 +.. date: 2020-10-22-17-27-08 +.. nonce: B-Veg7 +.. section: Core and Builtins + +The import system triggers a `ImportWarning` when it falls back to using +`load_module()`. + +.. + +.. bpo: 5054 +.. date: 2020-12-04-03-51-12 +.. nonce: 53StYZ +.. section: Library + +CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the +special purpose getallmatchingheaders with generic get_all method and add +relevant tests. + +Original Patch by Martin Panter. Modified by Senthil Kumaran. + +.. + +.. bpo: 42562 +.. date: 2020-12-03-22-42-03 +.. nonce: 2hPmhi +.. section: Library + +Fix issue when dis failed to parse function that has no line numbers. Patch +provided by Yurii Karabas. + +.. + +.. bpo: 17735 +.. date: 2020-12-03-22-22-24 +.. nonce: Qsaaue +.. section: Library + +:func:`inspect.findsource` now raises :exc:`OSError` instead of +:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than +the file length. This can happen, for example, when a file is edited after +it was imported. PR by Irit Katriel. + +.. + +.. bpo: 42116 +.. date: 2020-12-03-15-42-32 +.. nonce: yIwroP +.. section: Library + +Fix handling of trailing comments by :func:`inspect.getsource`. + +.. + +.. bpo: 42532 +.. date: 2020-12-02-07-37-59 +.. nonce: ObNep_ +.. section: Library + +Remove unexpected call of ``__bool__`` when passing a ``spec_arg`` argument +to a Mock. + +.. + +.. bpo: 38200 +.. date: 2020-11-28-22-52-57 +.. nonce: DuWGlW +.. section: Library + +Added itertools.pairwise() + +.. + +.. bpo: 41818 +.. date: 2020-11-28-06-34-53 +.. nonce: mFSMc2 +.. section: Library + +Fix test_master_read() so that it succeeds on all platforms that either +raise OSError or return b"" upon reading from master. + +.. + +.. bpo: 42487 +.. date: 2020-11-28-04-31-20 +.. nonce: iqtC4L +.. section: Library + +ChainMap.__iter__ no longer calls __getitem__ on underlying maps + +.. + +.. bpo: 42482 +.. date: 2020-11-27-16-46-58 +.. nonce: EJC3sd +.. section: Library + +:class:`~traceback.TracebackException` no longer holds a reference to the +exception's traceback object. Consequently, instances of TracebackException +for equivalent but non-equal exceptions now compare as equal. + +.. + +.. bpo: 41818 +.. date: 2020-11-27-09-19-43 +.. nonce: KWYUbL +.. section: Library + +Make test_openpty() avoid unexpected success due to number of rows and/or +number of columns being == 0. + +.. + +.. bpo: 42392 +.. date: 2020-11-26-12-40-16 +.. nonce: GbmdHE +.. section: Library + +Remove loop parameter from ``asyncio.subprocess`` and ``asyncio.tasks`` +functions. Patch provided by Yurii Karabas. + +.. + +.. bpo: 42392 +.. date: 2020-11-25-22-44-59 +.. nonce: T_DAEl +.. section: Library + +Remove loop parameter from ``asyncio.open_connection`` and +``asyncio.start_server`` functions. Patch provided by Yurii Karabas. + +.. + +.. bpo: 28468 +.. date: 2020-11-24-13-18-05 +.. nonce: 8Gh2d4 +.. section: Library + +Add :func:`platform.freedesktop_os_release` function to parse +freedesktop.org ``os-release`` files. + +.. + +.. bpo: 42299 +.. date: 2020-11-23-23-42-08 +.. nonce: Fdn4Wf +.. section: Library + +Removed the ``formatter`` module, which was deprecated in Python 3.4. It is +somewhat obsolete, little used, and not tested. It was originally scheduled +to be removed in Python 3.6, but such removals were delayed until after +Python 2.7 EOL. Existing users should copy whatever classes they use into +their code. Patch by Dong-hee Na and and Terry J. Reedy. + +.. + +.. bpo: 26131 +.. date: 2020-11-22-12-30-26 +.. nonce: -HsFPG +.. section: Library + +Deprecate zipimport.zipimporter.load_module() in favour of exec_module(). + +.. + +.. bpo: 41818 +.. date: 2020-11-20-14-44-07 +.. nonce: 33soAw +.. section: Library + +Updated tests for the pty library. test_basic() has been changed to +test_openpty(); this additionally checks if slave termios and slave winsize +are being set properly by pty.openpty(). In order to add support for +FreeBSD, NetBSD, OpenBSD, and Darwin, this also adds test_master_read(), +which demonstrates that pty.spawn() should not depend on an OSError to exit +from its copy loop. + +.. + +.. bpo: 42392 +.. date: 2020-11-20-14-01-29 +.. nonce: -OUzvl +.. section: Library + +Remove loop parameter from ``__init__`` in all ``asyncio.locks`` and +``asyncio.Queue`` classes. Patch provided by Yurii Karabas. + +.. + +.. bpo: 15450 +.. date: 2020-11-20-10-38-34 +.. nonce: E-y9PA +.. section: Library + +Make :class:`filecmp.dircmp` respect subclassing. Now the +:attr:`filecmp.dircmp.subdirs` behaves as expected when subclassing dircmp. + +.. + +.. bpo: 42413 +.. date: 2020-11-19-20-27-51 +.. nonce: fjHrHx +.. section: Library + +The exception :exc:`socket.timeout` is now an alias of :exc:`TimeoutError`. + +.. + +.. bpo: 31904 +.. date: 2020-11-19-16-14-36 +.. nonce: 83kf9d +.. section: Library + +Support signal module on VxWorks. + +.. + +.. bpo: 42406 +.. date: 2020-11-19-10-44-41 +.. nonce: r9rNCj +.. section: Library + +We fixed an issue in `pickle.whichmodule` in which importing +`multiprocessing` could change the how pickle identifies which module an +object belongs to, potentially breaking the unpickling of those objects. + +.. + +.. bpo: 42403 +.. date: 2020-11-19-10-12-39 +.. nonce: t7q5AX +.. section: Library + +Simplify the :mod:`importlib` external bootstrap code: +``importlib._bootstrap_external`` now uses regular imports to import builtin +modules. When it is imported, the builtin :func:`__import__()` function is +already fully working and so can be used to import builtin modules like +:mod:`sys`. Patch by Victor Stinner. + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-09-59-07 +.. nonce: 7cMypH +.. section: Library + +Convert _sre module types to heap types (PEP 384). Patch by Erlend E. +Aasland. + +.. + +.. bpo: 42375 +.. date: 2020-11-19-04-13-53 +.. nonce: U8bp4s +.. section: Library + +subprocess module update for DragonFlyBSD support. + +.. + +.. bpo: 41713 +.. date: 2020-11-17-23-00-27 +.. nonce: -Us0tf +.. section: Library + +Port the ``_signal`` extension module to the multi-phase initialization API +(:pep:`489`). Patch by Victor Stinner and Mohamed Koubaa. + +.. + +.. bpo: 37205 +.. date: 2020-11-16-15-08-12 +.. nonce: Wh5svI +.. section: Library + +:func:`time.time()`, :func:`time.perf_counter()` and +:func:`time.monotonic()` functions can no longer fail with a Python fatal +error, instead raise a regular Python exception on failure. + +.. + +.. bpo: 42328 +.. date: 2020-11-15-17-02-00 +.. nonce: bqpPlR +.. section: Library + +Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now the +representation of the default state as empty sequence (as returned by +``Style.map()``). The structure of the result is now the same on all +platform and does not depend on the value of ``wantobjects``. + +.. + +.. bpo: 42345 +.. date: 2020-11-15-15-23-34 +.. nonce: hiIR7x +.. section: Library + +Fix various issues with ``typing.Literal`` parameter handling (flatten, +deduplicate, use type to cache key). Patch provided by Yurii Karabas. + +.. + +.. bpo: 37205 +.. date: 2020-11-14-14-34-32 +.. nonce: iDbHrw +.. section: Library + +:func:`time.perf_counter()` on Windows and :func:`time.monotonic()` on macOS +are now system-wide. Previously, they used an offset computed at startup to +reduce the precision loss caused by the float type. Use +:func:`time.perf_counter_ns()` and :func:`time.monotonic_ns()` added in +Python 3.7 to avoid this precision loss. + +.. + +.. bpo: 42318 +.. date: 2020-11-14-13-46-27 +.. nonce: wYAcBD +.. section: Library + +Fixed support of non-BMP characters in :mod:`tkinter` on macOS. + +.. + +.. bpo: 42350 +.. date: 2020-11-13-18-53-50 +.. nonce: rsql7V +.. section: Library + +Fix the :class:`threading.Thread` class at fork: do nothing if the thread is +already stopped (ex: fork called at Python exit). Previously, an error was +logged in the child process. + +.. + +.. bpo: 42333 +.. date: 2020-11-12-18-21-15 +.. nonce: J9vFmV +.. section: Library + +Port _ssl extension module to heap types. + +.. + +.. bpo: 42014 +.. date: 2020-11-10-15-40-56 +.. nonce: ShM37l +.. section: Library + +The ``onerror`` callback from ``shutil.rmtree`` now receives correct +function when ``os.open`` fails. + +.. + +.. bpo: 42237 +.. date: 2020-11-10-14-27-49 +.. nonce: F363jO +.. section: Library + +Fix `os.sendfile()` on illumos. + +.. + +.. bpo: 42308 +.. date: 2020-11-10-12-09-13 +.. nonce: yaJHH9 +.. section: Library + +Add :data:`threading.__excepthook__` to allow retrieving the original value +of :func:`threading.excepthook` in case it is set to a broken or a different +value. Patch by Mario Corchero. + +.. + +.. bpo: 42131 +.. date: 2020-11-06-18-20-47 +.. nonce: l2rjjG +.. section: Library + +Implement PEP 451/spec methods on zipimport.zipimporter: find_spec(), +create_module(), and exec_module(). + +This also allows for the documented deprecation of find_loader(), +find_module(), and load_module(). + +.. + +.. bpo: 41877 +.. date: 2020-11-05-16-00-03 +.. nonce: FHbngM +.. section: Library + +Mock objects which are not unsafe will now raise an AttributeError if an +attribute with the prefix asert, aseert, or assrt is accessed, in addition +to this already happening for the prefixes assert or assret. + +.. + +.. bpo: 42264 +.. date: 2020-11-05-13-32-41 +.. nonce: r4KYUU +.. section: Library + +``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python +3.3, when it was made an alias to :class:`str`. It is now deprecated, +scheduled for removal in Python 3.12. + +.. + +.. bpo: 42251 +.. date: 2020-11-03-14-15-35 +.. nonce: 6TC32V +.. section: Library + +Added :func:`threading.gettrace` and :func:`threading.getprofile` to +retrieve the functions set by :func:`threading.settrace` and +:func:`threading.setprofile` respectively. Patch by Mario Corchero. + +.. + +.. bpo: 42249 +.. date: 2020-11-03-09-22-56 +.. nonce: vfNO2u +.. section: Library + +Fixed writing binary Plist files larger than 4 GiB. + +.. + +.. bpo: 42236 +.. date: 2020-11-02-23-05-17 +.. nonce: aJ6ZBR +.. section: Library + +On Unix, the :func:`os.device_encoding` function now returns ``'UTF-8'`` +rather than the device encoding if the :ref:`Python UTF-8 Mode ` +is enabled. + +.. + +.. bpo: 41754 +.. date: 2020-11-01-15-07-20 +.. nonce: DraSZh +.. section: Library + +webbrowser: Ignore *NotADirectoryError* when calling ``xdg-settings``. + +.. + +.. bpo: 42183 +.. date: 2020-10-29-11-17-35 +.. nonce: 50ZcIi +.. section: Library + +Fix a stack overflow error for asyncio Task or Future repr(). + +The overflow occurs under some circumstances when a Task or Future +recursively returns itself. + +.. + +.. bpo: 42140 +.. date: 2020-10-24-04-02-36 +.. nonce: miLqvb +.. section: Library + +Improve asyncio.wait function to create the futures set just one time. + +.. + +.. bpo: 42133 +.. date: 2020-10-23-15-47-47 +.. nonce: BzizYV +.. section: Library + +Update various modules in the stdlib to fall back on `__spec__.loader` when +`__loader__` isn't defined on a module. + +.. + +.. bpo: 26131 +.. date: 2020-10-22-17-26-35 +.. nonce: CAsI3O +.. section: Library + +The `load_module()` methods found in importlib now trigger a +DeprecationWarning. + +.. + +.. bpo: 39825 +.. date: 2020-10-20-08-28-26 +.. nonce: n6KnG0 +.. section: Library + +Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected +full ``platform_tag.extension`` format. Previously it was hard-coded to +``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result +in something like ``.cp38-win_amd64.pyd``. This brings windows into +conformance with the other platforms. + +.. + +.. bpo: 26389 +.. date: 2020-10-08-23-51-55 +.. nonce: uga44e +.. section: Library + +The :func:`traceback.format_exception`, +:func:`traceback.format_exception_only`, and +:func:`traceback.print_exception` functions can now take an exception object +as a positional-only argument. + +.. + +.. bpo: 41889 +.. date: 2020-10-01-16-17-11 +.. nonce: qLkNh8 +.. section: Library + +Enum: fix regression involving inheriting a multiply-inherited enum + +.. + +.. bpo: 41861 +.. date: 2020-10-01-15-44-52 +.. nonce: YTqJ7z +.. section: Library + +Convert :mod:`sqlite3` to use heap types (PEP 384). Patch by Erlend E. +Aasland. + +.. + +.. bpo: 40624 +.. date: 2020-09-08-03-19-04 +.. nonce: 0-gYfx +.. section: Library + +Added support for the XPath ``!=`` operator in xml.etree + +.. + +.. bpo: 28850 +.. date: 2020-09-06-21-55-44 +.. nonce: HJNggD +.. section: Library + +Fix :meth:`pprint.PrettyPrinter.format` overrides being ignored for contents +of small containers. The :func:`pprint._safe_repr` function was removed. + +.. + +.. bpo: 41625 +.. date: 2020-08-24-16-59-04 +.. nonce: Cc967V +.. section: Library + +Expose the :c:func:`splice` as :func:`os.splice` in the :mod:`os` module. +Patch by Pablo Galindo + +.. + +.. bpo: 34215 +.. date: 2020-08-19-20-17-51 +.. nonce: _Cv8c- +.. section: Library + +Clarify the error message for :exc:`asyncio.IncompleteReadError` when +``expected`` is ``None``. + +.. + +.. bpo: 41543 +.. date: 2020-08-14-00-39-04 +.. nonce: RpcRjb +.. section: Library + +Add async context manager support for contextlib.nullcontext. + +.. + +.. bpo: 21041 +.. date: 2020-08-10-15-06-55 +.. nonce: cYz1eL +.. section: Library + +:attr:`pathlib.PurePath.parents` now supports negative indexing. Patch +contributed by Yaroslav Pankovych. + +.. + +.. bpo: 41332 +.. date: 2020-07-18-17-39-28 +.. nonce: QRGmA5 +.. section: Library + +Added missing connect_accepted_socket() method to +``asyncio.AbstractEventLoop``. + +.. + +.. bpo: 12800 +.. date: 2020-07-09-11-32-28 +.. nonce: fNgWwx +.. section: Library + +Extracting a symlink from a tarball should succeed and overwrite the symlink +if it already exists. The fix is to remove the existing file or symlink +before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and +Senthil Kumaran. + +.. + +.. bpo: 40968 +.. date: 2020-06-18-11-35-16 +.. nonce: R8Edbv +.. section: Library + +:mod:`urllib.request` and :mod:`http.client` now send ``http/1.1`` ALPN +extension during TLS handshake when no custom context is supplied. + +.. + +.. bpo: 41001 +.. date: 2020-06-17-12-24-26 +.. nonce: 5mi7b0 +.. section: Library + +Add func:`os.eventfd` to provide a low level interface for Linux's event +notification file descriptor. + +.. + +.. bpo: 40816 +.. date: 2020-05-29-15-25-41 +.. nonce: w61Pob +.. section: Library + +Add AsyncContextDecorator to contextlib to support async context manager as +a decorator. + +.. + +.. bpo: 40550 +.. date: 2020-05-08-21-30-54 +.. nonce: i7GWkb +.. section: Library + +Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. + +.. + +.. bpo: 39411 +.. date: 2020-01-21-16-38-25 +.. nonce: 9uHFqT +.. section: Library + +Add an ``is_async`` identifier to :mod:`pyclbr`'s ``Function`` objects. +Patch by Batuhan Taskaya + +.. + +.. bpo: 35498 +.. date: 2018-12-14-13-29-17 +.. nonce: LEJHl7 +.. section: Library + +Add slice support to :attr:`pathlib.PurePath.parents`. + +.. + +.. bpo: 42238 +.. date: 2020-11-24-22-54-49 +.. nonce: 62EOTu +.. section: Documentation + +Tentative to deprecate ``make suspicious`` by first removing it from the CI +and documentation builds, but keeping it around for manual uses. + +.. + +.. bpo: 42153 +.. date: 2020-11-15-13-46-31 +.. nonce: KjBhx3 +.. section: Documentation + +Fix the URL for the IMAP protocol documents. + +.. + +.. bpo: 41028 +.. date: 2020-06-18-23-37-03 +.. nonce: vM8bC8 +.. section: Documentation + +Language and version switchers, previously maintained in every cpython +branches, are now handled by docsbuild-script. + +.. + +.. bpo: 41473 +.. date: 2020-12-04-11-47-09 +.. nonce: W_updK +.. section: Tests + +Reenable test_gdb on gdb 9.2 and newer: +https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb +10.1. + +.. + +.. bpo: 42553 +.. date: 2020-12-03-13-32-44 +.. nonce: 2TRE2N +.. section: Tests + +Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio +performance in the ``call_later()`` unit test. The test failed randomly on +the CI. + +.. + +.. bpo: 31904 +.. date: 2020-12-01-15-51-19 +.. nonce: iwetj4 +.. section: Tests + +Fix test_netrc on VxWorks: create temporary directories using temp_cwd(). + +.. + +.. bpo: 31904 +.. date: 2020-11-26-11-13-13 +.. nonce: ay4g89 +.. section: Tests + +skip test_getaddrinfo_ipv6_scopeid_symbolic and +test_getnameinfo_ipv6_scopeid_symbolic on VxWorks + +.. + +.. bpo: 31904 +.. date: 2020-11-25-17-00-53 +.. nonce: ue4hd9 +.. section: Tests + +skip test_test of test_mailcap on VxWorks + +.. + +.. bpo: 31904 +.. date: 2020-11-24-17-26-41 +.. nonce: eug834 +.. section: Tests + +add shell requirement for test_pipes + +.. + +.. bpo: 31904 +.. date: 2020-11-23-11-11-29 +.. nonce: V3sUZk +.. section: Tests + +skip some tests related to fifo on VxWorks + +.. + +.. bpo: 31904 +.. date: 2020-11-20-15-07-18 +.. nonce: EBJXjJ +.. section: Tests + +Fix test_doctest.py failures for VxWorks. + +.. + +.. bpo: 40754 +.. date: 2020-11-13-21-51-34 +.. nonce: Ekoxkg +.. section: Tests + +Include ``_testinternalcapi`` module in Windows installer for test suite + +.. + +.. bpo: 41561 +.. date: 2020-09-18-16-14-03 +.. nonce: uPnwrW +.. section: Tests + +test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available + +.. + +.. bpo: 31904 +.. date: 2020-05-20-17-28-46 +.. nonce: yt83Ge +.. section: Tests + +Fix os module failures for VxWorks RTOS. + +.. + +.. bpo: 31904 +.. date: 2020-05-20-14-28-48 +.. nonce: yJik6k +.. section: Tests + +Fix fifo test cases for VxWorks RTOS. + +.. + +.. bpo: 31904 +.. date: 2020-11-19-17-01-50 +.. nonce: 894dk2 +.. section: Build + +remove libnet dependency from detect_socket() for VxWorks + +.. + +.. bpo: 42398 +.. date: 2020-11-18-11-58-44 +.. nonce: Yt5wO8 +.. section: Build + +Fix a race condition in "make regen-all" when make -jN option is used to run +jobs in parallel. The clinic.py script now only use atomic write to write +files. Moveover, generated files are now left unchanged if the content does +not change, to not change the file modification time. + +.. + +.. bpo: 41617 +.. date: 2020-11-13-15-04-53 +.. nonce: 98_oaE +.. section: Build + +Fix building ``pycore_bitutils.h`` internal header on old clang version +without ``__builtin_bswap16()`` (ex: Xcode 4.6.3 on Mac OS X 10.7). Patch by +Joshua Root and Victor Stinner. + +.. + +.. bpo: 38823 +.. date: 2020-11-12-13-45-15 +.. nonce: C0z_Fe +.. section: Build + +It is no longer possible to build the ``_ctypes`` extension module without +:c:type:`wchar_t` type: remove ``CTYPES_UNICODE`` macro. Anyway, the +:c:type:`wchar_t` type is required to build Python. Patch by Victor Stinner. + +.. + +.. bpo: 42087 +.. date: 2020-10-19-15-41-05 +.. nonce: 2AhRFP +.. section: Build + +Support was removed for AIX 5.3 and below. See :issue:`40680`. + +.. + +.. bpo: 40998 +.. date: 2020-06-17-09-05-02 +.. nonce: sgqmg9 +.. section: Build + +Addressed three compiler warnings found by undefined behavior sanitizer +(ubsan). + +.. + +.. bpo: 42120 +.. date: 2020-11-16-22-41-02 +.. nonce: 9scgko +.. section: Windows + +Remove macro definition of ``copysign`` (to ``_copysign``) in headers. + +.. + +.. bpo: 38506 +.. date: 2020-11-15-23-01-14 +.. nonce: hhdnuP +.. section: Windows + +The Windows launcher now properly handles Python 3.10 when listing installed +Python versions. + +.. + +.. bpo: 42504 +.. date: 2020-12-02-15-48-40 +.. nonce: RQmMOR +.. section: macOS + +Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 + +.. + +.. bpo: 41116 +.. date: 2020-11-15-16-43-45 +.. nonce: oCkbrF +.. section: macOS + +Ensure distutils.unixxcompiler.find_library_file can find system provided +libraries on macOS 11. + +.. + +.. bpo: 41100 +.. date: 2020-11-01-16-40-23 +.. nonce: BApztP +.. section: macOS + +Add support for macOS 11 and Apple Silicon systems. + +It is now possible to build "Universal 2" binaries using +"--enable-universalsdk --with-universal-archs=universal2". + +Binaries build on later macOS versions can be deployed back to older +versions (tested up to macOS 10.9), when using the correct deployment +target. This is tested using Xcode 11 and later. + +.. + +.. bpo: 42232 +.. date: 2020-11-01-15-10-28 +.. nonce: 2zI1GN +.. section: macOS + +Added Darwin specific madvise options to mmap module. + +.. + +.. bpo: 38443 +.. date: 2020-10-23-10-26-53 +.. nonce: vu64tl +.. section: macOS + +The ``--enable-universalsdk`` and ``--with-universal-archs`` options for the +configure script now check that the specified architectures can be used. + +.. + +.. bpo: 42508 +.. date: 2020-11-30-19-46-05 +.. nonce: fE7w4M +.. section: IDLE + +Keep IDLE running on macOS. Remove obsolete workaround that prevented +running files with shortcuts when using new universal2 installers built on +macOS 11. + +.. + +.. bpo: 42426 +.. date: 2020-11-21-17-21-21 +.. nonce: kNnPoC +.. section: IDLE + +Fix reporting offset of the RE error in searchengine. + +.. + +.. bpo: 42415 +.. date: 2020-11-20-01-30-27 +.. nonce: CyD-va +.. section: IDLE + +Get docstrings for IDLE calltips more often by using inspect.getdoc. + +.. + +.. bpo: 42212 +.. date: 2020-11-20-15-11-05 +.. nonce: sjzgOf +.. section: Tools/Demos + +The smelly.py script now also checks the Python dynamic library and +extension modules, not only the Python static library. Make also the script +more verbose: explain what it does. + +.. + +.. bpo: 36310 +.. date: 2020-05-03-01-30-46 +.. nonce: xDxxwY +.. section: Tools/Demos + +Allow :file:`Tools/i18n/pygettext.py` to detect calls to ``gettext`` in +f-strings. + +.. + +.. bpo: 42423 +.. date: 2020-11-21-12-27-19 +.. nonce: ByJHhY +.. section: C API + +The :c:func:`PyType_FromSpecWithBases` and +:c:func:`PyType_FromModuleAndSpec` functions now accept a single class as +the *bases* argument. + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-17-44-36 +.. nonce: qBZc3o +.. section: C API + +Port :mod:`select` extension module to multiphase initialization +(:pep:`489`). + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-16-54-16 +.. nonce: 9tVsZt +.. section: C API + +Port _posixsubprocess extension module to multiphase initialization +(:pep:`489`). + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-15-33-42 +.. nonce: 9tVsZt +.. section: C API + +Port _posixshmem extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-12-06-43 +.. nonce: KEfZpn +.. section: C API + +Port _struct extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-19-09-17-01 +.. nonce: 6F9o6L +.. section: C API + +Port :mod:`spwd` extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-20-33-35 +.. nonce: B4ztSk +.. section: C API + +Port :mod:`gc` extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-20-11-13 +.. nonce: fe3iRb +.. section: C API + +Port _queue extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 39573 +.. date: 2020-11-18-15-21-59 +.. nonce: VB3G2y +.. section: C API + +Convert :c:func:`Py_TYPE` and :c:func:`Py_SIZE` back to macros to allow +using them as an l-value. Many third party C extension modules rely on the +ability of using Py_TYPE() and Py_SIZE() to set an object type and size: +``Py_TYPE(obj) = type;`` and ``Py_SIZE(obj) = size;``. + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-10-52-38 +.. nonce: FrWAwJ +.. section: C API + +Port :mod:`symtable` extension module to multiphase initialization +(:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-09-46-35 +.. nonce: SH8OIT +.. section: C API + +Port :mod:`grp` and :mod:`pwd` extension modules to multiphase +initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-09-16-23 +.. nonce: gkoI7Y +.. section: C API + +Port _random extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 1635741 +.. date: 2020-11-18-08-45-36 +.. nonce: VLZfiY +.. section: C API + +Port _hashlib extension module to multiphase initialization (:pep:`489`) + +.. + +.. bpo: 41713 +.. date: 2020-11-17-15-39-10 +.. nonce: Rq99Vc +.. section: C API + +Removed the undocumented ``PyOS_InitInterrupts()`` function. Initializing +Python already implicitly installs signal handlers: see +:c:member:`PyConfig.install_signal_handlers`. Patch by Victor Stinner. + +.. + +.. bpo: 40170 +.. date: 2020-11-13-01-40-28 +.. nonce: uh8lEf +.. section: C API + +The ``Py_TRASHCAN_BEGIN`` macro no longer accesses PyTypeObject attributes, +but now can get the condition by calling the new private +:c:func:`_PyTrash_cond()` function which hides implementation details. + +.. + +.. bpo: 42260 +.. date: 2020-11-10-14-27-39 +.. nonce: -Br3Co +.. section: C API + +:c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, +:c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome` and +:c:func:`Py_GetProgramName` functions now return ``NULL`` if called before +:c:func:`Py_Initialize` (before Python is initialized). Use the new +:ref:`Python Initialization Configuration API ` to get the +:ref:`Python Path Configuration. `. Patch by Victor +Stinner. + +.. + +.. bpo: 42260 +.. date: 2020-11-05-18-02-07 +.. nonce: pAeaNR +.. section: C API + +The :c:func:`PyConfig_Read` function now only parses +:c:member:`PyConfig.argv` arguments once: :c:member:`PyConfig.parse_argv` is +set to ``2`` after arguments are parsed. Since Python arguments are +strippped from :c:member:`PyConfig.argv`, parsing arguments twice would +parse the application options as Python options. + +.. + +.. bpo: 42262 +.. date: 2020-11-04-17-22-36 +.. nonce: fCWzBb +.. section: C API + +Added :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to increment +the reference count of an object and return the object. Patch by Victor +Stinner. + +.. + +.. bpo: 42260 +.. date: 2020-11-04-16-31-55 +.. nonce: CmgHtF +.. section: C API + +When :c:func:`Py_Initialize` is called twice, the second call now updates +more :mod:`sys` attributes for the configuration, rather than only +:data:`sys.argv`. Patch by Victor Stinner. + +.. + +.. bpo: 41832 +.. date: 2020-11-03-19-47-06 +.. nonce: dL1VJJ +.. section: C API + +The :c:func:`PyType_FromModuleAndSpec` function now accepts NULL ``tp_doc`` +slot. + +.. + +.. bpo: 1635741 +.. date: 2020-11-03-11-52-27 +.. nonce: aDYJKB +.. section: C API + +Added :c:func:`PyModule_AddObjectRef` function: similar to +:c:func:`PyModule_AddObject` but don't steal a reference to the value on +success. Patch by Victor Stinner. + +.. + +.. bpo: 42171 +.. date: 2020-10-27-21-10-14 +.. nonce: S3FWTP +.. section: C API + +The :c:data:`METH_FASTCALL` calling convention is added to the limited API. +The functions :c:func:`PyModule_AddType`, +:c:func:`PyType_FromModuleAndSpec`, :c:func:`PyType_GetModule` and +:c:func:`PyType_GetModuleState` are added to the limited API on Windows. + +.. + +.. bpo: 42085 +.. date: 2020-10-19-15-58-16 +.. nonce: NhEf3W +.. section: C API + +Add dedicated entry to PyAsyncMethods for sending values + +.. + +.. bpo: 41073 +.. date: 2020-07-08-21-01-49 +.. nonce: VqQZON +.. section: C API + +:c:func:`PyType_GetSlot()` can now accept static types. + +.. + +.. bpo: 30459 +.. date: 2020-05-06-23-54-57 +.. nonce: N9_Jai +.. section: C API + +:c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and +:c:func:`PyCell_SET` macros can no longer be used as l-value or r-value. For +example, ``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, c) = +x`` now fail with a compiler error. It prevents bugs like ``if +(PyList_SET_ITEM (a, b, c) < 0) ...`` test. Patch by Zackery Spytz and +Victor Stinner. diff --git a/Misc/NEWS.d/next/Build/2020-06-17-09-05-02.bpo-40998.sgqmg9.rst b/Misc/NEWS.d/next/Build/2020-06-17-09-05-02.bpo-40998.sgqmg9.rst deleted file mode 100644 index c268e4fd0d9cb..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-06-17-09-05-02.bpo-40998.sgqmg9.rst +++ /dev/null @@ -1,2 +0,0 @@ -Addressed three compiler warnings found by undefined behavior sanitizer -(ubsan). diff --git a/Misc/NEWS.d/next/Build/2020-10-19-15-41-05.bpo-42087.2AhRFP.rst b/Misc/NEWS.d/next/Build/2020-10-19-15-41-05.bpo-42087.2AhRFP.rst deleted file mode 100644 index 1a830bfe9f5ec..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-10-19-15-41-05.bpo-42087.2AhRFP.rst +++ /dev/null @@ -1 +0,0 @@ -Support was removed for AIX 5.3 and below. See :issue:`40680`. diff --git a/Misc/NEWS.d/next/Build/2020-11-12-13-45-15.bpo-38823.C0z_Fe.rst b/Misc/NEWS.d/next/Build/2020-11-12-13-45-15.bpo-38823.C0z_Fe.rst deleted file mode 100644 index 4a0f11de5e420..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-11-12-13-45-15.bpo-38823.C0z_Fe.rst +++ /dev/null @@ -1,3 +0,0 @@ -It is no longer possible to build the ``_ctypes`` extension module without -:c:type:`wchar_t` type: remove ``CTYPES_UNICODE`` macro. Anyway, the -:c:type:`wchar_t` type is required to build Python. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Build/2020-11-13-15-04-53.bpo-41617.98_oaE.rst b/Misc/NEWS.d/next/Build/2020-11-13-15-04-53.bpo-41617.98_oaE.rst deleted file mode 100644 index a5f35b25e8bf6..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-11-13-15-04-53.bpo-41617.98_oaE.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix building ``pycore_bitutils.h`` internal header on old clang version -without ``__builtin_bswap16()`` (ex: Xcode 4.6.3 on Mac OS X 10.7). Patch by -Joshua Root and Victor Stinner. diff --git a/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst b/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst deleted file mode 100644 index 9ab99d0e69dd1..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-11-18-11-58-44.bpo-42398.Yt5wO8.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix a race condition in "make regen-all" when make -jN option is used to run -jobs in parallel. The clinic.py script now only use atomic write to write -files. Moveover, generated files are now left unchanged if the content does not -change, to not change the file modification time. diff --git a/Misc/NEWS.d/next/Build/2020-11-19-17-01-50.bpo-31904.894dk2.rst b/Misc/NEWS.d/next/Build/2020-11-19-17-01-50.bpo-31904.894dk2.rst deleted file mode 100644 index d1ec647ed343e..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-11-19-17-01-50.bpo-31904.894dk2.rst +++ /dev/null @@ -1 +0,0 @@ -remove libnet dependency from detect_socket() for VxWorks diff --git a/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst b/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst deleted file mode 100644 index 092d457855a41..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-05-06-23-54-57.bpo-30459.N9_Jai.rst +++ /dev/null @@ -1,6 +0,0 @@ -:c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and :c:func:`PyCell_SET` -macros can no longer be used as l-value or r-value. For example, -``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, c) = x`` now fail -with a compiler error. It prevents bugs like -``if (PyList_SET_ITEM (a, b, c) < 0) ...`` test. -Patch by Zackery Spytz and Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-07-08-21-01-49.bpo-41073.VqQZON.rst b/Misc/NEWS.d/next/C API/2020-07-08-21-01-49.bpo-41073.VqQZON.rst deleted file mode 100644 index 1bec2f1a197e1..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-07-08-21-01-49.bpo-41073.VqQZON.rst +++ /dev/null @@ -1 +0,0 @@ -:c:func:`PyType_GetSlot()` can now accept static types. diff --git a/Misc/NEWS.d/next/C API/2020-10-19-15-58-16.bpo-42085.NhEf3W.rst b/Misc/NEWS.d/next/C API/2020-10-19-15-58-16.bpo-42085.NhEf3W.rst deleted file mode 100644 index 53338fb4f446e..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-10-19-15-58-16.bpo-42085.NhEf3W.rst +++ /dev/null @@ -1 +0,0 @@ -Add dedicated entry to PyAsyncMethods for sending values diff --git a/Misc/NEWS.d/next/C API/2020-10-27-21-10-14.bpo-42171.S3FWTP.rst b/Misc/NEWS.d/next/C API/2020-10-27-21-10-14.bpo-42171.S3FWTP.rst deleted file mode 100644 index 5dfbb23a6a39a..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-10-27-21-10-14.bpo-42171.S3FWTP.rst +++ /dev/null @@ -1,4 +0,0 @@ -The :c:data:`METH_FASTCALL` calling convention is added to the limited API. -The functions :c:func:`PyModule_AddType`, :c:func:`PyType_FromModuleAndSpec`, -:c:func:`PyType_GetModule` and :c:func:`PyType_GetModuleState` are added to -the limited API on Windows. diff --git a/Misc/NEWS.d/next/C API/2020-11-03-11-52-27.bpo-1635741.aDYJKB.rst b/Misc/NEWS.d/next/C API/2020-11-03-11-52-27.bpo-1635741.aDYJKB.rst deleted file mode 100644 index 2c118129dbf10..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-03-11-52-27.bpo-1635741.aDYJKB.rst +++ /dev/null @@ -1,3 +0,0 @@ -Added :c:func:`PyModule_AddObjectRef` function: similar to -:c:func:`PyModule_AddObject` but don't steal a reference to the value on -success. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-11-03-19-47-06.bpo-41832.dL1VJJ.rst b/Misc/NEWS.d/next/C API/2020-11-03-19-47-06.bpo-41832.dL1VJJ.rst deleted file mode 100644 index e0bce54eb9364..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-03-19-47-06.bpo-41832.dL1VJJ.rst +++ /dev/null @@ -1,2 +0,0 @@ -The :c:func:`PyType_FromModuleAndSpec` function now accepts NULL ``tp_doc`` -slot. diff --git a/Misc/NEWS.d/next/C API/2020-11-04-16-31-55.bpo-42260.CmgHtF.rst b/Misc/NEWS.d/next/C API/2020-11-04-16-31-55.bpo-42260.CmgHtF.rst deleted file mode 100644 index 694dd550a8e18..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-04-16-31-55.bpo-42260.CmgHtF.rst +++ /dev/null @@ -1,3 +0,0 @@ -When :c:func:`Py_Initialize` is called twice, the second call now updates -more :mod:`sys` attributes for the configuration, rather than only -:data:`sys.argv`. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-11-04-17-22-36.bpo-42262.fCWzBb.rst b/Misc/NEWS.d/next/C API/2020-11-04-17-22-36.bpo-42262.fCWzBb.rst deleted file mode 100644 index 8c1e4f418443b..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-04-17-22-36.bpo-42262.fCWzBb.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to increment the -reference count of an object and return the object. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-11-05-18-02-07.bpo-42260.pAeaNR.rst b/Misc/NEWS.d/next/C API/2020-11-05-18-02-07.bpo-42260.pAeaNR.rst deleted file mode 100644 index 0d6a277db88d4..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-05-18-02-07.bpo-42260.pAeaNR.rst +++ /dev/null @@ -1,5 +0,0 @@ -The :c:func:`PyConfig_Read` function now only parses :c:member:`PyConfig.argv` -arguments once: :c:member:`PyConfig.parse_argv` is set to ``2`` after arguments -are parsed. Since Python arguments are strippped from -:c:member:`PyConfig.argv`, parsing arguments twice would parse the application -options as Python options. diff --git a/Misc/NEWS.d/next/C API/2020-11-10-14-27-39.bpo-42260.-Br3Co.rst b/Misc/NEWS.d/next/C API/2020-11-10-14-27-39.bpo-42260.-Br3Co.rst deleted file mode 100644 index e7b5a558fd4c5..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-10-14-27-39.bpo-42260.-Br3Co.rst +++ /dev/null @@ -1,7 +0,0 @@ -:c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`, :c:func:`Py_GetExecPrefix`, -:c:func:`Py_GetProgramFullPath`, :c:func:`Py_GetPythonHome` and -:c:func:`Py_GetProgramName` functions now return ``NULL`` if called before -:c:func:`Py_Initialize` (before Python is initialized). Use the new -:ref:`Python Initialization Configuration API ` to get the -:ref:`Python Path Configuration. `. Patch by Victor -Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-11-13-01-40-28.bpo-40170.uh8lEf.rst b/Misc/NEWS.d/next/C API/2020-11-13-01-40-28.bpo-40170.uh8lEf.rst deleted file mode 100644 index 741f9520686f3..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-13-01-40-28.bpo-40170.uh8lEf.rst +++ /dev/null @@ -1,3 +0,0 @@ -The ``Py_TRASHCAN_BEGIN`` macro no longer accesses PyTypeObject attributes, -but now can get the condition by calling the new private -:c:func:`_PyTrash_cond()` function which hides implementation details. diff --git a/Misc/NEWS.d/next/C API/2020-11-17-15-39-10.bpo-41713.Rq99Vc.rst b/Misc/NEWS.d/next/C API/2020-11-17-15-39-10.bpo-41713.Rq99Vc.rst deleted file mode 100644 index 5373595aa08b9..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-17-15-39-10.bpo-41713.Rq99Vc.rst +++ /dev/null @@ -1,3 +0,0 @@ -Removed the undocumented ``PyOS_InitInterrupts()`` function. Initializing -Python already implicitly installs signal handlers: see -:c:member:`PyConfig.install_signal_handlers`. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst b/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst deleted file mode 100644 index 2300170587d7e..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst +++ /dev/null @@ -1 +0,0 @@ -Port _hashlib extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-18-09-16-23.bpo-1635741.gkoI7Y.rst b/Misc/NEWS.d/next/C API/2020-11-18-09-16-23.bpo-1635741.gkoI7Y.rst deleted file mode 100644 index 1f300dca55485..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-09-16-23.bpo-1635741.gkoI7Y.rst +++ /dev/null @@ -1 +0,0 @@ -Port _random extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-18-09-46-35.bpo-1635741.SH8OIT.rst b/Misc/NEWS.d/next/C API/2020-11-18-09-46-35.bpo-1635741.SH8OIT.rst deleted file mode 100644 index 34802cd9d3af3..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-09-46-35.bpo-1635741.SH8OIT.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port :mod:`grp` and :mod:`pwd` extension modules to multiphase -initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-18-10-52-38.bpo-1635741.FrWAwJ.rst b/Misc/NEWS.d/next/C API/2020-11-18-10-52-38.bpo-1635741.FrWAwJ.rst deleted file mode 100644 index 9eda94140dd66..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-10-52-38.bpo-1635741.FrWAwJ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port :mod:`symtable` extension module to multiphase initialization -(:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-18-15-21-59.bpo-39573.VB3G2y.rst b/Misc/NEWS.d/next/C API/2020-11-18-15-21-59.bpo-39573.VB3G2y.rst deleted file mode 100644 index b4fade6e202ed..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-15-21-59.bpo-39573.VB3G2y.rst +++ /dev/null @@ -1,4 +0,0 @@ -Convert :c:func:`Py_TYPE` and :c:func:`Py_SIZE` back to macros to allow -using them as an l-value. Many third party C extension modules rely on the -ability of using Py_TYPE() and Py_SIZE() to set an object type and size: -``Py_TYPE(obj) = type;`` and ``Py_SIZE(obj) = size;``. diff --git a/Misc/NEWS.d/next/C API/2020-11-18-20-11-13.bpo-1635741.fe3iRb.rst b/Misc/NEWS.d/next/C API/2020-11-18-20-11-13.bpo-1635741.fe3iRb.rst deleted file mode 100644 index 78df4fe043226..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-20-11-13.bpo-1635741.fe3iRb.rst +++ /dev/null @@ -1 +0,0 @@ -Port _queue extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-18-20-33-35.bpo-1635741.B4ztSk.rst b/Misc/NEWS.d/next/C API/2020-11-18-20-33-35.bpo-1635741.B4ztSk.rst deleted file mode 100644 index bce80c86de501..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-18-20-33-35.bpo-1635741.B4ztSk.rst +++ /dev/null @@ -1 +0,0 @@ -Port :mod:`gc` extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-19-09-17-01.bpo-1635741.6F9o6L.rst b/Misc/NEWS.d/next/C API/2020-11-19-09-17-01.bpo-1635741.6F9o6L.rst deleted file mode 100644 index d925a24da1ed7..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-19-09-17-01.bpo-1635741.6F9o6L.rst +++ /dev/null @@ -1 +0,0 @@ -Port :mod:`spwd` extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-19-12-06-43.bpo-1635741.KEfZpn.rst b/Misc/NEWS.d/next/C API/2020-11-19-12-06-43.bpo-1635741.KEfZpn.rst deleted file mode 100644 index fc64757e00b3a..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-19-12-06-43.bpo-1635741.KEfZpn.rst +++ /dev/null @@ -1 +0,0 @@ -Port _struct extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-19-15-33-42.bpo-1635741.9tVsZt.rst b/Misc/NEWS.d/next/C API/2020-11-19-15-33-42.bpo-1635741.9tVsZt.rst deleted file mode 100644 index 201b7aed56cc5..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-19-15-33-42.bpo-1635741.9tVsZt.rst +++ /dev/null @@ -1 +0,0 @@ -Port _posixshmem extension module to multiphase initialization (:pep:`489`) diff --git a/Misc/NEWS.d/next/C API/2020-11-19-16-54-16.bpo-1635741.9tVsZt.rst b/Misc/NEWS.d/next/C API/2020-11-19-16-54-16.bpo-1635741.9tVsZt.rst deleted file mode 100644 index d5a10695b4b41..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-19-16-54-16.bpo-1635741.9tVsZt.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port _posixsubprocess extension module to multiphase initialization -(:pep:`489`). diff --git a/Misc/NEWS.d/next/C API/2020-11-19-17-44-36.bpo-1635741.qBZc3o.rst b/Misc/NEWS.d/next/C API/2020-11-19-17-44-36.bpo-1635741.qBZc3o.rst deleted file mode 100644 index e66e8d7e40626..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-19-17-44-36.bpo-1635741.qBZc3o.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port :mod:`select` extension module to multiphase initialization -(:pep:`489`). diff --git a/Misc/NEWS.d/next/C API/2020-11-21-12-27-19.bpo-42423.ByJHhY.rst b/Misc/NEWS.d/next/C API/2020-11-21-12-27-19.bpo-42423.ByJHhY.rst deleted file mode 100644 index 046a89d7eb839..0000000000000 --- a/Misc/NEWS.d/next/C API/2020-11-21-12-27-19.bpo-42423.ByJHhY.rst +++ /dev/null @@ -1,3 +0,0 @@ -The :c:func:`PyType_FromSpecWithBases` and -:c:func:`PyType_FromModuleAndSpec` functions now accept a single class as -the *bases* argument. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst deleted file mode 100644 index e9f44c7c3aa9f..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-10-22-17-27-08.bpo-26131.B-Veg7.rst +++ /dev/null @@ -1,2 +0,0 @@ -The import system triggers a `ImportWarning` when it falls back to using -`load_module()`. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-01-23-34-56.bpo-42233.zOSzja.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-01-23-34-56.bpo-42233.zOSzja.rst deleted file mode 100644 index 499bb324fb935..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-01-23-34-56.bpo-42233.zOSzja.rst +++ /dev/null @@ -1,5 +0,0 @@ -Allow ``GenericAlias`` objects to use :ref:`union type expressions `. -This allows expressions like ``list[int] | dict[float, str]`` where previously a -``TypeError`` would have been thrown. This also fixes union type expressions -not de-duplicating ``GenericAlias`` objects. (Contributed by Ken Jin in -:issue:`42233`.) diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-02-14-39-48.bpo-40077.grY9TG.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-02-14-39-48.bpo-40077.grY9TG.rst deleted file mode 100644 index 48565a5a0daef..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-02-14-39-48.bpo-40077.grY9TG.rst +++ /dev/null @@ -1 +0,0 @@ -Convert :mod:`mmap` to use heap types. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-02-15-48-17.bpo-42246.3CNQEX.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-02-15-48-17.bpo-42246.3CNQEX.rst deleted file mode 100644 index 358454ce40a7f..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-02-15-48-17.bpo-42246.3CNQEX.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improved accuracy of line tracing events and f_lineno attribute of Frame -objects. See PEP 626 for details. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-03-21-58-27.bpo-40077.a9qM1j.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-03-21-58-27.bpo-40077.a9qM1j.rst deleted file mode 100644 index 369ba6b63ce2b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-03-21-58-27.bpo-40077.a9qM1j.rst +++ /dev/null @@ -1 +0,0 @@ -Convert :mod:`queue` to use heap types. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-04-23-03-25.bpo-42266.G4hGDe.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-04-23-03-25.bpo-42266.G4hGDe.rst deleted file mode 100644 index a8598cfde0420..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-04-23-03-25.bpo-42266.G4hGDe.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fixed a bug with the LOAD_ATTR opcode cache that was not respecting -monkey-patching a class-level attribute to make it a descriptor. Patch by -Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-07-21-02-05.bpo-42282.M1W4Wj.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-07-21-02-05.bpo-42282.M1W4Wj.rst deleted file mode 100644 index 74f5c3362385c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-07-21-02-05.bpo-42282.M1W4Wj.rst +++ /dev/null @@ -1,3 +0,0 @@ -Optimise constant subexpressions that appear as part of named expressions -(previously the AST optimiser did not descend into named expressions). -Patch by Nick Coghlan. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-12-23-16-14.bpo-42332.fEQIdk.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-12-23-16-14.bpo-42332.fEQIdk.rst deleted file mode 100644 index 8a2cb87cc0bd2..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-12-23-16-14.bpo-42332.fEQIdk.rst +++ /dev/null @@ -1 +0,0 @@ -:class:`types.GenericAlias` objects can now be the targets of weakrefs. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-13-13-53-11.bpo-42296.DuGrLJ.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-13-13-53-11.bpo-42296.DuGrLJ.rst deleted file mode 100644 index 841a26e791ea0..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-13-13-53-11.bpo-42296.DuGrLJ.rst +++ /dev/null @@ -1,4 +0,0 @@ -On Windows, fix a regression in signal handling which prevented to interrupt -a program using CTRL+C. The signal handler can be run in a thread different -than the Python thread, in which case the test deciding if the thread can -handle signals is wrong. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-13-17-25-44.bpo-42349.JdWxez.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-13-17-25-44.bpo-42349.JdWxez.rst deleted file mode 100644 index 3db695673a00a..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-13-17-25-44.bpo-42349.JdWxez.rst +++ /dev/null @@ -1 +0,0 @@ -Make sure that the compiler front-end produces a well-formed control flow graph. Be be more aggressive in the compiler back-end, as it is now safe to do so. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-30-03.bpo-42316._DdmpQ.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-30-03.bpo-42316._DdmpQ.rst deleted file mode 100644 index 77eb6662ba827..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-30-03.bpo-42316._DdmpQ.rst +++ /dev/null @@ -1 +0,0 @@ -Allow an unparenthesized walrus in subscript indexes. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-57-09.bpo-42374.t7np1E.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-57-09.bpo-42374.t7np1E.rst deleted file mode 100644 index d86d038c8425c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-17-57-09.bpo-42374.t7np1E.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a regression introduced by the new parser, where an unparenthesized walrus operator -was not allowed within generator expressions. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-18-13-07.bpo-42202.ZxenYD.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-16-18-13-07.bpo-42202.ZxenYD.rst deleted file mode 100644 index aba8ce6686fa2..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-18-13-07.bpo-42202.ZxenYD.rst +++ /dev/null @@ -1,2 +0,0 @@ -Change function parameters annotations internal representation to tuple -of strings. Patch provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-23-45-56.bpo-42381.G4AWxL.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-16-23-45-56.bpo-42381.G4AWxL.rst deleted file mode 100644 index 5bee5141f6cbc..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-16-23-45-56.bpo-42381.G4AWxL.rst +++ /dev/null @@ -1,2 +0,0 @@ -Allow assignment expressions in set literals and set comprehensions as per -PEP 572. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst deleted file mode 100644 index 0265d48660a3c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-17-16-25-50.bpo-41686.hX77kL.rst +++ /dev/null @@ -1,4 +0,0 @@ -On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is now created -even if Python is configured to not install signal handlers (if -:c:member:`PyConfig.install_signal_handlers` equals to 0, or -``Py_InitializeEx(0)``). diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-18-23-46-31.bpo-1635741.GVOQ-m.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-18-23-46-31.bpo-1635741.GVOQ-m.rst deleted file mode 100644 index ae9cc0bc5dd18..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-18-23-46-31.bpo-1635741.GVOQ-m.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port the ``_warnings`` extension module to the multi-phase initialization -API (:pep:`489`). Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-22-14-34-55.bpo-42435.uwlB2W.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-22-14-34-55.bpo-42435.uwlB2W.rst deleted file mode 100644 index 46a8486b78a68..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-22-14-34-55.bpo-42435.uwlB2W.rst +++ /dev/null @@ -1,2 +0,0 @@ -Speed up comparison of bytes objects with non-bytes objects when option :option:`-b` -is specified. Speed up comparison of bytarray objects with non-buffer object. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst deleted file mode 100644 index ff200475e6368..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-24-14-01-43.bpo-42246.c9k9hj.rst +++ /dev/null @@ -1,2 +0,0 @@ -PEP 626: After a return, the f_lineno attribute of a frame is always the -last line executed. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst deleted file mode 100644 index 2462a8e1fabef..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve handling of exceptions near recursion limit. Converts a number of -Fatal Errors in RecursionErrors. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst deleted file mode 100644 index 6ccacab1f64f6..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst +++ /dev/null @@ -1,26 +0,0 @@ -Several built-in and standard library types now ensure that their internal -result tuples are always tracked by the :term:`garbage collector -`: - -- :meth:`collections.OrderedDict.items() ` - -- :meth:`dict.items` - -- :func:`enumerate` - -- :func:`functools.reduce` - -- :func:`itertools.combinations` - -- :func:`itertools.combinations_with_replacement` - -- :func:`itertools.permutations` - -- :func:`itertools.product` - -- :func:`itertools.zip_longest` - -- :func:`zip` - -Previously, they could have become untracked by a prior garbage collection. -Patch by Brandt Bucher. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst deleted file mode 100644 index 154c9d8a915de..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-05-22-34-47.bpo-42576.lEeEl7.rst +++ /dev/null @@ -1,4 +0,0 @@ -``types.GenericAlias`` will now raise a ``TypeError`` when attempting to -initialize with a keyword argument. Previously, this would cause the -interpreter to crash if the interpreter was compiled with debug symbols. -This does not affect interpreters compiled for release. Patch by Ken Jin. diff --git a/Misc/NEWS.d/next/Documentation/2020-06-18-23-37-03.bpo-41028.vM8bC8.rst b/Misc/NEWS.d/next/Documentation/2020-06-18-23-37-03.bpo-41028.vM8bC8.rst deleted file mode 100644 index 5fc4155b55346..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-06-18-23-37-03.bpo-41028.vM8bC8.rst +++ /dev/null @@ -1,2 +0,0 @@ -Language and version switchers, previously maintained in every cpython -branches, are now handled by docsbuild-script. diff --git a/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst b/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst deleted file mode 100644 index 0a9451a63fb4f..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-11-15-13-46-31.bpo-42153.KjBhx3.rst +++ /dev/null @@ -1 +0,0 @@ -Fix the URL for the IMAP protocol documents. diff --git a/Misc/NEWS.d/next/Documentation/2020-11-24-22-54-49.bpo-42238.62EOTu.rst b/Misc/NEWS.d/next/Documentation/2020-11-24-22-54-49.bpo-42238.62EOTu.rst deleted file mode 100644 index d9edf9cdf79b3..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-11-24-22-54-49.bpo-42238.62EOTu.rst +++ /dev/null @@ -1,2 +0,0 @@ -Tentative to deprecate ``make suspicious`` by first removing it from the CI -and documentation builds, but keeping it around for manual uses. diff --git a/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst b/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst deleted file mode 100644 index b61032c1e48e2..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-20-01-30-27.bpo-42415.CyD-va.rst +++ /dev/null @@ -1 +0,0 @@ -Get docstrings for IDLE calltips more often by using inspect.getdoc. diff --git a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst deleted file mode 100644 index 0ab7972aad982..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst +++ /dev/null @@ -1 +0,0 @@ -Fix reporting offset of the RE error in searchengine. diff --git a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst b/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst deleted file mode 100644 index b449351f7f458..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2020-11-30-19-46-05.bpo-42508.fE7w4M.rst +++ /dev/null @@ -1,3 +0,0 @@ -Keep IDLE running on macOS. Remove obsolete workaround that prevented -running files with shortcuts when using new universal2 installers built -on macOS 11. diff --git a/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst b/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst deleted file mode 100644 index 1ab0093fcde04..0000000000000 --- a/Misc/NEWS.d/next/Library/2018-12-14-13-29-17.bpo-35498.LEJHl7.rst +++ /dev/null @@ -1 +0,0 @@ -Add slice support to :attr:`pathlib.PurePath.parents`. diff --git a/Misc/NEWS.d/next/Library/2020-01-21-16-38-25.bpo-39411.9uHFqT.rst b/Misc/NEWS.d/next/Library/2020-01-21-16-38-25.bpo-39411.9uHFqT.rst deleted file mode 100644 index 2377eef4b9f71..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-01-21-16-38-25.bpo-39411.9uHFqT.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add an ``is_async`` identifier to :mod:`pyclbr`'s ``Function`` objects. -Patch by Batuhan Taskaya diff --git a/Misc/NEWS.d/next/Library/2020-05-08-21-30-54.bpo-40550.i7GWkb.rst b/Misc/NEWS.d/next/Library/2020-05-08-21-30-54.bpo-40550.i7GWkb.rst deleted file mode 100644 index b0f3f03c34bbc..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-05-08-21-30-54.bpo-40550.i7GWkb.rst +++ /dev/null @@ -1 +0,0 @@ -Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. diff --git a/Misc/NEWS.d/next/Library/2020-05-29-15-25-41.bpo-40816.w61Pob.rst b/Misc/NEWS.d/next/Library/2020-05-29-15-25-41.bpo-40816.w61Pob.rst deleted file mode 100644 index 66b7577978465..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-05-29-15-25-41.bpo-40816.w61Pob.rst +++ /dev/null @@ -1 +0,0 @@ -Add AsyncContextDecorator to contextlib to support async context manager as a decorator. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-06-17-12-24-26.bpo-41001.5mi7b0.rst b/Misc/NEWS.d/next/Library/2020-06-17-12-24-26.bpo-41001.5mi7b0.rst deleted file mode 100644 index 34ecfbf5e6692..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-06-17-12-24-26.bpo-41001.5mi7b0.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add func:`os.eventfd` to provide a low level interface for Linux's event -notification file descriptor. diff --git a/Misc/NEWS.d/next/Library/2020-06-18-11-35-16.bpo-40968.R8Edbv.rst b/Misc/NEWS.d/next/Library/2020-06-18-11-35-16.bpo-40968.R8Edbv.rst deleted file mode 100644 index 6bcbaaa9ab929..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-06-18-11-35-16.bpo-40968.R8Edbv.rst +++ /dev/null @@ -1,2 +0,0 @@ -:mod:`urllib.request` and :mod:`http.client` now send ``http/1.1`` ALPN -extension during TLS handshake when no custom context is supplied. diff --git a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst b/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst deleted file mode 100644 index fdd7c5e74f33a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-09-11-32-28.bpo-12800.fNgWwx.rst +++ /dev/null @@ -1,4 +0,0 @@ -Extracting a symlink from a tarball should succeed and overwrite the symlink -if it already exists. The fix is to remove the existing file or symlink -before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and -Senthil Kumaran. diff --git a/Misc/NEWS.d/next/Library/2020-07-18-17-39-28.bpo-41332.QRGmA5.rst b/Misc/NEWS.d/next/Library/2020-07-18-17-39-28.bpo-41332.QRGmA5.rst deleted file mode 100644 index fa3fb83b9f5e4..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-18-17-39-28.bpo-41332.QRGmA5.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added missing connect_accepted_socket() method to -``asyncio.AbstractEventLoop``. diff --git a/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst b/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst deleted file mode 100644 index 4f14fd39d8827..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-10-15-06-55.bpo-21041.cYz1eL.rst +++ /dev/null @@ -1 +0,0 @@ -:attr:`pathlib.PurePath.parents` now supports negative indexing. Patch contributed by Yaroslav Pankovych. diff --git a/Misc/NEWS.d/next/Library/2020-08-14-00-39-04.bpo-41543.RpcRjb.rst b/Misc/NEWS.d/next/Library/2020-08-14-00-39-04.bpo-41543.RpcRjb.rst deleted file mode 100644 index 753dc763f217c..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-14-00-39-04.bpo-41543.RpcRjb.rst +++ /dev/null @@ -1 +0,0 @@ -Add async context manager support for contextlib.nullcontext. diff --git a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst b/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst deleted file mode 100644 index 4d91678948f40..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-19-20-17-51.bpo-34215._Cv8c-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify the error message for :exc:`asyncio.IncompleteReadError` when -``expected`` is ``None``. diff --git a/Misc/NEWS.d/next/Library/2020-08-24-16-59-04.bpo-41625.Cc967V.rst b/Misc/NEWS.d/next/Library/2020-08-24-16-59-04.bpo-41625.Cc967V.rst deleted file mode 100644 index 086788a7b0130..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-24-16-59-04.bpo-41625.Cc967V.rst +++ /dev/null @@ -1,2 +0,0 @@ -Expose the :c:func:`splice` as :func:`os.splice` in the :mod:`os` module. -Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Library/2020-09-06-21-55-44.bpo-28850.HJNggD.rst b/Misc/NEWS.d/next/Library/2020-09-06-21-55-44.bpo-28850.HJNggD.rst deleted file mode 100644 index fc6bd1d57e2ae..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-06-21-55-44.bpo-28850.HJNggD.rst +++ /dev/null @@ -1 +0,0 @@ -Fix :meth:`pprint.PrettyPrinter.format` overrides being ignored for contents of small containers. The :func:`pprint._safe_repr` function was removed. diff --git a/Misc/NEWS.d/next/Library/2020-09-08-03-19-04.bpo-40624.0-gYfx.rst b/Misc/NEWS.d/next/Library/2020-09-08-03-19-04.bpo-40624.0-gYfx.rst deleted file mode 100644 index 78bad6e4686be..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-08-03-19-04.bpo-40624.0-gYfx.rst +++ /dev/null @@ -1 +0,0 @@ -Added support for the XPath ``!=`` operator in xml.etree diff --git a/Misc/NEWS.d/next/Library/2020-10-01-15-44-52.bpo-41861.YTqJ7z.rst b/Misc/NEWS.d/next/Library/2020-10-01-15-44-52.bpo-41861.YTqJ7z.rst deleted file mode 100644 index d34658a254e05..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-01-15-44-52.bpo-41861.YTqJ7z.rst +++ /dev/null @@ -1,2 +0,0 @@ -Convert :mod:`sqlite3` to use heap types (PEP 384). -Patch by Erlend E. Aasland. diff --git a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst deleted file mode 100644 index 768865ae62116..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst +++ /dev/null @@ -1 +0,0 @@ -Enum: fix regression involving inheriting a multiply-inherited enum diff --git a/Misc/NEWS.d/next/Library/2020-10-08-23-51-55.bpo-26389.uga44e.rst b/Misc/NEWS.d/next/Library/2020-10-08-23-51-55.bpo-26389.uga44e.rst deleted file mode 100644 index a721a0d7cd0e8..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-08-23-51-55.bpo-26389.uga44e.rst +++ /dev/null @@ -1,4 +0,0 @@ -The :func:`traceback.format_exception`, -:func:`traceback.format_exception_only`, and -:func:`traceback.print_exception` functions can now take an exception object -as a positional-only argument. diff --git a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst deleted file mode 100644 index c337731f43584..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst +++ /dev/null @@ -1,5 +0,0 @@ -Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected -full ``platform_tag.extension`` format. Previously it was hard-coded to -``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result -in something like ``.cp38-win_amd64.pyd``. This brings windows into -conformance with the other platforms. diff --git a/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst b/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst deleted file mode 100644 index bead284bde4eb..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-22-17-26-35.bpo-26131.CAsI3O.rst +++ /dev/null @@ -1,2 +0,0 @@ -The `load_module()` methods found in importlib now trigger a -DeprecationWarning. diff --git a/Misc/NEWS.d/next/Library/2020-10-23-15-47-47.bpo-42133.BzizYV.rst b/Misc/NEWS.d/next/Library/2020-10-23-15-47-47.bpo-42133.BzizYV.rst deleted file mode 100644 index f3cfa1a8dce33..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-23-15-47-47.bpo-42133.BzizYV.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update various modules in the stdlib to fall back on `__spec__.loader` when -`__loader__` isn't defined on a module. diff --git a/Misc/NEWS.d/next/Library/2020-10-24-04-02-36.bpo-42140.miLqvb.rst b/Misc/NEWS.d/next/Library/2020-10-24-04-02-36.bpo-42140.miLqvb.rst deleted file mode 100644 index 4160234b5ec68..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-24-04-02-36.bpo-42140.miLqvb.rst +++ /dev/null @@ -1 +0,0 @@ -Improve asyncio.wait function to create the futures set just one time. diff --git a/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst b/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst deleted file mode 100644 index f6d7653f2cf09..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-29-11-17-35.bpo-42183.50ZcIi.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix a stack overflow error for asyncio Task or Future repr(). - -The overflow occurs under some circumstances when a Task or Future -recursively returns itself. diff --git a/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst b/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst deleted file mode 100644 index 181c2d9650a14..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-01-15-07-20.bpo-41754.DraSZh.rst +++ /dev/null @@ -1 +0,0 @@ -webbrowser: Ignore *NotADirectoryError* when calling ``xdg-settings``. diff --git a/Misc/NEWS.d/next/Library/2020-11-02-23-05-17.bpo-42236.aJ6ZBR.rst b/Misc/NEWS.d/next/Library/2020-11-02-23-05-17.bpo-42236.aJ6ZBR.rst deleted file mode 100644 index 15e2620366556..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-02-23-05-17.bpo-42236.aJ6ZBR.rst +++ /dev/null @@ -1,3 +0,0 @@ -On Unix, the :func:`os.device_encoding` function now returns ``'UTF-8'`` rather -than the device encoding if the :ref:`Python UTF-8 Mode ` is -enabled. diff --git a/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst b/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst deleted file mode 100644 index 071a0fdda1ff8..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-03-09-22-56.bpo-42249.vfNO2u.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed writing binary Plist files larger than 4 GiB. diff --git a/Misc/NEWS.d/next/Library/2020-11-03-14-15-35.bpo-42251.6TC32V.rst b/Misc/NEWS.d/next/Library/2020-11-03-14-15-35.bpo-42251.6TC32V.rst deleted file mode 100644 index 7435c837a2cbe..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-03-14-15-35.bpo-42251.6TC32V.rst +++ /dev/null @@ -1,3 +0,0 @@ -Added :func:`threading.gettrace` and :func:`threading.getprofile` to -retrieve the functions set by :func:`threading.settrace` and -:func:`threading.setprofile` respectively. Patch by Mario Corchero. diff --git a/Misc/NEWS.d/next/Library/2020-11-05-13-32-41.bpo-42264.r4KYUU.rst b/Misc/NEWS.d/next/Library/2020-11-05-13-32-41.bpo-42264.r4KYUU.rst deleted file mode 100644 index dd8e6871eb8cd..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-05-13-32-41.bpo-42264.r4KYUU.rst +++ /dev/null @@ -1,3 +0,0 @@ -``sqlite3.OptimizedUnicode`` has been undocumented and obsolete since Python -3.3, when it was made an alias to :class:`str`. It is now deprecated, -scheduled for removal in Python 3.12. diff --git a/Misc/NEWS.d/next/Library/2020-11-05-16-00-03.bpo-41877.FHbngM.rst b/Misc/NEWS.d/next/Library/2020-11-05-16-00-03.bpo-41877.FHbngM.rst deleted file mode 100644 index 6f6fccb1d4cd1..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-05-16-00-03.bpo-41877.FHbngM.rst +++ /dev/null @@ -1,2 +0,0 @@ -Mock objects which are not unsafe will now raise an AttributeError if an attribute with the prefix asert, aseert, -or assrt is accessed, in addition to this already happening for the prefixes assert or assret. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-06-18-20-47.bpo-42131.l2rjjG.rst b/Misc/NEWS.d/next/Library/2020-11-06-18-20-47.bpo-42131.l2rjjG.rst deleted file mode 100644 index 4381f5e9754c2..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-06-18-20-47.bpo-42131.l2rjjG.rst +++ /dev/null @@ -1,5 +0,0 @@ -Implement PEP 451/spec methods on zipimport.zipimporter: find_spec(), -create_module(), and exec_module(). - -This also allows for the documented deprecation of find_loader(), -find_module(), and load_module(). diff --git a/Misc/NEWS.d/next/Library/2020-11-10-12-09-13.bpo-42308.yaJHH9.rst b/Misc/NEWS.d/next/Library/2020-11-10-12-09-13.bpo-42308.yaJHH9.rst deleted file mode 100644 index 3460b0c92b150..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-10-12-09-13.bpo-42308.yaJHH9.rst +++ /dev/null @@ -1,3 +0,0 @@ -Add :data:`threading.__excepthook__` to allow retrieving the original value -of :func:`threading.excepthook` in case it is set to a broken or a different -value. Patch by Mario Corchero. diff --git a/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst b/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst deleted file mode 100644 index 50cab6e1f11f8..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-10-14-27-49.bpo-42237.F363jO.rst +++ /dev/null @@ -1 +0,0 @@ -Fix `os.sendfile()` on illumos. diff --git a/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst b/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst deleted file mode 100644 index d3e1abcd84c1e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-10-15-40-56.bpo-42014.ShM37l.rst +++ /dev/null @@ -1 +0,0 @@ -The ``onerror`` callback from ``shutil.rmtree`` now receives correct function when ``os.open`` fails. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-12-18-21-15.bpo-42333.J9vFmV.rst b/Misc/NEWS.d/next/Library/2020-11-12-18-21-15.bpo-42333.J9vFmV.rst deleted file mode 100644 index f8755c7685642..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-12-18-21-15.bpo-42333.J9vFmV.rst +++ /dev/null @@ -1 +0,0 @@ -Port _ssl extension module to heap types. diff --git a/Misc/NEWS.d/next/Library/2020-11-13-18-53-50.bpo-42350.rsql7V.rst b/Misc/NEWS.d/next/Library/2020-11-13-18-53-50.bpo-42350.rsql7V.rst deleted file mode 100644 index 090ea2266633e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-13-18-53-50.bpo-42350.rsql7V.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix the :class:`threading.Thread` class at fork: do nothing if the thread is -already stopped (ex: fork called at Python exit). Previously, an error was -logged in the child process. diff --git a/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst b/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst deleted file mode 100644 index e72daebb2f152..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed support of non-BMP characters in :mod:`tkinter` on macOS. diff --git a/Misc/NEWS.d/next/Library/2020-11-14-14-34-32.bpo-37205.iDbHrw.rst b/Misc/NEWS.d/next/Library/2020-11-14-14-34-32.bpo-37205.iDbHrw.rst deleted file mode 100644 index 5cf325ec0c19d..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-14-14-34-32.bpo-37205.iDbHrw.rst +++ /dev/null @@ -1,5 +0,0 @@ -:func:`time.perf_counter()` on Windows and :func:`time.monotonic()` on macOS -are now system-wide. Previously, they used an offset computed at startup to -reduce the precision loss caused by the float type. Use -:func:`time.perf_counter_ns()` and :func:`time.monotonic_ns()` added in Python -3.7 to avoid this precision loss. diff --git a/Misc/NEWS.d/next/Library/2020-11-15-15-23-34.bpo-42345.hiIR7x.rst b/Misc/NEWS.d/next/Library/2020-11-15-15-23-34.bpo-42345.hiIR7x.rst deleted file mode 100644 index 6339182c3ae72..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-15-15-23-34.bpo-42345.hiIR7x.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix various issues with ``typing.Literal`` parameter handling (flatten, -deduplicate, use type to cache key). Patch provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst b/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst deleted file mode 100644 index 7e6a176c88941..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-15-17-02-00.bpo-42328.bqpPlR.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now the -representation of the default state as empty sequence (as returned by -``Style.map()``). The structure of the result is now the same on all platform -and does not depend on the value of ``wantobjects``. diff --git a/Misc/NEWS.d/next/Library/2020-11-16-15-08-12.bpo-37205.Wh5svI.rst b/Misc/NEWS.d/next/Library/2020-11-16-15-08-12.bpo-37205.Wh5svI.rst deleted file mode 100644 index 9268f2d77f72f..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-16-15-08-12.bpo-37205.Wh5svI.rst +++ /dev/null @@ -1,3 +0,0 @@ -:func:`time.time()`, :func:`time.perf_counter()` and -:func:`time.monotonic()` functions can no longer fail with a Python fatal -error, instead raise a regular Python exception on failure. diff --git a/Misc/NEWS.d/next/Library/2020-11-17-23-00-27.bpo-41713.-Us0tf.rst b/Misc/NEWS.d/next/Library/2020-11-17-23-00-27.bpo-41713.-Us0tf.rst deleted file mode 100644 index 4b297d9d7435a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-17-23-00-27.bpo-41713.-Us0tf.rst +++ /dev/null @@ -1,2 +0,0 @@ -Port the ``_signal`` extension module to the multi-phase initialization API -(:pep:`489`). Patch by Victor Stinner and Mohamed Koubaa. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst deleted file mode 100644 index 6d8c80c2f2c0a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst +++ /dev/null @@ -1 +0,0 @@ -subprocess module update for DragonFlyBSD support. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-19-09-59-07.bpo-1635741.7cMypH.rst b/Misc/NEWS.d/next/Library/2020-11-19-09-59-07.bpo-1635741.7cMypH.rst deleted file mode 100644 index 1e7d412680a1b..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-09-59-07.bpo-1635741.7cMypH.rst +++ /dev/null @@ -1,2 +0,0 @@ -Convert _sre module types to heap types (PEP 384). Patch by Erlend E. -Aasland. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-10-12-39.bpo-42403.t7q5AX.rst b/Misc/NEWS.d/next/Library/2020-11-19-10-12-39.bpo-42403.t7q5AX.rst deleted file mode 100644 index a90459a23ebf7..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-10-12-39.bpo-42403.t7q5AX.rst +++ /dev/null @@ -1,5 +0,0 @@ -Simplify the :mod:`importlib` external bootstrap code: -``importlib._bootstrap_external`` now uses regular imports to import builtin -modules. When it is imported, the builtin :func:`__import__()` function is -already fully working and so can be used to import builtin modules like -:mod:`sys`. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst b/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst deleted file mode 100644 index c157df138a5ea..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-10-44-41.bpo-42406.r9rNCj.rst +++ /dev/null @@ -1,3 +0,0 @@ -We fixed an issue in `pickle.whichmodule` in which importing -`multiprocessing` could change the how pickle identifies which module an -object belongs to, potentially breaking the unpickling of those objects. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst b/Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst deleted file mode 100644 index e0ea23aefae7f..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-16-14-36.bpo-31904.83kf9d.rst +++ /dev/null @@ -1 +0,0 @@ -Support signal module on VxWorks. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-20-27-51.bpo-42413.fjHrHx.rst b/Misc/NEWS.d/next/Library/2020-11-19-20-27-51.bpo-42413.fjHrHx.rst deleted file mode 100644 index ef1bf0fe9d3c0..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-20-27-51.bpo-42413.fjHrHx.rst +++ /dev/null @@ -1 +0,0 @@ -The exception :exc:`socket.timeout` is now an alias of :exc:`TimeoutError`. diff --git a/Misc/NEWS.d/next/Library/2020-11-20-10-38-34.bpo-15450.E-y9PA.rst b/Misc/NEWS.d/next/Library/2020-11-20-10-38-34.bpo-15450.E-y9PA.rst deleted file mode 100644 index dc3740669280b..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-20-10-38-34.bpo-15450.E-y9PA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Make :class:`filecmp.dircmp` respect subclassing. Now the -:attr:`filecmp.dircmp.subdirs` behaves as expected when subclassing dircmp. diff --git a/Misc/NEWS.d/next/Library/2020-11-20-14-01-29.bpo-42392.-OUzvl.rst b/Misc/NEWS.d/next/Library/2020-11-20-14-01-29.bpo-42392.-OUzvl.rst deleted file mode 100644 index 964bef1893e3a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-20-14-01-29.bpo-42392.-OUzvl.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove loop parameter from ``__init__`` in all ``asyncio.locks`` and -``asyncio.Queue`` classes. Patch provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Library/2020-11-20-14-44-07.bpo-41818.33soAw.rst b/Misc/NEWS.d/next/Library/2020-11-20-14-44-07.bpo-41818.33soAw.rst deleted file mode 100644 index 005bf7e2af910..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-20-14-44-07.bpo-41818.33soAw.rst +++ /dev/null @@ -1 +0,0 @@ -Updated tests for the pty library. test_basic() has been changed to test_openpty(); this additionally checks if slave termios and slave winsize are being set properly by pty.openpty(). In order to add support for FreeBSD, NetBSD, OpenBSD, and Darwin, this also adds test_master_read(), which demonstrates that pty.spawn() should not depend on an OSError to exit from its copy loop. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst b/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst deleted file mode 100644 index 33062a3f93bef..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-22-12-30-26.bpo-26131.-HsFPG.rst +++ /dev/null @@ -1 +0,0 @@ -Deprecate zipimport.zipimporter.load_module() in favour of exec_module(). diff --git a/Misc/NEWS.d/next/Library/2020-11-23-23-42-08.bpo-42299.Fdn4Wf.rst b/Misc/NEWS.d/next/Library/2020-11-23-23-42-08.bpo-42299.Fdn4Wf.rst deleted file mode 100644 index a8e156c100379..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-23-23-42-08.bpo-42299.Fdn4Wf.rst +++ /dev/null @@ -1,5 +0,0 @@ -Removed the ``formatter`` module, which was deprecated in Python 3.4. -It is somewhat obsolete, little used, and not tested. It was originally -scheduled to be removed in Python 3.6, but such removals were delayed until -after Python 2.7 EOL. Existing users should copy whatever classes they use -into their code. Patch by Dong-hee Na and and Terry J. Reedy. diff --git a/Misc/NEWS.d/next/Library/2020-11-24-13-18-05.bpo-28468.8Gh2d4.rst b/Misc/NEWS.d/next/Library/2020-11-24-13-18-05.bpo-28468.8Gh2d4.rst deleted file mode 100644 index b1834065cf047..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-24-13-18-05.bpo-28468.8Gh2d4.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add :func:`platform.freedesktop_os_release` function to parse freedesktop.org -``os-release`` files. diff --git a/Misc/NEWS.d/next/Library/2020-11-25-22-44-59.bpo-42392.T_DAEl.rst b/Misc/NEWS.d/next/Library/2020-11-25-22-44-59.bpo-42392.T_DAEl.rst deleted file mode 100644 index 35a08dd91e69f..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-25-22-44-59.bpo-42392.T_DAEl.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove loop parameter from ``asyncio.open_connection`` and -``asyncio.start_server`` functions. Patch provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Library/2020-11-26-12-40-16.bpo-42392.GbmdHE.rst b/Misc/NEWS.d/next/Library/2020-11-26-12-40-16.bpo-42392.GbmdHE.rst deleted file mode 100644 index 660e6dddc7e8a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-26-12-40-16.bpo-42392.GbmdHE.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove loop parameter from ``asyncio.subprocess`` and ``asyncio.tasks`` -functions. Patch provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Library/2020-11-27-09-19-43.bpo-41818.KWYUbL.rst b/Misc/NEWS.d/next/Library/2020-11-27-09-19-43.bpo-41818.KWYUbL.rst deleted file mode 100644 index 56cdc9a7dab54..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-27-09-19-43.bpo-41818.KWYUbL.rst +++ /dev/null @@ -1 +0,0 @@ -Make test_openpty() avoid unexpected success due to number of rows and/or number of columns being == 0. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst b/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst deleted file mode 100644 index 79afa654f352e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-27-16-46-58.bpo-42482.EJC3sd.rst +++ /dev/null @@ -1 +0,0 @@ -:class:`~traceback.TracebackException` no longer holds a reference to the exception's traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst b/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst deleted file mode 100644 index 8c67d747b614e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-28-04-31-20.bpo-42487.iqtC4L.rst +++ /dev/null @@ -1 +0,0 @@ -ChainMap.__iter__ no longer calls __getitem__ on underlying maps diff --git a/Misc/NEWS.d/next/Library/2020-11-28-06-34-53.bpo-41818.mFSMc2.rst b/Misc/NEWS.d/next/Library/2020-11-28-06-34-53.bpo-41818.mFSMc2.rst deleted file mode 100644 index b783f8cec1c94..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-28-06-34-53.bpo-41818.mFSMc2.rst +++ /dev/null @@ -1 +0,0 @@ -Fix test_master_read() so that it succeeds on all platforms that either raise OSError or return b"" upon reading from master. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-11-28-22-52-57.bpo-38200.DuWGlW.rst b/Misc/NEWS.d/next/Library/2020-11-28-22-52-57.bpo-38200.DuWGlW.rst deleted file mode 100644 index b4bc5551b2532..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-28-22-52-57.bpo-38200.DuWGlW.rst +++ /dev/null @@ -1 +0,0 @@ -Added itertools.pairwise() diff --git a/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst b/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst deleted file mode 100644 index 7465cb8e2e3d7..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst +++ /dev/null @@ -1 +0,0 @@ -Remove unexpected call of ``__bool__`` when passing a ``spec_arg`` argument to a Mock. diff --git a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst b/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst deleted file mode 100644 index febda89338ddc..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-15-42-32.bpo-42116.yIwroP.rst +++ /dev/null @@ -1 +0,0 @@ -Fix handling of trailing comments by :func:`inspect.getsource`. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst deleted file mode 100644 index 655781e3d2edd..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-22-22-24.bpo-17735.Qsaaue.rst +++ /dev/null @@ -1,4 +0,0 @@ -:func:`inspect.findsource` now raises :exc:`OSError` instead of -:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than the -file length. This can happen, for example, when a file is edited after it was -imported. PR by Irit Katriel. diff --git a/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst b/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst deleted file mode 100644 index 4999da509c291..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-03-22-42-03.bpo-42562.2hPmhi.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix issue when dis failed to parse function that has no line numbers. Patch -provided by Yurii Karabas. diff --git a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst b/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst deleted file mode 100644 index ad8163c7c1d20..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-04-03-51-12.bpo-5054.53StYZ.rst +++ /dev/null @@ -1,5 +0,0 @@ -CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the -special purpose getallmatchingheaders with generic get_all method and add -relevant tests. - -Original Patch by Martin Panter. Modified by Senthil Kumaran. diff --git a/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst b/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst deleted file mode 100644 index 69b9de1beae0d..0000000000000 --- a/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst +++ /dev/null @@ -1 +0,0 @@ -Add ``volatile`` to the accumulator variable in ``hmac.compare_digest``, making constant-time-defeating optimizations less likely. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst b/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst deleted file mode 100644 index 40caa88d689a2..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-05-20-14-28-48.bpo-31904.yJik6k.rst +++ /dev/null @@ -1 +0,0 @@ -Fix fifo test cases for VxWorks RTOS. diff --git a/Misc/NEWS.d/next/Tests/2020-05-20-17-28-46.bpo-31904.yt83Ge.rst b/Misc/NEWS.d/next/Tests/2020-05-20-17-28-46.bpo-31904.yt83Ge.rst deleted file mode 100644 index 1679801a11106..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-05-20-17-28-46.bpo-31904.yt83Ge.rst +++ /dev/null @@ -1 +0,0 @@ -Fix os module failures for VxWorks RTOS. diff --git a/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst b/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst deleted file mode 100644 index 10bce825961c3..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-09-18-16-14-03.bpo-41561.uPnwrW.rst +++ /dev/null @@ -1 +0,0 @@ -test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available diff --git a/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst b/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst deleted file mode 100644 index 4bd423b54a449..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-13-21-51-34.bpo-40754.Ekoxkg.rst +++ /dev/null @@ -1 +0,0 @@ -Include ``_testinternalcapi`` module in Windows installer for test suite diff --git a/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst b/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst deleted file mode 100644 index e5e66ceea4402..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-20-15-07-18.bpo-31904.EBJXjJ.rst +++ /dev/null @@ -1 +0,0 @@ -Fix test_doctest.py failures for VxWorks. diff --git a/Misc/NEWS.d/next/Tests/2020-11-23-11-11-29.bpo-31904.V3sUZk.rst b/Misc/NEWS.d/next/Tests/2020-11-23-11-11-29.bpo-31904.V3sUZk.rst deleted file mode 100644 index 7202cfa3f3f4c..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-23-11-11-29.bpo-31904.V3sUZk.rst +++ /dev/null @@ -1 +0,0 @@ -skip some tests related to fifo on VxWorks diff --git a/Misc/NEWS.d/next/Tests/2020-11-24-17-26-41.bpo-31904.eug834.rst b/Misc/NEWS.d/next/Tests/2020-11-24-17-26-41.bpo-31904.eug834.rst deleted file mode 100644 index 3e3942857b8f1..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-24-17-26-41.bpo-31904.eug834.rst +++ /dev/null @@ -1 +0,0 @@ -add shell requirement for test_pipes diff --git a/Misc/NEWS.d/next/Tests/2020-11-25-17-00-53.bpo-31904.ue4hd9.rst b/Misc/NEWS.d/next/Tests/2020-11-25-17-00-53.bpo-31904.ue4hd9.rst deleted file mode 100644 index 910505440b8d6..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-25-17-00-53.bpo-31904.ue4hd9.rst +++ /dev/null @@ -1 +0,0 @@ -skip test_test of test_mailcap on VxWorks diff --git a/Misc/NEWS.d/next/Tests/2020-11-26-11-13-13.bpo-31904.ay4g89.rst b/Misc/NEWS.d/next/Tests/2020-11-26-11-13-13.bpo-31904.ay4g89.rst deleted file mode 100644 index 6d95d527e6eee..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-11-26-11-13-13.bpo-31904.ay4g89.rst +++ /dev/null @@ -1 +0,0 @@ -skip test_getaddrinfo_ipv6_scopeid_symbolic and test_getnameinfo_ipv6_scopeid_symbolic on VxWorks diff --git a/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst b/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst deleted file mode 100644 index 49e9892e9ed7c..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-01-15-51-19.bpo-31904.iwetj4.rst +++ /dev/null @@ -1 +0,0 @@ -Fix test_netrc on VxWorks: create temporary directories using temp_cwd(). diff --git a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst b/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst deleted file mode 100644 index 872214284728b..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-03-13-32-44.bpo-42553.2TRE2N.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix ``test_asyncio.test_call_later()`` race condition: don't measure asyncio -performance in the ``call_later()`` unit test. The test failed randomly on -the CI. diff --git a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst b/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst deleted file mode 100644 index 9e0a375a9b7f2..0000000000000 --- a/Misc/NEWS.d/next/Tests/2020-12-04-11-47-09.bpo-41473.W_updK.rst +++ /dev/null @@ -1,3 +0,0 @@ -Reenable test_gdb on gdb 9.2 and newer: -https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb -10.1. diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-05-03-01-30-46.bpo-36310.xDxxwY.rst b/Misc/NEWS.d/next/Tools-Demos/2020-05-03-01-30-46.bpo-36310.xDxxwY.rst deleted file mode 100644 index 16749a8fc9665..0000000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2020-05-03-01-30-46.bpo-36310.xDxxwY.rst +++ /dev/null @@ -1,2 +0,0 @@ -Allow :file:`Tools/i18n/pygettext.py` to detect calls to ``gettext`` in -f-strings. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-11-20-15-11-05.bpo-42212.sjzgOf.rst b/Misc/NEWS.d/next/Tools-Demos/2020-11-20-15-11-05.bpo-42212.sjzgOf.rst deleted file mode 100644 index d2cbe3de6fe92..0000000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2020-11-20-15-11-05.bpo-42212.sjzgOf.rst +++ /dev/null @@ -1,3 +0,0 @@ -The smelly.py script now also checks the Python dynamic library and extension -modules, not only the Python static library. Make also the script more verbose: -explain what it does. diff --git a/Misc/NEWS.d/next/Windows/2020-11-15-23-01-14.bpo-38506.hhdnuP.rst b/Misc/NEWS.d/next/Windows/2020-11-15-23-01-14.bpo-38506.hhdnuP.rst deleted file mode 100644 index 8ad75ef5ea093..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-11-15-23-01-14.bpo-38506.hhdnuP.rst +++ /dev/null @@ -1,2 +0,0 @@ -The Windows launcher now properly handles Python 3.10 when listing installed -Python versions. diff --git a/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst b/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst deleted file mode 100644 index c574956d11d93..0000000000000 --- a/Misc/NEWS.d/next/Windows/2020-11-16-22-41-02.bpo-42120.9scgko.rst +++ /dev/null @@ -1 +0,0 @@ -Remove macro definition of ``copysign`` (to ``_copysign``) in headers. diff --git a/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst b/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst deleted file mode 100644 index 008c972e5c6ab..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-10-23-10-26-53.bpo-38443.vu64tl.rst +++ /dev/null @@ -1,2 +0,0 @@ -The ``--enable-universalsdk`` and ``--with-universal-archs`` options for the -configure script now check that the specified architectures can be used. diff --git a/Misc/NEWS.d/next/macOS/2020-11-01-15-10-28.bpo-42232.2zI1GN.rst b/Misc/NEWS.d/next/macOS/2020-11-01-15-10-28.bpo-42232.2zI1GN.rst deleted file mode 100644 index d431a9d1e3228..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-11-01-15-10-28.bpo-42232.2zI1GN.rst +++ /dev/null @@ -1 +0,0 @@ -Added Darwin specific madvise options to mmap module. \ No newline at end of file diff --git a/Misc/NEWS.d/next/macOS/2020-11-01-16-40-23.bpo-41100.BApztP.rst b/Misc/NEWS.d/next/macOS/2020-11-01-16-40-23.bpo-41100.BApztP.rst deleted file mode 100644 index 6cbb279e7625e..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-11-01-16-40-23.bpo-41100.BApztP.rst +++ /dev/null @@ -1,8 +0,0 @@ -Add support for macOS 11 and Apple Silicon systems. - -It is now possible to build "Universal 2" binaries using -"--enable-universalsdk --with-universal-archs=universal2". - -Binaries build on later macOS versions can be deployed back to older -versions (tested up to macOS 10.9), when using the correct deployment -target. This is tested using Xcode 11 and later. diff --git a/Misc/NEWS.d/next/macOS/2020-11-15-16-43-45.bpo-41116.oCkbrF.rst b/Misc/NEWS.d/next/macOS/2020-11-15-16-43-45.bpo-41116.oCkbrF.rst deleted file mode 100644 index c982224e92d71..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-11-15-16-43-45.bpo-41116.oCkbrF.rst +++ /dev/null @@ -1 +0,0 @@ -Ensure distutils.unixxcompiler.find_library_file can find system provided libraries on macOS 11. \ No newline at end of file diff --git a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst b/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst deleted file mode 100644 index c83bc2b9eeec5..0000000000000 --- a/Misc/NEWS.d/next/macOS/2020-12-02-15-48-40.bpo-42504.RQmMOR.rst +++ /dev/null @@ -1 +0,0 @@ -Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11 \ No newline at end of file diff --git a/README.rst b/README.rst index b27854d917863..51d60d5da6209 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.10.0 alpha 2 +This is Python version 3.10.0 alpha 3 ===================================== .. image:: https://travis-ci.com/python/cpython.svg?branch=master From webhook-mailer at python.org Tue Dec 8 08:38:43 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 13:38:43 -0000 Subject: [Python-checkins] bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) Message-ID: https://github.com/python/cpython/commit/b6d98c10fff6f320f8fdf595c3f9a05d8be4e31d commit: b6d98c10fff6f320f8fdf595c3f9a05d8be4e31d branch: master author: Victor Stinner committer: vstinner date: 2020-12-08T14:38:08+01:00 summary: bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) Fix encoding name when running a ".pyc" file on Windows: PyRun_SimpleFileExFlags() now uses the correct encoding to decode the filename. * Add pyrun_file() subfunction. * Add pyrun_simple_file() subfunction. * PyRun_SimpleFileExFlags() now calls _Py_fopen_obj() rather than _Py_fopen(). files: A Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst M Python/pythonrun.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst new file mode 100644 index 0000000000000..f4d84f9d848d4 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst @@ -0,0 +1,3 @@ +Fix encoding name when running a ``.pyc`` file on Windows: +:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to decode +the filename. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 6181a38defcc0..330b822d707c6 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -59,9 +59,13 @@ extern "C" { static void flush_io(void); static PyObject *run_mod(mod_ty, PyObject *, PyObject *, PyObject *, PyCompilerFlags *, PyArena *); -static PyObject *run_pyc_file(FILE *, const char *, PyObject *, PyObject *, +static PyObject *run_pyc_file(FILE *, PyObject *, PyObject *, PyCompilerFlags *); static int PyRun_InteractiveOneObjectEx(FILE *, PyObject *, PyCompilerFlags *); +static PyObject* pyrun_file(FILE *fp, PyObject *filename, int start, + PyObject *globals, PyObject *locals, int closeit, + PyCompilerFlags *flags); + /* Parse input from a file and execute it */ int @@ -269,82 +273,89 @@ PyRun_InteractiveOneFlags(FILE *fp, const char *filename_str, PyCompilerFlags *f the file type, and, if we may close it, at the first few bytes. */ static int -maybe_pyc_file(FILE *fp, const char* filename, const char* ext, int closeit) +maybe_pyc_file(FILE *fp, PyObject *filename, int closeit) { - if (strcmp(ext, ".pyc") == 0) + PyObject *ext = PyUnicode_FromString(".pyc"); + if (ext == NULL) { + return -1; + } + Py_ssize_t endswith = PyUnicode_Tailmatch(filename, ext, 0, PY_SSIZE_T_MAX, +1); + Py_DECREF(ext); + if (endswith) { return 1; + } /* Only look into the file if we are allowed to close it, since it then should also be seekable. */ - if (closeit) { - /* Read only two bytes of the magic. If the file was opened in - text mode, the bytes 3 and 4 of the magic (\r\n) might not - be read as they are on disk. */ - unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; - unsigned char buf[2]; - /* Mess: In case of -x, the stream is NOT at its start now, - and ungetc() was used to push back the first newline, - which makes the current stream position formally undefined, - and a x-platform nightmare. - Unfortunately, we have no direct way to know whether -x - was specified. So we use a terrible hack: if the current - stream position is not 0, we assume -x was specified, and - give up. Bug 132850 on SourceForge spells out the - hopelessness of trying anything else (fseek and ftell - don't work predictably x-platform for text-mode files). - */ - int ispyc = 0; - if (ftell(fp) == 0) { - if (fread(buf, 1, 2, fp) == 2 && - ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) - ispyc = 1; - rewind(fp); - } - return ispyc; + if (!closeit) { + return 0; } - return 0; + + /* Read only two bytes of the magic. If the file was opened in + text mode, the bytes 3 and 4 of the magic (\r\n) might not + be read as they are on disk. */ + unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; + unsigned char buf[2]; + /* Mess: In case of -x, the stream is NOT at its start now, + and ungetc() was used to push back the first newline, + which makes the current stream position formally undefined, + and a x-platform nightmare. + Unfortunately, we have no direct way to know whether -x + was specified. So we use a terrible hack: if the current + stream position is not 0, we assume -x was specified, and + give up. Bug 132850 on SourceForge spells out the + hopelessness of trying anything else (fseek and ftell + don't work predictably x-platform for text-mode files). + */ + int ispyc = 0; + if (ftell(fp) == 0) { + if (fread(buf, 1, 2, fp) == 2 && + ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) + ispyc = 1; + rewind(fp); + } + return ispyc; } + static int -set_main_loader(PyObject *d, const char *filename, const char *loader_name) +set_main_loader(PyObject *d, PyObject *filename, const char *loader_name) { - PyObject *filename_obj, *bootstrap, *loader_type = NULL, *loader; - int result = 0; - - filename_obj = PyUnicode_DecodeFSDefault(filename); - if (filename_obj == NULL) - return -1; PyInterpreterState *interp = _PyInterpreterState_GET(); - bootstrap = PyObject_GetAttrString(interp->importlib, - "_bootstrap_external"); - if (bootstrap != NULL) { - loader_type = PyObject_GetAttrString(bootstrap, loader_name); - Py_DECREF(bootstrap); + PyObject *bootstrap = PyObject_GetAttrString(interp->importlib, + "_bootstrap_external"); + if (bootstrap == NULL) { + return -1; } + + PyObject *loader_type = PyObject_GetAttrString(bootstrap, loader_name); + Py_DECREF(bootstrap); if (loader_type == NULL) { - Py_DECREF(filename_obj); return -1; } - loader = PyObject_CallFunction(loader_type, "sN", "__main__", filename_obj); + + PyObject *loader = PyObject_CallFunction(loader_type, + "sO", "__main__", filename); Py_DECREF(loader_type); if (loader == NULL) { return -1; } + if (PyDict_SetItemString(d, "__loader__", loader) < 0) { - result = -1; + Py_DECREF(loader); + return -1; } Py_DECREF(loader); - return result; + return 0; } -int -PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, - PyCompilerFlags *flags) + +static int +pyrun_simple_file(FILE *fp, PyObject *filename, int closeit, + PyCompilerFlags *flags) { PyObject *m, *d, *v; - const char *ext; int set_file_name = 0, ret = -1; - size_t len; m = PyImport_AddModule("__main__"); if (m == NULL) @@ -355,29 +366,29 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, if (PyErr_Occurred()) { goto done; } - PyObject *f; - f = PyUnicode_DecodeFSDefault(filename); - if (f == NULL) - goto done; - if (PyDict_SetItemString(d, "__file__", f) < 0) { - Py_DECREF(f); + if (PyDict_SetItemString(d, "__file__", filename) < 0) { goto done; } if (PyDict_SetItemString(d, "__cached__", Py_None) < 0) { - Py_DECREF(f); goto done; } set_file_name = 1; - Py_DECREF(f); } - len = strlen(filename); - ext = filename + len - (len > 4 ? 4 : 0); - if (maybe_pyc_file(fp, filename, ext, closeit)) { + + int pyc = maybe_pyc_file(fp, filename, closeit); + if (pyc < 0) { + goto done; + } + + if (pyc) { FILE *pyc_fp; /* Try to run a pyc file. First, re-open in binary */ - if (closeit) + if (closeit) { fclose(fp); - if ((pyc_fp = _Py_fopen(filename, "rb")) == NULL) { + } + + pyc_fp = _Py_fopen_obj(filename, "rb"); + if (pyc_fp == NULL) { fprintf(stderr, "python: Can't reopen .pyc file\n"); goto done; } @@ -388,17 +399,17 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, fclose(pyc_fp); goto done; } - v = run_pyc_file(pyc_fp, filename, d, d, flags); + v = run_pyc_file(pyc_fp, d, d, flags); } else { /* When running from stdin, leave __main__.__loader__ alone */ - if (strcmp(filename, "") != 0 && + if (PyUnicode_CompareWithASCIIString(filename, "") != 0 && set_main_loader(d, filename, "SourceFileLoader") < 0) { fprintf(stderr, "python: failed to set __main__.__loader__\n"); ret = -1; goto done; } - v = PyRun_FileExFlags(fp, filename, Py_file_input, d, d, - closeit, flags); + v = pyrun_file(fp, filename, Py_file_input, d, d, + closeit, flags); } flush_io(); if (v == NULL) { @@ -421,6 +432,21 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, return ret; } + +int +PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, + PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return -1; + } + int res = pyrun_simple_file(fp, filename_obj, closeit, flags); + Py_DECREF(filename_obj); + return res; +} + + int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags) { @@ -1039,40 +1065,54 @@ PyRun_StringFlags(const char *str, int start, PyObject *globals, return ret; } -PyObject * -PyRun_FileExFlags(FILE *fp, const char *filename_str, int start, PyObject *globals, - PyObject *locals, int closeit, PyCompilerFlags *flags) -{ - PyObject *ret = NULL; - mod_ty mod; - PyArena *arena = NULL; - PyObject *filename; - - filename = PyUnicode_DecodeFSDefault(filename_str); - if (filename == NULL) - goto exit; - arena = PyArena_New(); - if (arena == NULL) - goto exit; +static PyObject * +pyrun_file(FILE *fp, PyObject *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) +{ + PyArena *arena = PyArena_New(); + if (arena == NULL) { + return NULL; + } + mod_ty mod; mod = PyParser_ASTFromFileObject(fp, filename, NULL, start, NULL, NULL, flags, NULL, arena); - if (closeit) + if (closeit) { fclose(fp); - if (mod == NULL) { - goto exit; } - ret = run_mod(mod, filename, globals, locals, flags, arena); -exit: - Py_XDECREF(filename); - if (arena != NULL) - PyArena_Free(arena); + PyObject *ret; + if (mod != NULL) { + ret = run_mod(mod, filename, globals, locals, flags, arena); + } + else { + ret = NULL; + } + PyArena_Free(arena); + return ret; } + +PyObject * +PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return NULL; + } + + PyObject *res = pyrun_file(fp, filename_obj, start, globals, + locals, closeit, flags); + Py_DECREF(filename_obj); + return res; + +} + + static void flush_io(void) { @@ -1155,8 +1195,8 @@ run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals, } static PyObject * -run_pyc_file(FILE *fp, const char *filename, PyObject *globals, - PyObject *locals, PyCompilerFlags *flags) +run_pyc_file(FILE *fp, PyObject *globals, PyObject *locals, + PyCompilerFlags *flags) { PyThreadState *tstate = _PyThreadState_GET(); PyCodeObject *co; From webhook-mailer at python.org Tue Dec 8 09:42:46 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 14:42:46 -0000 Subject: [Python-checkins] bpo-42599: Remove useless PyModule_GetWarningsModule() (GH-23691) Message-ID: https://github.com/python/cpython/commit/0f91f586ae9b76c3bb44559bd8cd473b1b8de5ff commit: 0f91f586ae9b76c3bb44559bd8cd473b1b8de5ff branch: master author: Hai Shi committer: vstinner date: 2020-12-08T15:42:42+01:00 summary: bpo-42599: Remove useless PyModule_GetWarningsModule() (GH-23691) Removed PyModule_GetWarningsModule() which is useless due to the _warnings module was converted to a builtin module in 2.6. files: M Doc/whatsnew/3.10.rst M Python/errors.c M Python/pylifecycle.c diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index a5cb4e30616cd..23e28aa4fd8fc 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -480,6 +480,11 @@ Removed into their code. (Contributed by Dong-hee Na and Terry J. Reedy in :issue:`42299`.) +* Removed the :c:func:`PyModule_GetWarningsModule` function that was useless + now due to the _warnings module was converted to a builtin module in 2.6. + (Contributed by Hai Shi in :issue:`42599`.) + + Porting to Python 3.10 ====================== diff --git a/Python/errors.c b/Python/errors.c index 8242ac69785d4..213108f681bb7 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -1534,9 +1534,6 @@ PyErr_WriteUnraisable(PyObject *obj) } -extern PyObject *PyModule_GetWarningsModule(void); - - void PyErr_SyntaxLocation(const char *filename, int lineno) { diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 428c887ef41c5..70824ff674129 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -97,14 +97,6 @@ _Py_IsFinalizing(void) int (*_PyOS_mystrnicmp_hack)(const char *, const char *, Py_ssize_t) = \ PyOS_mystrnicmp; /* Python/pystrcmp.o */ -/* PyModule_GetWarningsModule is no longer necessary as of 2.6 -since _warnings is builtin. This API should not be used. */ -PyObject * -PyModule_GetWarningsModule(void) -{ - return PyImport_ImportModule("warnings"); -} - /* APIs to access the initialization flags * From webhook-mailer at python.org Tue Dec 8 10:16:13 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 15:16:13 -0000 Subject: [Python-checkins] bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) (GH-23692) Message-ID: https://github.com/python/cpython/commit/f0e42ae03c41ec32fcb3064772f46ff7f2c5ff3b commit: f0e42ae03c41ec32fcb3064772f46ff7f2c5ff3b branch: 3.9 author: Victor Stinner committer: vstinner date: 2020-12-08T16:16:05+01:00 summary: bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) (GH-23692) Fix encoding name when running a ".pyc" file on Windows: PyRun_SimpleFileExFlags() now uses the correct encoding to decode the filename. * Add pyrun_file() subfunction. * Add pyrun_simple_file() subfunction. * PyRun_SimpleFileExFlags() now calls _Py_fopen_obj() rather than _Py_fopen(). (cherry picked from commit b6d98c10fff6f320f8fdf595c3f9a05d8be4e31d) files: A Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst M Python/pythonrun.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst new file mode 100644 index 0000000000000..f4d84f9d848d4 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst @@ -0,0 +1,3 @@ +Fix encoding name when running a ``.pyc`` file on Windows: +:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to decode +the filename. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 70748dc584f0b..04540989f3043 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -64,11 +64,15 @@ extern Py_EXPORTED_SYMBOL grammar _PyParser_Grammar; /* From graminit.c */ static void flush_io(void); static PyObject *run_mod(mod_ty, PyObject *, PyObject *, PyObject *, PyCompilerFlags *, PyArena *); -static PyObject *run_pyc_file(FILE *, const char *, PyObject *, PyObject *, +static PyObject *run_pyc_file(FILE *, PyObject *, PyObject *, PyCompilerFlags *); static void err_input(perrdetail *); static void err_free(perrdetail *); static int PyRun_InteractiveOneObjectEx(FILE *, PyObject *, PyCompilerFlags *); +static PyObject* pyrun_file(FILE *fp, PyObject *filename, int start, + PyObject *globals, PyObject *locals, int closeit, + PyCompilerFlags *flags); + /* Parse input from a file and execute it */ int @@ -310,82 +314,89 @@ PyRun_InteractiveOneFlags(FILE *fp, const char *filename_str, PyCompilerFlags *f the file type, and, if we may close it, at the first few bytes. */ static int -maybe_pyc_file(FILE *fp, const char* filename, const char* ext, int closeit) +maybe_pyc_file(FILE *fp, PyObject *filename, int closeit) { - if (strcmp(ext, ".pyc") == 0) + PyObject *ext = PyUnicode_FromString(".pyc"); + if (ext == NULL) { + return -1; + } + Py_ssize_t endswith = PyUnicode_Tailmatch(filename, ext, 0, PY_SSIZE_T_MAX, +1); + Py_DECREF(ext); + if (endswith) { return 1; + } /* Only look into the file if we are allowed to close it, since it then should also be seekable. */ - if (closeit) { - /* Read only two bytes of the magic. If the file was opened in - text mode, the bytes 3 and 4 of the magic (\r\n) might not - be read as they are on disk. */ - unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; - unsigned char buf[2]; - /* Mess: In case of -x, the stream is NOT at its start now, - and ungetc() was used to push back the first newline, - which makes the current stream position formally undefined, - and a x-platform nightmare. - Unfortunately, we have no direct way to know whether -x - was specified. So we use a terrible hack: if the current - stream position is not 0, we assume -x was specified, and - give up. Bug 132850 on SourceForge spells out the - hopelessness of trying anything else (fseek and ftell - don't work predictably x-platform for text-mode files). - */ - int ispyc = 0; - if (ftell(fp) == 0) { - if (fread(buf, 1, 2, fp) == 2 && - ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) - ispyc = 1; - rewind(fp); - } - return ispyc; + if (!closeit) { + return 0; } - return 0; + + /* Read only two bytes of the magic. If the file was opened in + text mode, the bytes 3 and 4 of the magic (\r\n) might not + be read as they are on disk. */ + unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; + unsigned char buf[2]; + /* Mess: In case of -x, the stream is NOT at its start now, + and ungetc() was used to push back the first newline, + which makes the current stream position formally undefined, + and a x-platform nightmare. + Unfortunately, we have no direct way to know whether -x + was specified. So we use a terrible hack: if the current + stream position is not 0, we assume -x was specified, and + give up. Bug 132850 on SourceForge spells out the + hopelessness of trying anything else (fseek and ftell + don't work predictably x-platform for text-mode files). + */ + int ispyc = 0; + if (ftell(fp) == 0) { + if (fread(buf, 1, 2, fp) == 2 && + ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) + ispyc = 1; + rewind(fp); + } + return ispyc; } + static int -set_main_loader(PyObject *d, const char *filename, const char *loader_name) +set_main_loader(PyObject *d, PyObject *filename, const char *loader_name) { - PyObject *filename_obj, *bootstrap, *loader_type = NULL, *loader; - int result = 0; - - filename_obj = PyUnicode_DecodeFSDefault(filename); - if (filename_obj == NULL) - return -1; PyInterpreterState *interp = _PyInterpreterState_GET(); - bootstrap = PyObject_GetAttrString(interp->importlib, - "_bootstrap_external"); - if (bootstrap != NULL) { - loader_type = PyObject_GetAttrString(bootstrap, loader_name); - Py_DECREF(bootstrap); + PyObject *bootstrap = PyObject_GetAttrString(interp->importlib, + "_bootstrap_external"); + if (bootstrap == NULL) { + return -1; } + + PyObject *loader_type = PyObject_GetAttrString(bootstrap, loader_name); + Py_DECREF(bootstrap); if (loader_type == NULL) { - Py_DECREF(filename_obj); return -1; } - loader = PyObject_CallFunction(loader_type, "sN", "__main__", filename_obj); + + PyObject *loader = PyObject_CallFunction(loader_type, + "sO", "__main__", filename); Py_DECREF(loader_type); if (loader == NULL) { return -1; } + if (PyDict_SetItemString(d, "__loader__", loader) < 0) { - result = -1; + Py_DECREF(loader); + return -1; } Py_DECREF(loader); - return result; + return 0; } -int -PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, - PyCompilerFlags *flags) + +static int +pyrun_simple_file(FILE *fp, PyObject *filename, int closeit, + PyCompilerFlags *flags) { PyObject *m, *d, *v; - const char *ext; int set_file_name = 0, ret = -1; - size_t len; m = PyImport_AddModule("__main__"); if (m == NULL) @@ -393,29 +404,29 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, Py_INCREF(m); d = PyModule_GetDict(m); if (PyDict_GetItemString(d, "__file__") == NULL) { - PyObject *f; - f = PyUnicode_DecodeFSDefault(filename); - if (f == NULL) - goto done; - if (PyDict_SetItemString(d, "__file__", f) < 0) { - Py_DECREF(f); + if (PyDict_SetItemString(d, "__file__", filename) < 0) { goto done; } if (PyDict_SetItemString(d, "__cached__", Py_None) < 0) { - Py_DECREF(f); goto done; } set_file_name = 1; - Py_DECREF(f); } - len = strlen(filename); - ext = filename + len - (len > 4 ? 4 : 0); - if (maybe_pyc_file(fp, filename, ext, closeit)) { + + int pyc = maybe_pyc_file(fp, filename, closeit); + if (pyc < 0) { + goto done; + } + + if (pyc) { FILE *pyc_fp; /* Try to run a pyc file. First, re-open in binary */ - if (closeit) + if (closeit) { fclose(fp); - if ((pyc_fp = _Py_fopen(filename, "rb")) == NULL) { + } + + pyc_fp = _Py_fopen_obj(filename, "rb"); + if (pyc_fp == NULL) { fprintf(stderr, "python: Can't reopen .pyc file\n"); goto done; } @@ -426,17 +437,17 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, fclose(pyc_fp); goto done; } - v = run_pyc_file(pyc_fp, filename, d, d, flags); + v = run_pyc_file(pyc_fp, d, d, flags); } else { /* When running from stdin, leave __main__.__loader__ alone */ - if (strcmp(filename, "") != 0 && + if (PyUnicode_CompareWithASCIIString(filename, "") != 0 && set_main_loader(d, filename, "SourceFileLoader") < 0) { fprintf(stderr, "python: failed to set __main__.__loader__\n"); ret = -1; goto done; } - v = PyRun_FileExFlags(fp, filename, Py_file_input, d, d, - closeit, flags); + v = pyrun_file(fp, filename, Py_file_input, d, d, + closeit, flags); } flush_io(); if (v == NULL) { @@ -459,6 +470,21 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, return ret; } + +int +PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, + PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return -1; + } + int res = pyrun_simple_file(fp, filename_obj, closeit, flags); + Py_DECREF(filename_obj); + return res; +} + + int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags) { @@ -1081,24 +1107,18 @@ PyRun_StringFlags(const char *str, int start, PyObject *globals, return ret; } -PyObject * -PyRun_FileExFlags(FILE *fp, const char *filename_str, int start, PyObject *globals, - PyObject *locals, int closeit, PyCompilerFlags *flags) + +static PyObject * +pyrun_file(FILE *fp, PyObject *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) { - PyObject *ret = NULL; + PyArena *arena = PyArena_New(); + if (arena == NULL) { + return NULL; + } + mod_ty mod; - PyArena *arena = NULL; - PyObject *filename; int use_peg = _PyInterpreterState_GET()->config._use_peg_parser; - - filename = PyUnicode_DecodeFSDefault(filename_str); - if (filename == NULL) - goto exit; - - arena = PyArena_New(); - if (arena == NULL) - goto exit; - if (use_peg) { mod = PyPegen_ASTFromFileObject(fp, filename, start, NULL, NULL, NULL, flags, NULL, arena); @@ -1108,20 +1128,40 @@ PyRun_FileExFlags(FILE *fp, const char *filename_str, int start, PyObject *globa flags, NULL, arena); } - if (closeit) + if (closeit) { fclose(fp); - if (mod == NULL) { - goto exit; } - ret = run_mod(mod, filename, globals, locals, flags, arena); -exit: - Py_XDECREF(filename); - if (arena != NULL) - PyArena_Free(arena); + PyObject *ret; + if (mod != NULL) { + ret = run_mod(mod, filename, globals, locals, flags, arena); + } + else { + ret = NULL; + } + PyArena_Free(arena); + return ret; } + +PyObject * +PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return NULL; + } + + PyObject *res = pyrun_file(fp, filename_obj, start, globals, + locals, closeit, flags); + Py_DECREF(filename_obj); + return res; + +} + + static void flush_io(void) { @@ -1202,8 +1242,8 @@ run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals, } static PyObject * -run_pyc_file(FILE *fp, const char *filename, PyObject *globals, - PyObject *locals, PyCompilerFlags *flags) +run_pyc_file(FILE *fp, PyObject *globals, PyObject *locals, + PyCompilerFlags *flags) { PyThreadState *tstate = _PyThreadState_GET(); PyCodeObject *co; From webhook-mailer at python.org Tue Dec 8 10:30:07 2020 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 08 Dec 2020 15:30:07 -0000 Subject: [Python-checkins] bpo-41910: move news entry (GH-23695) Message-ID: https://github.com/python/cpython/commit/4aa67853cc7d6ed4f9ebb726ceaa2c89f9feabda commit: 4aa67853cc7d6ed4f9ebb726ceaa2c89f9feabda branch: master author: Terry Jan Reedy committer: terryjreedy date: 2020-12-08T10:29:49-05:00 summary: bpo-41910: move news entry (GH-23695) files: M Misc/NEWS.d/3.10.0a2.rst diff --git a/Misc/NEWS.d/3.10.0a2.rst b/Misc/NEWS.d/3.10.0a2.rst index a3c909df866db..b7ed61986adfe 100644 --- a/Misc/NEWS.d/3.10.0a2.rst +++ b/Misc/NEWS.d/3.10.0a2.rst @@ -116,15 +116,6 @@ failure, run the parser a second time with those enabled. .. -.. bpo: 41910 -.. date: 2020-10-21-14-40-54 -.. nonce: CzBMit -.. section: Core and Builtins - -Document the default implementation of `object.__eq__`. - -.. - .. bpo: 42093 .. date: 2020-10-20-04-24-07 .. nonce: ooZZNh @@ -653,6 +644,15 @@ Document __format__ functionality for IP addresses. .. +.. bpo: 41910 +.. date: 2020-10-21-14-40-54 +.. nonce: CzBMit +.. section: Documentation + +Document the default implementation of `object.__eq__`. + +.. + .. bpo: 42010 .. date: 2020-10-21-02-21-14 .. nonce: 76vJ0u From webhook-mailer at python.org Tue Dec 8 11:37:02 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 08 Dec 2020 16:37:02 -0000 Subject: [Python-checkins] bpo-42111: Make the xxlimited module an example of best extension module practices (GH-23226) Message-ID: https://github.com/python/cpython/commit/c168b5078f88874b9acd993ac886f82269c780dd commit: c168b5078f88874b9acd993ac886f82269c780dd branch: master author: Petr Viktorin committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-08T08:36:53-08:00 summary: bpo-42111: Make the xxlimited module an example of best extension module practices (GH-23226) - Copy existing xxlimited to xxlimited53 (named for the limited API version it uses) - Build both modules, both in debug and release - Test both modules files: A Lib/test/test_xxlimited.py A Misc/NEWS.d/next/C API/2020-10-21-18-43-06.bpo-42111.9pvtrc.rst A Modules/xxlimited_35.c A PCbuild/xxlimited_35.vcxproj A PCbuild/xxlimited_35.vcxproj.filters M Modules/xxlimited.c M PC/layout/main.py M PCbuild/pcbuild.proj M PCbuild/readme.txt M PCbuild/xxlimited.vcxproj M setup.py diff --git a/Lib/test/test_xxlimited.py b/Lib/test/test_xxlimited.py new file mode 100644 index 0000000000000..e3f521d9b040d --- /dev/null +++ b/Lib/test/test_xxlimited.py @@ -0,0 +1,79 @@ +import unittest +from test.support import import_helper +import types + +xxlimited = import_helper.import_module('xxlimited') +xxlimited_35 = import_helper.import_module('xxlimited_35') + + +class CommonTests: + module: types.ModuleType + + def test_xxo_new(self): + xxo = self.module.Xxo() + + def test_xxo_attributes(self): + xxo = self.module.Xxo() + with self.assertRaises(AttributeError): + xxo.foo + with self.assertRaises(AttributeError): + del xxo.foo + + xxo.foo = 1234 + self.assertEqual(xxo.foo, 1234) + + del xxo.foo + with self.assertRaises(AttributeError): + xxo.foo + + def test_foo(self): + # the foo function adds 2 numbers + self.assertEqual(self.module.foo(1, 2), 3) + + def test_str(self): + self.assertTrue(issubclass(self.module.Str, str)) + self.assertIsNot(self.module.Str, str) + + custom_string = self.module.Str("abcd") + self.assertEqual(custom_string, "abcd") + self.assertEqual(custom_string.upper(), "ABCD") + + def test_new(self): + xxo = self.module.new() + self.assertEqual(xxo.demo("abc"), "abc") + + +class TestXXLimited(CommonTests, unittest.TestCase): + module = xxlimited + + def test_xxo_demo(self): + xxo = self.module.Xxo() + other = self.module.Xxo() + self.assertEqual(xxo.demo("abc"), "abc") + self.assertEqual(xxo.demo(xxo), xxo) + self.assertEqual(xxo.demo(other), other) + self.assertEqual(xxo.demo(0), None) + + def test_error(self): + with self.assertRaises(self.module.Error): + raise self.module.Error + + +class TestXXLimited35(CommonTests, unittest.TestCase): + module = xxlimited_35 + + def test_xxo_demo(self): + xxo = self.module.Xxo() + other = self.module.Xxo() + self.assertEqual(xxo.demo("abc"), "abc") + self.assertEqual(xxo.demo(0), None) + + def test_roj(self): + # the roj function always fails + with self.assertRaises(SystemError): + self.module.roj(0) + + def test_null(self): + null1 = self.module.Null() + null2 = self.module.Null() + self.assertNotEqual(null1, null2) diff --git a/Misc/NEWS.d/next/C API/2020-10-21-18-43-06.bpo-42111.9pvtrc.rst b/Misc/NEWS.d/next/C API/2020-10-21-18-43-06.bpo-42111.9pvtrc.rst new file mode 100644 index 0000000000000..3fb718cc45d42 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-10-21-18-43-06.bpo-42111.9pvtrc.rst @@ -0,0 +1,2 @@ +Update the ``xxlimited`` module to be a better example of how to use the +limited C API. diff --git a/Modules/xxlimited.c b/Modules/xxlimited.c index 5b05a9454a05d..883c8a9b5e183 100644 --- a/Modules/xxlimited.c +++ b/Modules/xxlimited.c @@ -3,47 +3,103 @@ also declares object types. All occurrences of 'Xxo' should be changed to something reasonable for your objects. After that, all other occurrences of 'xx' should be changed to something reasonable for your - module. If your module is named foo your sourcefile should be named - foomodule.c. + module. If your module is named foo your source file should be named + foo.c or foomodule.c. You will probably want to delete all references to 'x_attr' and add your own types of attributes instead. Maybe you want to name your local variables other than 'self'. If your object type is needed in other files, you'll have to create a file "foobarobject.h"; see - floatobject.h for an example. */ + floatobject.h for an example. -/* Xxo objects */ + This module roughly corresponds to:: + + class Xxo: + """A class that explicitly stores attributes in an internal dict""" + + def __init__(self): + # In the C class, "_x_attr" is not accessible from Python code + self._x_attr = {} + + def __getattr__(self, name): + return self._x_attr[name] + + def __setattr__(self, name, value): + self._x_attr[name] = value + + def __delattr__(self, name): + del self._x_attr[name] + + def demo(o, /): + if isinstance(o, str): + return o + elif isinstance(o, Xxo): + return o + else: + raise Error('argument must be str or Xxo') + + class Error(Exception): + """Exception raised by the xxlimited module""" + + def foo(i: int, j: int, /): + """Return the sum of i and j.""" + # Unlike this pseudocode, the C function will *only* work with + # integers and perform C long int arithmetic + return i + j + + def new(): + return Xxo() + + def Str(str): + # A trivial subclass of a built-in type + pass + */ #include "Python.h" -static PyObject *ErrorObject; +// Module state +typedef struct { + PyObject *Xxo_Type; // Xxo class + PyObject *Error_Type; // Error class +} xx_state; + + +/* Xxo objects */ +// Instance state typedef struct { PyObject_HEAD PyObject *x_attr; /* Attributes dictionary */ } XxoObject; -static PyObject *Xxo_Type; - -#define XxoObject_Check(v) Py_IS_TYPE(v, Xxo_Type) +// XXX: no good way to do this yet +// #define XxoObject_Check(v) Py_IS_TYPE(v, Xxo_Type) static XxoObject * -newXxoObject(PyObject *arg) +newXxoObject(PyObject *module) { + xx_state *state = PyModule_GetState(module); + if (state == NULL) { + return NULL; + } XxoObject *self; - self = PyObject_GC_New(XxoObject, (PyTypeObject*)Xxo_Type); - if (self == NULL) + self = PyObject_GC_New(XxoObject, (PyTypeObject*)state->Xxo_Type); + if (self == NULL) { return NULL; + } self->x_attr = NULL; return self; } -/* Xxo methods */ +/* Xxo finalization */ static int Xxo_traverse(XxoObject *self, visitproc visit, void *arg) { + // Visit the type Py_VISIT(Py_TYPE(self)); + + // Visit the attribute dict Py_VISIT(self->x_attr); return 0; } @@ -54,26 +110,18 @@ Xxo_finalize(XxoObject *self) Py_CLEAR(self->x_attr); } -static PyObject * -Xxo_demo(XxoObject *self, PyObject *args) +static void +Xxo_dealloc(XxoObject *self) { - PyObject *o = NULL; - if (!PyArg_ParseTuple(args, "|O:demo", &o)) - return NULL; - /* Test availability of fast type checks */ - if (o != NULL && PyUnicode_Check(o)) { - Py_INCREF(o); - return o; - } - Py_INCREF(Py_None); - return Py_None; + Xxo_finalize(self); + PyTypeObject *tp = Py_TYPE(self); + freefunc free = PyType_GetSlot(tp, Py_tp_free); + free(self); + Py_DECREF(tp); } -static PyMethodDef Xxo_methods[] = { - {"demo", (PyCFunction)Xxo_demo, METH_VARARGS, - PyDoc_STR("demo() -> None")}, - {NULL, NULL} /* sentinel */ -}; + +/* Xxo attribute handling */ static PyObject * Xxo_getattro(XxoObject *self, PyObject *name) @@ -92,45 +140,109 @@ Xxo_getattro(XxoObject *self, PyObject *name) } static int -Xxo_setattr(XxoObject *self, const char *name, PyObject *v) +Xxo_setattro(XxoObject *self, PyObject *name, PyObject *v) { if (self->x_attr == NULL) { + // prepare the attribute dict self->x_attr = PyDict_New(); - if (self->x_attr == NULL) + if (self->x_attr == NULL) { return -1; + } } if (v == NULL) { - int rv = PyDict_DelItemString(self->x_attr, name); - if (rv < 0 && PyErr_ExceptionMatches(PyExc_KeyError)) + // delete an attribute + int rv = PyDict_DelItem(self->x_attr, name); + if (rv < 0 && PyErr_ExceptionMatches(PyExc_KeyError)) { PyErr_SetString(PyExc_AttributeError, "delete non-existing Xxo attribute"); + return -1; + } return rv; } - else - return PyDict_SetItemString(self->x_attr, name, v); + else { + // set an attribute + return PyDict_SetItem(self->x_attr, name, v); + } +} + +/* Xxo methods */ + +static PyObject * +Xxo_demo(XxoObject *self, PyTypeObject *defining_class, + PyObject **args, Py_ssize_t nargs, PyObject *kwnames) +{ + if (kwnames != NULL && PyObject_Length(kwnames)) { + PyErr_SetString(PyExc_TypeError, "demo() takes no keyword arguments"); + return NULL; + } + if (nargs != 1) { + PyErr_SetString(PyExc_TypeError, "demo() takes exactly 1 argument"); + return NULL; + } + + PyObject *o = args[0]; + + /* Test if the argument is "str" */ + if (PyUnicode_Check(o)) { + Py_INCREF(o); + return o; + } + + /* test if the argument is of the Xxo class */ + if (PyObject_TypeCheck(o, defining_class)) { + Py_INCREF(o); + return o; + } + + Py_INCREF(Py_None); + return Py_None; } +static PyMethodDef Xxo_methods[] = { + {"demo", (PyCFunction)(void(*)(void))Xxo_demo, + METH_METHOD | METH_FASTCALL | METH_KEYWORDS, PyDoc_STR("demo(o) -> o")}, + {NULL, NULL} /* sentinel */ +}; + +/* Xxo type definition */ + +PyDoc_STRVAR(Xxo_doc, + "A class that explicitly stores attributes in an internal dict"); + static PyType_Slot Xxo_Type_slots[] = { - {Py_tp_doc, "The Xxo type"}, + {Py_tp_doc, (char *)Xxo_doc}, {Py_tp_traverse, Xxo_traverse}, {Py_tp_finalize, Xxo_finalize}, + {Py_tp_dealloc, Xxo_dealloc}, {Py_tp_getattro, Xxo_getattro}, - {Py_tp_setattr, Xxo_setattr}, + {Py_tp_setattro, Xxo_setattro}, {Py_tp_methods, Xxo_methods}, - {0, 0}, + {0, 0}, /* sentinel */ }; static PyType_Spec Xxo_Type_spec = { - "xxlimited.Xxo", - sizeof(XxoObject), - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - Xxo_Type_slots + .name = "xxlimited.Xxo", + .basicsize = sizeof(XxoObject), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .slots = Xxo_Type_slots, }; -/* --------------------------------------------------------------------- */ -/* Function of two integers returning integer */ +/* Str type definition*/ + +static PyType_Slot Str_Type_slots[] = { + {0, 0}, /* sentinel */ +}; + +static PyType_Spec Str_Type_spec = { + .name = "xxlimited.Str", + .basicsize = 0, + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .slots = Str_Type_slots, +}; + + +/* Function of two integers returning integer (with C "long int" arithmetic) */ PyDoc_STRVAR(xx_foo_doc, "foo(i,j)\n\ @@ -138,7 +250,7 @@ PyDoc_STRVAR(xx_foo_doc, Return the sum of i and j."); static PyObject * -xx_foo(PyObject *self, PyObject *args) +xx_foo(PyObject *module, PyObject *args) { long i, j; long res; @@ -152,153 +264,110 @@ xx_foo(PyObject *self, PyObject *args) /* Function of no arguments returning new Xxo object */ static PyObject * -xx_new(PyObject *self, PyObject *args) +xx_new(PyObject *module, PyObject *Py_UNUSED(unused)) { XxoObject *rv; - if (!PyArg_ParseTuple(args, ":new")) - return NULL; - rv = newXxoObject(args); + rv = newXxoObject(module); if (rv == NULL) return NULL; return (PyObject *)rv; } -/* Test bad format character */ - -static PyObject * -xx_roj(PyObject *self, PyObject *args) -{ - PyObject *a; - long b; - if (!PyArg_ParseTuple(args, "O#:roj", &a, &b)) - return NULL; - Py_INCREF(Py_None); - return Py_None; -} - - -/* ---------- */ - -static PyType_Slot Str_Type_slots[] = { - {Py_tp_base, NULL}, /* filled out in module init function */ - {0, 0}, -}; - -static PyType_Spec Str_Type_spec = { - "xxlimited.Str", - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - Str_Type_slots -}; - -/* ---------- */ - -static PyObject * -null_richcompare(PyObject *self, PyObject *other, int op) -{ - Py_RETURN_NOTIMPLEMENTED; -} - -static PyType_Slot Null_Type_slots[] = { - {Py_tp_base, NULL}, /* filled out in module init */ - {Py_tp_new, NULL}, - {Py_tp_richcompare, null_richcompare}, - {0, 0} -}; - -static PyType_Spec Null_Type_spec = { - "xxlimited.Null", - 0, /* basicsize */ - 0, /* itemsize */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - Null_Type_slots -}; -/* ---------- */ /* List of functions defined in the module */ static PyMethodDef xx_methods[] = { - {"roj", xx_roj, METH_VARARGS, - PyDoc_STR("roj(a,b) -> None")}, {"foo", xx_foo, METH_VARARGS, xx_foo_doc}, - {"new", xx_new, METH_VARARGS, + {"new", xx_new, METH_NOARGS, PyDoc_STR("new() -> new Xx object")}, {NULL, NULL} /* sentinel */ }; + +/* The module itself */ + PyDoc_STRVAR(module_doc, "This is a template module just for instruction."); static int xx_modexec(PyObject *m) { - PyObject *o; - - /* Due to cross platform compiler issues the slots must be filled - * here. It's required for portability to Windows without requiring - * C++. */ - Null_Type_slots[0].pfunc = &PyBaseObject_Type; - Null_Type_slots[1].pfunc = PyType_GenericNew; - Str_Type_slots[0].pfunc = &PyUnicode_Type; - - Xxo_Type = PyType_FromSpec(&Xxo_Type_spec); - if (Xxo_Type == NULL) - goto fail; - - /* Add some symbolic constants to the module */ - if (ErrorObject == NULL) { - ErrorObject = PyErr_NewException("xxlimited.error", NULL, NULL); - if (ErrorObject == NULL) - goto fail; + xx_state *state = PyModule_GetState(m); + + state->Error_Type = PyErr_NewException("xxlimited.Error", NULL, NULL); + if (state->Error_Type == NULL) { + return -1; + } + if (PyModule_AddType(m, (PyTypeObject*)state->Error_Type) < 0) { + return -1; + } + + state->Xxo_Type = PyType_FromModuleAndSpec(m, &Xxo_Type_spec, NULL); + if (state->Xxo_Type == NULL) { + return -1; + } + if (PyModule_AddType(m, (PyTypeObject*)state->Xxo_Type) < 0) { + return -1; + } + + // Add the Str type. It is not needed from C code, so it is only + // added to the module dict. + // It does not inherit from "object" (PyObject_Type), but from "str" + // (PyUnincode_Type). + PyObject *Str_Type = PyType_FromModuleAndSpec( + m, &Str_Type_spec, (PyObject *)&PyUnicode_Type); + if (Str_Type == NULL) { + return -1; + } + if (PyModule_AddType(m, (PyTypeObject*)Str_Type) < 0) { + return -1; } - Py_INCREF(ErrorObject); - PyModule_AddObject(m, "error", ErrorObject); - - /* Add Xxo */ - o = PyType_FromSpec(&Xxo_Type_spec); - if (o == NULL) - goto fail; - PyModule_AddObject(m, "Xxo", o); - - /* Add Str */ - o = PyType_FromSpec(&Str_Type_spec); - if (o == NULL) - goto fail; - PyModule_AddObject(m, "Str", o); - - /* Add Null */ - o = PyType_FromSpec(&Null_Type_spec); - if (o == NULL) - goto fail; - PyModule_AddObject(m, "Null", o); + Py_DECREF(Str_Type); + return 0; - fail: - Py_XDECREF(m); - return -1; } - static PyModuleDef_Slot xx_slots[] = { {Py_mod_exec, xx_modexec}, {0, NULL} }; +static int +xx_traverse(PyObject *module, visitproc visit, void *arg) +{ + xx_state *state = PyModule_GetState(module); + Py_VISIT(state->Xxo_Type); + Py_VISIT(state->Error_Type); + return 0; +} + +static int +xx_clear(PyObject *module) +{ + xx_state *state = PyModule_GetState(module); + Py_CLEAR(state->Xxo_Type); + Py_CLEAR(state->Error_Type); + return 0; +} + static struct PyModuleDef xxmodule = { PyModuleDef_HEAD_INIT, - "xxlimited", - module_doc, - 0, - xx_methods, - xx_slots, - NULL, - NULL, - NULL + .m_name = "xxlimited", + .m_doc = module_doc, + .m_size = sizeof(xx_state), + .m_methods = xx_methods, + .m_slots = xx_slots, + .m_traverse = xx_traverse, + .m_clear = xx_clear, + /* m_free is not necessary here: xx_clear clears all references, + * and the module state is deallocated along with the module. + */ }; + /* Export function for the module (*must* be called PyInit_xx) */ PyMODINIT_FUNC diff --git a/Modules/xxlimited_35.c b/Modules/xxlimited_35.c new file mode 100644 index 0000000000000..ce96e8c90efd4 --- /dev/null +++ b/Modules/xxlimited_35.c @@ -0,0 +1,301 @@ + +/* This module is compiled using limited API from Python 3.5, + * making sure that it works as expected. + * + * See the xxlimited module for an extension module template. + */ + +/* Xxo objects */ + +#include "Python.h" + +static PyObject *ErrorObject; + +typedef struct { + PyObject_HEAD + PyObject *x_attr; /* Attributes dictionary */ +} XxoObject; + +static PyObject *Xxo_Type; + +#define XxoObject_Check(v) Py_IS_TYPE(v, Xxo_Type) + +static XxoObject * +newXxoObject(PyObject *arg) +{ + XxoObject *self; + self = PyObject_GC_New(XxoObject, (PyTypeObject*)Xxo_Type); + if (self == NULL) + return NULL; + self->x_attr = NULL; + return self; +} + +/* Xxo methods */ + +static int +Xxo_traverse(XxoObject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + Py_VISIT(self->x_attr); + return 0; +} + +static void +Xxo_finalize(XxoObject *self) +{ + Py_CLEAR(self->x_attr); +} + +static PyObject * +Xxo_demo(XxoObject *self, PyObject *args) +{ + PyObject *o = NULL; + if (!PyArg_ParseTuple(args, "|O:demo", &o)) + return NULL; + /* Test availability of fast type checks */ + if (o != NULL && PyUnicode_Check(o)) { + Py_INCREF(o); + return o; + } + Py_INCREF(Py_None); + return Py_None; +} + +static PyMethodDef Xxo_methods[] = { + {"demo", (PyCFunction)Xxo_demo, METH_VARARGS, + PyDoc_STR("demo() -> None")}, + {NULL, NULL} /* sentinel */ +}; + +static PyObject * +Xxo_getattro(XxoObject *self, PyObject *name) +{ + if (self->x_attr != NULL) { + PyObject *v = PyDict_GetItemWithError(self->x_attr, name); + if (v != NULL) { + Py_INCREF(v); + return v; + } + else if (PyErr_Occurred()) { + return NULL; + } + } + return PyObject_GenericGetAttr((PyObject *)self, name); +} + +static int +Xxo_setattr(XxoObject *self, const char *name, PyObject *v) +{ + if (self->x_attr == NULL) { + self->x_attr = PyDict_New(); + if (self->x_attr == NULL) + return -1; + } + if (v == NULL) { + int rv = PyDict_DelItemString(self->x_attr, name); + if (rv < 0 && PyErr_ExceptionMatches(PyExc_KeyError)) + PyErr_SetString(PyExc_AttributeError, + "delete non-existing Xxo attribute"); + return rv; + } + else + return PyDict_SetItemString(self->x_attr, name, v); +} + +static PyType_Slot Xxo_Type_slots[] = { + {Py_tp_doc, "The Xxo type"}, + {Py_tp_traverse, Xxo_traverse}, + {Py_tp_finalize, Xxo_finalize}, + {Py_tp_getattro, Xxo_getattro}, + {Py_tp_setattr, Xxo_setattr}, + {Py_tp_methods, Xxo_methods}, + {0, 0}, +}; + +static PyType_Spec Xxo_Type_spec = { + "xxlimited.Xxo", + sizeof(XxoObject), + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + Xxo_Type_slots +}; + +/* --------------------------------------------------------------------- */ + +/* Function of two integers returning integer */ + +PyDoc_STRVAR(xx_foo_doc, +"foo(i,j)\n\ +\n\ +Return the sum of i and j."); + +static PyObject * +xx_foo(PyObject *self, PyObject *args) +{ + long i, j; + long res; + if (!PyArg_ParseTuple(args, "ll:foo", &i, &j)) + return NULL; + res = i+j; /* XXX Do something here */ + return PyLong_FromLong(res); +} + + +/* Function of no arguments returning new Xxo object */ + +static PyObject * +xx_new(PyObject *self, PyObject *args) +{ + XxoObject *rv; + + if (!PyArg_ParseTuple(args, ":new")) + return NULL; + rv = newXxoObject(args); + if (rv == NULL) + return NULL; + return (PyObject *)rv; +} + +/* Test bad format character */ + +static PyObject * +xx_roj(PyObject *self, PyObject *args) +{ + PyObject *a; + long b; + if (!PyArg_ParseTuple(args, "O#:roj", &a, &b)) + return NULL; + Py_INCREF(Py_None); + return Py_None; +} + + +/* ---------- */ + +static PyType_Slot Str_Type_slots[] = { + {Py_tp_base, NULL}, /* filled out in module init function */ + {0, 0}, +}; + +static PyType_Spec Str_Type_spec = { + "xxlimited.Str", + 0, + 0, + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + Str_Type_slots +}; + +/* ---------- */ + +static PyObject * +null_richcompare(PyObject *self, PyObject *other, int op) +{ + Py_RETURN_NOTIMPLEMENTED; +} + +static PyType_Slot Null_Type_slots[] = { + {Py_tp_base, NULL}, /* filled out in module init */ + {Py_tp_new, NULL}, + {Py_tp_richcompare, null_richcompare}, + {0, 0} +}; + +static PyType_Spec Null_Type_spec = { + "xxlimited.Null", + 0, /* basicsize */ + 0, /* itemsize */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + Null_Type_slots +}; + +/* ---------- */ + +/* List of functions defined in the module */ + +static PyMethodDef xx_methods[] = { + {"roj", xx_roj, METH_VARARGS, + PyDoc_STR("roj(a,b) -> None")}, + {"foo", xx_foo, METH_VARARGS, + xx_foo_doc}, + {"new", xx_new, METH_VARARGS, + PyDoc_STR("new() -> new Xx object")}, + {NULL, NULL} /* sentinel */ +}; + +PyDoc_STRVAR(module_doc, +"This is a module for testing limited API from Python 3.5."); + +static int +xx_modexec(PyObject *m) +{ + PyObject *o; + + /* Due to cross platform compiler issues the slots must be filled + * here. It's required for portability to Windows without requiring + * C++. */ + Null_Type_slots[0].pfunc = &PyBaseObject_Type; + Null_Type_slots[1].pfunc = PyType_GenericNew; + Str_Type_slots[0].pfunc = &PyUnicode_Type; + + Xxo_Type = PyType_FromSpec(&Xxo_Type_spec); + if (Xxo_Type == NULL) + goto fail; + + /* Add some symbolic constants to the module */ + if (ErrorObject == NULL) { + ErrorObject = PyErr_NewException("xxlimited.error", NULL, NULL); + if (ErrorObject == NULL) + goto fail; + } + Py_INCREF(ErrorObject); + PyModule_AddObject(m, "error", ErrorObject); + + /* Add Xxo */ + o = PyType_FromSpec(&Xxo_Type_spec); + if (o == NULL) + goto fail; + PyModule_AddObject(m, "Xxo", o); + + /* Add Str */ + o = PyType_FromSpec(&Str_Type_spec); + if (o == NULL) + goto fail; + PyModule_AddObject(m, "Str", o); + + /* Add Null */ + o = PyType_FromSpec(&Null_Type_spec); + if (o == NULL) + goto fail; + PyModule_AddObject(m, "Null", o); + return 0; + fail: + Py_XDECREF(m); + return -1; +} + + +static PyModuleDef_Slot xx_slots[] = { + {Py_mod_exec, xx_modexec}, + {0, NULL} +}; + +static struct PyModuleDef xxmodule = { + PyModuleDef_HEAD_INIT, + "xxlimited_35", + module_doc, + 0, + xx_methods, + xx_slots, + NULL, + NULL, + NULL +}; + +/* Export function for the module (*must* be called PyInit_xx) */ + +PyMODINIT_FUNC +PyInit_xxlimited_35(void) +{ + return PyModuleDef_Init(&xxmodule); +} diff --git a/PC/layout/main.py b/PC/layout/main.py index 3eef7556299cf..8c69c91542d24 100644 --- a/PC/layout/main.py +++ b/PC/layout/main.py @@ -36,7 +36,7 @@ BDIST_WININST_FILES_ONLY = FileNameSet("wininst-*", "bdist_wininst.py") BDIST_WININST_STUB = "PC/layout/support/distutils.command.bdist_wininst.py" -TEST_PYDS_ONLY = FileStemSet("xxlimited", "_ctypes_test", "_test*") +TEST_PYDS_ONLY = FileStemSet("xxlimited", "xxlimited_35", "_ctypes_test", "_test*") TEST_DIRS_ONLY = FileNameSet("test", "tests") IDLE_DIRS_ONLY = FileNameSet("idlelib") diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj index 4d416c589e4c4..8e7088d47d2ae 100644 --- a/PCbuild/pcbuild.proj +++ b/PCbuild/pcbuild.proj @@ -66,6 +66,7 @@ + false diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 73833d54637d5..4335c9f71d0d2 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -125,6 +125,9 @@ python3dll xxlimited builds an example module that makes use of the PEP 384 Stable ABI, see Modules\xxlimited.c +xxlimited_35 + ditto for testing the Python 3.5 stable ABI, see + Modules\xxlimited_35.c The following sub-projects are for individual modules of the standard library which are implemented in C; each one builds a DLL (renamed to diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj index 776335a15cb0c..ece169127a286 100644 --- a/PCbuild/xxlimited.vcxproj +++ b/PCbuild/xxlimited.vcxproj @@ -94,7 +94,7 @@ - %(PreprocessorDefinitions);Py_LIMITED_API=0x03060000 + %(PreprocessorDefinitions);Py_LIMITED_API=0x03100000 wsock32.lib;%(AdditionalDependencies) @@ -111,4 +111,4 @@ - \ No newline at end of file + diff --git a/PCbuild/xxlimited_35.vcxproj b/PCbuild/xxlimited_35.vcxproj new file mode 100644 index 0000000000000..7e49eadf9037d --- /dev/null +++ b/PCbuild/xxlimited_35.vcxproj @@ -0,0 +1,114 @@ +? + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + PGInstrument + ARM + + + PGInstrument + ARM64 + + + PGInstrument + Win32 + + + PGInstrument + x64 + + + PGUpdate + ARM + + + PGUpdate + ARM64 + + + PGUpdate + Win32 + + + PGUpdate + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {fb868ea7-f93a-4d9b-be78-ca4e9ba14fff} + xxlimited_35 + Win32Proj + + + + + DynamicLibrary + NotSet + false + + + + .pyd + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + %(PreprocessorDefinitions);Py_LIMITED_API=0x03060000 + + + wsock32.lib;%(AdditionalDependencies) + + + + + + + + {885d4898-d08d-4091-9c40-c700cfe3fc5a} + + + + + + diff --git a/PCbuild/xxlimited_35.vcxproj.filters b/PCbuild/xxlimited_35.vcxproj.filters new file mode 100644 index 0000000000000..35bfb05c239c3 --- /dev/null +++ b/PCbuild/xxlimited_35.vcxproj.filters @@ -0,0 +1,13 @@ +? + + + + {5be27194-6530-452d-8d86-3767b991fa83} + + + + + Source Files + + + diff --git a/setup.py b/setup.py index 90588e8b1d1fc..ca5a04d2ae0d7 100644 --- a/setup.py +++ b/setup.py @@ -1803,8 +1803,16 @@ def detect_modules(self): ## self.add(Extension('xx', ['xxmodule.c'])) if 'd' not in sysconfig.get_config_var('ABIFLAGS'): + # Non-debug mode: Build xxlimited with limited API self.add(Extension('xxlimited', ['xxlimited.c'], + define_macros=[('Py_LIMITED_API', '0x03100000')])) + self.add(Extension('xxlimited_35', ['xxlimited_35.c'], define_macros=[('Py_LIMITED_API', '0x03050000')])) + else: + # Debug mode: Build xxlimited with the full API + # (which is compatible with the limited one) + self.add(Extension('xxlimited', ['xxlimited.c'])) + self.add(Extension('xxlimited_35', ['xxlimited_35.c'])) def detect_tkinter_explicitly(self): # Build _tkinter using explicit locations for Tcl/Tk. From webhook-mailer at python.org Tue Dec 8 11:42:40 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 16:42:40 -0000 Subject: [Python-checkins] bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) (GH-23692) (GH-23696) Message-ID: https://github.com/python/cpython/commit/b5cf308de8b19bf8f77053013f7e8a944159e1aa commit: b5cf308de8b19bf8f77053013f7e8a944159e1aa branch: 3.8 author: Victor Stinner committer: vstinner date: 2020-12-08T17:42:31+01:00 summary: bpo-32381: Fix PyRun_SimpleFileExFlags() encoding (GH-23642) (GH-23692) (GH-23696) Fix encoding name when running a ".pyc" file on Windows: PyRun_SimpleFileExFlags() now uses the correct encoding to decode the filename. * Add pyrun_file() subfunction. * Add pyrun_simple_file() subfunction. * PyRun_SimpleFileExFlags() now calls _Py_fopen_obj() rather than _Py_fopen(). (cherry picked from commit b6d98c10fff6f320f8fdf595c3f9a05d8be4e31d) (cherry picked from commit f0e42ae03c41ec32fcb3064772f46ff7f2c5ff3b) files: A Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst M Python/pythonrun.c diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst new file mode 100644 index 0000000000000..f4d84f9d848d4 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst @@ -0,0 +1,3 @@ +Fix encoding name when running a ``.pyc`` file on Windows: +:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to decode +the filename. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 6cdd8ea7a6ab1..3831e81ee9b89 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -63,11 +63,15 @@ extern grammar _PyParser_Grammar; /* From graminit.c */ static void flush_io(void); static PyObject *run_mod(mod_ty, PyObject *, PyObject *, PyObject *, PyCompilerFlags *, PyArena *); -static PyObject *run_pyc_file(FILE *, const char *, PyObject *, PyObject *, +static PyObject *run_pyc_file(FILE *, PyObject *, PyObject *, PyCompilerFlags *); static void err_input(perrdetail *); static void err_free(perrdetail *); static int PyRun_InteractiveOneObjectEx(FILE *, PyObject *, PyCompilerFlags *); +static PyObject* pyrun_file(FILE *fp, PyObject *filename, int start, + PyObject *globals, PyObject *locals, int closeit, + PyCompilerFlags *flags); + /* Parse input from a file and execute it */ int @@ -300,82 +304,89 @@ PyRun_InteractiveOneFlags(FILE *fp, const char *filename_str, PyCompilerFlags *f the file type, and, if we may close it, at the first few bytes. */ static int -maybe_pyc_file(FILE *fp, const char* filename, const char* ext, int closeit) +maybe_pyc_file(FILE *fp, PyObject *filename, int closeit) { - if (strcmp(ext, ".pyc") == 0) + PyObject *ext = PyUnicode_FromString(".pyc"); + if (ext == NULL) { + return -1; + } + Py_ssize_t endswith = PyUnicode_Tailmatch(filename, ext, 0, PY_SSIZE_T_MAX, +1); + Py_DECREF(ext); + if (endswith) { return 1; + } /* Only look into the file if we are allowed to close it, since it then should also be seekable. */ - if (closeit) { - /* Read only two bytes of the magic. If the file was opened in - text mode, the bytes 3 and 4 of the magic (\r\n) might not - be read as they are on disk. */ - unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; - unsigned char buf[2]; - /* Mess: In case of -x, the stream is NOT at its start now, - and ungetc() was used to push back the first newline, - which makes the current stream position formally undefined, - and a x-platform nightmare. - Unfortunately, we have no direct way to know whether -x - was specified. So we use a terrible hack: if the current - stream position is not 0, we assume -x was specified, and - give up. Bug 132850 on SourceForge spells out the - hopelessness of trying anything else (fseek and ftell - don't work predictably x-platform for text-mode files). - */ - int ispyc = 0; - if (ftell(fp) == 0) { - if (fread(buf, 1, 2, fp) == 2 && - ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) - ispyc = 1; - rewind(fp); - } - return ispyc; + if (!closeit) { + return 0; } - return 0; + + /* Read only two bytes of the magic. If the file was opened in + text mode, the bytes 3 and 4 of the magic (\r\n) might not + be read as they are on disk. */ + unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF; + unsigned char buf[2]; + /* Mess: In case of -x, the stream is NOT at its start now, + and ungetc() was used to push back the first newline, + which makes the current stream position formally undefined, + and a x-platform nightmare. + Unfortunately, we have no direct way to know whether -x + was specified. So we use a terrible hack: if the current + stream position is not 0, we assume -x was specified, and + give up. Bug 132850 on SourceForge spells out the + hopelessness of trying anything else (fseek and ftell + don't work predictably x-platform for text-mode files). + */ + int ispyc = 0; + if (ftell(fp) == 0) { + if (fread(buf, 1, 2, fp) == 2 && + ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic) + ispyc = 1; + rewind(fp); + } + return ispyc; } + static int -set_main_loader(PyObject *d, const char *filename, const char *loader_name) +set_main_loader(PyObject *d, PyObject *filename, const char *loader_name) { - PyObject *filename_obj, *bootstrap, *loader_type = NULL, *loader; - int result = 0; - - filename_obj = PyUnicode_DecodeFSDefault(filename); - if (filename_obj == NULL) - return -1; PyInterpreterState *interp = _PyInterpreterState_Get(); - bootstrap = PyObject_GetAttrString(interp->importlib, - "_bootstrap_external"); - if (bootstrap != NULL) { - loader_type = PyObject_GetAttrString(bootstrap, loader_name); - Py_DECREF(bootstrap); + PyObject *bootstrap = PyObject_GetAttrString(interp->importlib, + "_bootstrap_external"); + if (bootstrap == NULL) { + return -1; } + + PyObject *loader_type = PyObject_GetAttrString(bootstrap, loader_name); + Py_DECREF(bootstrap); if (loader_type == NULL) { - Py_DECREF(filename_obj); return -1; } - loader = PyObject_CallFunction(loader_type, "sN", "__main__", filename_obj); + + PyObject *loader = PyObject_CallFunction(loader_type, + "sO", "__main__", filename); Py_DECREF(loader_type); if (loader == NULL) { return -1; } + if (PyDict_SetItemString(d, "__loader__", loader) < 0) { - result = -1; + Py_DECREF(loader); + return -1; } Py_DECREF(loader); - return result; + return 0; } -int -PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, - PyCompilerFlags *flags) + +static int +pyrun_simple_file(FILE *fp, PyObject *filename, int closeit, + PyCompilerFlags *flags) { PyObject *m, *d, *v; - const char *ext; int set_file_name = 0, ret = -1; - size_t len; m = PyImport_AddModule("__main__"); if (m == NULL) @@ -383,29 +394,29 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, Py_INCREF(m); d = PyModule_GetDict(m); if (PyDict_GetItemString(d, "__file__") == NULL) { - PyObject *f; - f = PyUnicode_DecodeFSDefault(filename); - if (f == NULL) - goto done; - if (PyDict_SetItemString(d, "__file__", f) < 0) { - Py_DECREF(f); + if (PyDict_SetItemString(d, "__file__", filename) < 0) { goto done; } if (PyDict_SetItemString(d, "__cached__", Py_None) < 0) { - Py_DECREF(f); goto done; } set_file_name = 1; - Py_DECREF(f); } - len = strlen(filename); - ext = filename + len - (len > 4 ? 4 : 0); - if (maybe_pyc_file(fp, filename, ext, closeit)) { + + int pyc = maybe_pyc_file(fp, filename, closeit); + if (pyc < 0) { + goto done; + } + + if (pyc) { FILE *pyc_fp; /* Try to run a pyc file. First, re-open in binary */ - if (closeit) + if (closeit) { fclose(fp); - if ((pyc_fp = _Py_fopen(filename, "rb")) == NULL) { + } + + pyc_fp = _Py_fopen_obj(filename, "rb"); + if (pyc_fp == NULL) { fprintf(stderr, "python: Can't reopen .pyc file\n"); goto done; } @@ -416,17 +427,17 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, fclose(pyc_fp); goto done; } - v = run_pyc_file(pyc_fp, filename, d, d, flags); + v = run_pyc_file(pyc_fp, d, d, flags); } else { /* When running from stdin, leave __main__.__loader__ alone */ - if (strcmp(filename, "") != 0 && + if (PyUnicode_CompareWithASCIIString(filename, "") != 0 && set_main_loader(d, filename, "SourceFileLoader") < 0) { fprintf(stderr, "python: failed to set __main__.__loader__\n"); ret = -1; goto done; } - v = PyRun_FileExFlags(fp, filename, Py_file_input, d, d, - closeit, flags); + v = pyrun_file(fp, filename, Py_file_input, d, d, + closeit, flags); } flush_io(); if (v == NULL) { @@ -449,6 +460,21 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, return ret; } + +int +PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, + PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return -1; + } + int res = pyrun_simple_file(fp, filename_obj, closeit, flags); + Py_DECREF(filename_obj); + return res; +} + + int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags) { @@ -1036,39 +1062,53 @@ PyRun_StringFlags(const char *str, int start, PyObject *globals, return ret; } -PyObject * -PyRun_FileExFlags(FILE *fp, const char *filename_str, int start, PyObject *globals, - PyObject *locals, int closeit, PyCompilerFlags *flags) -{ - PyObject *ret = NULL; - mod_ty mod; - PyArena *arena = NULL; - PyObject *filename; - filename = PyUnicode_DecodeFSDefault(filename_str); - if (filename == NULL) - goto exit; - - arena = PyArena_New(); - if (arena == NULL) - goto exit; +static PyObject * +pyrun_file(FILE *fp, PyObject *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) +{ + PyArena *arena = PyArena_New(); + if (arena == NULL) { + return NULL; + } + mod_ty mod; mod = PyParser_ASTFromFileObject(fp, filename, NULL, start, 0, 0, flags, NULL, arena); - if (closeit) + if (closeit) { fclose(fp); - if (mod == NULL) { - goto exit; } - ret = run_mod(mod, filename, globals, locals, flags, arena); -exit: - Py_XDECREF(filename); - if (arena != NULL) - PyArena_Free(arena); + PyObject *ret; + if (mod != NULL) { + ret = run_mod(mod, filename, globals, locals, flags, arena); + } + else { + ret = NULL; + } + PyArena_Free(arena); + return ret; } + +PyObject * +PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, + PyObject *locals, int closeit, PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + return NULL; + } + + PyObject *res = pyrun_file(fp, filename_obj, start, globals, + locals, closeit, flags); + Py_DECREF(filename_obj); + return res; + +} + + static void flush_io(void) { @@ -1150,8 +1190,8 @@ run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals, } static PyObject * -run_pyc_file(FILE *fp, const char *filename, PyObject *globals, - PyObject *locals, PyCompilerFlags *flags) +run_pyc_file(FILE *fp, PyObject *globals, PyObject *locals, + PyCompilerFlags *flags) { PyCodeObject *co; PyObject *v; From webhook-mailer at python.org Tue Dec 8 13:00:37 2020 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 08 Dec 2020 18:00:37 -0000 Subject: [Python-checkins] [3.9] bpo-41910: move news entry (GH-23697) Message-ID: https://github.com/python/cpython/commit/a3a4bf3b8dc79e4ec4f24f59bd1e9e2a75229112 commit: a3a4bf3b8dc79e4ec4f24f59bd1e9e2a75229112 branch: 3.9 author: Terry Jan Reedy committer: terryjreedy date: 2020-12-08T13:00:13-05:00 summary: [3.9] bpo-41910: move news entry (GH-23697) files: M Misc/NEWS.d/3.9.1rc1.rst diff --git a/Misc/NEWS.d/3.9.1rc1.rst b/Misc/NEWS.d/3.9.1rc1.rst index 0524f85e7a73b..ac4bf36f5c217 100644 --- a/Misc/NEWS.d/3.9.1rc1.rst +++ b/Misc/NEWS.d/3.9.1rc1.rst @@ -149,15 +149,6 @@ failure, run the parser a second time with those enabled. .. -.. bpo: 41910 -.. date: 2020-10-21-14-40-54 -.. nonce: CzBMit -.. section: Core and Builtins - -Document the default implementation of `object.__eq__`. - -.. - .. bpo: 42057 .. date: 2020-10-20-11-36-14 .. nonce: BI-OoV @@ -561,6 +552,15 @@ Document __format__ functionality for IP addresses. .. +.. bpo: 41910 +.. date: 2020-10-21-14-40-54 +.. nonce: CzBMit +.. section: Documentation + +Document the default implementation of `object.__eq__`. + +.. + .. bpo: 42010 .. date: 2020-10-21-02-21-14 .. nonce: 76vJ0u From webhook-mailer at python.org Tue Dec 8 13:00:37 2020 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 08 Dec 2020 18:00:37 -0000 Subject: [Python-checkins] [3.8] bpo-41910: move news entry (GH-23698) Message-ID: https://github.com/python/cpython/commit/b947b305a6833cc059214d5bdd2065edd65024c4 commit: b947b305a6833cc059214d5bdd2065edd65024c4 branch: 3.8 author: Terry Jan Reedy committer: terryjreedy date: 2020-12-08T13:00:03-05:00 summary: [3.8] bpo-41910: move news entry (GH-23698) files: M Misc/NEWS.d/3.8.7rc1.rst diff --git a/Misc/NEWS.d/3.8.7rc1.rst b/Misc/NEWS.d/3.8.7rc1.rst index 37fb72566a2f4..274961d9b91d7 100644 --- a/Misc/NEWS.d/3.8.7rc1.rst +++ b/Misc/NEWS.d/3.8.7rc1.rst @@ -53,15 +53,6 @@ Goldschmidt. .. -.. bpo: 41910 -.. date: 2020-10-21-14-40-54 -.. nonce: CzBMit -.. section: Core and Builtins - -Document the default implementation of `object.__eq__`. - -.. - .. bpo: 41984 .. date: 2020-10-14-16-19-43 .. nonce: SEtKMr @@ -444,6 +435,15 @@ Fix the URL for the IMAP protocol documents. .. +.. bpo: 41910 +.. date: 2020-10-21-14-40-54 +.. nonce: CzBMit +.. section: Documentation + +Document the default implementation of `object.__eq__`. + +.. + .. bpo: 41774 .. date: 2020-09-24-15-35-13 .. nonce: 5IqdGP From webhook-mailer at python.org Tue Dec 8 14:14:25 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 19:14:25 -0000 Subject: [Python-checkins] bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) Message-ID: https://github.com/python/cpython/commit/37440eef7f9a0c27e13fc9ce0850574bb00688b0 commit: 37440eef7f9a0c27e13fc9ce0850574bb00688b0 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-08T11:14:10-08:00 summary: bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) files: A Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index d670ad7d86196..484db2cd7d246 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -658,7 +658,7 @@ def __format__(self, format_spec): # the value # pure Enum branch, or branch with __str__ explicitly overridden - str_overridden = type(self).__str__ != Enum.__str__ + str_overridden = type(self).__str__ not in (Enum.__str__, Flag.__str__) if self._member_type_ is object or str_overridden: cls = str val = str(self) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index d1dd2e78d455f..f2171b53946b9 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -585,12 +585,15 @@ def hello(self): class Test1Enum(MyMethodEnum, int, MyStrEnum): One = 1 Two = 2 + self.assertTrue(Test1Enum._member_type_ is int) self.assertEqual(str(Test1Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') # class Test2Enum(MyStrEnum, MyMethodEnum): One = 1 Two = 2 self.assertEqual(str(Test2Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') def test_inherited_data_type(self): class HexInt(int): @@ -2251,6 +2254,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.RO | Open.CE)), '') self.assertEqual(repr(~(Open.WO | Open.CE)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), 'Perm.R') + self.assertEqual(format(Perm.R | Perm.X, ''), 'Perm.R|X') + def test_or(self): Perm = self.Perm for i in Perm: @@ -2590,6 +2598,7 @@ class Color(IntFlag): def test_type(self): Perm = self.Perm + self.assertTrue(Perm._member_type_ is int) Open = self.Open for f in Perm: self.assertTrue(isinstance(f, Perm)) @@ -2669,6 +2678,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.WO | Open.CE)), '') self.assertEqual(repr(Open(~4)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), '4') + self.assertEqual(format(Perm.R | Perm.X, ''), '5') + def test_or(self): Perm = self.Perm for i in Perm: diff --git a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst new file mode 100644 index 0000000000000..aa337b38046e6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst @@ -0,0 +1 @@ +fix `format()` behavior for `IntFlag` From webhook-mailer at python.org Tue Dec 8 14:52:37 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 19:52:37 -0000 Subject: [Python-checkins] bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) (GH-23703) Message-ID: https://github.com/python/cpython/commit/14eaa7d75282d8458455c41e9e871c56db8b9a10 commit: 14eaa7d75282d8458455c41e9e871c56db8b9a10 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-08T11:52:24-08:00 summary: bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) (GH-23703) (cherry picked from commit 37440eef7f9a0c27e13fc9ce0850574bb00688b0) files: A Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 3ce205d48fc2a..c277309881eb0 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -657,7 +657,7 @@ def __format__(self, format_spec): # the value # pure Enum branch, or branch with __str__ explicitly overridden - str_overridden = type(self).__str__ != Enum.__str__ + str_overridden = type(self).__str__ not in (Enum.__str__, Flag.__str__) if self._member_type_ is object or str_overridden: cls = str val = str(self) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index cd73d26e63e22..ccc2cbe1ec14b 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -570,12 +570,15 @@ def hello(self): class Test1Enum(MyMethodEnum, int, MyStrEnum): One = 1 Two = 2 + self.assertTrue(Test1Enum._member_type_ is int) self.assertEqual(str(Test1Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') # class Test2Enum(MyStrEnum, MyMethodEnum): One = 1 Two = 2 self.assertEqual(str(Test2Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') def test_inherited_data_type(self): class HexInt(int): @@ -2170,6 +2173,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.RO | Open.CE)), '') self.assertEqual(repr(~(Open.WO | Open.CE)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), 'Perm.R') + self.assertEqual(format(Perm.R | Perm.X, ''), 'Perm.R|X') + def test_or(self): Perm = self.Perm for i in Perm: @@ -2503,6 +2511,7 @@ class Color(IntFlag): def test_type(self): Perm = self.Perm + self.assertTrue(Perm._member_type_ is int) Open = self.Open for f in Perm: self.assertTrue(isinstance(f, Perm)) @@ -2582,6 +2591,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.WO | Open.CE)), '') self.assertEqual(repr(Open(~4)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), '4') + self.assertEqual(format(Perm.R | Perm.X, ''), '5') + def test_or(self): Perm = self.Perm for i in Perm: diff --git a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst new file mode 100644 index 0000000000000..aa337b38046e6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst @@ -0,0 +1 @@ +fix `format()` behavior for `IntFlag` From webhook-mailer at python.org Tue Dec 8 14:53:07 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 19:53:07 -0000 Subject: [Python-checkins] bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) (GH-23704) Message-ID: https://github.com/python/cpython/commit/cbfcc67170d459bcf3e9d63d2f44eadec740bf69 commit: cbfcc67170d459bcf3e9d63d2f44eadec740bf69 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-08T11:52:58-08:00 summary: bpo-41907: [Enum] fix format() behavior for IntFlag (GH-22497) (GH-23704) (cherry picked from commit 37440eef7f9a0c27e13fc9ce0850574bb00688b0) files: A Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index da809e2689114..da0657f66ce62 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -663,7 +663,7 @@ def __format__(self, format_spec): # the value # pure Enum branch, or branch with __str__ explicitly overridden - str_overridden = type(self).__str__ != Enum.__str__ + str_overridden = type(self).__str__ not in (Enum.__str__, Flag.__str__) if self._member_type_ is object or str_overridden: cls = str val = str(self) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 7f6e6bf092b6f..484a2de6a9a6e 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -569,12 +569,15 @@ def hello(self): class Test1Enum(MyMethodEnum, int, MyStrEnum): One = 1 Two = 2 + self.assertTrue(Test1Enum._member_type_ is int) self.assertEqual(str(Test1Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') # class Test2Enum(MyStrEnum, MyMethodEnum): One = 1 Two = 2 self.assertEqual(str(Test2Enum.One), 'MyStr') + self.assertEqual(format(Test1Enum.One, ''), 'MyStr') def test_inherited_data_type(self): class HexInt(int): @@ -2172,6 +2175,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.RO | Open.CE)), '') self.assertEqual(repr(~(Open.WO | Open.CE)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), 'Perm.R') + self.assertEqual(format(Perm.R | Perm.X, ''), 'Perm.R|X') + def test_or(self): Perm = self.Perm for i in Perm: @@ -2504,6 +2512,7 @@ class Color(IntFlag): def test_type(self): Perm = self.Perm + self.assertTrue(Perm._member_type_ is int) Open = self.Open for f in Perm: self.assertTrue(isinstance(f, Perm)) @@ -2583,6 +2592,11 @@ def test_repr(self): self.assertEqual(repr(~(Open.WO | Open.CE)), '') self.assertEqual(repr(Open(~4)), '') + def test_format(self): + Perm = self.Perm + self.assertEqual(format(Perm.R, ''), '4') + self.assertEqual(format(Perm.R | Perm.X, ''), '5') + def test_or(self): Perm = self.Perm for i in Perm: diff --git a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst new file mode 100644 index 0000000000000..aa337b38046e6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst @@ -0,0 +1 @@ +fix `format()` behavior for `IntFlag` From webhook-mailer at python.org Tue Dec 8 15:27:06 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 20:27:06 -0000 Subject: [Python-checkins] [Enum] reformat and add doc strings (GH-23705) Message-ID: https://github.com/python/cpython/commit/6d3dfee271b6e4afbfb060c269b034b871e2d1b3 commit: 6d3dfee271b6e4afbfb060c269b034b871e2d1b3 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-08T12:26:56-08:00 summary: [Enum] reformat and add doc strings (GH-23705) files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 484db2cd7d246..f6c7e8b233413 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -10,31 +10,41 @@ def _is_descriptor(obj): - """Returns True if obj is a descriptor, False otherwise.""" + """ + Returns True if obj is a descriptor, False otherwise. + """ return ( hasattr(obj, '__get__') or hasattr(obj, '__set__') or - hasattr(obj, '__delete__')) - + hasattr(obj, '__delete__') + ) def _is_dunder(name): - """Returns True if a __dunder__ name, False otherwise.""" - return (len(name) > 4 and + """ + Returns True if a __dunder__ name, False otherwise. + """ + return ( + len(name) > 4 and name[:2] == name[-2:] == '__' and name[2] != '_' and - name[-3] != '_') - + name[-3] != '_' + ) def _is_sunder(name): - """Returns True if a _sunder_ name, False otherwise.""" - return (len(name) > 2 and + """ + Returns True if a _sunder_ name, False otherwise. + """ + return ( + len(name) > 2 and name[0] == name[-1] == '_' and name[1:2] != '_' and - name[-2:-1] != '_') - + name[-2:-1] != '_' + ) def _make_class_unpicklable(cls): - """Make the given class un-picklable.""" + """ + Make the given class un-picklable. + """ def _break_on_call_reduce(self, proto): raise TypeError('%r cannot be pickled' % self) cls.__reduce_ex__ = _break_on_call_reduce @@ -49,11 +59,11 @@ class auto: class _EnumDict(dict): - """Track enum member order and ensure member names are not reused. + """ + Track enum member order and ensure member names are not reused. EnumMeta will use the names found in self._member_names as the enumeration member names. - """ def __init__(self): super().__init__() @@ -63,21 +73,23 @@ def __init__(self): self._auto_called = False def __setitem__(self, key, value): - """Changes anything not dundered or not a descriptor. + """ + Changes anything not dundered or not a descriptor. If an enum member name is used twice, an error is raised; duplicate values are not checked for. Single underscore (sunder) names are reserved. - """ if _is_sunder(key): if key not in ( '_order_', '_create_pseudo_member_', '_generate_next_value_', '_missing_', '_ignore_', ): - raise ValueError(f'_sunder_ names, such as "{key}", are ' - 'reserved for future Enum use') + raise ValueError( + '_sunder_ names, such as %r, are reserved for future Enum use' + % (key, ) + ) if key == '_generate_next_value_': # check if members already defined as auto() if self._auto_called: @@ -91,7 +103,10 @@ def __setitem__(self, key, value): self._ignore = value already = set(value) & set(self._member_names) if already: - raise ValueError('_ignore_ cannot specify already set names: %r' % (already, )) + raise ValueError( + '_ignore_ cannot specify already set names: %r' + % (already, ) + ) elif _is_dunder(key): if key == '__order__': key = '_order_' @@ -106,7 +121,12 @@ def __setitem__(self, key, value): raise TypeError('%r already defined as: %r' % (key, self[key])) if isinstance(value, auto): if value.value == _auto_null: - value.value = self._generate_next_value(key, 1, len(self._member_names), self._last_values[:]) + value.value = self._generate_next_value( + key, + 1, + len(self._member_names), + self._last_values[:], + ) self._auto_called = True value = value.value self._member_names.append(key) @@ -119,9 +139,10 @@ def __setitem__(self, key, value): # This is also why there are checks in EnumMeta like `if Enum is not None` Enum = None - class EnumMeta(type): - """Metaclass for Enum""" + """ + Metaclass for Enum + """ @classmethod def __prepare__(metacls, cls, bases): # check that previous enum members do not exist @@ -131,7 +152,9 @@ def __prepare__(metacls, cls, bases): # inherit previous flags and _generate_next_value_ function member_type, first_enum = metacls._get_mixins_(cls, bases) if first_enum is not None: - enum_dict['_generate_next_value_'] = getattr(first_enum, '_generate_next_value_', None) + enum_dict['_generate_next_value_'] = getattr( + first_enum, '_generate_next_value_', None, + ) return enum_dict def __new__(metacls, cls, bases, classdict): @@ -177,9 +200,11 @@ def __new__(metacls, cls, bases, classdict): # save DynamicClassAttribute attributes from super classes so we know # if we can take the shortcut of storing members in the class dict - dynamic_attributes = {k for c in enum_class.mro() - for k, v in c.__dict__.items() - if isinstance(v, DynamicClassAttribute)} + dynamic_attributes = { + k for c in enum_class.mro() + for k, v in c.__dict__.items() + if isinstance(v, DynamicClassAttribute) + } # Reverse value->name map for hashable values. enum_class._value2member_map_ = {} @@ -289,7 +314,8 @@ def __bool__(self): return True def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1): - """Either returns an existing member, or creates a new enum class. + """ + Either returns an existing member, or creates a new enum class. This method is used both when an enum class is given a value to match to an enumeration member (i.e. Color(3)) and for the functional API @@ -311,12 +337,18 @@ def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, s not correct, unpickling will fail in some circumstances. `type`, if set, will be mixed in as the first base class. - """ if names is None: # simple value lookup return cls.__new__(cls, value) # otherwise, functional API: we're creating a new Enum type - return cls._create_(value, names, module=module, qualname=qualname, type=type, start=start) + return cls._create_( + value, + names, + module=module, + qualname=qualname, + type=type, + start=start, + ) def __contains__(cls, member): if not isinstance(member, Enum): @@ -329,22 +361,23 @@ def __delattr__(cls, attr): # nicer error message when someone tries to delete an attribute # (see issue19025). if attr in cls._member_map_: - raise AttributeError( - "%s: cannot delete Enum member." % cls.__name__) + raise AttributeError("%s: cannot delete Enum member %r." % (cls.__name__, attr)) super().__delattr__(attr) def __dir__(self): - return (['__class__', '__doc__', '__members__', '__module__'] + - self._member_names_) + return ( + ['__class__', '__doc__', '__members__', '__module__'] + + self._member_names_ + ) def __getattr__(cls, name): - """Return the enum member matching `name` + """ + Return the enum member matching `name` We use __getattr__ instead of descriptors or inserting into the enum class' __dict__ in order to support `name` and `value` being both properties for enum members (which live in the class' __dict__) and enum members themselves. - """ if _is_dunder(name): raise AttributeError(name) @@ -357,6 +390,9 @@ def __getitem__(cls, name): return cls._member_map_[name] def __iter__(cls): + """ + Returns members in definition order. + """ return (cls._member_map_[name] for name in cls._member_names_) def __len__(cls): @@ -364,11 +400,11 @@ def __len__(cls): @property def __members__(cls): - """Returns a mapping of member name->value. + """ + Returns a mapping of member name->value. This mapping lists all enum members, including aliases. Note that this is a read-only view of the internal mapping. - """ return MappingProxyType(cls._member_map_) @@ -376,15 +412,18 @@ def __repr__(cls): return "" % cls.__name__ def __reversed__(cls): + """ + Returns members in reverse definition order. + """ return (cls._member_map_[name] for name in reversed(cls._member_names_)) def __setattr__(cls, name, value): - """Block attempts to reassign Enum members. + """ + Block attempts to reassign Enum members. A simple assignment to the class namespace only changes one of the several possible ways to get an Enum member from the Enum class, resulting in an inconsistent Enumeration. - """ member_map = cls.__dict__.get('_member_map_', {}) if name in member_map: @@ -392,7 +431,8 @@ def __setattr__(cls, name, value): super().__setattr__(name, value) def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, start=1): - """Convenience method to create a new Enum class. + """ + Convenience method to create a new Enum class. `names` can be: @@ -401,7 +441,6 @@ def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, s * An iterable of member names. Values are incremented by 1 from `start`. * An iterable of (member name, value) pairs. * A mapping of member name -> value pairs. - """ metacls = cls.__class__ bases = (cls, ) if type is None else (type, cls) @@ -482,15 +521,18 @@ def _check_for_existing_members(class_name, bases): for chain in bases: for base in chain.__mro__: if issubclass(base, Enum) and base._member_names_: - raise TypeError("%s: cannot extend enumeration %r" % (class_name, base.__name__)) + raise TypeError( + "%s: cannot extend enumeration %r" + % (class_name, base.__name__) + ) @staticmethod def _get_mixins_(class_name, bases): - """Returns the type for creating enum members, and the first inherited + """ + Returns the type for creating enum members, and the first inherited enum class. bases: the tuple of bases that was given to __new__ - """ if not bases: return object, Enum @@ -533,12 +575,12 @@ def _find_data_type(bases): @staticmethod def _find_new_(classdict, member_type, first_enum): - """Returns the __new__ to be used for creating the enum members. + """ + Returns the __new__ to be used for creating the enum members. classdict: the class dictionary given to __new__ member_type: the data type whose __new__ will be used by default first_enum: enumeration to check for an overriding __new__ - """ # now find the correct __new__, checking to see of one was defined # by the user; also check earlier enum classes in case a __new__ was @@ -578,10 +620,10 @@ def _find_new_(classdict, member_type, first_enum): class Enum(metaclass=EnumMeta): - """Generic enumeration. + """ + Generic enumeration. Derive from this class to define new enumerations. - """ def __new__(cls, value): # all enum instances are actually created during class construction @@ -624,6 +666,14 @@ def __new__(cls, value): raise exc def _generate_next_value_(name, start, count, last_values): + """ + Generate the next value when not given. + + name: the name of the member + start: the initial start value or None + count: the number of existing members + last_value: the last value assigned or None + """ for last_value in reversed(last_values): try: return last_value + 1 @@ -644,6 +694,9 @@ def __str__(self): return "%s.%s" % (self.__class__.__name__, self._name_) def __dir__(self): + """ + Returns all members and all public methods + """ added_behavior = [ m for cls in self.__class__.mro() @@ -653,6 +706,9 @@ def __dir__(self): return (['__class__', '__doc__', '__module__'] + added_behavior) def __format__(self, format_spec): + """ + Returns format using actual value type unless __str__ has been overridden. + """ # mixed-in Enums should use the mixed-in type's __format__, otherwise # we can get strange results with the Enum name showing up instead of # the value @@ -730,7 +786,9 @@ def _reduce_ex_by_name(self, proto): return self.name class Flag(Enum): - """Support for flags""" + """ + Support for flags + """ def _generate_next_value_(name, start, count, last_values): """ @@ -753,6 +811,9 @@ def _generate_next_value_(name, start, count, last_values): @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ original_value = value if value < 0: value = ~value @@ -782,6 +843,9 @@ def _create_pseudo_member_(cls, value): return pseudo_member def __contains__(self, other): + """ + Returns True if self has at least the same flags set as other. + """ if not isinstance(other, self.__class__): raise TypeError( "unsupported operand type(s) for 'in': '%s' and '%s'" % ( @@ -789,6 +853,9 @@ def __contains__(self, other): return other._value_ & self._value_ == other._value_ def __iter__(self): + """ + Returns flags in decreasing value order. + """ members, extra_flags = _decompose(self.__class__, self.value) return (m for m in members if m._value_ != 0) @@ -844,10 +911,15 @@ def __invert__(self): class IntFlag(int, Flag): - """Support for integer-based Flags""" + """ + Support for integer-based Flags + """ @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ if not isinstance(value, int): raise ValueError("%r is not a valid %s" % (value, cls.__qualname__)) new_member = cls._create_pseudo_member_(value) @@ -855,6 +927,9 @@ def _missing_(cls, value): @classmethod def _create_pseudo_member_(cls, value): + """ + Create a composite member iff value contains only members. + """ pseudo_member = cls._value2member_map_.get(value, None) if pseudo_member is None: need_to_create = [value] @@ -909,11 +984,15 @@ def __invert__(self): def _high_bit(value): - """returns index of highest bit, or -1 if value is zero or negative""" + """ + returns index of highest bit, or -1 if value is zero or negative + """ return value.bit_length() - 1 def unique(enumeration): - """Class decorator for enumerations ensuring unique member values.""" + """ + Class decorator for enumerations ensuring unique member values. + """ duplicates = [] for name, member in enumeration.__members__.items(): if name != member.name: @@ -926,7 +1005,9 @@ def unique(enumeration): return enumeration def _decompose(flag, value): - """Extract all members from the value.""" + """ + Extract all members from the value. + """ # _decompose is only called if the value is not named not_covered = value negative = value < 0 diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index f2171b53946b9..ab4b52f785273 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -429,7 +429,7 @@ def red(self): def test_reserved__sunder_(self): with self.assertRaisesRegex( ValueError, - '_sunder_ names, such as "_bad_", are reserved', + "_sunder_ names, such as '_bad_', are reserved", ): class Bad(Enum): _bad_ = 1 From webhook-mailer at python.org Tue Dec 8 16:28:56 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 21:28:56 -0000 Subject: [Python-checkins] [3.8] [Enum] reformat and add doc strings (GH-23705). (GH-23706) Message-ID: https://github.com/python/cpython/commit/21ca80eef44bbfb0de4bd4c3032873d36bf7c37f commit: 21ca80eef44bbfb0de4bd4c3032873d36bf7c37f branch: 3.8 author: Ethan Furman committer: ethanfurman date: 2020-12-08T13:28:47-08:00 summary: [3.8] [Enum] reformat and add doc strings (GH-23705). (GH-23706) * [3.8] [Enum] reformat and add doc strings (GH-23705). files: M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index da0657f66ce62..4075114efb0e4 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -10,31 +10,41 @@ def _is_descriptor(obj): - """Returns True if obj is a descriptor, False otherwise.""" + """ + Returns True if obj is a descriptor, False otherwise. + """ return ( hasattr(obj, '__get__') or hasattr(obj, '__set__') or - hasattr(obj, '__delete__')) - + hasattr(obj, '__delete__') + ) def _is_dunder(name): - """Returns True if a __dunder__ name, False otherwise.""" - return (len(name) > 4 and + """ + Returns True if a __dunder__ name, False otherwise. + """ + return ( + len(name) > 4 and name[:2] == name[-2:] == '__' and name[2] != '_' and - name[-3] != '_') - + name[-3] != '_' + ) def _is_sunder(name): - """Returns True if a _sunder_ name, False otherwise.""" - return (len(name) > 2 and + """ + Returns True if a _sunder_ name, False otherwise. + """ + return ( + len(name) > 2 and name[0] == name[-1] == '_' and name[1:2] != '_' and - name[-2:-1] != '_') - + name[-2:-1] != '_' + ) def _make_class_unpicklable(cls): - """Make the given class un-picklable.""" + """ + Make the given class un-picklable. + """ def _break_on_call_reduce(self, proto): raise TypeError('%r cannot be pickled' % self) cls.__reduce_ex__ = _break_on_call_reduce @@ -49,11 +59,11 @@ class auto: class _EnumDict(dict): - """Track enum member order and ensure member names are not reused. + """ + Track enum member order and ensure member names are not reused. EnumMeta will use the names found in self._member_names as the enumeration member names. - """ def __init__(self): super().__init__() @@ -63,13 +73,13 @@ def __init__(self): self._auto_called = False def __setitem__(self, key, value): - """Changes anything not dundered or not a descriptor. + """ + Changes anything not dundered or not a descriptor. If an enum member name is used twice, an error is raised; duplicate values are not checked for. Single underscore (sunder) names are reserved. - """ if _is_sunder(key): if key not in ( @@ -90,7 +100,10 @@ def __setitem__(self, key, value): self._ignore = value already = set(value) & set(self._member_names) if already: - raise ValueError('_ignore_ cannot specify already set names: %r' % (already, )) + raise ValueError( + '_ignore_ cannot specify already set names: %r' + % (already, ) + ) elif _is_dunder(key): if key == '__order__': key = '_order_' @@ -105,7 +118,12 @@ def __setitem__(self, key, value): raise TypeError('%r already defined as: %r' % (key, self[key])) if isinstance(value, auto): if value.value == _auto_null: - value.value = self._generate_next_value(key, 1, len(self._member_names), self._last_values[:]) + value.value = self._generate_next_value( + key, + 1, + len(self._member_names), + self._last_values[:], + ) self._auto_called = True value = value.value self._member_names.append(key) @@ -118,9 +136,10 @@ def __setitem__(self, key, value): # This is also why there are checks in EnumMeta like `if Enum is not None` Enum = None - class EnumMeta(type): - """Metaclass for Enum""" + """ + Metaclass for Enum + """ @classmethod def __prepare__(metacls, cls, bases): # check that previous enum members do not exist @@ -130,7 +149,9 @@ def __prepare__(metacls, cls, bases): # inherit previous flags and _generate_next_value_ function member_type, first_enum = metacls._get_mixins_(cls, bases) if first_enum is not None: - enum_dict['_generate_next_value_'] = getattr(first_enum, '_generate_next_value_', None) + enum_dict['_generate_next_value_'] = getattr( + first_enum, '_generate_next_value_', None, + ) return enum_dict def __new__(metacls, cls, bases, classdict): @@ -176,9 +197,11 @@ def __new__(metacls, cls, bases, classdict): # save DynamicClassAttribute attributes from super classes so we know # if we can take the shortcut of storing members in the class dict - dynamic_attributes = {k for c in enum_class.mro() - for k, v in c.__dict__.items() - if isinstance(v, DynamicClassAttribute)} + dynamic_attributes = { + k for c in enum_class.mro() + for k, v in c.__dict__.items() + if isinstance(v, DynamicClassAttribute) + } # Reverse value->name map for hashable values. enum_class._value2member_map_ = {} @@ -288,7 +311,8 @@ def __bool__(self): return True def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1): - """Either returns an existing member, or creates a new enum class. + """ + Either returns an existing member, or creates a new enum class. This method is used both when an enum class is given a value to match to an enumeration member (i.e. Color(3)) and for the functional API @@ -310,12 +334,18 @@ def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, s not correct, unpickling will fail in some circumstances. `type`, if set, will be mixed in as the first base class. - """ if names is None: # simple value lookup return cls.__new__(cls, value) # otherwise, functional API: we're creating a new Enum type - return cls._create_(value, names, module=module, qualname=qualname, type=type, start=start) + return cls._create_( + value, + names, + module=module, + qualname=qualname, + type=type, + start=start, + ) def __contains__(cls, member): if not isinstance(member, Enum): @@ -328,22 +358,23 @@ def __delattr__(cls, attr): # nicer error message when someone tries to delete an attribute # (see issue19025). if attr in cls._member_map_: - raise AttributeError( - "%s: cannot delete Enum member." % cls.__name__) + raise AttributeError("%s: cannot delete Enum member." % cls.__name__) super().__delattr__(attr) def __dir__(self): - return (['__class__', '__doc__', '__members__', '__module__'] + - self._member_names_) + return ( + ['__class__', '__doc__', '__members__', '__module__'] + + self._member_names_ + ) def __getattr__(cls, name): - """Return the enum member matching `name` + """ + Return the enum member matching `name` We use __getattr__ instead of descriptors or inserting into the enum class' __dict__ in order to support `name` and `value` being both properties for enum members (which live in the class' __dict__) and enum members themselves. - """ if _is_dunder(name): raise AttributeError(name) @@ -356,6 +387,9 @@ def __getitem__(cls, name): return cls._member_map_[name] def __iter__(cls): + """ + Returns members in definition order. + """ return (cls._member_map_[name] for name in cls._member_names_) def __len__(cls): @@ -363,11 +397,11 @@ def __len__(cls): @property def __members__(cls): - """Returns a mapping of member name->value. + """ + Returns a mapping of member name->value. This mapping lists all enum members, including aliases. Note that this is a read-only view of the internal mapping. - """ return MappingProxyType(cls._member_map_) @@ -375,15 +409,18 @@ def __repr__(cls): return "" % cls.__name__ def __reversed__(cls): + """ + Returns members in reverse definition order. + """ return (cls._member_map_[name] for name in reversed(cls._member_names_)) def __setattr__(cls, name, value): - """Block attempts to reassign Enum members. + """ + Block attempts to reassign Enum members. A simple assignment to the class namespace only changes one of the several possible ways to get an Enum member from the Enum class, resulting in an inconsistent Enumeration. - """ member_map = cls.__dict__.get('_member_map_', {}) if name in member_map: @@ -391,7 +428,8 @@ def __setattr__(cls, name, value): super().__setattr__(name, value) def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, start=1): - """Convenience method to create a new Enum class. + """ + Convenience method to create a new Enum class. `names` can be: @@ -400,7 +438,6 @@ def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, s * An iterable of member names. Values are incremented by 1 from `start`. * An iterable of (member name, value) pairs. * A mapping of member name -> value pairs. - """ metacls = cls.__class__ bases = (cls, ) if type is None else (type, cls) @@ -487,15 +524,18 @@ def _check_for_existing_members(class_name, bases): for chain in bases: for base in chain.__mro__: if issubclass(base, Enum) and base._member_names_: - raise TypeError("%s: cannot extend enumeration %r" % (class_name, base.__name__)) + raise TypeError( + "%s: cannot extend enumeration %r" + % (class_name, base.__name__) + ) @staticmethod def _get_mixins_(class_name, bases): - """Returns the type for creating enum members, and the first inherited + """ + Returns the type for creating enum members, and the first inherited enum class. bases: the tuple of bases that was given to __new__ - """ if not bases: return object, Enum @@ -538,12 +578,12 @@ def _find_data_type(bases): @staticmethod def _find_new_(classdict, member_type, first_enum): - """Returns the __new__ to be used for creating the enum members. + """ + Returns the __new__ to be used for creating the enum members. classdict: the class dictionary given to __new__ member_type: the data type whose __new__ will be used by default first_enum: enumeration to check for an overriding __new__ - """ # now find the correct __new__, checking to see of one was defined # by the user; also check earlier enum classes in case a __new__ was @@ -583,10 +623,10 @@ def _find_new_(classdict, member_type, first_enum): class Enum(metaclass=EnumMeta): - """Generic enumeration. + """ + Generic enumeration. Derive from this class to define new enumerations. - """ def __new__(cls, value): # all enum instances are actually created during class construction @@ -629,6 +669,14 @@ def __new__(cls, value): raise exc def _generate_next_value_(name, start, count, last_values): + """ + Generate the next value when not given. + + name: the name of the member + start: the initial start value or None + count: the number of existing members + last_value: the last value assigned or None + """ for last_value in reversed(last_values): try: return last_value + 1 @@ -649,6 +697,9 @@ def __str__(self): return "%s.%s" % (self.__class__.__name__, self._name_) def __dir__(self): + """ + Returns all members and all public methods + """ added_behavior = [ m for cls in self.__class__.mro() @@ -658,6 +709,9 @@ def __dir__(self): return (['__class__', '__doc__', '__module__'] + added_behavior) def __format__(self, format_spec): + """ + Returns format using actual value type unless __str__ has been overridden. + """ # mixed-in Enums should use the mixed-in type's __format__, otherwise # we can get strange results with the Enum name showing up instead of # the value @@ -705,7 +759,9 @@ def _reduce_ex_by_name(self, proto): return self.name class Flag(Enum): - """Support for flags""" + """ + Support for flags + """ def _generate_next_value_(name, start, count, last_values): """ @@ -728,6 +784,9 @@ def _generate_next_value_(name, start, count, last_values): @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ original_value = value if value < 0: value = ~value @@ -757,6 +816,9 @@ def _create_pseudo_member_(cls, value): return pseudo_member def __contains__(self, other): + """ + Returns True if self has at least the same flags set as other. + """ if not isinstance(other, self.__class__): raise TypeError( "unsupported operand type(s) for 'in': '%s' and '%s'" % ( @@ -815,10 +877,15 @@ def __invert__(self): class IntFlag(int, Flag): - """Support for integer-based Flags""" + """ + Support for integer-based Flags + """ @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ if not isinstance(value, int): raise ValueError("%r is not a valid %s" % (value, cls.__name__)) new_member = cls._create_pseudo_member_(value) @@ -826,6 +893,9 @@ def _missing_(cls, value): @classmethod def _create_pseudo_member_(cls, value): + """ + Create a composite member iff value contains only members. + """ pseudo_member = cls._value2member_map_.get(value, None) if pseudo_member is None: need_to_create = [value] @@ -880,11 +950,15 @@ def __invert__(self): def _high_bit(value): - """returns index of highest bit, or -1 if value is zero or negative""" + """ + returns index of highest bit, or -1 if value is zero or negative + """ return value.bit_length() - 1 def unique(enumeration): - """Class decorator for enumerations ensuring unique member values.""" + """ + Class decorator for enumerations ensuring unique member values. + """ duplicates = [] for name, member in enumeration.__members__.items(): if name != member.name: @@ -897,7 +971,9 @@ def unique(enumeration): return enumeration def _decompose(flag, value): - """Extract all members from the value.""" + """ + Extract all members from the value. + """ # _decompose is only called if the value is not named not_covered = value negative = value < 0 diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 484a2de6a9a6e..3c5a6ae5b4807 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -417,7 +417,6 @@ def red(self): green = 2 blue = 3 - def test_enum_with_value_name(self): class Huh(Enum): name = 1 From webhook-mailer at python.org Tue Dec 8 17:29:12 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 08 Dec 2020 22:29:12 -0000 Subject: [Python-checkins] [3.9] [Enum] reformat and add doc strings (GH-23705). (GH-23707) Message-ID: https://github.com/python/cpython/commit/4b37228823fecb73fe70dc009e696a7805b0833f commit: 4b37228823fecb73fe70dc009e696a7805b0833f branch: 3.9 author: Ethan Furman committer: ethanfurman date: 2020-12-08T14:29:02-08:00 summary: [3.9] [Enum] reformat and add doc strings (GH-23705). (GH-23707) * [3.9] [Enum] reformat and add doc strings (GH-23705). files: M Lib/enum.py diff --git a/Lib/enum.py b/Lib/enum.py index c277309881eb0..b14da088f33bf 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -10,31 +10,41 @@ def _is_descriptor(obj): - """Returns True if obj is a descriptor, False otherwise.""" + """ + Returns True if obj is a descriptor, False otherwise. + """ return ( hasattr(obj, '__get__') or hasattr(obj, '__set__') or - hasattr(obj, '__delete__')) - + hasattr(obj, '__delete__') + ) def _is_dunder(name): - """Returns True if a __dunder__ name, False otherwise.""" - return (len(name) > 4 and + """ + Returns True if a __dunder__ name, False otherwise. + """ + return ( + len(name) > 4 and name[:2] == name[-2:] == '__' and name[2] != '_' and - name[-3] != '_') - + name[-3] != '_' + ) def _is_sunder(name): - """Returns True if a _sunder_ name, False otherwise.""" - return (len(name) > 2 and + """ + Returns True if a _sunder_ name, False otherwise. + """ + return ( + len(name) > 2 and name[0] == name[-1] == '_' and name[1:2] != '_' and - name[-2:-1] != '_') - + name[-2:-1] != '_' + ) def _make_class_unpicklable(cls): - """Make the given class un-picklable.""" + """ + Make the given class un-picklable. + """ def _break_on_call_reduce(self, proto): raise TypeError('%r cannot be pickled' % self) cls.__reduce_ex__ = _break_on_call_reduce @@ -49,11 +59,11 @@ class auto: class _EnumDict(dict): - """Track enum member order and ensure member names are not reused. + """ + Track enum member order and ensure member names are not reused. EnumMeta will use the names found in self._member_names as the enumeration member names. - """ def __init__(self): super().__init__() @@ -63,13 +73,13 @@ def __init__(self): self._auto_called = False def __setitem__(self, key, value): - """Changes anything not dundered or not a descriptor. + """ + Changes anything not dundered or not a descriptor. If an enum member name is used twice, an error is raised; duplicate values are not checked for. Single underscore (sunder) names are reserved. - """ if _is_sunder(key): if key not in ( @@ -90,7 +100,10 @@ def __setitem__(self, key, value): self._ignore = value already = set(value) & set(self._member_names) if already: - raise ValueError('_ignore_ cannot specify already set names: %r' % (already, )) + raise ValueError( + '_ignore_ cannot specify already set names: %r' + % (already, ) + ) elif _is_dunder(key): if key == '__order__': key = '_order_' @@ -105,7 +118,12 @@ def __setitem__(self, key, value): raise TypeError('%r already defined as: %r' % (key, self[key])) if isinstance(value, auto): if value.value == _auto_null: - value.value = self._generate_next_value(key, 1, len(self._member_names), self._last_values[:]) + value.value = self._generate_next_value( + key, + 1, + len(self._member_names), + self._last_values[:], + ) self._auto_called = True value = value.value self._member_names.append(key) @@ -118,9 +136,10 @@ def __setitem__(self, key, value): # This is also why there are checks in EnumMeta like `if Enum is not None` Enum = None - class EnumMeta(type): - """Metaclass for Enum""" + """ + Metaclass for Enum + """ @classmethod def __prepare__(metacls, cls, bases): # check that previous enum members do not exist @@ -130,7 +149,9 @@ def __prepare__(metacls, cls, bases): # inherit previous flags and _generate_next_value_ function member_type, first_enum = metacls._get_mixins_(cls, bases) if first_enum is not None: - enum_dict['_generate_next_value_'] = getattr(first_enum, '_generate_next_value_', None) + enum_dict['_generate_next_value_'] = getattr( + first_enum, '_generate_next_value_', None, + ) return enum_dict def __new__(metacls, cls, bases, classdict): @@ -176,9 +197,11 @@ def __new__(metacls, cls, bases, classdict): # save DynamicClassAttribute attributes from super classes so we know # if we can take the shortcut of storing members in the class dict - dynamic_attributes = {k for c in enum_class.mro() - for k, v in c.__dict__.items() - if isinstance(v, DynamicClassAttribute)} + dynamic_attributes = { + k for c in enum_class.mro() + for k, v in c.__dict__.items() + if isinstance(v, DynamicClassAttribute) + } # Reverse value->name map for hashable values. enum_class._value2member_map_ = {} @@ -288,7 +311,8 @@ def __bool__(self): return True def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1): - """Either returns an existing member, or creates a new enum class. + """ + Either returns an existing member, or creates a new enum class. This method is used both when an enum class is given a value to match to an enumeration member (i.e. Color(3)) and for the functional API @@ -310,12 +334,18 @@ def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, s not correct, unpickling will fail in some circumstances. `type`, if set, will be mixed in as the first base class. - """ if names is None: # simple value lookup return cls.__new__(cls, value) # otherwise, functional API: we're creating a new Enum type - return cls._create_(value, names, module=module, qualname=qualname, type=type, start=start) + return cls._create_( + value, + names, + module=module, + qualname=qualname, + type=type, + start=start, + ) def __contains__(cls, member): if not isinstance(member, Enum): @@ -328,22 +358,23 @@ def __delattr__(cls, attr): # nicer error message when someone tries to delete an attribute # (see issue19025). if attr in cls._member_map_: - raise AttributeError( - "%s: cannot delete Enum member." % cls.__name__) + raise AttributeError("%s: cannot delete Enum member." % cls.__name__) super().__delattr__(attr) def __dir__(self): - return (['__class__', '__doc__', '__members__', '__module__'] + - self._member_names_) + return ( + ['__class__', '__doc__', '__members__', '__module__'] + + self._member_names_ + ) def __getattr__(cls, name): - """Return the enum member matching `name` + """ + Return the enum member matching `name` We use __getattr__ instead of descriptors or inserting into the enum class' __dict__ in order to support `name` and `value` being both properties for enum members (which live in the class' __dict__) and enum members themselves. - """ if _is_dunder(name): raise AttributeError(name) @@ -356,6 +387,9 @@ def __getitem__(cls, name): return cls._member_map_[name] def __iter__(cls): + """ + Returns members in definition order. + """ return (cls._member_map_[name] for name in cls._member_names_) def __len__(cls): @@ -363,11 +397,11 @@ def __len__(cls): @property def __members__(cls): - """Returns a mapping of member name->value. + """ + Returns a mapping of member name->value. This mapping lists all enum members, including aliases. Note that this is a read-only view of the internal mapping. - """ return MappingProxyType(cls._member_map_) @@ -375,15 +409,18 @@ def __repr__(cls): return "" % cls.__name__ def __reversed__(cls): + """ + Returns members in reverse definition order. + """ return (cls._member_map_[name] for name in reversed(cls._member_names_)) def __setattr__(cls, name, value): - """Block attempts to reassign Enum members. + """ + Block attempts to reassign Enum members. A simple assignment to the class namespace only changes one of the several possible ways to get an Enum member from the Enum class, resulting in an inconsistent Enumeration. - """ member_map = cls.__dict__.get('_member_map_', {}) if name in member_map: @@ -391,7 +428,8 @@ def __setattr__(cls, name, value): super().__setattr__(name, value) def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, start=1): - """Convenience method to create a new Enum class. + """ + Convenience method to create a new Enum class. `names` can be: @@ -400,7 +438,6 @@ def _create_(cls, class_name, names, *, module=None, qualname=None, type=None, s * An iterable of member names. Values are incremented by 1 from `start`. * An iterable of (member name, value) pairs. * A mapping of member name -> value pairs. - """ metacls = cls.__class__ bases = (cls, ) if type is None else (type, cls) @@ -481,15 +518,18 @@ def _check_for_existing_members(class_name, bases): for chain in bases: for base in chain.__mro__: if issubclass(base, Enum) and base._member_names_: - raise TypeError("%s: cannot extend enumeration %r" % (class_name, base.__name__)) + raise TypeError( + "%s: cannot extend enumeration %r" + % (class_name, base.__name__) + ) @staticmethod def _get_mixins_(class_name, bases): - """Returns the type for creating enum members, and the first inherited + """ + Returns the type for creating enum members, and the first inherited enum class. bases: the tuple of bases that was given to __new__ - """ if not bases: return object, Enum @@ -532,12 +572,12 @@ def _find_data_type(bases): @staticmethod def _find_new_(classdict, member_type, first_enum): - """Returns the __new__ to be used for creating the enum members. + """ + Returns the __new__ to be used for creating the enum members. classdict: the class dictionary given to __new__ member_type: the data type whose __new__ will be used by default first_enum: enumeration to check for an overriding __new__ - """ # now find the correct __new__, checking to see of one was defined # by the user; also check earlier enum classes in case a __new__ was @@ -577,10 +617,10 @@ def _find_new_(classdict, member_type, first_enum): class Enum(metaclass=EnumMeta): - """Generic enumeration. + """ + Generic enumeration. Derive from this class to define new enumerations. - """ def __new__(cls, value): # all enum instances are actually created during class construction @@ -623,6 +663,14 @@ def __new__(cls, value): raise exc def _generate_next_value_(name, start, count, last_values): + """ + Generate the next value when not given. + + name: the name of the member + start: the initial start value or None + count: the number of existing members + last_value: the last value assigned or None + """ for last_value in reversed(last_values): try: return last_value + 1 @@ -643,6 +691,9 @@ def __str__(self): return "%s.%s" % (self.__class__.__name__, self._name_) def __dir__(self): + """ + Returns all members and all public methods + """ added_behavior = [ m for cls in self.__class__.mro() @@ -652,6 +703,9 @@ def __dir__(self): return (['__class__', '__doc__', '__module__'] + added_behavior) def __format__(self, format_spec): + """ + Returns format using actual value type unless __str__ has been overridden. + """ # mixed-in Enums should use the mixed-in type's __format__, otherwise # we can get strange results with the Enum name showing up instead of # the value @@ -699,7 +753,9 @@ def _reduce_ex_by_name(self, proto): return self.name class Flag(Enum): - """Support for flags""" + """ + Support for flags + """ def _generate_next_value_(name, start, count, last_values): """ @@ -722,6 +778,9 @@ def _generate_next_value_(name, start, count, last_values): @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ original_value = value if value < 0: value = ~value @@ -751,6 +810,9 @@ def _create_pseudo_member_(cls, value): return pseudo_member def __contains__(self, other): + """ + Returns True if self has at least the same flags set as other. + """ if not isinstance(other, self.__class__): raise TypeError( "unsupported operand type(s) for 'in': '%s' and '%s'" % ( @@ -809,10 +871,15 @@ def __invert__(self): class IntFlag(int, Flag): - """Support for integer-based Flags""" + """ + Support for integer-based Flags + """ @classmethod def _missing_(cls, value): + """ + Returns member (possibly creating it) if one can be found for value. + """ if not isinstance(value, int): raise ValueError("%r is not a valid %s" % (value, cls.__qualname__)) new_member = cls._create_pseudo_member_(value) @@ -820,6 +887,9 @@ def _missing_(cls, value): @classmethod def _create_pseudo_member_(cls, value): + """ + Create a composite member iff value contains only members. + """ pseudo_member = cls._value2member_map_.get(value, None) if pseudo_member is None: need_to_create = [value] @@ -874,11 +944,15 @@ def __invert__(self): def _high_bit(value): - """returns index of highest bit, or -1 if value is zero or negative""" + """ + returns index of highest bit, or -1 if value is zero or negative + """ return value.bit_length() - 1 def unique(enumeration): - """Class decorator for enumerations ensuring unique member values.""" + """ + Class decorator for enumerations ensuring unique member values. + """ duplicates = [] for name, member in enumeration.__members__.items(): if name != member.name: @@ -891,7 +965,9 @@ def unique(enumeration): return enumeration def _decompose(flag, value): - """Extract all members from the value.""" + """ + Extract all members from the value. + """ # _decompose is only called if the value is not named not_covered = value negative = value < 0 From webhook-mailer at python.org Tue Dec 8 17:51:35 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 22:51:35 -0000 Subject: [Python-checkins] bpo-32381: Rewrite PyErr_ProgramText() (GH-23700) Message-ID: https://github.com/python/cpython/commit/815506d852daabc40e14ff0987c1142c0205fbe7 commit: 815506d852daabc40e14ff0987c1142c0205fbe7 branch: master author: Victor Stinner committer: vstinner date: 2020-12-08T23:51:26+01:00 summary: bpo-32381: Rewrite PyErr_ProgramText() (GH-23700) PyErr_ProgramText() now calls PyErr_ProgramTextObject(). files: M Python/errors.c diff --git a/Python/errors.c b/Python/errors.c index 213108f681bb7..9bac7ba70f5d5 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -1697,13 +1697,18 @@ err_programtext(PyThreadState *tstate, FILE *fp, int lineno) PyObject * PyErr_ProgramText(const char *filename, int lineno) { - FILE *fp; - if (filename == NULL || *filename == '\0' || lineno <= 0) { + if (filename == NULL) { return NULL; } - PyThreadState *tstate = _PyThreadState_GET(); - fp = _Py_fopen(filename, "r" PY_STDIOTEXTMODE); - return err_programtext(tstate, fp, lineno); + + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + PyErr_Clear(); + return NULL; + } + PyObject *res = PyErr_ProgramTextObject(filename_obj, lineno); + Py_DECREF(filename_obj); + return res; } PyObject * From webhook-mailer at python.org Tue Dec 8 17:51:58 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 22:51:58 -0000 Subject: [Python-checkins] bpo-35134: Add Include/cpython/pythonrun.h file (GH-23701) Message-ID: https://github.com/python/cpython/commit/fe6e5e7cfd68eeaa69fd1511f354a1b4d8d90990 commit: fe6e5e7cfd68eeaa69fd1511f354a1b4d8d90990 branch: master author: Victor Stinner committer: vstinner date: 2020-12-08T23:51:54+01:00 summary: bpo-35134: Add Include/cpython/pythonrun.h file (GH-23701) Py_CompileString() is now always declared as a function by Include/pythonrun.h. It is overriden with a macro in Include/cpython/pythonrun.h. files: A Include/cpython/pythonrun.h M Include/pythonrun.h M Makefile.pre.in M PCbuild/pythoncore.vcxproj M PCbuild/pythoncore.vcxproj.filters diff --git a/Include/cpython/pythonrun.h b/Include/cpython/pythonrun.h new file mode 100644 index 0000000000000..4945d924558cf --- /dev/null +++ b/Include/cpython/pythonrun.h @@ -0,0 +1,117 @@ +#ifndef Py_CPYTHON_PYTHONRUN_H +# error "this header file must not be included directly" +#endif + +PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); +PyAPI_FUNC(int) PyRun_AnyFileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int closeit, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_SimpleFileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int closeit, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveOneFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveOneObject( + FILE *fp, + PyObject *filename, + PyCompilerFlags *flags); +PyAPI_FUNC(int) PyRun_InteractiveLoopFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + PyCompilerFlags *flags); + + +PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *, + PyObject *, PyCompilerFlags *); + +PyAPI_FUNC(PyObject *) PyRun_FileExFlags( + FILE *fp, + const char *filename, /* decoded from the filesystem encoding */ + int start, + PyObject *globals, + PyObject *locals, + int closeit, + PyCompilerFlags *flags); + + +PyAPI_FUNC(PyObject *) Py_CompileStringExFlags( + const char *str, + const char *filename, /* decoded from the filesystem encoding */ + int start, + PyCompilerFlags *flags, + int optimize); +PyAPI_FUNC(PyObject *) Py_CompileStringObject( + const char *str, + PyObject *filename, int start, + PyCompilerFlags *flags, + int optimize); + +#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1) +#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1) + + +PyAPI_FUNC(const char *) _Py_SourceAsString( + PyObject *cmd, + const char *funcname, + const char *what, + PyCompilerFlags *cf, + PyObject **cmd_copy); + +PyAPI_FUNC(struct symtable *) Py_SymtableStringObject( + const char *str, + PyObject *filename, + int start); + +PyAPI_FUNC(struct symtable *) _Py_SymtableStringObjectFlags( + const char *str, + PyObject *filename, + int start, + PyCompilerFlags *flags); + + +/* A function flavor is also exported by libpython. It is required when + libpython is accessed directly rather than using header files which defines + macros below. On Windows, for example, PyAPI_FUNC() uses dllexport to + export functions in pythonXX.dll. */ +PyAPI_FUNC(PyObject *) PyRun_String(const char *str, int s, PyObject *g, PyObject *l); +PyAPI_FUNC(int) PyRun_AnyFile(FILE *fp, const char *name); +PyAPI_FUNC(int) PyRun_AnyFileEx(FILE *fp, const char *name, int closeit); +PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *); +PyAPI_FUNC(int) PyRun_SimpleString(const char *s); +PyAPI_FUNC(int) PyRun_SimpleFile(FILE *f, const char *p); +PyAPI_FUNC(int) PyRun_SimpleFileEx(FILE *f, const char *p, int c); +PyAPI_FUNC(int) PyRun_InteractiveOne(FILE *f, const char *p); +PyAPI_FUNC(int) PyRun_InteractiveLoop(FILE *f, const char *p); +PyAPI_FUNC(PyObject *) PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l); +PyAPI_FUNC(PyObject *) PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c); +PyAPI_FUNC(PyObject *) PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, PyCompilerFlags *flags); + +/* Use macros for a bunch of old variants */ +#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL) +#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL) +#define PyRun_AnyFileEx(fp, name, closeit) \ + PyRun_AnyFileExFlags(fp, name, closeit, NULL) +#define PyRun_AnyFileFlags(fp, name, flags) \ + PyRun_AnyFileExFlags(fp, name, 0, flags) +#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL) +#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL) +#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL) +#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL) +#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL) +#define PyRun_File(fp, p, s, g, l) \ + PyRun_FileExFlags(fp, p, s, g, l, 0, NULL) +#define PyRun_FileEx(fp, p, s, g, l, c) \ + PyRun_FileExFlags(fp, p, s, g, l, c, NULL) +#define PyRun_FileFlags(fp, p, s, g, l, flags) \ + PyRun_FileExFlags(fp, p, s, g, l, 0, flags) + + +/* Stuff with no proper home (yet) */ +PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *); +PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState; diff --git a/Include/pythonrun.h b/Include/pythonrun.h index d43734b5a12ff..cc6c745a4d33d 100644 --- a/Include/pythonrun.h +++ b/Include/pythonrun.h @@ -7,137 +7,21 @@ extern "C" { #endif -#ifndef Py_LIMITED_API -PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); -PyAPI_FUNC(int) PyRun_AnyFileExFlags( - FILE *fp, - const char *filename, /* decoded from the filesystem encoding */ - int closeit, - PyCompilerFlags *flags); -PyAPI_FUNC(int) PyRun_SimpleFileExFlags( - FILE *fp, - const char *filename, /* decoded from the filesystem encoding */ - int closeit, - PyCompilerFlags *flags); -PyAPI_FUNC(int) PyRun_InteractiveOneFlags( - FILE *fp, - const char *filename, /* decoded from the filesystem encoding */ - PyCompilerFlags *flags); -PyAPI_FUNC(int) PyRun_InteractiveOneObject( - FILE *fp, - PyObject *filename, - PyCompilerFlags *flags); -PyAPI_FUNC(int) PyRun_InteractiveLoopFlags( - FILE *fp, - const char *filename, /* decoded from the filesystem encoding */ - PyCompilerFlags *flags); - - -PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *, - PyObject *, PyCompilerFlags *); - -PyAPI_FUNC(PyObject *) PyRun_FileExFlags( - FILE *fp, - const char *filename, /* decoded from the filesystem encoding */ - int start, - PyObject *globals, - PyObject *locals, - int closeit, - PyCompilerFlags *flags); -#endif - -#ifdef Py_LIMITED_API PyAPI_FUNC(PyObject *) Py_CompileString(const char *, const char *, int); -#else -#define Py_CompileString(str, p, s) Py_CompileStringExFlags(str, p, s, NULL, -1) -#define Py_CompileStringFlags(str, p, s, f) Py_CompileStringExFlags(str, p, s, f, -1) -PyAPI_FUNC(PyObject *) Py_CompileStringExFlags( - const char *str, - const char *filename, /* decoded from the filesystem encoding */ - int start, - PyCompilerFlags *flags, - int optimize); -PyAPI_FUNC(PyObject *) Py_CompileStringObject( - const char *str, - PyObject *filename, int start, - PyCompilerFlags *flags, - int optimize); -#endif + PyAPI_FUNC(struct symtable *) Py_SymtableString( const char *str, const char *filename, /* decoded from the filesystem encoding */ int start); -#ifndef Py_LIMITED_API -PyAPI_FUNC(const char *) _Py_SourceAsString( - PyObject *cmd, - const char *funcname, - const char *what, - PyCompilerFlags *cf, - PyObject **cmd_copy); - -PyAPI_FUNC(struct symtable *) Py_SymtableStringObject( - const char *str, - PyObject *filename, - int start); - -PyAPI_FUNC(struct symtable *) _Py_SymtableStringObjectFlags( - const char *str, - PyObject *filename, - int start, - PyCompilerFlags *flags); -#endif PyAPI_FUNC(void) PyErr_Print(void); PyAPI_FUNC(void) PyErr_PrintEx(int); PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *); -#ifndef Py_LIMITED_API -/* A function flavor is also exported by libpython. It is required when - libpython is accessed directly rather than using header files which defines - macros below. On Windows, for example, PyAPI_FUNC() uses dllexport to - export functions in pythonXX.dll. */ -PyAPI_FUNC(PyObject *) PyRun_String(const char *str, int s, PyObject *g, PyObject *l); -PyAPI_FUNC(int) PyRun_AnyFile(FILE *fp, const char *name); -PyAPI_FUNC(int) PyRun_AnyFileEx(FILE *fp, const char *name, int closeit); -PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *); -PyAPI_FUNC(int) PyRun_SimpleString(const char *s); -PyAPI_FUNC(int) PyRun_SimpleFile(FILE *f, const char *p); -PyAPI_FUNC(int) PyRun_SimpleFileEx(FILE *f, const char *p, int c); -PyAPI_FUNC(int) PyRun_InteractiveOne(FILE *f, const char *p); -PyAPI_FUNC(int) PyRun_InteractiveLoop(FILE *f, const char *p); -PyAPI_FUNC(PyObject *) PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l); -PyAPI_FUNC(PyObject *) PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c); -PyAPI_FUNC(PyObject *) PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, PyCompilerFlags *flags); - -/* Use macros for a bunch of old variants */ -#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL) -#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL) -#define PyRun_AnyFileEx(fp, name, closeit) \ - PyRun_AnyFileExFlags(fp, name, closeit, NULL) -#define PyRun_AnyFileFlags(fp, name, flags) \ - PyRun_AnyFileExFlags(fp, name, 0, flags) -#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL) -#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL) -#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL) -#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL) -#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL) -#define PyRun_File(fp, p, s, g, l) \ - PyRun_FileExFlags(fp, p, s, g, l, 0, NULL) -#define PyRun_FileEx(fp, p, s, g, l, c) \ - PyRun_FileExFlags(fp, p, s, g, l, c, NULL) -#define PyRun_FileFlags(fp, p, s, g, l, flags) \ - PyRun_FileExFlags(fp, p, s, g, l, 0, flags) -#endif /* Stuff with no proper home (yet) */ -#ifndef Py_LIMITED_API -PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *); -#endif PyAPI_DATA(int) (*PyOS_InputHook)(void); PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *); -#ifndef Py_LIMITED_API -PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState; -#endif /* Stack size, in "pointers" (so we get extra safety margins on 64-bit platforms). On a 32-bit platform, this translates @@ -154,6 +38,12 @@ PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState; PyAPI_FUNC(int) PyOS_CheckStack(void); #endif +#ifndef Py_LIMITED_API +# define Py_CPYTHON_PYTHONRUN_H +# include "cpython/pythonrun.h" +# undef Py_CPYTHON_PYTHONRUN_H +#endif + #ifdef __cplusplus } #endif diff --git a/Makefile.pre.in b/Makefile.pre.in index f52a0f3cdf0d6..69ed251936a60 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1102,6 +1102,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/cpython/pylifecycle.h \ $(srcdir)/Include/cpython/pymem.h \ $(srcdir)/Include/cpython/pystate.h \ + $(srcdir)/Include/cpython/pythonrun.h \ $(srcdir)/Include/cpython/sysmodule.h \ $(srcdir)/Include/cpython/traceback.h \ $(srcdir)/Include/cpython/tupleobject.h \ diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index cf78714920b05..bbceb025c0c22 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -146,6 +146,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index ba84ab902b687..ee1aa90bf7688 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -459,6 +459,9 @@ Include\cpython + + Include\cpython + Include\cpython From webhook-mailer at python.org Tue Dec 8 18:18:46 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 23:18:46 -0000 Subject: [Python-checkins] bpo-41443: Add more attribute checking in test_posix (GH-21688) Message-ID: https://github.com/python/cpython/commit/eb7594f85741ef809b1ee337ee3431df20e6f8bb commit: eb7594f85741ef809b1ee337ee3431df20e6f8bb branch: master author: pxinwr committer: vstinner date: 2020-12-09T00:18:37+01:00 summary: bpo-41443: Add more attribute checking in test_posix (GH-21688) files: A Misc/NEWS.d/next/Tests/2020-07-30-18-43-05.bpo-41443.834gyg.rst M Lib/test/test_posix.py diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index d4d348cdc02d0..185b293b07046 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1094,7 +1094,8 @@ def test_chmod_dir_fd(self): finally: posix.close(f) - @unittest.skipUnless(os.chown in os.supports_dir_fd, "test needs dir_fd support in os.chown()") + @unittest.skipUnless(hasattr(os, 'chown') and (os.chown in os.supports_dir_fd), + "test needs dir_fd support in os.chown()") def test_chown_dir_fd(self): os_helper.unlink(os_helper.TESTFN) os_helper.create_empty_file(os_helper.TESTFN) @@ -1189,7 +1190,9 @@ def test_mkdir_dir_fd(self): posix.close(f) os_helper.rmtree(os_helper.TESTFN + 'dir') - @unittest.skipUnless((os.mknod in os.supports_dir_fd) and hasattr(stat, 'S_IFIFO'), + @unittest.skipUnless(hasattr(os, 'mknod') + and (os.mknod in os.supports_dir_fd) + and hasattr(stat, 'S_IFIFO'), "test requires both stat.S_IFIFO and dir_fd support for os.mknod()") def test_mknod_dir_fd(self): # Test using mknodat() to create a FIFO (the only use specified @@ -1222,7 +1225,8 @@ def test_open_dir_fd(self): posix.close(a) posix.close(b) - @unittest.skipUnless(os.readlink in os.supports_dir_fd, "test needs dir_fd support in os.readlink()") + @unittest.skipUnless(hasattr(os, 'readlink') and (os.readlink in os.supports_dir_fd), + "test needs dir_fd support in os.readlink()") def test_readlink_dir_fd(self): os.symlink(os_helper.TESTFN, os_helper.TESTFN + 'link') f = posix.open(posix.getcwd(), posix.O_RDONLY) diff --git a/Misc/NEWS.d/next/Tests/2020-07-30-18-43-05.bpo-41443.834gyg.rst b/Misc/NEWS.d/next/Tests/2020-07-30-18-43-05.bpo-41443.834gyg.rst new file mode 100644 index 0000000000000..439f3e3647015 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-07-30-18-43-05.bpo-41443.834gyg.rst @@ -0,0 +1 @@ +Add more attribute checking in test_posix.py From webhook-mailer at python.org Tue Dec 8 18:20:23 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 23:20:23 -0000 Subject: [Python-checkins] bpo-41439: Skip test_ssl and test_uuid tests if fork() is not supported (GH-21684) Message-ID: https://github.com/python/cpython/commit/98a54171932584883cb3973f78dd30f92d7a3a78 commit: 98a54171932584883cb3973f78dd30f92d7a3a78 branch: master author: pxinwr committer: vstinner date: 2020-12-09T00:20:19+01:00 summary: bpo-41439: Skip test_ssl and test_uuid tests if fork() is not supported (GH-21684) files: A Misc/NEWS.d/next/Tests/2020-07-30-14-08-58.bpo-41439.yhteoi.rst M Lib/test/test_ssl.py M Lib/test/test_uuid.py diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index e5cd962e84710..67850c34e00c2 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -391,7 +391,7 @@ def test_random(self): ssl.RAND_add(b"this is a random bytes object", 75.0) ssl.RAND_add(bytearray(b"this is a random bytearray object"), 75.0) - @unittest.skipUnless(os.name == 'posix', 'requires posix') + @unittest.skipUnless(hasattr(os, 'fork'), 'need os.fork') def test_random_fork(self): status = ssl.RAND_status() if not status: diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py old mode 100644 new mode 100755 index 718113d6e1bb2..d6a8333427a4a --- a/Lib/test/test_uuid.py +++ b/Lib/test/test_uuid.py @@ -639,7 +639,7 @@ def test_uuid5(self): equal(u, self.uuid.UUID(v)) equal(str(u), v) - @unittest.skipUnless(os.name == 'posix', 'requires Posix') + @unittest.skipUnless(hasattr(os, 'fork'), 'need os.fork') def testIssue8621(self): # On at least some versions of OSX self.uuid.uuid4 generates # the same sequence of UUIDs in the parent and any diff --git a/Misc/NEWS.d/next/Tests/2020-07-30-14-08-58.bpo-41439.yhteoi.rst b/Misc/NEWS.d/next/Tests/2020-07-30-14-08-58.bpo-41439.yhteoi.rst new file mode 100644 index 0000000000000..0451503a52e93 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-07-30-14-08-58.bpo-41439.yhteoi.rst @@ -0,0 +1 @@ +Port test_ssl and test_uuid to VxWorks RTOS. From webhook-mailer at python.org Tue Dec 8 18:33:03 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 08 Dec 2020 23:33:03 -0000 Subject: [Python-checkins] bpo-32381: Add _PyRun_SimpleFileObject() (GH-23709) Message-ID: https://github.com/python/cpython/commit/550e4673be538d98b6ddf5550b3922539cf5c4b2 commit: 550e4673be538d98b6ddf5550b3922539cf5c4b2 branch: master author: Victor Stinner committer: vstinner date: 2020-12-09T00:32:54+01:00 summary: bpo-32381: Add _PyRun_SimpleFileObject() (GH-23709) pymain_run_startup() now pass the filename as a Python object to _PyRun_SimpleFileObject(). files: M Include/cpython/pythonrun.h M Modules/main.c M Python/pythonrun.c diff --git a/Include/cpython/pythonrun.h b/Include/cpython/pythonrun.h index 4945d924558cf..febda73f3ec6c 100644 --- a/Include/cpython/pythonrun.h +++ b/Include/cpython/pythonrun.h @@ -3,6 +3,11 @@ #endif PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); +PyAPI_FUNC(int) _PyRun_SimpleFileObject( + FILE *fp, + PyObject *filename, + int closeit, + PyCompilerFlags *flags); PyAPI_FUNC(int) PyRun_AnyFileExFlags( FILE *fp, const char *filename, /* decoded from the filesystem encoding */ diff --git a/Modules/main.c b/Modules/main.c index 2cc891f61aadd..3aa4d91c9a3cd 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -380,64 +380,51 @@ static int pymain_run_startup(PyConfig *config, PyCompilerFlags *cf, int *exitcode) { int ret; - PyObject *startup_obj = NULL; if (!config->use_environment) { return 0; } + PyObject *startup = NULL; #ifdef MS_WINDOWS - const wchar_t *wstartup = _wgetenv(L"PYTHONSTARTUP"); - if (wstartup == NULL || wstartup[0] == L'\0') { + const wchar_t *env = _wgetenv(L"PYTHONSTARTUP"); + if (env == NULL || env[0] == L'\0') { return 0; } - PyObject *startup_bytes = NULL; - startup_obj = PyUnicode_FromWideChar(wstartup, wcslen(wstartup)); - if (startup_obj == NULL) { - goto error; - } - startup_bytes = PyUnicode_EncodeFSDefault(startup_obj); - if (startup_bytes == NULL) { + startup = PyUnicode_FromWideChar(env, wcslen(env)); + if (startup == NULL) { goto error; } - const char *startup = PyBytes_AS_STRING(startup_bytes); #else - const char *startup = _Py_GetEnv(config->use_environment, "PYTHONSTARTUP"); - if (startup == NULL) { + const char *env = _Py_GetEnv(config->use_environment, "PYTHONSTARTUP"); + if (env == NULL) { return 0; } - startup_obj = PyUnicode_DecodeFSDefault(startup); - if (startup_obj == NULL) { + startup = PyUnicode_DecodeFSDefault(env); + if (startup == NULL) { goto error; } #endif - if (PySys_Audit("cpython.run_startup", "O", startup_obj) < 0) { + if (PySys_Audit("cpython.run_startup", "O", startup) < 0) { goto error; } -#ifdef MS_WINDOWS - FILE *fp = _Py_wfopen(wstartup, L"r"); -#else - FILE *fp = _Py_fopen(startup, "r"); -#endif + FILE *fp = _Py_fopen_obj(startup, "r"); if (fp == NULL) { int save_errno = errno; PyErr_Clear(); PySys_WriteStderr("Could not open PYTHONSTARTUP\n"); errno = save_errno; - PyErr_SetFromErrnoWithFilenameObjects(PyExc_OSError, startup_obj, NULL); + PyErr_SetFromErrnoWithFilenameObjects(PyExc_OSError, startup, NULL); goto error; } - (void) PyRun_SimpleFileExFlags(fp, startup, 0, cf); + (void) _PyRun_SimpleFileObject(fp, startup, 0, cf); PyErr_Clear(); fclose(fp); ret = 0; done: -#ifdef MS_WINDOWS - Py_XDECREF(startup_bytes); -#endif - Py_XDECREF(startup_obj); + Py_XDECREF(startup); return ret; error: diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 330b822d707c6..15e407d9195c0 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -350,9 +350,9 @@ set_main_loader(PyObject *d, PyObject *filename, const char *loader_name) } -static int -pyrun_simple_file(FILE *fp, PyObject *filename, int closeit, - PyCompilerFlags *flags) +int +_PyRun_SimpleFileObject(FILE *fp, PyObject *filename, int closeit, + PyCompilerFlags *flags) { PyObject *m, *d, *v; int set_file_name = 0, ret = -1; @@ -441,7 +441,7 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, if (filename_obj == NULL) { return -1; } - int res = pyrun_simple_file(fp, filename_obj, closeit, flags); + int res = _PyRun_SimpleFileObject(fp, filename_obj, closeit, flags); Py_DECREF(filename_obj); return res; } From webhook-mailer at python.org Wed Dec 9 14:25:16 2020 From: webhook-mailer at python.org (ethanfurman) Date: Wed, 09 Dec 2020 19:25:16 -0000 Subject: [Python-checkins] bpo-40084: [Enum] dir() includes member attributes (GH-19219) (GH-22853) Message-ID: https://github.com/python/cpython/commit/f6d1520219899874d78e7710934c9b21af880f9a commit: f6d1520219899874d78e7710934c9b21af880f9a branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-09T11:25:06-08:00 summary: bpo-40084: [Enum] dir() includes member attributes (GH-19219) (GH-22853) (cherry picked from commit 68526fe258da8c01196fd7cf48e8e5f1280bf8fd) Co-authored-by: Angelin BOOZ <9497359+lem2clide at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst M Lib/enum.py M Lib/test/test_enum.py M Lib/test/test_httplib.py M Misc/ACKS diff --git a/Lib/enum.py b/Lib/enum.py index 4075114efb0e4..31afdd3a24f7b 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -705,7 +705,7 @@ def __dir__(self): for cls in self.__class__.mro() for m in cls.__dict__ if m[0] != '_' and m not in self._member_map_ - ] + ] + [m for m in self.__dict__ if m[0] != '_'] return (['__class__', '__doc__', '__module__'] + added_behavior) def __format__(self, format_spec): diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 3c5a6ae5b4807..b5e4009bb0680 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -214,6 +214,18 @@ class SubEnum(SuperEnum): set(['__class__', '__doc__', '__module__', 'name', 'value', 'invisible']), ) + def test_dir_on_sub_with_behavior_including_instance_dict_on_super(self): + # see issue40084 + class SuperEnum(IntEnum): + def __new__(cls, value, description=""): + obj = int.__new__(cls, value) + obj._value_ = value + obj.description = description + return obj + class SubEnum(SuperEnum): + sample = 5 + self.assertTrue({'description'} <= set(dir(SubEnum.sample))) + def test_enum_in_enum_out(self): Season = self.Season self.assertIs(Season(Season.WINTER), Season.WINTER) diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 5a5fcecbc9c15..3e423fd4e80bc 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1,5 +1,5 @@ import errno -from http import client +from http import client, HTTPStatus import io import itertools import os @@ -515,6 +515,10 @@ def _parse_chunked(self, data): class BasicTest(TestCase): + def test_dir_with_added_behavior_on_status(self): + # see issue40084 + self.assertTrue({'description', 'name', 'phrase', 'value'} <= set(dir(HTTPStatus(404)))) + def test_status_lines(self): # Test HTTP status lines diff --git a/Misc/ACKS b/Misc/ACKS index d44c794e425e0..8afc0a8e46d57 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -187,6 +187,7 @@ Gawain Bolton Carl Friedrich Bolz-Tereick Forest Bond Gregory Bond +Angelin Booz M?d?ric Boquien Matias Bordese Jonas Borgstr?m diff --git a/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst b/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst new file mode 100644 index 0000000000000..65ff4ce36e82e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst @@ -0,0 +1 @@ +Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes as well as methods. From webhook-mailer at python.org Wed Dec 9 14:54:41 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 09 Dec 2020 19:54:41 -0000 Subject: [Python-checkins] bpo-32381: Remove unused _Py_fopen() function (GH-23711) Message-ID: https://github.com/python/cpython/commit/ca064402079f889226cb107b26b329891431c319 commit: ca064402079f889226cb107b26b329891431c319 branch: master author: Victor Stinner committer: vstinner date: 2020-12-09T20:54:31+01:00 summary: bpo-32381: Remove unused _Py_fopen() function (GH-23711) Remove the private _Py_fopen() function which is no longer needed. Use _Py_wfopen() or _Py_fopen_obj() instead. files: A Misc/NEWS.d/next/C API/2020-12-09-00-35-25.bpo-32381.Je08Ny.rst M Include/cpython/fileutils.h M Python/fileutils.c diff --git a/Include/cpython/fileutils.h b/Include/cpython/fileutils.h index e79d03e24f577..312fd95828478 100644 --- a/Include/cpython/fileutils.h +++ b/Include/cpython/fileutils.h @@ -95,10 +95,6 @@ PyAPI_FUNC(FILE *) _Py_wfopen( const wchar_t *path, const wchar_t *mode); -PyAPI_FUNC(FILE*) _Py_fopen( - const char *pathname, - const char *mode); - PyAPI_FUNC(FILE*) _Py_fopen_obj( PyObject *path, const char *mode); diff --git a/Misc/NEWS.d/next/C API/2020-12-09-00-35-25.bpo-32381.Je08Ny.rst b/Misc/NEWS.d/next/C API/2020-12-09-00-35-25.bpo-32381.Je08Ny.rst new file mode 100644 index 0000000000000..ded75fa54a42f --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-12-09-00-35-25.bpo-32381.Je08Ny.rst @@ -0,0 +1,3 @@ +Remove the private :c:func:`_Py_fopen` function which is no longer needed. +Use :c:func:`_Py_wfopen` or :c:func:`_Py_fopen_obj` instead. Patch by Victor +Stinner. diff --git a/Python/fileutils.c b/Python/fileutils.c index ac38282117421..8dc90fbe2b2e7 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -1455,33 +1455,6 @@ _Py_wfopen(const wchar_t *path, const wchar_t *mode) return f; } -/* Wrapper to fopen(). - - The file descriptor is created non-inheritable. - - If interrupted by a signal, fail with EINTR. */ -FILE* -_Py_fopen(const char *pathname, const char *mode) -{ - PyObject *pathname_obj = PyUnicode_DecodeFSDefault(pathname); - if (pathname_obj == NULL) { - return NULL; - } - if (PySys_Audit("open", "Osi", pathname_obj, mode, 0) < 0) { - Py_DECREF(pathname_obj); - return NULL; - } - Py_DECREF(pathname_obj); - - FILE *f = fopen(pathname, mode); - if (f == NULL) - return NULL; - if (make_non_inheritable(fileno(f)) < 0) { - fclose(f); - return NULL; - } - return f; -} /* Open a file. Call _wfopen() on Windows, or encode the path to the filesystem encoding and call fopen() otherwise. From webhook-mailer at python.org Wed Dec 9 16:37:56 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 09 Dec 2020 21:37:56 -0000 Subject: [Python-checkins] bpo-32381: Add _PyRun_AnyFileObject() (GH-23723) Message-ID: https://github.com/python/cpython/commit/a82f63f5af027a0eab0f0812d750b804368cbd25 commit: a82f63f5af027a0eab0f0812d750b804368cbd25 branch: master author: Victor Stinner committer: vstinner date: 2020-12-09T22:37:27+01:00 summary: bpo-32381: Add _PyRun_AnyFileObject() (GH-23723) pymain_run_file() no longer encodes the filename: pass the filename as an object to the new _PyRun_AnyFileObject() function. Add new private functions: * _PyRun_AnyFileObject() * _PyRun_InteractiveLoopObject() * _Py_FdIsInteractive() files: M Include/cpython/pylifecycle.h M Include/cpython/pythonrun.h M Modules/main.c M Python/pylifecycle.c M Python/pythonrun.c diff --git a/Include/cpython/pylifecycle.h b/Include/cpython/pylifecycle.h index f38ec5a4ae399..b4e2c8a8427c8 100644 --- a/Include/cpython/pylifecycle.h +++ b/Include/cpython/pylifecycle.h @@ -44,6 +44,7 @@ PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *); PyAPI_FUNC(void) _Py_RestoreSignals(void); PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *); +PyAPI_FUNC(int) _Py_FdIsInteractive(FILE *fp, PyObject *filename); PyAPI_FUNC(void) _Py_SetProgramFullPath(const wchar_t *); diff --git a/Include/cpython/pythonrun.h b/Include/cpython/pythonrun.h index febda73f3ec6c..e396a674bc468 100644 --- a/Include/cpython/pythonrun.h +++ b/Include/cpython/pythonrun.h @@ -13,6 +13,11 @@ PyAPI_FUNC(int) PyRun_AnyFileExFlags( const char *filename, /* decoded from the filesystem encoding */ int closeit, PyCompilerFlags *flags); +PyAPI_FUNC(int) _PyRun_AnyFileObject( + FILE *fp, + PyObject *filename, + int closeit, + PyCompilerFlags *flags); PyAPI_FUNC(int) PyRun_SimpleFileExFlags( FILE *fp, const char *filename, /* decoded from the filesystem encoding */ @@ -30,6 +35,10 @@ PyAPI_FUNC(int) PyRun_InteractiveLoopFlags( FILE *fp, const char *filename, /* decoded from the filesystem encoding */ PyCompilerFlags *flags); +PyAPI_FUNC(int) _PyRun_InteractiveLoopObject( + FILE *fp, + PyObject *filename, + PyCompilerFlags *flags); PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *, diff --git a/Modules/main.c b/Modules/main.c index 3aa4d91c9a3cd..7ffcb07a7fd4b 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -313,17 +313,8 @@ pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) } FILE *fp = _Py_wfopen(filename, L"rb"); if (fp == NULL) { - char *cfilename_buffer; - const char *cfilename; - int err = errno; - cfilename_buffer = _Py_EncodeLocaleRaw(filename, NULL); - if (cfilename_buffer != NULL) - cfilename = cfilename_buffer; - else - cfilename = ""; - fprintf(stderr, "%ls: can't open file '%s': [Errno %d] %s\n", - config->program_name, cfilename, err, strerror(err)); - PyMem_RawFree(cfilename_buffer); + fprintf(stderr, "%ls: can't open file '%ls': [Errno %d] %s\n", + config->program_name, filename, errno, strerror(errno)); return 2; } @@ -353,25 +344,15 @@ pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) return pymain_exit_err_print(); } - PyObject *unicode, *bytes = NULL; - const char *filename_str; - - unicode = PyUnicode_FromWideChar(filename, wcslen(filename)); - if (unicode != NULL) { - bytes = PyUnicode_EncodeFSDefault(unicode); - Py_DECREF(unicode); - } - if (bytes != NULL) { - filename_str = PyBytes_AsString(bytes); - } - else { - PyErr_Clear(); - filename_str = ""; + PyObject *filename_obj = PyUnicode_FromWideChar(filename, -1); + if (filename_obj == NULL) { + PyErr_Print(); + return -1; } /* PyRun_AnyFileExFlags(closeit=1) calls fclose(fp) before running code */ - int run = PyRun_AnyFileExFlags(fp, filename_str, 1, cf); - Py_XDECREF(bytes); + int run = _PyRun_AnyFileObject(fp, filename_obj, 1, cf); + Py_XDECREF(filename_obj); return (run != 0); } diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 70824ff674129..6a705b4d2b4b9 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2739,6 +2739,21 @@ Py_FdIsInteractive(FILE *fp, const char *filename) } +int +_Py_FdIsInteractive(FILE *fp, PyObject *filename) +{ + if (isatty((int)fileno(fp))) { + return 1; + } + if (!Py_InteractiveFlag) { + return 0; + } + return (filename == NULL) || + (PyUnicode_CompareWithASCIIString(filename, "") == 0) || + (PyUnicode_CompareWithASCIIString(filename, "???") == 0); +} + + /* Wrappers around sigaction() or signal(). */ PyOS_sighandler_t diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 15e407d9195c0..dacf1a647106f 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -67,44 +67,69 @@ static PyObject* pyrun_file(FILE *fp, PyObject *filename, int start, PyCompilerFlags *flags); -/* Parse input from a file and execute it */ int -PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, +_PyRun_AnyFileObject(FILE *fp, PyObject *filename, int closeit, PyCompilerFlags *flags) { - if (filename == NULL) - filename = "???"; - if (Py_FdIsInteractive(fp, filename)) { - int err = PyRun_InteractiveLoopFlags(fp, filename, flags); - if (closeit) + int decref_filename = 0; + if (filename == NULL) { + filename = PyUnicode_FromString("???"); + if (filename == NULL) { + PyErr_Print(); + return -1; + } + decref_filename = 1; + } + + int res; + if (_Py_FdIsInteractive(fp, filename)) { + res = _PyRun_InteractiveLoopObject(fp, filename, flags); + if (closeit) { fclose(fp); - return err; + } + } + else { + res = _PyRun_SimpleFileObject(fp, filename, closeit, flags); + } + + if (decref_filename) { + Py_DECREF(filename); } - else - return PyRun_SimpleFileExFlags(fp, filename, closeit, flags); + return res; } + +/* Parse input from a file and execute it */ int -PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags *flags) +PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, + PyCompilerFlags *flags) { - PyObject *filename, *v; - int ret, err; - PyCompilerFlags local_flags = _PyCompilerFlags_INIT; - int nomem_count = 0; -#ifdef Py_REF_DEBUG - int show_ref_count = _Py_GetConfig()->show_ref_count; -#endif - - filename = PyUnicode_DecodeFSDefault(filename_str); - if (filename == NULL) { - PyErr_Print(); - return -1; + PyObject *filename_obj; + if (filename != NULL) { + filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + PyErr_Print(); + return -1; + } } + else { + filename_obj = NULL; + } + int res = _PyRun_AnyFileObject(fp, filename_obj, closeit, flags); + Py_XDECREF(filename_obj); + return res; +} + +int +_PyRun_InteractiveLoopObject(FILE *fp, PyObject *filename, PyCompilerFlags *flags) +{ + PyCompilerFlags local_flags = _PyCompilerFlags_INIT; if (flags == NULL) { flags = &local_flags; } - v = _PySys_GetObjectId(&PyId_ps1); + + PyObject *v = _PySys_GetObjectId(&PyId_ps1); if (v == NULL) { _PySys_SetObjectId(&PyId_ps1, v = PyUnicode_FromString(">>> ")); Py_XDECREF(v); @@ -114,7 +139,13 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags * _PySys_SetObjectId(&PyId_ps2, v = PyUnicode_FromString("... ")); Py_XDECREF(v); } - err = 0; + +#ifdef Py_REF_DEBUG + int show_ref_count = _Py_GetConfig()->show_ref_count; +#endif + int err = 0; + int ret; + int nomem_count = 0; do { ret = PyRun_InteractiveOneObjectEx(fp, filename, flags); if (ret == -1 && PyErr_Occurred()) { @@ -141,10 +172,26 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags * } #endif } while (ret != E_EOF); - Py_DECREF(filename); return err; } + +int +PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags) +{ + PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename); + if (filename_obj == NULL) { + PyErr_Print(); + return -1; + } + + int err = _PyRun_InteractiveLoopObject(fp, filename_obj, flags); + Py_DECREF(filename_obj); + return err; + +} + + /* A PyRun_InteractiveOneObject() auxiliary function that does not print the * error on failure. */ static int From webhook-mailer at python.org Wed Dec 9 16:47:37 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 09 Dec 2020 21:47:37 -0000 Subject: [Python-checkins] bpo-31904: Define THREAD_STACK_SIZE for VxWorks (GH-23718) Message-ID: https://github.com/python/cpython/commit/d5dcb653176387b72c8630f1a5464571f538a639 commit: d5dcb653176387b72c8630f1a5464571f538a639 branch: master author: pxinwr committer: vstinner date: 2020-12-09T22:47:28+01:00 summary: bpo-31904: Define THREAD_STACK_SIZE for VxWorks (GH-23718) files: A Misc/NEWS.d/next/Library/2020-12-09-15-23-28.bpo-31904.g3k5k3.rst M Python/thread_pthread.h diff --git a/Misc/NEWS.d/next/Library/2020-12-09-15-23-28.bpo-31904.g3k5k3.rst b/Misc/NEWS.d/next/Library/2020-12-09-15-23-28.bpo-31904.g3k5k3.rst new file mode 100644 index 0000000000000..7bca3ed845b02 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-09-15-23-28.bpo-31904.g3k5k3.rst @@ -0,0 +1 @@ +Define THREAD_STACK_SIZE for VxWorks. diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index e6910b3083a89..ec7d737518b68 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -62,6 +62,10 @@ # define THREAD_STACK_SIZE 0x800000 # endif #endif +#if defined(__VXWORKS__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0 +#undef THREAD_STACK_SIZE +#define THREAD_STACK_SIZE 0x100000 +#endif /* for safety, ensure a viable minimum stacksize */ #define THREAD_STACK_MIN 0x8000 /* 32 KiB */ #else /* !_POSIX_THREAD_ATTR_STACKSIZE */ From webhook-mailer at python.org Wed Dec 9 16:56:26 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Dec 2020 21:56:26 -0000 Subject: [Python-checkins] [doc] Document logging.basicConfig default format (GH-23710) Message-ID: https://github.com/python/cpython/commit/35cacce5253c50eed0d285836f9ca0ac568991ca commit: 35cacce5253c50eed0d285836f9ca0ac568991ca branch: master author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-09T13:56:17-08:00 summary: [doc] Document logging.basicConfig default format (GH-23710) Automerge-Triggered-By: GH:vsajip files: M Doc/library/logging.rst diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index fb8ea705b0469..b69431fe2cf37 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1174,7 +1174,9 @@ functions. | | to ``'a'``. | +--------------+---------------------------------------------+ | *format* | Use the specified format string for the | - | | handler. | + | | handler. Defaults to attributes | + | | ``levelname``, ``name`` and ``message`` | + | | separated by colons. | +--------------+---------------------------------------------+ | *datefmt* | Use the specified date/time format, as | | | accepted by :func:`time.strftime`. | From webhook-mailer at python.org Wed Dec 9 18:38:09 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 09 Dec 2020 23:38:09 -0000 Subject: [Python-checkins] [doc] Link to issue regarding logging.disable level param default value (GH-23726) Message-ID: https://github.com/python/cpython/commit/2a35137328154aa2513649dcf0bbef02c998e27c commit: 2a35137328154aa2513649dcf0bbef02c998e27c branch: master author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-09T15:37:39-08:00 summary: [doc] Link to issue regarding logging.disable level param default value (GH-23726) files: M Doc/library/logging.rst diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index b69431fe2cf37..431a5849fa9bf 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1096,8 +1096,8 @@ functions. suitable value. .. versionchanged:: 3.7 - The *level* parameter was defaulted to level ``CRITICAL``. See Issue - #28524 for more information about this change. + The *level* parameter was defaulted to level ``CRITICAL``. See + :issue:`28524` for more information about this change. .. function:: addLevelName(level, levelName) From webhook-mailer at python.org Wed Dec 9 19:41:31 2020 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Dec 2020 00:41:31 -0000 Subject: [Python-checkins] bpo-42567: [Enum] call __init_subclass__ after members are added (GH-23714) Message-ID: https://github.com/python/cpython/commit/6bd94de168b58ac9358277ed6f200490ab26c174 commit: 6bd94de168b58ac9358277ed6f200490ab26c174 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-09T16:41:22-08:00 summary: bpo-42567: [Enum] call __init_subclass__ after members are added (GH-23714) When creating an Enum, type.__new__ calls __init_subclass__, but at that point the members have not been added. This patch suppresses the initial call, then manually calls the ancestor __init_subclass__ before returning the new Enum class. files: A Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index f6c7e8b233413..83e050e1e41cd 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -9,6 +9,14 @@ ] +class _NoInitSubclass: + """ + temporary base class to suppress calling __init_subclass__ + """ + @classmethod + def __init_subclass__(cls, **kwds): + pass + def _is_descriptor(obj): """ Returns True if obj is a descriptor, False otherwise. @@ -157,7 +165,7 @@ def __prepare__(metacls, cls, bases): ) return enum_dict - def __new__(metacls, cls, bases, classdict): + def __new__(metacls, cls, bases, classdict, **kwds): # an Enum class is final once enumeration items have been defined; it # cannot be mixed with other types (int, float, etc.) if it has an # inherited __new__ unless a new __new__ is defined (or the resulting @@ -192,8 +200,22 @@ def __new__(metacls, cls, bases, classdict): if '__doc__' not in classdict: classdict['__doc__'] = 'An enumeration.' + # postpone calling __init_subclass__ + if '__init_subclass__' in classdict and classdict['__init_subclass__'] is None: + raise TypeError('%s.__init_subclass__ cannot be None') + # remove current __init_subclass__ so previous one can be found with getattr + new_init_subclass = classdict.pop('__init_subclass__', None) # create our new Enum type - enum_class = super().__new__(metacls, cls, bases, classdict) + if bases: + bases = (_NoInitSubclass, ) + bases + enum_class = type.__new__(metacls, cls, bases, classdict) + enum_class.__bases__ = enum_class.__bases__[1:] #or (object, ) + else: + enum_class = type.__new__(metacls, cls, bases, classdict) + old_init_subclass = getattr(enum_class, '__init_subclass__', None) + # and restore the new one (if there was one) + if new_init_subclass is not None: + enum_class.__init_subclass__ = classmethod(new_init_subclass) enum_class._member_names_ = [] # names in definition order enum_class._member_map_ = {} # name->value map enum_class._member_type_ = member_type @@ -305,6 +327,9 @@ def __new__(metacls, cls, bases, classdict): if _order_ != enum_class._member_names_: raise TypeError('member order does not match _order_') + # finally, call parents' __init_subclass__ + if Enum is not None and old_init_subclass is not None: + old_init_subclass(**kwds) return enum_class def __bool__(self): @@ -682,6 +707,9 @@ def _generate_next_value_(name, start, count, last_values): else: return start + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + @classmethod def _missing_(cls, value): return None diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index ab4b52f785273..20bc5b3c750d6 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2117,6 +2117,43 @@ class ThirdFailedStrEnum(StrEnum): class ThirdFailedStrEnum(StrEnum): one = '1' two = b'2', 'ascii', 9 + + def test_init_subclass(self): + class MyEnum(Enum): + def __init_subclass__(cls, **kwds): + super(MyEnum, cls).__init_subclass__(**kwds) + self.assertFalse(cls.__dict__.get('_test', False)) + cls._test1 = 'MyEnum' + # + class TheirEnum(MyEnum): + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + cls._test2 = 'TheirEnum' + class WhoseEnum(TheirEnum): + def __init_subclass__(cls, **kwds): + pass + class NoEnum(WhoseEnum): + ONE = 1 + self.assertEqual(TheirEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test2'], 'TheirEnum') + self.assertFalse(NoEnum.__dict__.get('_test1', False)) + self.assertFalse(NoEnum.__dict__.get('_test2', False)) + # + class OurEnum(MyEnum): + def __init_subclass__(cls, **kwds): + cls._test2 = 'OurEnum' + class WhereEnum(OurEnum): + def __init_subclass__(cls, **kwds): + pass + class NeverEnum(WhereEnum): + ONE = 'one' + self.assertEqual(OurEnum.__dict__['_test1'], 'MyEnum') + self.assertFalse(WhereEnum.__dict__.get('_test1', False)) + self.assertEqual(WhereEnum.__dict__['_test2'], 'OurEnum') + self.assertFalse(NeverEnum.__dict__.get('_test1', False)) + self.assertFalse(NeverEnum.__dict__.get('_test2', False)) + class TestOrder(unittest.TestCase): @@ -2573,6 +2610,42 @@ def cycle_enum(): 'at least one thread failed while creating composite members') self.assertEqual(256, len(seen), 'too many composite members created') + def test_init_subclass(self): + class MyEnum(Flag): + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + self.assertFalse(cls.__dict__.get('_test', False)) + cls._test1 = 'MyEnum' + # + class TheirEnum(MyEnum): + def __init_subclass__(cls, **kwds): + super(TheirEnum, cls).__init_subclass__(**kwds) + cls._test2 = 'TheirEnum' + class WhoseEnum(TheirEnum): + def __init_subclass__(cls, **kwds): + pass + class NoEnum(WhoseEnum): + ONE = 1 + self.assertEqual(TheirEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test2'], 'TheirEnum') + self.assertFalse(NoEnum.__dict__.get('_test1', False)) + self.assertFalse(NoEnum.__dict__.get('_test2', False)) + # + class OurEnum(MyEnum): + def __init_subclass__(cls, **kwds): + cls._test2 = 'OurEnum' + class WhereEnum(OurEnum): + def __init_subclass__(cls, **kwds): + pass + class NeverEnum(WhereEnum): + ONE = 1 + self.assertEqual(OurEnum.__dict__['_test1'], 'MyEnum') + self.assertFalse(WhereEnum.__dict__.get('_test1', False)) + self.assertEqual(WhereEnum.__dict__['_test2'], 'OurEnum') + self.assertFalse(NeverEnum.__dict__.get('_test1', False)) + self.assertFalse(NeverEnum.__dict__.get('_test2', False)) + class TestIntFlag(unittest.TestCase): """Tests of the IntFlags.""" diff --git a/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst new file mode 100644 index 0000000000000..7c94cdf40dd4c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst @@ -0,0 +1 @@ +`Enum`: call `__init_subclass__` after members have been added From webhook-mailer at python.org Wed Dec 9 20:12:39 2020 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Dec 2020 01:12:39 -0000 Subject: [Python-checkins] bpo-42517: [Enum] do not convert private names into members (GH-23722) Message-ID: https://github.com/python/cpython/commit/7cf0aad96d1d20f07d7f0e374885f327c2d5ff27 commit: 7cf0aad96d1d20f07d7f0e374885f327c2d5ff27 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-09T17:12:11-08:00 summary: bpo-42517: [Enum] do not convert private names into members (GH-23722) private names, such as `_Color__hue` and `_Color__hue_` are now normal attributes, and do not become members nor raise exceptions files: A Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 118002bef19f8..a9584b9c91083 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -1164,6 +1164,15 @@ and raise an error if the two do not match:: In Python 2 code the :attr:`_order_` attribute is necessary as definition order is lost before it can be recorded. + +_Private__names +""""""""""""""" + +Private names are not converted to Enum members, but remain normal attributes. + +.. versionchanged:: 3.10 + + ``Enum`` member type """""""""""""""""""" diff --git a/Lib/enum.py b/Lib/enum.py index 83e050e1e41cd..74318c3b71deb 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -49,6 +49,19 @@ def _is_sunder(name): name[-2:-1] != '_' ) +def _is_private(cls_name, name): + # do not use `re` as `re` imports `enum` + pattern = '_%s__' % (cls_name, ) + if ( + len(name) >= 5 + and name.startswith(pattern) + and name[len(pattern)] != '_' + and (name[-1] != '_' or name[-2] != '_') + ): + return True + else: + return False + def _make_class_unpicklable(cls): """ Make the given class un-picklable. @@ -89,7 +102,10 @@ def __setitem__(self, key, value): Single underscore (sunder) names are reserved. """ - if _is_sunder(key): + if _is_private(self._cls_name, key): + # do nothing, name will be a normal attribute + pass + elif _is_sunder(key): if key not in ( '_order_', '_create_pseudo_member_', '_generate_next_value_', '_missing_', '_ignore_', @@ -157,6 +173,7 @@ def __prepare__(metacls, cls, bases): metacls._check_for_existing_members(cls, bases) # create the namespace dict enum_dict = _EnumDict() + enum_dict._cls_name = cls # inherit previous flags and _generate_next_value_ function member_type, first_enum = metacls._get_mixins_(cls, bases) if first_enum is not None: diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 20bc5b3c750d6..7ca54e9a649ca 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1149,6 +1149,7 @@ def test_multiple_mixin_mro(self): class auto_enum(type(Enum)): def __new__(metacls, cls, bases, classdict): temp = type(classdict)() + temp._cls_name = cls names = set(classdict._member_names) i = 0 for k in classdict._member_names: @@ -2155,6 +2156,30 @@ class NeverEnum(WhereEnum): self.assertFalse(NeverEnum.__dict__.get('_test2', False)) + @unittest.skipUnless( + sys.version_info[:2] == (3, 9), + 'private variables are now normal attributes', + ) + def test_warning_for_private_variables(self): + with self.assertWarns(DeprecationWarning): + class Private(Enum): + __corporal = 'Radar' + self.assertEqual(Private._Private__corporal.value, 'Radar') + try: + with self.assertWarns(DeprecationWarning): + class Private(Enum): + __major_ = 'Hoolihan' + except ValueError: + pass + + def test_private_variable_is_normal_attribute(self): + class Private(Enum): + __corporal = 'Radar' + __major_ = 'Hoolihan' + self.assertEqual(Private._Private__corporal, 'Radar') + self.assertEqual(Private._Private__major_, 'Hoolihan') + + class TestOrder(unittest.TestCase): def test_same_members(self): diff --git a/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst b/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst new file mode 100644 index 0000000000000..813139dfe5d00 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst @@ -0,0 +1,2 @@ +Enum: private names do not become members / do not generate errors -- they +remain normal attributes From webhook-mailer at python.org Thu Dec 10 09:20:22 2020 From: webhook-mailer at python.org (orsenthil) Date: Thu, 10 Dec 2020 14:20:22 -0000 Subject: [Python-checkins] [3.9] [doc] Link to issue regarding logging.disable level param default value GH-23732 Message-ID: https://github.com/python/cpython/commit/c1a3f9a9cbf5cf96ced5a2b16572cba7be964377 commit: c1a3f9a9cbf5cf96ced5a2b16572cba7be964377 branch: 3.9 author: Andre Delfino committer: orsenthil date: 2020-12-10T06:20:04-08:00 summary: [3.9] [doc] Link to issue regarding logging.disable level param default value GH-23732 (cherry picked from commit 2a35137328154aa2513649dcf0bbef02c998e27c) Co-authored-by: Andre Delfino files: M Doc/library/logging.rst diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 7267f812cc192..e63475d3b5a02 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1089,8 +1089,8 @@ functions. suitable value. .. versionchanged:: 3.7 - The *level* parameter was defaulted to level ``CRITICAL``. See Issue - #28524 for more information about this change. + The *level* parameter was defaulted to level ``CRITICAL``. See + :issue:`28524` for more information about this change. .. function:: addLevelName(level, levelName) From webhook-mailer at python.org Thu Dec 10 09:20:22 2020 From: webhook-mailer at python.org (orsenthil) Date: Thu, 10 Dec 2020 14:20:22 -0000 Subject: [Python-checkins] [3.8] [doc] Link to issue regarding logging.disable level param default value GH-23731 Message-ID: https://github.com/python/cpython/commit/150b9bf3e9bddb825c60465194a4b2b51c32ab67 commit: 150b9bf3e9bddb825c60465194a4b2b51c32ab67 branch: 3.8 author: Andre Delfino committer: orsenthil date: 2020-12-10T06:19:51-08:00 summary: [3.8] [doc] Link to issue regarding logging.disable level param default value GH-23731 (cherry picked from commit 2a35137328154aa2513649dcf0bbef02c998e27c) Co-authored-by: Andre Delfino files: M Doc/library/logging.rst diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst index 14e7190cbb0fe..5bbbd443a9887 100644 --- a/Doc/library/logging.rst +++ b/Doc/library/logging.rst @@ -1083,8 +1083,8 @@ functions. suitable value. .. versionchanged:: 3.7 - The *level* parameter was defaulted to level ``CRITICAL``. See Issue - #28524 for more information about this change. + The *level* parameter was defaulted to level ``CRITICAL``. See + :issue:`28524` for more information about this change. .. function:: addLevelName(level, levelName) From webhook-mailer at python.org Thu Dec 10 12:39:26 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 10 Dec 2020 17:39:26 -0000 Subject: [Python-checkins] bpo-42591: Export missing Py_FrozenMain() symbol (GH-23730) Message-ID: https://github.com/python/cpython/commit/b5c7b38f5ebbc84b5b80192db1743d3e1cdcf4c5 commit: b5c7b38f5ebbc84b5b80192db1743d3e1cdcf4c5 branch: master author: Victor Stinner committer: vstinner date: 2020-12-10T18:39:17+01:00 summary: bpo-42591: Export missing Py_FrozenMain() symbol (GH-23730) Export the Py_FrozenMain() function: fix a Python 3.9.0 regression. Python 3.9 uses -fvisibility=hidden and the function was not exported explicitly and so not exported. Add also Py_FrozenMain to the stable ABI on Windows. files: A Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst M Include/pylifecycle.h M PC/python3dll.c diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index c5368b3c5edaa..783fcb455eb52 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -32,6 +32,8 @@ PyAPI_FUNC(void) _Py_NO_RETURN Py_Exit(int); /* Bootstrap __main__ (defined in Modules/main.c) */ PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv); +PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv); + PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv); /* In pathconfig.c */ diff --git a/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst b/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst new file mode 100644 index 0000000000000..3519859f7be89 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst @@ -0,0 +1,3 @@ +Export the :c:func:`Py_FrozenMain` function: fix a Python 3.9.0 regression. +Python 3.9 uses ``-fvisibility=hidden`` and the function was not exported +explicitly and so not exported. diff --git a/PC/python3dll.c b/PC/python3dll.c index 27cc315de2dd1..9eb81e36af001 100644 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -49,6 +49,7 @@ EXPORT_FUNC(Py_Exit) EXPORT_FUNC(Py_FatalError) EXPORT_FUNC(Py_Finalize) EXPORT_FUNC(Py_FinalizeEx) +EXPORT_FUNC(Py_FrozenMain) EXPORT_FUNC(Py_GenericAlias) EXPORT_FUNC(Py_GenericAliasType) EXPORT_FUNC(Py_GetArgcArgv) From webhook-mailer at python.org Thu Dec 10 13:35:41 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 10 Dec 2020 18:35:41 -0000 Subject: [Python-checkins] bpo-41877: Improve docs for assert misspellings check in mock (GH-23729) Message-ID: https://github.com/python/cpython/commit/9fc571359af9320fddbe4aa2710a767f168c1707 commit: 9fc571359af9320fddbe4aa2710a767f168c1707 branch: master author: vabr-g committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-10T10:35:28-08:00 summary: bpo-41877: Improve docs for assert misspellings check in mock (GH-23729) This is a follow-up to https://github.com/python/cpython/commit/4662fa9bfe4a849fe87bfb321d8ef0956c89a772. That original commit expanded guards against misspelling assertions on mocks. This follow-up updates the documentation and improves the error message by pointing out the potential cause and solution. Automerge-Triggered-By: GH:gpshead files: A Misc/NEWS.d/next/Library/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst M Doc/library/unittest.mock.rst M Lib/unittest/mock.py M Lib/unittest/test/testmock/testmock.py diff --git a/Doc/library/unittest.mock.rst b/Doc/library/unittest.mock.rst index c5360f91f518d..f795a2e8c1aeb 100644 --- a/Doc/library/unittest.mock.rst +++ b/Doc/library/unittest.mock.rst @@ -262,9 +262,10 @@ the *new_callable* argument to :func:`patch`. this is a new Mock (created on first access). See the :attr:`return_value` attribute. - * *unsafe*: By default if any attribute starts with *assert* or - *assret* will raise an :exc:`AttributeError`. Passing ``unsafe=True`` - will allow access to these attributes. + * *unsafe*: By default, accessing any attribute with name starting with + *assert*, *assret*, *asert*, *aseert* or *assrt* will raise an + :exc:`AttributeError`. Passing ``unsafe=True`` will allow access to + these attributes. .. versionadded:: 3.5 diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 4db1bacf4b10c..d43ea9e23c899 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -632,8 +632,9 @@ def __getattr__(self, name): raise AttributeError(name) if not self._mock_unsafe: if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')): - raise AttributeError("Attributes cannot start with 'assert' " - "or its misspellings") + raise AttributeError( + f"{name} is not a valid assertion. Use a spec " + f"for the mock if {name} is meant to be an attribute.") result = self._mock_children.get(name) if result is _deleted: diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index dfcf1ef2ee030..016905c3b90e5 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -1598,7 +1598,7 @@ def static_method(): pass #Issue21238 def test_mock_unsafe(self): m = Mock() - msg = "Attributes cannot start with 'assert' or its misspellings" + msg = "is not a valid assertion. Use a spec for the mock" with self.assertRaisesRegex(AttributeError, msg): m.assert_foo_call() with self.assertRaisesRegex(AttributeError, msg): diff --git a/Misc/NEWS.d/next/Library/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst b/Misc/NEWS.d/next/Library/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst new file mode 100644 index 0000000000000..df43cc5d0c9fa --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-10-09-24-44.bpo-41877.iJSCvM.rst @@ -0,0 +1 @@ +AttributeError for suspected misspellings of assertions on mocks are now pointing out that the cause are misspelled assertions and also what to do if the misspelling is actually an intended attribute name. The unittest.mock document is also updated to reflect the current set of recognised misspellings. \ No newline at end of file From webhook-mailer at python.org Thu Dec 10 15:20:17 2020 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Dec 2020 20:20:17 -0000 Subject: [Python-checkins] bpo-42385: [Enum] add `_generate_next_value_` to StrEnum (GH-23735) Message-ID: https://github.com/python/cpython/commit/efb13be72cbf49edf591936fafb120fe1b7d59f7 commit: efb13be72cbf49edf591936fafb120fe1b7d59f7 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-10T12:20:06-08:00 summary: bpo-42385: [Enum] add `_generate_next_value_` to StrEnum (GH-23735) The default for auto() is to return an integer, which doesn't work for `StrEnum`. The new `_generate_next_value_` for `StrEnum` returns the member name, lower cased. files: A Misc/NEWS.d/next/Library/2020-12-09-19-45-32.bpo-42385.boGbjo.rst M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index a9584b9c91083..a0b078c971706 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -67,10 +67,12 @@ helper, :class:`auto`. .. class:: auto - Instances are replaced with an appropriate value for Enum members. By default, the initial value starts at 1. + Instances are replaced with an appropriate value for Enum members. + :class:`StrEnum` defaults to the lower-cased version of the member name, + while other Enums default to 1 and increase from there. .. versionadded:: 3.6 ``Flag``, ``IntFlag``, ``auto`` - +.. versionadded:: 3.10 ``StrEnum`` Creating an Enum ---------------- diff --git a/Lib/enum.py b/Lib/enum.py index 74318c3b71deb..ed0c9ce72d01c 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -826,6 +826,12 @@ def __new__(cls, *values): __str__ = str.__str__ + def _generate_next_value_(name, start, count, last_values): + """ + Return the lower-cased version of the member name. + """ + return name.lower() + def _reduce_ex_by_name(self, proto): return self.name diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 7ca54e9a649ca..f245eb6ccaeee 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2179,6 +2179,12 @@ class Private(Enum): self.assertEqual(Private._Private__corporal, 'Radar') self.assertEqual(Private._Private__major_, 'Hoolihan') + def test_strenum_auto(self): + class Strings(StrEnum): + ONE = auto() + TWO = auto() + self.assertEqual([Strings.ONE, Strings.TWO], ['one', 'two']) + class TestOrder(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2020-12-09-19-45-32.bpo-42385.boGbjo.rst b/Misc/NEWS.d/next/Library/2020-12-09-19-45-32.bpo-42385.boGbjo.rst new file mode 100644 index 0000000000000..f95da859b0388 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-09-19-45-32.bpo-42385.boGbjo.rst @@ -0,0 +1 @@ +StrEnum: fix _generate_next_value_ to return a str From webhook-mailer at python.org Thu Dec 10 16:07:14 2020 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 10 Dec 2020 21:07:14 -0000 Subject: [Python-checkins] bpo-34750: [Enum] add `_EnumDict.update()` support (GH-23725) Message-ID: https://github.com/python/cpython/commit/a65828717982e6a56382d7aff738478f5b5b25d0 commit: a65828717982e6a56382d7aff738478f5b5b25d0 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-10T13:07:00-08:00 summary: bpo-34750: [Enum] add `_EnumDict.update()` support (GH-23725) This allows easier Enum construction in unusual cases, such as including dynamic member definitions into a class definition: # created dynamically foo_defines = {'FOO_CAT': 'aloof', 'BAR_DOG': 'friendly', 'FOO_HORSE': 'big'} class Foo(Enum): vars().update({ k: v for k, v in foo_defines.items() if k.startswith('FOO_') }) def upper(self): # example method return self.value.upper() files: A Misc/NEWS.d/next/Library/2020-12-09-14-15-48.bpo-34750.x8TASR.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index ed0c9ce72d01c..0070ebe136353 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -136,7 +136,7 @@ def __setitem__(self, key, value): key = '_order_' elif key in self._member_names: # descriptor overwriting an enum? - raise TypeError('Attempted to reuse key: %r' % key) + raise TypeError('%r already defined as: %r' % (key, self[key])) elif key in self._ignore: pass elif not _is_descriptor(value): @@ -157,6 +157,16 @@ def __setitem__(self, key, value): self._last_values.append(value) super().__setitem__(key, value) + def update(self, members, **more_members): + try: + for name in members.keys(): + self[name] = members[name] + except AttributeError: + for name, value in members: + self[name] = value + for name, value in more_members.items(): + self[name] = value + # Dummy value for Enum as EnumMeta explicitly checks for it, but of course # until EnumMeta finishes running the first time the Enum class doesn't exist. diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index f245eb6ccaeee..a83241cbb577a 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2186,6 +2186,34 @@ class Strings(StrEnum): self.assertEqual([Strings.ONE, Strings.TWO], ['one', 'two']) + def test_dynamic_members_with_static_methods(self): + # + foo_defines = {'FOO_CAT': 'aloof', 'BAR_DOG': 'friendly', 'FOO_HORSE': 'big'} + class Foo(Enum): + vars().update({ + k: v + for k, v in foo_defines.items() + if k.startswith('FOO_') + }) + def upper(self): + return self.value.upper() + self.assertEqual(list(Foo), [Foo.FOO_CAT, Foo.FOO_HORSE]) + self.assertEqual(Foo.FOO_CAT.value, 'aloof') + self.assertEqual(Foo.FOO_HORSE.upper(), 'BIG') + # + with self.assertRaisesRegex(TypeError, "'FOO_CAT' already defined as: 'aloof'"): + class FooBar(Enum): + vars().update({ + k: v + for k, v in foo_defines.items() + if k.startswith('FOO_') + }, + **{'FOO_CAT': 'small'}, + ) + def upper(self): + return self.value.upper() + + class TestOrder(unittest.TestCase): def test_same_members(self): diff --git a/Misc/NEWS.d/next/Library/2020-12-09-14-15-48.bpo-34750.x8TASR.rst b/Misc/NEWS.d/next/Library/2020-12-09-14-15-48.bpo-34750.x8TASR.rst new file mode 100644 index 0000000000000..c98ba14797af9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-09-14-15-48.bpo-34750.x8TASR.rst @@ -0,0 +1 @@ +[Enum] `_EnumDict.update()` is now supported From webhook-mailer at python.org Thu Dec 10 16:49:15 2020 From: webhook-mailer at python.org (brandtbucher) Date: Thu, 10 Dec 2020 21:49:15 -0000 Subject: [Python-checkins] bpo-42059: Fix required/optional keys for TypedDict(..., total=False) (GH-22736) Message-ID: https://github.com/python/cpython/commit/67b769f5157c9dad1c7dd6b24e067b9fdab5b35d commit: 67b769f5157c9dad1c7dd6b24e067b9fdab5b35d branch: master author: Alex Gr?nholm committer: brandtbucher date: 2020-12-10T13:49:05-08:00 summary: bpo-42059: Fix required/optional keys for TypedDict(..., total=False) (GH-22736) files: A Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst M Lib/test/test_typing.py M Lib/typing.py diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 8ffc7f40cebdd..f3e38b6f47d1e 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3895,10 +3895,14 @@ def test_total(self): self.assertEqual(D(), {}) self.assertEqual(D(x=1), {'x': 1}) self.assertEqual(D.__total__, False) + self.assertEqual(D.__required_keys__, frozenset()) + self.assertEqual(D.__optional_keys__, {'x'}) self.assertEqual(Options(), {}) self.assertEqual(Options(log_level=2), {'log_level': 2}) self.assertEqual(Options.__total__, False) + self.assertEqual(Options.__required_keys__, frozenset()) + self.assertEqual(Options.__optional_keys__, {'log_level', 'log_path'}) def test_optional_keys(self): class Point2Dor3D(Point2D, total=False): diff --git a/Lib/typing.py b/Lib/typing.py index 46c54c406992f..148a505dad176 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -2043,14 +2043,14 @@ class body be required. raise TypeError("TypedDict takes either a dict or keyword arguments," " but not both") - ns = {'__annotations__': dict(fields), '__total__': total} + ns = {'__annotations__': dict(fields)} try: # Setting correct module is necessary to make typed dict classes pickleable. ns['__module__'] = sys._getframe(1).f_globals.get('__name__', '__main__') except (AttributeError, ValueError): pass - return _TypedDictMeta(typename, (), ns) + return _TypedDictMeta(typename, (), ns, total=total) _TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {}) TypedDict.__mro_entries__ = lambda bases: (_TypedDict,) diff --git a/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst b/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst new file mode 100644 index 0000000000000..3f18824fe6598 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst @@ -0,0 +1 @@ +:class:`typing.TypedDict` types created using the alternative call-style syntax now correctly respect the ``total`` keyword argument when setting their ``__required_keys__`` and ``__optional_keys__`` class attributes. From webhook-mailer at python.org Fri Dec 11 03:27:52 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 11 Dec 2020 08:27:52 -0000 Subject: [Python-checkins] bpo-41879: Doc: Fix description of async for statement (GH-23548) Message-ID: https://github.com/python/cpython/commit/4b8cdfcb22fbeaab9d954cb693a7fb3362a382b6 commit: 4b8cdfcb22fbeaab9d954cb693a7fb3362a382b6 branch: master author: Nick Gaya committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-11T00:27:35-08:00 summary: bpo-41879: Doc: Fix description of async for statement (GH-23548) Fix the wording in the documentation of `async for` to correctly describe asynchronous iterables. This fix is relevant for version 3.7 onward. files: M Doc/reference/compound_stmts.rst diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 62986cb151964..a55aacccc16df 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -796,12 +796,12 @@ The :keyword:`!async for` statement .. productionlist:: python-grammar async_for_stmt: "async" `for_stmt` -An :term:`asynchronous iterable` is able to call asynchronous code in its -*iter* implementation, and :term:`asynchronous iterator` can call asynchronous -code in its *next* method. +An :term:`asynchronous iterable` provides an ``__aiter__`` method that directly +returns an :term:`asynchronous iterator`, which can call asynchronous code in +its ``__anext__`` method. The ``async for`` statement allows convenient iteration over asynchronous -iterators. +iterables. The following code:: From webhook-mailer at python.org Sat Dec 12 16:26:52 2020 From: webhook-mailer at python.org (ethanfurman) Date: Sat, 12 Dec 2020 21:26:52 -0000 Subject: [Python-checkins] bpo-39717: [tarfile] update nested exception raising (GH-23739) Message-ID: https://github.com/python/cpython/commit/b5a6db9111562454617b6771b61f2734ea0420c9 commit: b5a6db9111562454617b6771b61f2734ea0420c9 branch: master author: Ethan Furman committer: ethanfurman date: 2020-12-12T13:26:44-08:00 summary: bpo-39717: [tarfile] update nested exception raising (GH-23739) - `from None` if the new exception uses, or doesn't need, the previous one - `from e` if the previous exception is still relevant files: A Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst M Lib/tarfile.py diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 1d15612616f1d..395c0f1d30040 100755 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -200,6 +200,7 @@ def itn(n, digits=8, format=DEFAULT_FORMAT): # base-256 representation. This allows values up to (256**(digits-1))-1. # A 0o200 byte indicates a positive number, a 0o377 byte a negative # number. + original_n = n n = int(n) if 0 <= n < 8 ** (digits - 1): s = bytes("%0*o" % (digits - 1, n), "ascii") + NUL @@ -363,7 +364,7 @@ def __init__(self, name, mode, comptype, fileobj, bufsize): try: import zlib except ImportError: - raise CompressionError("zlib module is not available") + raise CompressionError("zlib module is not available") from None self.zlib = zlib self.crc = zlib.crc32(b"") if mode == "r": @@ -376,7 +377,7 @@ def __init__(self, name, mode, comptype, fileobj, bufsize): try: import bz2 except ImportError: - raise CompressionError("bz2 module is not available") + raise CompressionError("bz2 module is not available") from None if mode == "r": self.dbuf = b"" self.cmp = bz2.BZ2Decompressor() @@ -388,7 +389,7 @@ def __init__(self, name, mode, comptype, fileobj, bufsize): try: import lzma except ImportError: - raise CompressionError("lzma module is not available") + raise CompressionError("lzma module is not available") from None if mode == "r": self.dbuf = b"" self.cmp = lzma.LZMADecompressor() @@ -541,8 +542,8 @@ def _read(self, size): break try: buf = self.cmp.decompress(buf) - except self.exception: - raise ReadError("invalid compressed data") + except self.exception as e: + raise ReadError("invalid compressed data") from e t.append(buf) c += len(buf) t = b"".join(t) @@ -1164,8 +1165,8 @@ def _proc_gnulong(self, tarfile): # Fetch the next header and process it. try: next = self.fromtarfile(tarfile) - except HeaderError: - raise SubsequentHeaderError("missing or bad subsequent header") + except HeaderError as e: + raise SubsequentHeaderError(str(e)) from None # Patch the TarInfo object from the next header with # the longname information. @@ -1277,8 +1278,8 @@ def _proc_pax(self, tarfile): # Fetch the next header. try: next = self.fromtarfile(tarfile) - except HeaderError: - raise SubsequentHeaderError("missing or bad subsequent header") + except HeaderError as e: + raise SubsequentHeaderError(str(e)) from None # Process GNU sparse information. if "GNU.sparse.map" in pax_headers: @@ -1533,7 +1534,7 @@ def __init__(self, name=None, mode="r", fileobj=None, format=None, self.fileobj.seek(self.offset) break except HeaderError as e: - raise ReadError(str(e)) + raise ReadError(str(e)) from None if self.mode in ("a", "w", "x"): self._loaded = True @@ -1669,21 +1670,21 @@ def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): try: from gzip import GzipFile except ImportError: - raise CompressionError("gzip module is not available") + raise CompressionError("gzip module is not available") from None try: fileobj = GzipFile(name, mode + "b", compresslevel, fileobj) - except OSError: + except OSError as e: if fileobj is not None and mode == 'r': - raise ReadError("not a gzip file") + raise ReadError("not a gzip file") from e raise try: t = cls.taropen(name, mode, fileobj, **kwargs) - except OSError: + except OSError as e: fileobj.close() if mode == 'r': - raise ReadError("not a gzip file") + raise ReadError("not a gzip file") from e raise except: fileobj.close() @@ -1702,16 +1703,16 @@ def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): try: from bz2 import BZ2File except ImportError: - raise CompressionError("bz2 module is not available") + raise CompressionError("bz2 module is not available") from None fileobj = BZ2File(fileobj or name, mode, compresslevel=compresslevel) try: t = cls.taropen(name, mode, fileobj, **kwargs) - except (OSError, EOFError): + except (OSError, EOFError) as e: fileobj.close() if mode == 'r': - raise ReadError("not a bzip2 file") + raise ReadError("not a bzip2 file") from e raise except: fileobj.close() @@ -1730,16 +1731,16 @@ def xzopen(cls, name, mode="r", fileobj=None, preset=None, **kwargs): try: from lzma import LZMAFile, LZMAError except ImportError: - raise CompressionError("lzma module is not available") + raise CompressionError("lzma module is not available") from None fileobj = LZMAFile(fileobj or name, mode, preset=preset) try: t = cls.taropen(name, mode, fileobj, **kwargs) - except (LZMAError, EOFError): + except (LZMAError, EOFError) as e: fileobj.close() if mode == 'r': - raise ReadError("not an lzma file") + raise ReadError("not an lzma file") from e raise except: fileobj.close() @@ -2253,7 +2254,7 @@ def makelink(self, tarinfo, targetpath): self._extract_member(self._find_link_target(tarinfo), targetpath) except KeyError: - raise ExtractError("unable to resolve link inside archive") + raise ExtractError("unable to resolve link inside archive") from None def chown(self, tarinfo, targetpath, numeric_owner): """Set owner of targetpath according to tarinfo. If numeric_owner @@ -2281,16 +2282,16 @@ def chown(self, tarinfo, targetpath, numeric_owner): os.lchown(targetpath, u, g) else: os.chown(targetpath, u, g) - except OSError: - raise ExtractError("could not change owner") + except OSError as e: + raise ExtractError("could not change owner") from e def chmod(self, tarinfo, targetpath): """Set file permissions of targetpath according to tarinfo. """ try: os.chmod(targetpath, tarinfo.mode) - except OSError: - raise ExtractError("could not change mode") + except OSError as e: + raise ExtractError("could not change mode") from e def utime(self, tarinfo, targetpath): """Set modification time of targetpath according to tarinfo. @@ -2299,8 +2300,8 @@ def utime(self, tarinfo, targetpath): return try: os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime)) - except OSError: - raise ExtractError("could not change modification time") + except OSError as e: + raise ExtractError("could not change modification time") from e #-------------------------------------------------------------------------- def next(self): @@ -2336,15 +2337,15 @@ def next(self): self.offset += BLOCKSIZE continue elif self.offset == 0: - raise ReadError(str(e)) + raise ReadError(str(e)) from None except EmptyHeaderError: if self.offset == 0: - raise ReadError("empty file") + raise ReadError("empty file") from None except TruncatedHeaderError as e: if self.offset == 0: - raise ReadError(str(e)) + raise ReadError(str(e)) from None except SubsequentHeaderError as e: - raise ReadError(str(e)) + raise ReadError(str(e)) from None break if tarinfo is not None: diff --git a/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst b/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst new file mode 100644 index 0000000000000..fcbf99925208b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst @@ -0,0 +1 @@ +[tarfile] update nested exception raising to use `from None` or `from e` From webhook-mailer at python.org Sat Dec 12 23:24:56 2020 From: webhook-mailer at python.org (miss-islington) Date: Sun, 13 Dec 2020 04:24:56 -0000 Subject: [Python-checkins] [3.9] bpo-41879: Doc: Fix description of async for statement (GH-23548) (GH-23749) Message-ID: https://github.com/python/cpython/commit/be9e4402db64564f7bf0fedb3769cead46c0d4c4 commit: be9e4402db64564f7bf0fedb3769cead46c0d4c4 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-12T20:24:31-08:00 summary: [3.9] bpo-41879: Doc: Fix description of async for statement (GH-23548) (GH-23749) Fix the wording in the documentation of `async for` to correctly describe asynchronous iterables. This fix is relevant for version 3.7 onward. (cherry picked from commit 4b8cdfcb22fbeaab9d954cb693a7fb3362a382b6) Co-authored-by: Nick Gaya files: M Doc/reference/compound_stmts.rst diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index b4e06e5b10d5a..2cae2f86d34f7 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -799,12 +799,12 @@ The :keyword:`!async for` statement .. productionlist:: python-grammar async_for_stmt: "async" `for_stmt` -An :term:`asynchronous iterable` is able to call asynchronous code in its -*iter* implementation, and :term:`asynchronous iterator` can call asynchronous -code in its *next* method. +An :term:`asynchronous iterable` provides an ``__aiter__`` method that directly +returns an :term:`asynchronous iterator`, which can call asynchronous code in +its ``__anext__`` method. The ``async for`` statement allows convenient iteration over asynchronous -iterators. +iterables. The following code:: From webhook-mailer at python.org Sun Dec 13 00:27:31 2020 From: webhook-mailer at python.org (willingc) Date: Sun, 13 Dec 2020 05:27:31 -0000 Subject: [Python-checkins] Add two spaces around equal sign (#23719) Message-ID: https://github.com/python/cpython/commit/da431f789bd1e6b9790f06f9ce47b3ec6a701e65 commit: da431f789bd1e6b9790f06f9ce47b3ec6a701e65 branch: master author: sblondon committer: willingc date: 2020-12-12T21:27:22-08:00 summary: Add two spaces around equal sign (#23719) Fit to PEP8 coding style files: M Doc/library/subprocess.rst diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index 292f8be20aa98..7f947efcb6766 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -1281,7 +1281,7 @@ be used directly: becomes:: - output=check_output("dmesg | grep hda", shell=True) + output = check_output("dmesg | grep hda", shell=True) Replacing :func:`os.system` From webhook-mailer at python.org Sun Dec 13 11:47:01 2020 From: webhook-mailer at python.org (pablogsal) Date: Sun, 13 Dec 2020 16:47:01 -0000 Subject: [Python-checkins] bpo-30858: Improve error location for expressions with assignments (GH-23753) Message-ID: https://github.com/python/cpython/commit/43c4fb6c90c013a00cb820cb61e4990cd8ec7f5e commit: 43c4fb6c90c013a00cb820cb61e4990cd8ec7f5e branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-13T16:46:48Z summary: bpo-30858: Improve error location for expressions with assignments (GH-23753) Co-authored-by: Lysandros Nikolaou files: A Misc/NEWS.d/next/Core and Builtins/2020-12-13-15-23-09.bpo-30858.-f9G4z.rst M Grammar/python.gram M Lib/test/test_exceptions.py M Lib/test/test_syntax.py M Parser/parser.c diff --git a/Grammar/python.gram b/Grammar/python.gram index 9f4709491469d..4915cc43e84ad 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -646,7 +646,7 @@ invalid_arguments: RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "Generator expression must be parenthesized") } | a=args ',' args { _PyPegen_arguments_parsing_error(p, a) } invalid_kwarg: - | a=expression '=' { + | expression a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION( a, "expression cannot contain assignment, perhaps you meant \"==\"?") } invalid_named_expression: diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 1bdd3f2ce5993..e752ab72ccff3 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -252,7 +252,7 @@ def baz(): check('from __future__ import doesnt_exist', 1, 1) check('from __future__ import braces', 1, 1) check('x=1\nfrom __future__ import division', 2, 1) - check('foo(1=2)', 1, 5) + check('foo(1=2)', 1, 6) check('def f():\n x, y: int', 2, 3) check('[*x for x in xs]', 1, 2) check('foo(x for x in range(10), 100)', 1, 5) diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 91ca1db43a74f..d8255607dcfd5 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -802,6 +802,13 @@ def _check_error(self, code, errtext, else: self.fail("compile() did not raise SyntaxError") + def test_expression_with_assignment(self): + self._check_error( + "print(end1 + end2 = ' ')", + 'expression cannot contain assignment, perhaps you meant "=="?', + offset=19 + ) + def test_curly_brace_after_primary_raises_immediately(self): self._check_error("f{", "invalid syntax", mode="single") diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-13-15-23-09.bpo-30858.-f9G4z.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-13-15-23-09.bpo-30858.-f9G4z.rst new file mode 100644 index 0000000000000..f2d06c3009ca5 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-13-15-23-09.bpo-30858.-f9G4z.rst @@ -0,0 +1,2 @@ +Improve error location in expressions that contain assignments. Patch by +Pablo Galindo and Lysandros Nikolaou. diff --git a/Parser/parser.c b/Parser/parser.c index b6c04953c899e..2559969f86e51 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -14562,12 +14562,12 @@ invalid_kwarg_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression '='")); - Token * _literal; - expr_ty a; + Token * a; + expr_ty expression_var; if ( - (a = expression_rule(p)) // expression + (expression_var = expression_rule(p)) // expression && - (_literal = _PyPegen_expect_token(p, 22)) // token='=' + (a = _PyPegen_expect_token(p, 22)) // token='=' ) { D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression '='")); From webhook-mailer at python.org Sun Dec 13 13:38:33 2020 From: webhook-mailer at python.org (gvanrossum) Date: Sun, 13 Dec 2020 18:38:33 -0000 Subject: [Python-checkins] bpo-42195: Ensure consistency of Callable's __args__ in collections.abc and typing (GH-23060) Message-ID: https://github.com/python/cpython/commit/463c7d3d149283814d879a9bb8411af64e656c8e commit: 463c7d3d149283814d879a9bb8411af64e656c8e branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2020-12-13T10:38:24-08:00 summary: bpo-42195: Ensure consistency of Callable's __args__ in collections.abc and typing (GH-23060) files: A Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst M Lib/_collections_abc.py M Lib/collections/abc.py M Lib/test/test_genericalias.py M Lib/test/test_types.py M Lib/test/test_typing.py M Lib/typing.py M Objects/genericaliasobject.c M Objects/unionobject.c diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index 28690f8c0bdc5..7c3faa64ea7f9 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -10,6 +10,10 @@ import sys GenericAlias = type(list[int]) +EllipsisType = type(...) +def _f(): pass +FunctionType = type(_f) +del _f __all__ = ["Awaitable", "Coroutine", "AsyncIterable", "AsyncIterator", "AsyncGenerator", @@ -409,6 +413,69 @@ def __subclasshook__(cls, C): return NotImplemented +class _CallableGenericAlias(GenericAlias): + """ Represent `Callable[argtypes, resulttype]`. + + This sets ``__args__`` to a tuple containing the flattened``argtypes`` + followed by ``resulttype``. + + Example: ``Callable[[int, str], float]`` sets ``__args__`` to + ``(int, str, float)``. + """ + + __slots__ = () + + def __new__(cls, origin, args): + return cls.__create_ga(origin, args) + + @classmethod + def __create_ga(cls, origin, args): + if not isinstance(args, tuple) or len(args) != 2: + raise TypeError( + "Callable must be used as Callable[[arg, ...], result].") + t_args, t_result = args + if isinstance(t_args, list): + ga_args = tuple(t_args) + (t_result,) + # This relaxes what t_args can be on purpose to allow things like + # PEP 612 ParamSpec. Responsibility for whether a user is using + # Callable[...] properly is deferred to static type checkers. + else: + ga_args = args + return super().__new__(cls, origin, ga_args) + + def __repr__(self): + if len(self.__args__) == 2 and self.__args__[0] is Ellipsis: + return super().__repr__() + return (f'collections.abc.Callable' + f'[[{", ".join([_type_repr(a) for a in self.__args__[:-1]])}], ' + f'{_type_repr(self.__args__[-1])}]') + + def __reduce__(self): + args = self.__args__ + if not (len(args) == 2 and args[0] is Ellipsis): + args = list(args[:-1]), args[-1] + return _CallableGenericAlias, (Callable, args) + + +def _type_repr(obj): + """Return the repr() of an object, special-casing types (internal helper). + + Copied from :mod:`typing` since collections.abc + shouldn't depend on that module. + """ + if isinstance(obj, GenericAlias): + return repr(obj) + if isinstance(obj, type): + if obj.__module__ == 'builtins': + return obj.__qualname__ + return f'{obj.__module__}.{obj.__qualname__}' + if obj is Ellipsis: + return '...' + if isinstance(obj, FunctionType): + return obj.__name__ + return repr(obj) + + class Callable(metaclass=ABCMeta): __slots__ = () @@ -423,7 +490,7 @@ def __subclasshook__(cls, C): return _check_methods(C, "__call__") return NotImplemented - __class_getitem__ = classmethod(GenericAlias) + __class_getitem__ = classmethod(_CallableGenericAlias) ### SETS ### diff --git a/Lib/collections/abc.py b/Lib/collections/abc.py index 891600d16bee9..86ca8b8a8414b 100644 --- a/Lib/collections/abc.py +++ b/Lib/collections/abc.py @@ -1,2 +1,3 @@ from _collections_abc import * from _collections_abc import __all__ +from _collections_abc import _CallableGenericAlias diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index c113e538248e9..5de13fe6d2f68 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -62,7 +62,6 @@ class BaseTest(unittest.TestCase): Iterable, Iterator, Reversible, Container, Collection, - Callable, Mailbox, _PartialFile, ContextVar, Token, Field, @@ -307,6 +306,63 @@ def test_no_kwargs(self): with self.assertRaises(TypeError): GenericAlias(bad=float) + def test_subclassing_types_genericalias(self): + class SubClass(GenericAlias): ... + alias = SubClass(list, int) + class Bad(GenericAlias): + def __new__(cls, *args, **kwargs): + super().__new__(cls, *args, **kwargs) + + self.assertEqual(alias, list[int]) + with self.assertRaises(TypeError): + Bad(list, int, bad=int) + + def test_abc_callable(self): + # A separate test is needed for Callable since it uses a subclass of + # GenericAlias. + alias = Callable[[int, str], float] + with self.subTest("Testing subscription"): + self.assertIs(alias.__origin__, Callable) + self.assertEqual(alias.__args__, (int, str, float)) + self.assertEqual(alias.__parameters__, ()) + + with self.subTest("Testing instance checks"): + self.assertIsInstance(alias, GenericAlias) + + with self.subTest("Testing weakref"): + self.assertEqual(ref(alias)(), alias) + + with self.subTest("Testing pickling"): + s = pickle.dumps(alias) + loaded = pickle.loads(s) + self.assertEqual(alias.__origin__, loaded.__origin__) + self.assertEqual(alias.__args__, loaded.__args__) + self.assertEqual(alias.__parameters__, loaded.__parameters__) + + with self.subTest("Testing TypeVar substitution"): + C1 = Callable[[int, T], T] + C2 = Callable[[K, T], V] + C3 = Callable[..., T] + self.assertEqual(C1[str], Callable[[int, str], str]) + self.assertEqual(C2[int, float, str], Callable[[int, float], str]) + self.assertEqual(C3[int], Callable[..., int]) + + with self.subTest("Testing type erasure"): + class C1(Callable): + def __call__(self): + return None + a = C1[[int], T] + self.assertIs(a().__class__, C1) + self.assertEqual(a().__orig_class__, C1[[int], T]) + + # bpo-42195 + with self.subTest("Testing collections.abc.Callable's consistency " + "with typing.Callable"): + c1 = typing.Callable[[int, str], dict] + c2 = Callable[[int, str], dict] + self.assertEqual(c1.__args__, c2.__args__) + self.assertEqual(hash(c1.__args__), hash(c2.__args__)) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 3058a02d6eeb4..83196ad3c1743 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -717,14 +717,16 @@ def test_or_type_operator_with_genericalias(self): a = list[int] b = list[str] c = dict[float, str] + class SubClass(types.GenericAlias): ... + d = SubClass(list, float) # equivalence with typing.Union - self.assertEqual(a | b | c, typing.Union[a, b, c]) + self.assertEqual(a | b | c | d, typing.Union[a, b, c, d]) # de-duplicate - self.assertEqual(a | c | b | b | a | c, a | b | c) + self.assertEqual(a | c | b | b | a | c | d | d, a | b | c | d) # order shouldn't matter - self.assertEqual(a | b, b | a) - self.assertEqual(repr(a | b | c), - "list[int] | list[str] | dict[float, str]") + self.assertEqual(a | b | d, b | a | d) + self.assertEqual(repr(a | b | c | d), + "list[int] | list[str] | dict[float, str] | list[float]") class BadType(type): def __eq__(self, other): diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index f3e38b6f47d1e..8e86e769a0d83 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -446,14 +446,6 @@ def test_cannot_instantiate(self): type(c)() def test_callable_wrong_forms(self): - with self.assertRaises(TypeError): - Callable[[...], int] - with self.assertRaises(TypeError): - Callable[(), int] - with self.assertRaises(TypeError): - Callable[[()], int] - with self.assertRaises(TypeError): - Callable[[int, 1], 2] with self.assertRaises(TypeError): Callable[int] @@ -1807,10 +1799,9 @@ def barfoo2(x: CT): ... def test_extended_generic_rules_subclassing(self): class T1(Tuple[T, KT]): ... class T2(Tuple[T, ...]): ... - class C1(Callable[[T], T]): ... - class C2(Callable[..., int]): - def __call__(self): - return None + class C1(typing.Container[T]): + def __contains__(self, item): + return False self.assertEqual(T1.__parameters__, (T, KT)) self.assertEqual(T1[int, str].__args__, (int, str)) @@ -1824,10 +1815,9 @@ def __call__(self): ## T2[int, str] self.assertEqual(repr(C1[int]).split('.')[-1], 'C1[int]') - self.assertEqual(C2.__parameters__, ()) - self.assertIsInstance(C2(), collections.abc.Callable) - self.assertIsSubclass(C2, collections.abc.Callable) - self.assertIsSubclass(C1, collections.abc.Callable) + self.assertEqual(C1.__parameters__, (T,)) + self.assertIsInstance(C1(), collections.abc.Container) + self.assertIsSubclass(C1, collections.abc.Container) self.assertIsInstance(T1(), tuple) self.assertIsSubclass(T2, tuple) with self.assertRaises(TypeError): @@ -1861,10 +1851,6 @@ def test_type_erasure_special(self): class MyTup(Tuple[T, T]): ... self.assertIs(MyTup[int]().__class__, MyTup) self.assertEqual(MyTup[int]().__orig_class__, MyTup[int]) - class MyCall(Callable[..., T]): - def __call__(self): return None - self.assertIs(MyCall[T]().__class__, MyCall) - self.assertEqual(MyCall[T]().__orig_class__, MyCall[T]) class MyDict(typing.Dict[T, T]): ... self.assertIs(MyDict[int]().__class__, MyDict) self.assertEqual(MyDict[int]().__orig_class__, MyDict[int]) diff --git a/Lib/typing.py b/Lib/typing.py index 148a505dad176..7f07321cda82a 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -120,6 +120,16 @@ # namespace, but excluded from __all__ because they might stomp on # legitimate imports of those modules. + +def _type_convert(arg): + """For converting None to type(None), and strings to ForwardRef.""" + if arg is None: + return type(None) + if isinstance(arg, str): + return ForwardRef(arg) + return arg + + def _type_check(arg, msg, is_argument=True): """Check that the argument is a type, and return it (internal helper). @@ -136,10 +146,7 @@ def _type_check(arg, msg, is_argument=True): if is_argument: invalid_generic_forms = invalid_generic_forms + (ClassVar, Final) - if arg is None: - return type(None) - if isinstance(arg, str): - return ForwardRef(arg) + arg = _type_convert(arg) if (isinstance(arg, _GenericAlias) and arg.__origin__ in invalid_generic_forms): raise TypeError(f"{arg} is not valid as type argument") @@ -900,13 +907,13 @@ def __getitem__(self, params): raise TypeError("Callable must be used as " "Callable[[arg, ...], result].") args, result = params - if args is Ellipsis: - params = (Ellipsis, result) - else: - if not isinstance(args, list): - raise TypeError(f"Callable[args, result]: args must be a list." - f" Got {args}") + # This relaxes what args can be on purpose to allow things like + # PEP 612 ParamSpec. Responsibility for whether a user is using + # Callable[...] properly is deferred to static type checkers. + if isinstance(args, list): params = (tuple(args), result) + else: + params = (args, result) return self.__getitem_inner__(params) @_tp_cache @@ -916,8 +923,9 @@ def __getitem_inner__(self, params): result = _type_check(result, msg) if args is Ellipsis: return self.copy_with((_TypingEllipsis, result)) - msg = "Callable[[arg, ...], result]: each arg must be a type." - args = tuple(_type_check(arg, msg) for arg in args) + if not isinstance(args, tuple): + args = (args,) + args = tuple(_type_convert(arg) for arg in args) params = args + (result,) return self.copy_with(params) diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst new file mode 100644 index 0000000000000..ac52a008e352f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst @@ -0,0 +1,11 @@ +The ``__args__`` of the parameterized generics for :data:`typing.Callable` +and :class:`collections.abc.Callable` are now consistent. The ``__args__`` +for :class:`collections.abc.Callable` are now flattened while +:data:`typing.Callable`'s have not changed. To allow this change, +:class:`types.GenericAlias` can now be subclassed and +``collections.abc.Callable``'s ``__class_getitem__`` will now return a subclass +of ``types.GenericAlias``. Tests for typing were also updated to not subclass +things like ``Callable[..., T]`` as that is not a valid base class. Finally, +both ``Callable``s no longer validate their ``argtypes``, in +``Callable[[argtypes], resulttype]`` to prepare for :pep:`612`. Patch by Ken Jin. + diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 51a12377b7e30..756a7ce474aee 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -429,8 +429,8 @@ ga_getattro(PyObject *self, PyObject *name) static PyObject * ga_richcompare(PyObject *a, PyObject *b, int op) { - if (!Py_IS_TYPE(a, &Py_GenericAliasType) || - !Py_IS_TYPE(b, &Py_GenericAliasType) || + if (!PyObject_TypeCheck(a, &Py_GenericAliasType) || + !PyObject_TypeCheck(b, &Py_GenericAliasType) || (op != Py_EQ && op != Py_NE)) { Py_RETURN_NOTIMPLEMENTED; @@ -564,6 +564,29 @@ static PyGetSetDef ga_properties[] = { {0} }; +/* A helper function to create GenericAlias' args tuple and set its attributes. + * Returns 1 on success, 0 on failure. + */ +static inline int +setup_ga(gaobject *alias, PyObject *origin, PyObject *args) { + if (!PyTuple_Check(args)) { + args = PyTuple_Pack(1, args); + if (args == NULL) { + return 0; + } + } + else { + Py_INCREF(args); + } + + Py_INCREF(origin); + alias->origin = origin; + alias->args = args; + alias->parameters = NULL; + alias->weakreflist = NULL; + return 1; +} + static PyObject * ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { @@ -575,7 +598,15 @@ ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } PyObject *origin = PyTuple_GET_ITEM(args, 0); PyObject *arguments = PyTuple_GET_ITEM(args, 1); - return Py_GenericAlias(origin, arguments); + gaobject *self = (gaobject *)type->tp_alloc(type, 0); + if (self == NULL) { + return NULL; + } + if (!setup_ga(self, origin, arguments)) { + type->tp_free((PyObject *)self); + return NULL; + } + return (PyObject *)self; } static PyNumberMethods ga_as_number = { @@ -600,7 +631,7 @@ PyTypeObject Py_GenericAliasType = { .tp_hash = ga_hash, .tp_call = ga_call, .tp_getattro = ga_getattro, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, .tp_traverse = ga_traverse, .tp_richcompare = ga_richcompare, .tp_weaklistoffset = offsetof(gaobject, weakreflist), @@ -615,27 +646,14 @@ PyTypeObject Py_GenericAliasType = { PyObject * Py_GenericAlias(PyObject *origin, PyObject *args) { - if (!PyTuple_Check(args)) { - args = PyTuple_Pack(1, args); - if (args == NULL) { - return NULL; - } - } - else { - Py_INCREF(args); - } - gaobject *alias = PyObject_GC_New(gaobject, &Py_GenericAliasType); if (alias == NULL) { - Py_DECREF(args); return NULL; } - - Py_INCREF(origin); - alias->origin = origin; - alias->args = args; - alias->parameters = NULL; - alias->weakreflist = NULL; + if (!setup_ga(alias, origin, args)) { + PyObject_GC_Del((PyObject *)alias); + return NULL; + } _PyObject_GC_TRACK(alias); return (PyObject *)alias; } diff --git a/Objects/unionobject.c b/Objects/unionobject.c index 2308bfc9f2a27..32aa5078afcef 100644 --- a/Objects/unionobject.c +++ b/Objects/unionobject.c @@ -237,8 +237,8 @@ dedup_and_flatten_args(PyObject* args) PyObject* i_element = PyTuple_GET_ITEM(args, i); for (Py_ssize_t j = i + 1; j < arg_length; j++) { PyObject* j_element = PyTuple_GET_ITEM(args, j); - int is_ga = Py_TYPE(i_element) == &Py_GenericAliasType && - Py_TYPE(j_element) == &Py_GenericAliasType; + int is_ga = PyObject_TypeCheck(i_element, &Py_GenericAliasType) && + PyObject_TypeCheck(j_element, &Py_GenericAliasType); // RichCompare to also deduplicate GenericAlias types (slower) is_duplicate = is_ga ? PyObject_RichCompareBool(i_element, j_element, Py_EQ) : i_element == j_element; @@ -296,7 +296,7 @@ is_unionable(PyObject *obj) is_new_type(obj) || is_special_form(obj) || PyType_Check(obj) || - type == &Py_GenericAliasType || + PyObject_TypeCheck(obj, &Py_GenericAliasType) || type == &_Py_UnionType); } From webhook-mailer at python.org Sun Dec 13 15:56:39 2020 From: webhook-mailer at python.org (ned-deily) Date: Sun, 13 Dec 2020 20:56:39 -0000 Subject: [Python-checkins] bpo-42598: Fix implicit function declarations in configure (GH-23690) Message-ID: https://github.com/python/cpython/commit/674fa0a740151e0416c9383f127b16014e805990 commit: 674fa0a740151e0416c9383f127b16014e805990 branch: master author: Joshua Root committer: ned-deily date: 2020-12-13T15:56:34-05:00 summary: bpo-42598: Fix implicit function declarations in configure (GH-23690) This is invalid in C99 and later and is an error with some compilers (e.g. clang in Xcode 12), and can thus cause configure checks to produce incorrect results. files: A Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst new file mode 100644 index 0000000000000..7dafc105c45ea --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst @@ -0,0 +1,2 @@ +Fix implicit function declarations in configure which could have resulted in +incorrect configuration checks. Patch contributed by Joshua Root. diff --git a/configure b/configure index 9ee750b70f4a1..0c0aee96d507d 100755 --- a/configure +++ b/configure @@ -11108,10 +11108,10 @@ else main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : @@ -15130,7 +15130,7 @@ else int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } _ACEOF @@ -15511,7 +15511,7 @@ else int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } _ACEOF @@ -15981,6 +15981,7 @@ else /* end confdefs.h. */ #include +#include int main() { diff --git a/configure.ac b/configure.ac index 7f7dfa588a814..31e39ec4f7d4c 100644 --- a/configure.ac +++ b/configure.ac @@ -3311,10 +3311,10 @@ if test "$posix_threads" = "yes"; then main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); }]])], [ac_cv_pthread_system_supported=yes], [ac_cv_pthread_system_supported=no], @@ -4728,7 +4728,7 @@ then int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } ]])], [ac_cv_wchar_t_signed=yes], @@ -4850,7 +4850,7 @@ AC_CACHE_VAL(ac_cv_rshift_extends_sign, [ AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } ]])], [ac_cv_rshift_extends_sign=yes], @@ -4997,6 +4997,7 @@ AC_MSG_CHECKING(for broken poll()) AC_CACHE_VAL(ac_cv_broken_poll, AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include +#include int main() { From webhook-mailer at python.org Sun Dec 13 17:01:08 2020 From: webhook-mailer at python.org (ned-deily) Date: Sun, 13 Dec 2020 22:01:08 -0000 Subject: [Python-checkins] bpo-42598: Fix implicit function declarations in configure (GH-23690) (GH-23756) Message-ID: https://github.com/python/cpython/commit/3dcdbdeb4833e45430ccc9cb3432f779a6fd8c94 commit: 3dcdbdeb4833e45430ccc9cb3432f779a6fd8c94 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-13T17:01:00-05:00 summary: bpo-42598: Fix implicit function declarations in configure (GH-23690) (GH-23756) This is invalid in C99 and later and is an error with some compilers (e.g. clang in Xcode 12), and can thus cause configure checks to produce incorrect results. (cherry picked from commit 674fa0a740151e0416c9383f127b16014e805990) Co-authored-by: Joshua Root files: A Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst new file mode 100644 index 0000000000000..7dafc105c45ea --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst @@ -0,0 +1,2 @@ +Fix implicit function declarations in configure which could have resulted in +incorrect configuration checks. Patch contributed by Joshua Root. diff --git a/configure b/configure index 2d379feb4b7bf..ed969c55b35ab 100755 --- a/configure +++ b/configure @@ -11072,10 +11072,10 @@ else main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : @@ -15083,7 +15083,7 @@ else int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } _ACEOF @@ -15464,7 +15464,7 @@ else int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } _ACEOF @@ -15934,6 +15934,7 @@ else /* end confdefs.h. */ #include +#include int main() { diff --git a/configure.ac b/configure.ac index c968d149c22d4..c74e348e077fb 100644 --- a/configure.ac +++ b/configure.ac @@ -3313,10 +3313,10 @@ if test "$posix_threads" = "yes"; then main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); }]])], [ac_cv_pthread_system_supported=yes], [ac_cv_pthread_system_supported=no], @@ -4725,7 +4725,7 @@ then int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } ]])], [ac_cv_wchar_t_signed=yes], @@ -4847,7 +4847,7 @@ AC_CACHE_VAL(ac_cv_rshift_extends_sign, [ AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } ]])], [ac_cv_rshift_extends_sign=yes], @@ -4994,6 +4994,7 @@ AC_MSG_CHECKING(for broken poll()) AC_CACHE_VAL(ac_cv_broken_poll, AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include +#include int main() { From webhook-mailer at python.org Sun Dec 13 17:02:03 2020 From: webhook-mailer at python.org (ned-deily) Date: Sun, 13 Dec 2020 22:02:03 -0000 Subject: [Python-checkins] bpo-42598: Fix implicit function declarations in configure (GH-23690) (GH-23757) Message-ID: https://github.com/python/cpython/commit/9feda9f871498463fe502d63204cf9cd6c1f4706 commit: 9feda9f871498463fe502d63204cf9cd6c1f4706 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-13T17:01:59-05:00 summary: bpo-42598: Fix implicit function declarations in configure (GH-23690) (GH-23757) This is invalid in C99 and later and is an error with some compilers (e.g. clang in Xcode 12), and can thus cause configure checks to produce incorrect results. (cherry picked from commit 674fa0a740151e0416c9383f127b16014e805990) Co-authored-by: Joshua Root files: A Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst new file mode 100644 index 0000000000000..7dafc105c45ea --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst @@ -0,0 +1,2 @@ +Fix implicit function declarations in configure which could have resulted in +incorrect configuration checks. Patch contributed by Joshua Root. diff --git a/configure b/configure index dfb6e7ef3f0f7..15ea8cdfdc0f0 100755 --- a/configure +++ b/configure @@ -10928,10 +10928,10 @@ else main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : @@ -14916,7 +14916,7 @@ else int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } _ACEOF @@ -15261,7 +15261,7 @@ else int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } _ACEOF @@ -15731,6 +15731,7 @@ else /* end confdefs.h. */ #include +#include int main() { diff --git a/configure.ac b/configure.ac index 6c8fd5a389277..c93ba0ee7dc0e 100644 --- a/configure.ac +++ b/configure.ac @@ -3210,10 +3210,10 @@ if test "$posix_threads" = "yes"; then main() { pthread_attr_t attr; pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); + if (pthread_attr_init(&attr)) return (-1); + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) return (-1); + if (pthread_create(&id, &attr, foo, NULL)) return (-1); + return (0); }]])], [ac_cv_pthread_system_supported=yes], [ac_cv_pthread_system_supported=no], @@ -4616,7 +4616,7 @@ then int main() { /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); + return ((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); } ]])], [ac_cv_wchar_t_signed=yes], @@ -4709,7 +4709,7 @@ AC_CACHE_VAL(ac_cv_rshift_extends_sign, [ AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main() { - exit(((-1)>>3 == -1) ? 0 : 1); + return (((-1)>>3 == -1) ? 0 : 1); } ]])], [ac_cv_rshift_extends_sign=yes], @@ -4856,6 +4856,7 @@ AC_MSG_CHECKING(for broken poll()) AC_CACHE_VAL(ac_cv_broken_poll, AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include +#include int main() { From webhook-mailer at python.org Mon Dec 14 00:49:26 2020 From: webhook-mailer at python.org (tirkarthi) Date: Mon, 14 Dec 2020 05:49:26 -0000 Subject: [Python-checkins] [3.9] bpo-42532: Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function (GH-23613) (GH-23676) Message-ID: https://github.com/python/cpython/commit/14f2a124e20081b8981c8d6165dbd78d11b6808c commit: 14f2a124e20081b8981c8d6165dbd78d11b6808c branch: 3.9 author: Karthikeyan Singaravelan committer: tirkarthi date: 2020-12-14T11:19:16+05:30 summary: [3.9] bpo-42532: Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function (GH-23613) (GH-23676) Check if NonCallableMock's spec_arg is not None instead of call its __bool__ function (cherry picked from commit c598a04dd29b89ad072245ddaf738badcfb41ac7) Co-authored-by: idanw206 <31290383+idanw206 at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst M Lib/unittest/mock.py M Lib/unittest/test/testmock/testmock.py diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index b495a5f6ccc01..f03c88baca671 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -406,7 +406,7 @@ def __new__(cls, /, *args, **kw): # Check if spec is an async object or function bound_args = _MOCK_SIG.bind_partial(cls, *args, **kw).arguments spec_arg = bound_args.get('spec_set', bound_args.get('spec')) - if spec_arg and _is_async_obj(spec_arg): + if spec_arg is not None and _is_async_obj(spec_arg): bases = (AsyncMockMixin, cls) new = type(cls.__name__, bases, {'__doc__': cls.__doc__}) instance = _safe_super(NonCallableMock, cls).__new__(new) diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index ce674e713e99c..f9307245307b9 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -2156,6 +2156,16 @@ def trace(frame, event, arg): # pragma: no cover obj = mock(spec=Something) self.assertIsInstance(obj, Something) + def test_bool_not_called_when_passing_spec_arg(self): + class Something: + def __init__(self): + self.obj_with_bool_func = unittest.mock.MagicMock() + + obj = Something() + with unittest.mock.patch.object(obj, 'obj_with_bool_func', autospec=True): pass + + self.assertEqual(obj.obj_with_bool_func.__bool__.call_count, 0) + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst b/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst new file mode 100644 index 0000000000000..7465cb8e2e3d7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-02-07-37-59.bpo-42532.ObNep_.rst @@ -0,0 +1 @@ +Remove unexpected call of ``__bool__`` when passing a ``spec_arg`` argument to a Mock. From webhook-mailer at python.org Mon Dec 14 05:19:35 2020 From: webhook-mailer at python.org (markshannon) Date: Mon, 14 Dec 2020 10:19:35 -0000 Subject: [Python-checkins] Don't generate spurious line number in try-except-finally. (#23760) Message-ID: https://github.com/python/cpython/commit/56aa20f9eb913c746b7d54b90be328c922639338 commit: 56aa20f9eb913c746b7d54b90be328c922639338 branch: master author: Mark Shannon committer: markshannon date: 2020-12-14T10:19:10Z summary: Don't generate spurious line number in try-except-finally. (#23760) files: M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index ccdb5c2c51a0f..f257809021fcf 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -629,6 +629,23 @@ def func(): (3, 'line'), (3, 'return')]) + def test_try_except_no_exception(self): + + def func(): + try: + 2 + except: + 4 + finally: + 6 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (6, 'line'), + (6, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index ea9d6781b9c15..241e8ffd12376 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3007,6 +3007,8 @@ compiler_try_finally(struct compiler *c, stmt_ty s) else { VISIT_SEQ(c, stmt, s->v.Try.body); } + /* Mark code as artificial */ + c->u->u_lineno = -1; ADDOP(c, POP_BLOCK); compiler_pop_fblock(c, FINALLY_TRY, body); VISIT_SEQ(c, stmt, s->v.Try.finalbody); diff --git a/Python/importlib.h b/Python/importlib.h index 6c77d775e38a7..3d076c757fe6d 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -348,1507 +348,1507 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 115,114,38,0,0,0,218,12,114,101,108,101,97,115,101,95, 108,111,99,107,41,2,218,3,114,101,102,114,20,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 2,99,98,198,0,0,0,115,12,0,0,0,8,1,2,1, - 14,4,8,1,22,2,255,128,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,61,0,0,0,114,62,0, - 0,0,114,63,0,0,0,218,8,75,101,121,69,114,114,111, - 114,114,26,0,0,0,114,53,0,0,0,114,23,0,0,0, - 218,8,95,119,101,97,107,114,101,102,114,65,0,0,0,114, - 64,0,0,0,41,3,114,20,0,0,0,114,27,0,0,0, - 114,66,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,57,0,0,0,179,0,0,0,115,32,0, - 0,0,8,6,2,1,2,1,14,1,12,1,10,1,8,2, - 8,1,10,1,8,2,12,2,18,11,8,2,4,2,10,254, - 255,128,114,57,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, - 115,54,0,0,0,116,0,124,0,131,1,125,1,122,12,124, - 1,160,1,161,0,1,0,87,0,110,20,4,0,116,2,121, - 40,1,0,1,0,1,0,89,0,100,1,83,0,48,0,124, - 1,160,3,161,0,1,0,100,1,83,0,41,2,122,189,65, - 99,113,117,105,114,101,115,32,116,104,101,110,32,114,101,108, - 101,97,115,101,115,32,116,104,101,32,109,111,100,117,108,101, - 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, - 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, - 32,32,32,32,84,104,105,115,32,105,115,32,117,115,101,100, - 32,116,111,32,101,110,115,117,114,101,32,97,32,109,111,100, - 117,108,101,32,105,115,32,99,111,109,112,108,101,116,101,108, - 121,32,105,110,105,116,105,97,108,105,122,101,100,44,32,105, - 110,32,116,104,101,10,32,32,32,32,101,118,101,110,116,32, - 105,116,32,105,115,32,98,101,105,110,103,32,105,109,112,111, - 114,116,101,100,32,98,121,32,97,110,111,116,104,101,114,32, - 116,104,114,101,97,100,46,10,32,32,32,32,78,41,4,114, - 57,0,0,0,114,43,0,0,0,114,22,0,0,0,114,44, - 0,0,0,41,2,114,20,0,0,0,114,27,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,19, - 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, - 117,108,101,216,0,0,0,115,14,0,0,0,8,6,2,1, - 12,1,12,1,8,3,12,2,255,128,114,69,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,79,0,0,0,115,14,0,0,0,124,0,124, - 1,105,0,124,2,164,1,142,1,83,0,41,2,97,46,1, - 0,0,114,101,109,111,118,101,95,105,109,112,111,114,116,108, - 105,98,95,102,114,97,109,101,115,32,105,110,32,105,109,112, - 111,114,116,46,99,32,119,105,108,108,32,97,108,119,97,121, - 115,32,114,101,109,111,118,101,32,115,101,113,117,101,110,99, - 101,115,10,32,32,32,32,111,102,32,105,109,112,111,114,116, - 108,105,98,32,102,114,97,109,101,115,32,116,104,97,116,32, - 101,110,100,32,119,105,116,104,32,97,32,99,97,108,108,32, - 116,111,32,116,104,105,115,32,102,117,110,99,116,105,111,110, - 10,10,32,32,32,32,85,115,101,32,105,116,32,105,110,115, - 116,101,97,100,32,111,102,32,97,32,110,111,114,109,97,108, - 32,99,97,108,108,32,105,110,32,112,108,97,99,101,115,32, - 119,104,101,114,101,32,105,110,99,108,117,100,105,110,103,32, - 116,104,101,32,105,109,112,111,114,116,108,105,98,10,32,32, - 32,32,102,114,97,109,101,115,32,105,110,116,114,111,100,117, - 99,101,115,32,117,110,119,97,110,116,101,100,32,110,111,105, - 115,101,32,105,110,116,111,32,116,104,101,32,116,114,97,99, - 101,98,97,99,107,32,40,101,46,103,46,32,119,104,101,110, - 32,101,120,101,99,117,116,105,110,103,10,32,32,32,32,109, - 111,100,117,108,101,32,99,111,100,101,41,10,32,32,32,32, - 78,114,5,0,0,0,41,3,218,1,102,114,59,0,0,0, - 90,4,107,119,100,115,114,5,0,0,0,114,5,0,0,0, - 114,6,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, - 233,0,0,0,115,4,0,0,0,14,8,255,128,114,71,0, - 0,0,114,42,0,0,0,41,1,218,9,118,101,114,98,111, - 115,105,116,121,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,4,0,0,0,71,0,0,0,115,58,0, - 0,0,116,0,106,1,106,2,124,1,107,5,114,54,124,0, - 160,3,100,1,161,1,115,30,100,2,124,0,23,0,125,0, - 116,4,124,0,106,5,124,2,142,0,116,0,106,6,100,3, - 141,2,1,0,100,4,83,0,100,4,83,0,41,5,122,61, - 80,114,105,110,116,32,116,104,101,32,109,101,115,115,97,103, - 101,32,116,111,32,115,116,100,101,114,114,32,105,102,32,45, - 118,47,80,89,84,72,79,78,86,69,82,66,79,83,69,32, - 105,115,32,116,117,114,110,101,100,32,111,110,46,41,2,250, - 1,35,122,7,105,109,112,111,114,116,32,122,2,35,32,41, - 1,90,4,102,105,108,101,78,41,7,114,18,0,0,0,218, - 5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114,114,41, - 3,218,7,109,101,115,115,97,103,101,114,72,0,0,0,114, - 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, - 115,115,97,103,101,244,0,0,0,115,12,0,0,0,12,2, - 10,1,8,1,24,1,4,253,255,128,114,80,0,0,0,99, - 1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99,111,114, - 97,116,111,114,32,116,111,32,118,101,114,105,102,121,32,116, - 104,101,32,110,97,109,101,100,32,109,111,100,117,108,101,32, - 105,115,32,98,117,105,108,116,45,105,110,46,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,19,0,0,0,115,38,0,0,0,124,1,116,0,106,1, - 118,1,114,28,116,2,100,1,160,3,124,1,161,1,124,1, - 100,2,141,2,130,1,136,0,124,0,124,1,131,2,83,0, - 41,3,78,250,29,123,33,114,125,32,105,115,32,110,111,116, - 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,19,0,0,0,41,4,114,18,0,0,0,218,20, - 98,117,105,108,116,105,110,95,109,111,100,117,108,101,95,110, - 97,109,101,115,218,11,73,109,112,111,114,116,69,114,114,111, - 114,114,49,0,0,0,169,2,114,33,0,0,0,218,8,102, - 117,108,108,110,97,109,101,169,1,218,3,102,120,110,114,5, - 0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1,10,1, - 2,1,6,255,10,2,255,128,122,52,95,114,101,113,117,105, - 114,101,115,95,98,117,105,108,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,78,169, - 1,114,17,0,0,0,41,2,114,87,0,0,0,114,88,0, - 0,0,114,5,0,0,0,114,86,0,0,0,114,6,0,0, - 0,218,17,95,114,101,113,117,105,114,101,115,95,98,117,105, - 108,116,105,110,252,0,0,0,115,8,0,0,0,12,2,10, - 5,4,1,255,128,114,90,0,0,0,99,1,0,0,0,0, - 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,1, - 83,0,41,4,122,47,68,101,99,111,114,97,116,111,114,32, - 116,111,32,118,101,114,105,102,121,32,116,104,101,32,110,97, - 109,101,100,32,109,111,100,117,108,101,32,105,115,32,102,114, - 111,122,101,110,46,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,38, - 0,0,0,116,0,160,1,124,1,161,1,115,28,116,2,100, - 1,160,3,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,19,0,0,0,41,4, - 114,61,0,0,0,218,9,105,115,95,102,114,111,122,101,110, - 114,83,0,0,0,114,49,0,0,0,114,84,0,0,0,114, - 86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0,115,12,0,0, - 0,10,1,10,1,2,1,6,255,10,2,255,128,122,50,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,46, + 2,99,98,198,0,0,0,115,14,0,0,0,8,1,2,1, + 14,4,6,1,2,128,22,2,255,128,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,61,0,0,0,114, + 62,0,0,0,114,63,0,0,0,218,8,75,101,121,69,114, + 114,111,114,114,26,0,0,0,114,53,0,0,0,114,23,0, + 0,0,218,8,95,119,101,97,107,114,101,102,114,65,0,0, + 0,114,64,0,0,0,41,3,114,20,0,0,0,114,27,0, + 0,0,114,66,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,57,0,0,0,179,0,0,0,115, + 34,0,0,0,8,6,2,1,2,1,14,1,12,1,10,1, + 8,2,8,1,10,1,8,2,12,2,16,11,2,128,8,2, + 4,2,10,254,255,128,114,57,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,124,0,131,1,125, + 1,122,12,124,1,160,1,161,0,1,0,87,0,110,20,4, + 0,116,2,121,40,1,0,1,0,1,0,89,0,100,1,83, + 0,48,0,124,1,160,3,161,0,1,0,100,1,83,0,41, + 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, + 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, + 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, + 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, + 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, + 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, + 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, + 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, + 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, + 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, + 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, + 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, + 78,41,4,114,57,0,0,0,114,43,0,0,0,114,22,0, + 0,0,114,44,0,0,0,41,2,114,20,0,0,0,114,27, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, + 95,109,111,100,117,108,101,216,0,0,0,115,14,0,0,0, + 8,6,2,1,12,1,12,1,8,3,12,2,255,128,114,69, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,79,0,0,0,115,14,0,0, + 0,124,0,124,1,105,0,124,2,164,1,142,1,83,0,41, + 2,97,46,1,0,0,114,101,109,111,118,101,95,105,109,112, + 111,114,116,108,105,98,95,102,114,97,109,101,115,32,105,110, + 32,105,109,112,111,114,116,46,99,32,119,105,108,108,32,97, + 108,119,97,121,115,32,114,101,109,111,118,101,32,115,101,113, + 117,101,110,99,101,115,10,32,32,32,32,111,102,32,105,109, + 112,111,114,116,108,105,98,32,102,114,97,109,101,115,32,116, + 104,97,116,32,101,110,100,32,119,105,116,104,32,97,32,99, + 97,108,108,32,116,111,32,116,104,105,115,32,102,117,110,99, + 116,105,111,110,10,10,32,32,32,32,85,115,101,32,105,116, + 32,105,110,115,116,101,97,100,32,111,102,32,97,32,110,111, + 114,109,97,108,32,99,97,108,108,32,105,110,32,112,108,97, + 99,101,115,32,119,104,101,114,101,32,105,110,99,108,117,100, + 105,110,103,32,116,104,101,32,105,109,112,111,114,116,108,105, + 98,10,32,32,32,32,102,114,97,109,101,115,32,105,110,116, + 114,111,100,117,99,101,115,32,117,110,119,97,110,116,101,100, + 32,110,111,105,115,101,32,105,110,116,111,32,116,104,101,32, + 116,114,97,99,101,98,97,99,107,32,40,101,46,103,46,32, + 119,104,101,110,32,101,120,101,99,117,116,105,110,103,10,32, + 32,32,32,109,111,100,117,108,101,32,99,111,100,101,41,10, + 32,32,32,32,78,114,5,0,0,0,41,3,218,1,102,114, + 59,0,0,0,90,4,107,119,100,115,114,5,0,0,0,114, + 5,0,0,0,114,6,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,233,0,0,0,115,4,0,0,0,14,8,255, + 128,114,71,0,0,0,114,42,0,0,0,41,1,218,9,118, + 101,114,98,111,115,105,116,121,99,1,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,4,0,0,0,71,0,0, + 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, + 114,54,124,0,160,3,100,1,161,1,115,30,100,2,124,0, + 23,0,125,0,116,4,124,0,106,5,124,2,142,0,116,0, + 106,6,100,3,141,2,1,0,100,4,83,0,100,4,83,0, + 41,5,122,61,80,114,105,110,116,32,116,104,101,32,109,101, + 115,115,97,103,101,32,116,111,32,115,116,100,101,114,114,32, + 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, + 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, + 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, + 0,0,0,218,5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100, + 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,72, + 0,0,0,114,59,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,244,0,0,0,115,12,0, + 0,0,12,2,10,1,8,1,24,1,4,253,255,128,114,80, + 0,0,0,99,1,0,0,0,0,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,1,83,0,41,4,122,49,68, + 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, + 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, + 117,108,101,32,105,115,32,98,117,105,108,116,45,105,110,46, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,19,0,0,0,115,38,0,0,0,124,1, + 116,0,106,1,118,1,114,28,116,2,100,1,160,3,124,1, + 161,1,124,1,100,2,141,2,130,1,136,0,124,0,124,1, + 131,2,83,0,41,3,78,250,29,123,33,114,125,32,105,115, + 32,110,111,116,32,97,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,114,19,0,0,0,41,4,114,18,0, + 0,0,218,20,98,117,105,108,116,105,110,95,109,111,100,117, + 108,101,95,110,97,109,101,115,218,11,73,109,112,111,114,116, + 69,114,114,111,114,114,49,0,0,0,169,2,114,33,0,0, + 0,218,8,102,117,108,108,110,97,109,101,169,1,218,3,102, + 120,110,114,5,0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0, + 10,1,10,1,2,1,6,255,10,2,255,128,122,52,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,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,78,114,89,0,0,0,41,2,114,87,0,0,0,114,93, - 0,0,0,114,5,0,0,0,114,86,0,0,0,114,6,0, - 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,7,1,0,0,115,8,0,0,0,12,2,10, - 5,4,1,255,128,114,94,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,67, - 0,0,0,115,74,0,0,0,100,1,125,2,116,0,160,1, - 124,2,116,2,161,2,1,0,116,3,124,1,124,0,131,2, - 125,3,124,1,116,4,106,5,118,0,114,66,116,4,106,5, - 124,1,25,0,125,4,116,6,124,3,124,4,131,2,1,0, - 116,4,106,5,124,1,25,0,83,0,116,7,124,3,131,1, - 83,0,41,3,122,128,76,111,97,100,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32, - 105,110,116,111,32,115,121,115,46,109,111,100,117,108,101,115, - 32,97,110,100,32,114,101,116,117,114,110,32,105,116,46,10, - 10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120,101,99, - 95,109,111,100,117,108,101,32,105,110,115,116,101,97,100,46, - 10,10,32,32,32,32,122,103,116,104,101,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, - 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, - 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, - 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109, - 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78, - 41,8,218,9,95,119,97,114,110,105,110,103,115,218,4,119, - 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, - 87,97,114,110,105,110,103,218,16,115,112,101,99,95,102,114, - 111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85,0,0, - 0,218,3,109,115,103,218,4,115,112,101,99,218,6,109,111, - 100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, - 101,95,115,104,105,109,19,1,0,0,115,18,0,0,0,4, - 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,255, - 128,114,105,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, - 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, - 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, - 124,0,161,1,87,0,83,0,4,0,116,3,121,52,1,0, - 1,0,1,0,89,0,110,2,48,0,122,10,124,0,106,4, - 125,2,87,0,110,18,4,0,116,5,121,82,1,0,1,0, - 1,0,89,0,110,18,48,0,124,2,100,0,117,1,114,100, - 116,6,124,2,131,1,83,0,122,10,124,0,106,7,125,3, - 87,0,110,22,4,0,116,5,121,132,1,0,1,0,1,0, - 100,3,125,3,89,0,110,2,48,0,122,10,124,0,106,8, - 125,4,87,0,110,52,4,0,116,5,121,196,1,0,1,0, - 1,0,124,1,100,0,117,0,114,180,100,4,160,9,124,3, - 161,1,6,0,89,0,83,0,100,5,160,9,124,3,124,1, - 161,2,6,0,89,0,83,0,48,0,100,6,160,9,124,3, - 124,4,161,2,83,0,41,7,78,218,10,95,95,108,111,97, - 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, - 112,114,250,1,63,250,13,60,109,111,100,117,108,101,32,123, - 33,114,125,62,250,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,13,0,0,0,114,11,0,0,0,114, - 107,0,0,0,218,9,69,120,99,101,112,116,105,111,110,218, - 8,95,95,115,112,101,99,95,95,114,2,0,0,0,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,9,0,0,0,218,8,95,95,102, - 105,108,101,95,95,114,49,0,0,0,41,5,114,104,0,0, - 0,218,6,108,111,97,100,101,114,114,103,0,0,0,114,20, - 0,0,0,218,8,102,105,108,101,110,97,109,101,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,12,95,109, - 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,48, - 0,0,0,12,2,10,1,2,4,12,1,12,1,6,1,2, - 1,10,1,12,1,6,1,8,2,8,1,2,4,10,1,12, - 1,10,1,2,1,10,1,12,1,8,1,14,1,18,2,12, - 2,255,128,114,118,0,0,0,99,0,0,0,0,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, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,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,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, - 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, - 124,0,95,0,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,41,2,78,70,41,7,114,20,0,0,0,114, - 116,0,0,0,114,120,0,0,0,114,121,0,0,0,218,26, + 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, + 101,114,78,169,1,114,17,0,0,0,41,2,114,87,0,0, + 0,114,88,0,0,0,114,5,0,0,0,114,86,0,0,0, + 114,6,0,0,0,218,17,95,114,101,113,117,105,114,101,115, + 95,98,117,105,108,116,105,110,252,0,0,0,115,8,0,0, + 0,12,2,10,5,4,1,255,128,114,90,0,0,0,99,1, + 0,0,0,0,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,1,83,0,41,4,122,47,68,101,99,111,114,97, + 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, + 101,32,110,97,109,101,100,32,109,111,100,117,108,101,32,105, + 115,32,102,114,111,122,101,110,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,19,0, + 0,0,115,38,0,0,0,116,0,160,1,124,1,161,1,115, + 28,116,2,100,1,160,3,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,19,0, + 0,0,41,4,114,61,0,0,0,218,9,105,115,95,102,114, + 111,122,101,110,114,83,0,0,0,114,49,0,0,0,114,84, + 0,0,0,114,86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0, + 115,12,0,0,0,10,1,10,1,2,1,6,255,10,2,255, + 128,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,78,114,89,0,0,0,41,2,114,87,0, + 0,0,114,93,0,0,0,114,5,0,0,0,114,86,0,0, + 0,114,6,0,0,0,218,16,95,114,101,113,117,105,114,101, + 115,95,102,114,111,122,101,110,7,1,0,0,115,8,0,0, + 0,12,2,10,5,4,1,255,128,114,94,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4, + 0,0,0,67,0,0,0,115,74,0,0,0,100,1,125,2, + 116,0,160,1,124,2,116,2,161,2,1,0,116,3,124,1, + 124,0,131,2,125,3,124,1,116,4,106,5,118,0,114,66, + 116,4,106,5,124,1,25,0,125,4,116,6,124,3,124,4, + 131,2,1,0,116,4,106,5,124,1,25,0,83,0,116,7, + 124,3,131,1,83,0,41,3,122,128,76,111,97,100,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,32,105,110,116,111,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,110,100,32,114,101,116,117,114,110,32, + 105,116,46,10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46, + 101,120,101,99,95,109,111,100,117,108,101,32,105,110,115,116, + 101,97,100,46,10,10,32,32,32,32,122,103,116,104,101,32, + 108,111,97,100,95,109,111,100,117,108,101,40,41,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,78,41,8,218,9,95,119,97,114,110,105,110,103, + 115,218,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,218,16,115,112,101, + 99,95,102,114,111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0, + 114,85,0,0,0,218,3,109,115,103,218,4,115,112,101,99, + 218,6,109,111,100,117,108,101,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,17,95,108,111,97,100,95,109, + 111,100,117,108,101,95,115,104,105,109,19,1,0,0,115,18, + 0,0,0,4,6,12,2,10,1,10,1,10,1,10,1,10, + 1,8,2,255,128,114,105,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,67, + 0,0,0,115,210,0,0,0,116,0,124,0,100,1,100,0, + 131,3,125,1,116,1,124,1,100,2,131,2,114,54,122,12, + 124,1,160,2,124,0,161,1,87,0,83,0,4,0,116,3, + 121,52,1,0,1,0,1,0,89,0,110,2,48,0,122,10, + 124,0,106,4,125,2,87,0,110,18,4,0,116,5,121,82, + 1,0,1,0,1,0,89,0,110,18,48,0,124,2,100,0, + 117,1,114,100,116,6,124,2,131,1,83,0,122,10,124,0, + 106,7,125,3,87,0,110,22,4,0,116,5,121,132,1,0, + 1,0,1,0,100,3,125,3,89,0,110,2,48,0,122,10, + 124,0,106,8,125,4,87,0,110,52,4,0,116,5,121,196, + 1,0,1,0,1,0,124,1,100,0,117,0,114,180,100,4, + 160,9,124,3,161,1,6,0,89,0,83,0,100,5,160,9, + 124,3,124,1,161,2,6,0,89,0,83,0,48,0,100,6, + 160,9,124,3,124,4,161,2,83,0,41,7,78,218,10,95, + 95,108,111,97,100,101,114,95,95,218,11,109,111,100,117,108, + 101,95,114,101,112,114,250,1,63,250,13,60,109,111,100,117, + 108,101,32,123,33,114,125,62,250,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,13,0,0,0,114,11, + 0,0,0,114,107,0,0,0,218,9,69,120,99,101,112,116, + 105,111,110,218,8,95,95,115,112,101,99,95,95,114,2,0, + 0,0,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,9,0,0,0,218, + 8,95,95,102,105,108,101,95,95,114,49,0,0,0,41,5, + 114,104,0,0,0,218,6,108,111,97,100,101,114,114,103,0, + 0,0,114,20,0,0,0,218,8,102,105,108,101,110,97,109, + 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, + 0,0,115,48,0,0,0,12,2,10,1,2,4,12,1,12, + 1,6,1,2,1,10,1,12,1,6,1,8,2,8,1,2, + 4,10,1,12,1,10,1,2,1,10,1,12,1,8,1,14, + 1,18,2,12,2,255,128,114,118,0,0,0,99,0,0,0, + 0,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,132,2,90,4,100,6,100,7,132,0,90,5, + 100,8,100,9,132,0,90,6,101,7,100,10,100,11,132,0, + 131,1,90,8,101,8,106,9,100,12,100,11,132,0,131,1, + 90,8,101,7,100,13,100,14,132,0,131,1,90,10,101,7, + 100,15,100,16,132,0,131,1,90,11,101,11,106,9,100,17, + 100,16,132,0,131,1,90,11,100,2,83,0,41,18,218,10, + 77,111,100,117,108,101,83,112,101,99,97,208,5,0,0,84, + 104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110, + 32,102,111,114,32,97,32,109,111,100,117,108,101,44,32,117, + 115,101,100,32,102,111,114,32,108,111,97,100,105,110,103,46, + 10,10,32,32,32,32,65,32,109,111,100,117,108,101,39,115, + 32,115,112,101,99,32,105,115,32,116,104,101,32,115,111,117, + 114,99,101,32,102,111,114,32,105,110,102,111,114,109,97,116, + 105,111,110,32,97,98,111,117,116,32,116,104,101,32,109,111, + 100,117,108,101,46,32,32,70,111,114,10,32,32,32,32,100, + 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, + 105,116,104,32,116,104,101,32,109,111,100,117,108,101,44,32, + 105,110,99,108,117,100,105,110,103,32,115,111,117,114,99,101, + 44,32,117,115,101,32,116,104,101,32,115,112,101,99,39,115, + 10,32,32,32,32,108,111,97,100,101,114,46,10,10,32,32, + 32,32,96,110,97,109,101,96,32,105,115,32,116,104,101,32, + 97,98,115,111,108,117,116,101,32,110,97,109,101,32,111,102, + 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,108, + 111,97,100,101,114,96,32,105,115,32,116,104,101,32,108,111, + 97,100,101,114,10,32,32,32,32,116,111,32,117,115,101,32, + 119,104,101,110,32,108,111,97,100,105,110,103,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,112,97,114,101,110, + 116,96,32,105,115,32,116,104,101,32,110,97,109,101,32,111, + 102,32,116,104,101,10,32,32,32,32,112,97,99,107,97,103, + 101,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, + 105,110,46,32,32,84,104,101,32,112,97,114,101,110,116,32, + 105,115,32,100,101,114,105,118,101,100,32,102,114,111,109,32, + 116,104,101,32,110,97,109,101,46,10,10,32,32,32,32,96, + 105,115,95,112,97,99,107,97,103,101,96,32,100,101,116,101, + 114,109,105,110,101,115,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,99,111,110,115,105,100,101,114, + 101,100,32,97,32,112,97,99,107,97,103,101,32,111,114,10, + 32,32,32,32,110,111,116,46,32,32,79,110,32,109,111,100, + 117,108,101,115,32,116,104,105,115,32,105,115,32,114,101,102, + 108,101,99,116,101,100,32,98,121,32,116,104,101,32,96,95, + 95,112,97,116,104,95,95,96,32,97,116,116,114,105,98,117, + 116,101,46,10,10,32,32,32,32,96,111,114,105,103,105,110, + 96,32,105,115,32,116,104,101,32,115,112,101,99,105,102,105, + 99,32,108,111,99,97,116,105,111,110,32,117,115,101,100,32, + 98,121,32,116,104,101,32,108,111,97,100,101,114,32,102,114, + 111,109,32,119,104,105,99,104,32,116,111,10,32,32,32,32, + 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,44, + 32,105,102,32,116,104,97,116,32,105,110,102,111,114,109,97, + 116,105,111,110,32,105,115,32,97,118,97,105,108,97,98,108, + 101,46,32,32,87,104,101,110,32,102,105,108,101,110,97,109, + 101,32,105,115,10,32,32,32,32,115,101,116,44,32,111,114, + 105,103,105,110,32,119,105,108,108,32,109,97,116,99,104,46, + 10,10,32,32,32,32,96,104,97,115,95,108,111,99,97,116, + 105,111,110,96,32,105,110,100,105,99,97,116,101,115,32,116, + 104,97,116,32,97,32,115,112,101,99,39,115,32,34,111,114, + 105,103,105,110,34,32,114,101,102,108,101,99,116,115,32,97, + 32,108,111,99,97,116,105,111,110,46,10,32,32,32,32,87, + 104,101,110,32,116,104,105,115,32,105,115,32,84,114,117,101, + 44,32,96,95,95,102,105,108,101,95,95,96,32,97,116,116, + 114,105,98,117,116,101,32,111,102,32,116,104,101,32,109,111, + 100,117,108,101,32,105,115,32,115,101,116,46,10,10,32,32, + 32,32,96,99,97,99,104,101,100,96,32,105,115,32,116,104, + 101,32,108,111,99,97,116,105,111,110,32,111,102,32,116,104, + 101,32,99,97,99,104,101,100,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,44,32,105,102,32,97,110,121,46,32, + 32,73,116,10,32,32,32,32,99,111,114,114,101,115,112,111, + 110,100,115,32,116,111,32,116,104,101,32,96,95,95,99,97, + 99,104,101,100,95,95,96,32,97,116,116,114,105,98,117,116, + 101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113,117, + 101,110,99,101,32,111,102,32,112,97,116,104,32,101,110,116, + 114,105,101,115,32,116,111,10,32,32,32,32,115,101,97,114, + 99,104,32,119,104,101,110,32,105,109,112,111,114,116,105,110, + 103,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, + 102,32,115,101,116,44,32,105,115,95,112,97,99,107,97,103, + 101,32,115,104,111,117,108,100,32,98,101,10,32,32,32,32, + 84,114,117,101,45,45,97,110,100,32,70,97,108,115,101,32, + 111,116,104,101,114,119,105,115,101,46,10,10,32,32,32,32, + 80,97,99,107,97,103,101,115,32,97,114,101,32,115,105,109, + 112,108,121,32,109,111,100,117,108,101,115,32,116,104,97,116, + 32,40,109,97,121,41,32,104,97,118,101,32,115,117,98,109, + 111,100,117,108,101,115,46,32,32,73,102,32,97,32,115,112, + 101,99,10,32,32,32,32,104,97,115,32,97,32,110,111,110, + 45,78,111,110,101,32,118,97,108,117,101,32,105,110,32,96, 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,33,0,0,0,114,20,0,0,0,114,116, - 0,0,0,114,120,0,0,0,114,121,0,0,0,114,122,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,34,0,0,0,111,1,0,0,115,16,0,0,0,6, - 2,6,1,6,1,6,1,14,1,6,3,10,1,255,128,122, - 19,77,111,100,117,108,101,83,112,101,99,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,6,0,0,0,67,0,0,0,115,102,0, - 0,0,100,1,160,0,124,0,106,1,161,1,100,2,160,0, - 124,0,106,2,161,1,103,2,125,1,124,0,106,3,100,0, - 117,1,114,52,124,1,160,4,100,3,160,0,124,0,106,3, - 161,1,161,1,1,0,124,0,106,5,100,0,117,1,114,80, - 124,1,160,4,100,4,160,0,124,0,106,5,161,1,161,1, - 1,0,100,5,160,0,124,0,106,6,106,7,100,6,160,8, - 124,1,161,1,161,2,83,0,41,7,78,122,9,110,97,109, - 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123, - 33,114,125,122,11,111,114,105,103,105,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,49,0, - 0,0,114,20,0,0,0,114,116,0,0,0,114,120,0,0, - 0,218,6,97,112,112,101,110,100,114,123,0,0,0,218,9, - 95,95,99,108,97,115,115,95,95,114,9,0,0,0,218,4, - 106,111,105,110,41,2,114,33,0,0,0,114,59,0,0,0, + 95,108,111,99,97,116,105,111,110,115,96,44,32,116,104,101, + 32,105,109,112,111,114,116,10,32,32,32,32,115,121,115,116, + 101,109,32,119,105,108,108,32,99,111,110,115,105,100,101,114, + 32,109,111,100,117,108,101,115,32,108,111,97,100,101,100,32, + 102,114,111,109,32,116,104,101,32,115,112,101,99,32,97,115, + 32,112,97,99,107,97,103,101,115,46,10,10,32,32,32,32, + 79,110,108,121,32,102,105,110,100,101,114,115,32,40,115,101, + 101,32,105,109,112,111,114,116,108,105,98,46,97,98,99,46, + 77,101,116,97,80,97,116,104,70,105,110,100,101,114,32,97, + 110,100,10,32,32,32,32,105,109,112,111,114,116,108,105,98, + 46,97,98,99,46,80,97,116,104,69,110,116,114,121,70,105, + 110,100,101,114,41,32,115,104,111,117,108,100,32,109,111,100, + 105,102,121,32,77,111,100,117,108,101,83,112,101,99,32,105, + 110,115,116,97,110,99,101,115,46,10,10,32,32,32,32,78, + 41,3,218,6,111,114,105,103,105,110,218,12,108,111,97,100, + 101,114,95,115,116,97,116,101,218,10,105,115,95,112,97,99, + 107,97,103,101,99,3,0,0,0,0,0,0,0,3,0,0, + 0,6,0,0,0,2,0,0,0,67,0,0,0,115,54,0, + 0,0,124,1,124,0,95,0,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,41,2,78,70,41,7,114,20, + 0,0,0,114,116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0, + 0,0,114,116,0,0,0,114,120,0,0,0,114,121,0,0, + 0,114,122,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,34,0,0,0,111,1,0,0,115,16, + 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, + 1,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,6,0,0,0,67,0,0, + 0,115,102,0,0,0,100,1,160,0,124,0,106,1,161,1, + 100,2,160,0,124,0,106,2,161,1,103,2,125,1,124,0, + 106,3,100,0,117,1,114,52,124,1,160,4,100,3,160,0, + 124,0,106,3,161,1,161,1,1,0,124,0,106,5,100,0, + 117,1,114,80,124,1,160,4,100,4,160,0,124,0,106,5, + 161,1,161,1,1,0,100,5,160,0,124,0,106,6,106,7, + 100,6,160,8,124,1,161,1,161,2,83,0,41,7,78,122, + 9,110,97,109,101,61,123,33,114,125,122,11,108,111,97,100, + 101,114,61,123,33,114,125,122,11,111,114,105,103,105,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,49,0,0,0,114,20,0,0,0,114,116,0,0,0, + 114,120,0,0,0,218,6,97,112,112,101,110,100,114,123,0, + 0,0,218,9,95,95,99,108,97,115,115,95,95,114,9,0, + 0,0,218,4,106,111,105,110,41,2,114,33,0,0,0,114, + 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,52,0,0,0,123,1,0,0,115,22,0,0, + 0,10,1,10,1,4,255,10,2,18,1,10,1,8,1,4, + 1,6,255,22,2,255,128,122,19,77,111,100,117,108,101,83, + 112,101,99,46,95,95,114,101,112,114,95,95,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0, + 0,67,0,0,0,115,102,0,0,0,124,0,106,0,125,2, + 122,72,124,0,106,1,124,1,106,1,107,2,111,76,124,0, + 106,2,124,1,106,2,107,2,111,76,124,0,106,3,124,1, + 106,3,107,2,111,76,124,2,124,1,106,0,107,2,111,76, + 124,0,106,4,124,1,106,4,107,2,111,76,124,0,106,5, + 124,1,106,5,107,2,87,0,83,0,4,0,116,6,121,100, + 1,0,1,0,1,0,116,7,6,0,89,0,83,0,48,0, + 114,0,0,0,0,41,8,114,123,0,0,0,114,20,0,0, + 0,114,116,0,0,0,114,120,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,2,0,0,0,218,14,78,111,116,73,109,112,108,101, + 109,101,110,116,101,100,41,3,114,33,0,0,0,90,5,111, + 116,104,101,114,90,4,115,109,115,108,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,6,95,95,101,113,95, + 95,133,1,0,0,115,32,0,0,0,6,1,2,1,12,1, + 10,1,2,255,10,2,2,254,8,3,2,253,10,4,2,252, + 10,5,4,251,12,6,10,1,255,128,122,17,77,111,100,117, + 108,101,83,112,101,99,46,95,95,101,113,95,95,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,58,0,0,0,124,0,106,0,100, + 0,117,0,114,52,124,0,106,1,100,0,117,1,114,52,124, + 0,106,2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0, + 0,114,120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,129,0,0,0,145,1,0,0,115, + 14,0,0,0,10,2,16,1,8,1,4,1,14,1,6,1, + 255,128,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,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,0,0, + 0,0,41,1,114,125,0,0,0,41,2,114,33,0,0,0, + 114,129,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,129,0,0,0,154,1,0,0,115,4,0, + 0,0,10,2,255,128,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 32,0,0,0,124,0,106,0,100,1,117,0,114,26,124,0, + 106,1,160,2,100,2,161,1,100,3,25,0,83,0,124,0, + 106,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,25,0,0, + 0,41,3,114,123,0,0,0,114,20,0,0,0,218,10,114, + 112,97,114,116,105,116,105,111,110,114,51,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,112, + 97,114,101,110,116,158,1,0,0,115,8,0,0,0,10,3, + 16,1,6,2,255,128,122,17,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,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,0,0, + 0,0,41,1,114,124,0,0,0,114,51,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,130,0, + 0,0,166,1,0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111, + 108,114,124,0,0,0,41,2,114,33,0,0,0,218,5,118, + 97,108,117,101,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,130,0,0,0,170,1,0,0,115,4,0,0, + 0,14,2,255,128,41,12,114,9,0,0,0,114,8,0,0, + 0,114,1,0,0,0,114,10,0,0,0,114,34,0,0,0, + 114,52,0,0,0,114,132,0,0,0,218,8,112,114,111,112, + 101,114,116,121,114,129,0,0,0,218,6,115,101,116,116,101, + 114,114,137,0,0,0,114,130,0,0,0,114,5,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 52,0,0,0,123,1,0,0,115,22,0,0,0,10,1,10, - 1,4,255,10,2,18,1,10,1,8,1,4,1,6,255,22, - 2,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, - 95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,102,0,0,0,124,0,106,0,125,2,122,72,124,0, - 106,1,124,1,106,1,107,2,111,76,124,0,106,2,124,1, - 106,2,107,2,111,76,124,0,106,3,124,1,106,3,107,2, - 111,76,124,2,124,1,106,0,107,2,111,76,124,0,106,4, - 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, - 107,2,87,0,83,0,4,0,116,6,121,100,1,0,1,0, - 1,0,116,7,6,0,89,0,83,0,48,0,114,0,0,0, - 0,41,8,114,123,0,0,0,114,20,0,0,0,114,116,0, - 0,0,114,120,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,2,0, - 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,41,3,114,33,0,0,0,90,5,111,116,104,101,114, - 90,4,115,109,115,108,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,6,95,95,101,113,95,95,133,1,0, - 0,115,32,0,0,0,6,1,2,1,12,1,10,1,2,255, - 10,2,2,254,8,3,2,253,10,4,2,252,10,5,4,251, - 12,6,10,1,255,128,122,17,77,111,100,117,108,101,83,112, - 101,99,46,95,95,101,113,95,95,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,58,0,0,0,124,0,106,0,100,0,117,0,114, - 52,124,0,106,1,100,0,117,1,114,52,124,0,106,2,114, - 52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114,120,0, - 0,0,114,124,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,51, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,129,0,0,0,145,1,0,0,115,14,0,0,0, - 10,2,16,1,8,1,4,1,14,1,6,1,255,128,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,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,0,0,0,0,41,1, - 114,125,0,0,0,41,2,114,33,0,0,0,114,129,0,0, + 119,0,0,0,74,1,0,0,115,36,0,0,0,8,0,4, + 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, + 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,255, + 128,114,119,0,0,0,169,2,114,120,0,0,0,114,122,0, + 0,0,99,2,0,0,0,0,0,0,0,2,0,0,0,6, + 0,0,0,8,0,0,0,67,0,0,0,115,150,0,0,0, + 116,0,124,1,100,1,131,2,114,74,116,1,100,2,117,0, + 114,22,116,2,130,1,116,1,106,3,125,4,124,3,100,2, + 117,0,114,48,124,4,124,0,124,1,100,3,141,2,83,0, + 124,3,114,56,103,0,110,2,100,2,125,5,124,4,124,0, + 124,1,124,5,100,4,141,3,83,0,124,3,100,2,117,0, + 114,134,116,0,124,1,100,5,131,2,114,130,122,14,124,1, + 160,4,124,0,161,1,125,3,87,0,110,26,4,0,116,5, + 121,128,1,0,1,0,1,0,100,2,125,3,89,0,110,6, + 48,0,100,6,125,3,116,6,124,0,124,1,124,2,124,3, + 100,7,141,4,83,0,41,8,122,53,82,101,116,117,114,110, + 32,97,32,109,111,100,117,108,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,116,0,0,0,41,2,114,116,0,0,0,114,123,0,0, + 0,114,122,0,0,0,70,114,142,0,0,0,41,7,114,11, + 0,0,0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0, + 114,119,0,0,0,41,6,114,20,0,0,0,114,116,0,0, + 0,114,120,0,0,0,114,122,0,0,0,114,143,0,0,0, + 90,6,115,101,97,114,99,104,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,98,0,0,0,175,1,0,0, + 115,38,0,0,0,10,2,8,1,4,1,6,1,8,2,12, + 1,12,1,6,1,2,1,6,255,8,3,10,1,2,1,14, + 1,12,1,10,1,4,3,16,2,255,128,114,98,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,8,0,0,0,67,0,0,0,115,40,1,0,0,122,10, + 124,0,106,0,125,3,87,0,110,18,4,0,116,1,121,28, + 1,0,1,0,1,0,89,0,110,14,48,0,124,3,100,0, + 117,1,114,42,124,3,83,0,124,0,106,2,125,4,124,1, + 100,0,117,0,114,86,122,10,124,0,106,3,125,1,87,0, + 110,18,4,0,116,1,121,84,1,0,1,0,1,0,89,0, + 110,2,48,0,122,10,124,0,106,4,125,5,87,0,110,22, + 4,0,116,1,121,118,1,0,1,0,1,0,100,0,125,5, + 89,0,110,2,48,0,124,2,100,0,117,0,114,174,124,5, + 100,0,117,0,114,170,122,10,124,1,106,5,125,2,87,0, + 110,26,4,0,116,1,121,168,1,0,1,0,1,0,100,0, + 125,2,89,0,110,6,48,0,124,5,125,2,122,10,124,0, + 106,6,125,6,87,0,110,22,4,0,116,1,121,206,1,0, + 1,0,1,0,100,0,125,6,89,0,110,2,48,0,122,14, + 116,7,124,0,106,8,131,1,125,7,87,0,110,22,4,0, + 116,1,121,244,1,0,1,0,1,0,100,0,125,7,89,0, + 110,2,48,0,116,9,124,4,124,1,124,2,100,1,141,3, + 125,3,124,5,100,0,117,0,144,1,114,18,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,120,0,0,0, + 70,84,41,13,114,113,0,0,0,114,2,0,0,0,114,9, + 0,0,0,114,106,0,0,0,114,115,0,0,0,218,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,119,0,0,0,114,124,0,0,0,114,129,0,0, + 0,114,123,0,0,0,41,8,114,104,0,0,0,114,116,0, + 0,0,114,120,0,0,0,114,103,0,0,0,114,20,0,0, + 0,90,8,108,111,99,97,116,105,111,110,114,129,0,0,0, + 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,17,95,115,112,101,99,95,102,114,111,109, + 95,109,111,100,117,108,101,201,1,0,0,115,74,0,0,0, + 2,2,10,1,12,1,6,1,8,2,4,1,6,2,8,1, + 2,1,10,1,12,1,6,2,2,1,10,1,12,1,10,1, + 8,1,8,1,2,1,10,1,12,1,10,1,4,2,2,1, + 10,1,12,1,10,1,2,1,14,1,12,1,10,1,14,2, + 20,1,6,1,6,1,4,1,255,128,114,149,0,0,0,70, + 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, + 0,0,0,0,0,1,0,0,0,5,0,0,0,8,0,0, + 0,67,0,0,0,115,214,1,0,0,124,2,115,20,116,0, + 124,1,100,1,100,0,131,3,100,0,117,0,114,52,122,12, + 124,0,106,1,124,1,95,2,87,0,110,18,4,0,116,3, + 121,50,1,0,1,0,1,0,89,0,110,2,48,0,124,2, + 115,72,116,0,124,1,100,2,100,0,131,3,100,0,117,0, + 114,174,124,0,106,4,125,3,124,3,100,0,117,0,114,144, + 124,0,106,5,100,0,117,1,114,144,116,6,100,0,117,0, + 114,108,116,7,130,1,116,6,106,8,125,4,124,4,160,9, + 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, + 124,0,95,4,100,0,124,1,95,11,122,10,124,3,124,1, + 95,12,87,0,110,18,4,0,116,3,121,172,1,0,1,0, + 1,0,89,0,110,2,48,0,124,2,115,194,116,0,124,1, + 100,3,100,0,131,3,100,0,117,0,114,226,122,12,124,0, + 106,13,124,1,95,14,87,0,110,18,4,0,116,3,121,224, + 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, + 124,1,95,15,87,0,110,18,4,0,116,3,121,254,1,0, + 1,0,1,0,89,0,110,2,48,0,124,2,144,1,115,24, + 116,0,124,1,100,4,100,0,131,3,100,0,117,0,144,1, + 114,70,124,0,106,5,100,0,117,1,144,1,114,70,122,12, + 124,0,106,5,124,1,95,16,87,0,110,20,4,0,116,3, + 144,1,121,68,1,0,1,0,1,0,89,0,110,2,48,0, + 124,0,106,17,144,1,114,210,124,2,144,1,115,102,116,0, + 124,1,100,5,100,0,131,3,100,0,117,0,144,1,114,136, + 122,12,124,0,106,18,124,1,95,11,87,0,110,20,4,0, + 116,3,144,1,121,134,1,0,1,0,1,0,89,0,110,2, + 48,0,124,2,144,1,115,160,116,0,124,1,100,6,100,0, + 131,3,100,0,117,0,144,1,114,210,124,0,106,19,100,0, + 117,1,144,1,114,210,122,14,124,0,106,19,124,1,95,20, + 87,0,124,1,83,0,4,0,116,3,144,1,121,208,1,0, + 1,0,1,0,89,0,124,1,83,0,48,0,124,1,83,0, + 41,7,78,114,9,0,0,0,114,106,0,0,0,218,11,95, + 95,112,97,99,107,97,103,101,95,95,114,148,0,0,0,114, + 115,0,0,0,114,146,0,0,0,41,21,114,13,0,0,0, + 114,20,0,0,0,114,9,0,0,0,114,2,0,0,0,114, + 116,0,0,0,114,123,0,0,0,114,133,0,0,0,114,134, + 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,115,0,0,0,114,106,0,0,0,114, + 137,0,0,0,114,152,0,0,0,114,113,0,0,0,114,148, + 0,0,0,114,130,0,0,0,114,120,0,0,0,114,129,0, + 0,0,114,146,0,0,0,41,5,114,103,0,0,0,114,104, + 0,0,0,114,151,0,0,0,114,116,0,0,0,114,153,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, + 97,116,116,114,115,246,1,0,0,115,104,0,0,0,20,4, + 2,1,12,1,12,1,6,1,20,2,6,1,8,1,10,2, + 8,1,4,1,6,1,10,2,8,1,6,1,6,11,2,1, + 10,1,12,1,6,1,20,2,2,1,12,1,12,1,6,1, + 2,2,10,1,12,1,6,1,24,2,12,1,2,1,12,1, + 14,1,6,1,8,2,24,1,2,1,12,1,14,1,6,1, + 24,2,12,1,2,1,10,1,4,3,14,254,2,1,4,1, + 2,255,4,1,255,128,114,155,0,0,0,99,1,0,0,0, + 0,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,1,110,20,116,0,124,0,106,1,100,3,131, + 2,114,50,116,3,100,4,131,1,130,1,124,1,100,1,117, + 0,114,68,116,4,124,0,106,5,131,1,125,1,116,6,124, + 0,124,1,131,2,1,0,124,1,83,0,41,5,122,43,67, + 114,101,97,116,101,32,97,32,109,111,100,117,108,101,32,98, + 97,115,101,100,32,111,110,32,116,104,101,32,112,114,111,118, + 105,100,101,100,32,115,112,101,99,46,78,218,13,99,114,101, + 97,116,101,95,109,111,100,117,108,101,218,11,101,120,101,99, + 95,109,111,100,117,108,101,122,66,108,111,97,100,101,114,115, + 32,116,104,97,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,11,0, + 0,0,114,116,0,0,0,114,156,0,0,0,114,83,0,0, + 0,114,21,0,0,0,114,20,0,0,0,114,155,0,0,0, + 169,2,114,103,0,0,0,114,104,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,16,109,111,100, + 117,108,101,95,102,114,111,109,95,115,112,101,99,62,2,0, + 0,115,20,0,0,0,4,3,12,1,14,3,12,1,8,1, + 8,2,10,1,10,1,4,1,255,128,114,159,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,67,0,0,0,115,100,0,0,0,124,0,106, + 0,100,1,117,0,114,14,100,2,110,4,124,0,106,0,125, + 1,124,0,106,1,100,1,117,0,114,64,124,0,106,2,100, + 1,117,0,114,50,100,3,160,3,124,1,161,1,83,0,100, + 4,160,3,124,1,124,0,106,2,161,2,83,0,124,0,106, + 4,114,84,100,5,160,3,124,1,124,0,106,1,161,2,83, + 0,100,6,160,3,124,0,106,0,124,0,106,1,161,2,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,108,0,0, + 0,114,109,0,0,0,114,110,0,0,0,114,111,0,0,0, + 250,18,60,109,111,100,117,108,101,32,123,33,114,125,32,40, + 123,125,41,62,41,5,114,20,0,0,0,114,120,0,0,0, + 114,116,0,0,0,114,49,0,0,0,114,130,0,0,0,41, + 2,114,103,0,0,0,114,20,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,114,0,0,0,79, + 2,0,0,115,18,0,0,0,20,3,10,1,10,1,10,1, + 14,2,6,2,14,1,16,2,255,128,114,114,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 10,0,0,0,67,0,0,0,115,26,1,0,0,124,0,106, + 0,125,2,116,1,124,2,131,1,143,246,1,0,116,2,106, + 3,160,4,124,2,161,1,124,1,117,1,114,54,100,1,160, + 5,124,2,161,1,125,3,116,6,124,3,124,2,100,2,141, + 2,130,1,122,160,124,0,106,7,100,3,117,0,114,106,124, + 0,106,8,100,3,117,0,114,90,116,6,100,4,124,0,106, + 0,100,2,141,2,130,1,116,9,124,0,124,1,100,5,100, + 6,141,3,1,0,110,80,116,9,124,0,124,1,100,5,100, + 6,141,3,1,0,116,10,124,0,106,7,100,7,131,2,115, + 174,116,11,124,0,106,7,131,1,155,0,100,8,157,2,125, + 3,116,12,160,13,124,3,116,14,161,2,1,0,124,0,106, + 7,160,15,124,2,161,1,1,0,110,12,124,0,106,7,160, + 16,124,1,161,1,1,0,87,0,116,2,106,3,160,17,124, + 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, + 0,60,0,110,28,116,2,106,3,160,17,124,0,106,0,161, + 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,48, + 0,87,0,100,3,4,0,4,0,131,3,1,0,124,1,83, + 0,49,0,144,1,115,12,48,0,1,0,1,0,1,0,89, + 0,1,0,124,1,83,0,41,9,122,70,69,120,101,99,117, + 116,101,32,116,104,101,32,115,112,101,99,39,115,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, + 110,32,97,110,32,101,120,105,115,116,105,110,103,32,109,111, + 100,117,108,101,39,115,32,110,97,109,101,115,112,97,99,101, + 46,122,30,109,111,100,117,108,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,19,0,0,0,78,250,14,109,105,115,115,105,110,103, + 32,108,111,97,100,101,114,84,114,150,0,0,0,114,157,0, + 0,0,250,55,46,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, + 108,108,105,110,103,32,98,97,99,107,32,116,111,32,108,111, + 97,100,95,109,111,100,117,108,101,40,41,41,18,114,20,0, + 0,0,114,54,0,0,0,114,18,0,0,0,114,99,0,0, + 0,114,38,0,0,0,114,49,0,0,0,114,83,0,0,0, + 114,116,0,0,0,114,123,0,0,0,114,155,0,0,0,114, + 11,0,0,0,114,7,0,0,0,114,95,0,0,0,114,96, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,218,11,108,111,97,100,95,109,111,100,117,108,101,114, + 157,0,0,0,218,3,112,111,112,41,4,114,103,0,0,0, + 114,104,0,0,0,114,20,0,0,0,114,102,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,100, + 0,0,0,96,2,0,0,115,50,0,0,0,6,2,10,1, + 16,1,10,1,12,1,2,1,10,1,10,1,14,1,16,2, + 14,2,12,1,16,1,12,2,14,1,12,2,2,128,14,4, + 14,1,14,255,26,1,4,1,18,255,4,1,255,128,114,100, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,8,0,0,0,67,0,0,0,115,18,1,0, + 0,122,18,124,0,106,0,160,1,124,0,106,2,161,1,1, + 0,87,0,110,46,1,0,1,0,1,0,124,0,106,2,116, + 3,106,4,118,0,114,64,116,3,106,4,160,5,124,0,106, + 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, + 0,130,0,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, + 1,100,1,100,0,131,3,100,0,117,0,114,140,122,12,124, + 0,106,0,124,1,95,7,87,0,110,18,4,0,116,8,121, + 138,1,0,1,0,1,0,89,0,110,2,48,0,116,6,124, + 1,100,2,100,0,131,3,100,0,117,0,114,216,122,40,124, + 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, + 194,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, + 1,95,10,87,0,110,18,4,0,116,8,121,214,1,0,1, + 0,1,0,89,0,110,2,48,0,116,6,124,1,100,6,100, + 0,131,3,100,0,117,0,144,1,114,14,122,12,124,0,124, + 1,95,13,87,0,124,1,83,0,4,0,116,8,144,1,121, + 12,1,0,1,0,1,0,89,0,124,1,83,0,48,0,124, + 1,83,0,41,7,78,114,106,0,0,0,114,152,0,0,0, + 114,148,0,0,0,114,135,0,0,0,114,25,0,0,0,114, + 113,0,0,0,41,14,114,116,0,0,0,114,164,0,0,0, + 114,20,0,0,0,114,18,0,0,0,114,99,0,0,0,114, + 165,0,0,0,114,13,0,0,0,114,106,0,0,0,114,2, + 0,0,0,114,9,0,0,0,114,152,0,0,0,114,11,0, + 0,0,114,136,0,0,0,114,113,0,0,0,114,158,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,129,0,0,0,154,1,0,0,115,4,0,0,0,10,2, - 255,128,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,32,0,0,0, - 124,0,106,0,100,1,117,0,114,26,124,0,106,1,160,2, - 100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41,3,114, - 123,0,0,0,114,20,0,0,0,218,10,114,112,97,114,116, - 105,116,105,111,110,114,51,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,6,112,97,114,101,110, - 116,158,1,0,0,115,8,0,0,0,10,3,16,1,6,2, - 255,128,122,17,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,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,0,0,0,0,41,1, - 114,124,0,0,0,114,51,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,130,0,0,0,166,1, - 0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111,108,114,124,0, - 0,0,41,2,114,33,0,0,0,218,5,118,97,108,117,101, + 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,126,2,0,0,115, + 62,0,0,0,2,3,18,1,6,1,12,1,14,1,12,1, + 2,1,14,3,12,1,16,1,2,1,12,1,12,1,6,1, + 16,1,2,1,8,4,10,1,22,1,12,1,6,1,18,1, + 2,1,8,1,4,3,14,254,2,1,4,1,2,255,4,1, + 255,128,114,166,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0, + 115,240,0,0,0,124,0,106,0,100,0,117,1,114,58,116, + 1,124,0,106,0,100,1,131,2,115,58,116,2,124,0,106, + 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, + 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, + 7,124,0,131,1,125,2,100,3,124,0,95,8,122,158,124, + 2,116,9,106,10,124,0,106,11,60,0,122,50,124,0,106, + 0,100,0,117,0,114,122,124,0,106,12,100,0,117,0,114, + 134,116,13,100,4,124,0,106,11,100,5,141,2,130,1,124, + 0,106,0,160,14,124,2,161,1,1,0,87,0,110,40,1, + 0,1,0,1,0,122,14,116,9,106,10,124,0,106,11,61, + 0,87,0,130,0,4,0,116,15,121,176,1,0,1,0,1, + 0,89,0,130,0,48,0,116,9,106,10,160,16,124,0,106, + 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, + 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, + 0,87,0,100,7,124,0,95,8,124,2,83,0,100,7,124, + 0,95,8,48,0,41,8,78,114,157,0,0,0,114,162,0, + 0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7, + 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, + 0,0,114,166,0,0,0,114,159,0,0,0,90,13,95,105, + 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, + 114,99,0,0,0,114,20,0,0,0,114,123,0,0,0,114, + 83,0,0,0,114,157,0,0,0,114,67,0,0,0,114,165, + 0,0,0,114,80,0,0,0,41,3,114,103,0,0,0,114, + 102,0,0,0,114,104,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,14,95,108,111,97,100,95, + 117,110,108,111,99,107,101,100,162,2,0,0,115,58,0,0, + 0,10,2,12,2,16,1,12,2,8,1,8,2,6,5,2, + 1,12,1,2,1,10,1,10,1,14,1,16,3,6,1,2, + 1,12,1,2,3,12,254,2,1,2,1,2,255,14,6,12, + 1,18,1,6,2,4,2,8,254,255,128,114,167,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,8,0,0,0,67,0,0,0,115,54,0,0,0,116,0, + 124,0,106,1,131,1,143,24,1,0,116,2,124,0,131,1, + 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 49,0,115,40,48,0,1,0,1,0,1,0,89,0,1,0, + 100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,97, + 32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,101, + 99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,104, + 101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,46, + 10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,101, + 32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,111, + 32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,32, + 32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,115, + 32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114, + 20,0,0,0,114,167,0,0,0,169,1,114,103,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 130,0,0,0,170,1,0,0,115,4,0,0,0,14,2,255, - 128,41,12,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,34,0,0,0,114,52,0,0, - 0,114,132,0,0,0,218,8,112,114,111,112,101,114,116,121, - 114,129,0,0,0,218,6,115,101,116,116,101,114,114,137,0, - 0,0,114,130,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,119,0,0,0, - 74,1,0,0,115,36,0,0,0,8,0,4,1,4,36,2, - 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, - 3,10,1,2,7,10,1,4,3,14,1,255,128,114,119,0, - 0,0,169,2,114,120,0,0,0,114,122,0,0,0,99,2, - 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,8, - 0,0,0,67,0,0,0,115,150,0,0,0,116,0,124,1, - 100,1,131,2,114,74,116,1,100,2,117,0,114,22,116,2, - 130,1,116,1,106,3,125,4,124,3,100,2,117,0,114,48, - 124,4,124,0,124,1,100,3,141,2,83,0,124,3,114,56, - 103,0,110,2,100,2,125,5,124,4,124,0,124,1,124,5, - 100,4,141,3,83,0,124,3,100,2,117,0,114,134,116,0, - 124,1,100,5,131,2,114,130,122,14,124,1,160,4,124,0, - 161,1,125,3,87,0,110,26,4,0,116,5,121,128,1,0, - 1,0,1,0,100,2,125,3,89,0,110,6,48,0,100,6, - 125,3,116,6,124,0,124,1,124,2,124,3,100,7,141,4, - 83,0,41,8,122,53,82,101,116,117,114,110,32,97,32,109, - 111,100,117,108,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,116,0,0, - 0,41,2,114,116,0,0,0,114,123,0,0,0,114,122,0, - 0,0,70,114,142,0,0,0,41,7,114,11,0,0,0,114, - 133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119,0,0, - 0,41,6,114,20,0,0,0,114,116,0,0,0,114,120,0, - 0,0,114,122,0,0,0,114,143,0,0,0,90,6,115,101, - 97,114,99,104,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,98,0,0,0,175,1,0,0,115,38,0,0, - 0,10,2,8,1,4,1,6,1,8,2,12,1,12,1,6, - 1,2,1,6,255,8,3,10,1,2,1,14,1,12,1,10, - 1,4,3,16,2,255,128,114,98,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0, - 0,67,0,0,0,115,40,1,0,0,122,10,124,0,106,0, - 125,3,87,0,110,18,4,0,116,1,121,28,1,0,1,0, - 1,0,89,0,110,14,48,0,124,3,100,0,117,1,114,42, - 124,3,83,0,124,0,106,2,125,4,124,1,100,0,117,0, - 114,86,122,10,124,0,106,3,125,1,87,0,110,18,4,0, - 116,1,121,84,1,0,1,0,1,0,89,0,110,2,48,0, - 122,10,124,0,106,4,125,5,87,0,110,22,4,0,116,1, - 121,118,1,0,1,0,1,0,100,0,125,5,89,0,110,2, - 48,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, - 114,170,122,10,124,1,106,5,125,2,87,0,110,26,4,0, - 116,1,121,168,1,0,1,0,1,0,100,0,125,2,89,0, - 110,6,48,0,124,5,125,2,122,10,124,0,106,6,125,6, - 87,0,110,22,4,0,116,1,121,206,1,0,1,0,1,0, - 100,0,125,6,89,0,110,2,48,0,122,14,116,7,124,0, - 106,8,131,1,125,7,87,0,110,22,4,0,116,1,121,244, - 1,0,1,0,1,0,100,0,125,7,89,0,110,2,48,0, - 116,9,124,4,124,1,124,2,100,1,141,3,125,3,124,5, - 100,0,117,0,144,1,114,18,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,120,0,0,0,70,84,41,13, - 114,113,0,0,0,114,2,0,0,0,114,9,0,0,0,114, - 106,0,0,0,114,115,0,0,0,218,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,119, - 0,0,0,114,124,0,0,0,114,129,0,0,0,114,123,0, - 0,0,41,8,114,104,0,0,0,114,116,0,0,0,114,120, - 0,0,0,114,103,0,0,0,114,20,0,0,0,90,8,108, - 111,99,97,116,105,111,110,114,129,0,0,0,114,123,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, - 117,108,101,201,1,0,0,115,74,0,0,0,2,2,10,1, - 12,1,6,1,8,2,4,1,6,2,8,1,2,1,10,1, - 12,1,6,2,2,1,10,1,12,1,10,1,8,1,8,1, - 2,1,10,1,12,1,10,1,4,2,2,1,10,1,12,1, - 10,1,2,1,14,1,12,1,10,1,14,2,20,1,6,1, - 6,1,4,1,255,128,114,149,0,0,0,70,169,1,218,8, - 111,118,101,114,114,105,100,101,99,2,0,0,0,0,0,0, - 0,1,0,0,0,5,0,0,0,8,0,0,0,67,0,0, - 0,115,214,1,0,0,124,2,115,20,116,0,124,1,100,1, - 100,0,131,3,100,0,117,0,114,52,122,12,124,0,106,1, - 124,1,95,2,87,0,110,18,4,0,116,3,121,50,1,0, - 1,0,1,0,89,0,110,2,48,0,124,2,115,72,116,0, - 124,1,100,2,100,0,131,3,100,0,117,0,114,174,124,0, - 106,4,125,3,124,3,100,0,117,0,114,144,124,0,106,5, - 100,0,117,1,114,144,116,6,100,0,117,0,114,108,116,7, - 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, - 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, - 100,0,124,1,95,11,122,10,124,3,124,1,95,12,87,0, - 110,18,4,0,116,3,121,172,1,0,1,0,1,0,89,0, - 110,2,48,0,124,2,115,194,116,0,124,1,100,3,100,0, - 131,3,100,0,117,0,114,226,122,12,124,0,106,13,124,1, - 95,14,87,0,110,18,4,0,116,3,121,224,1,0,1,0, - 1,0,89,0,110,2,48,0,122,10,124,0,124,1,95,15, - 87,0,110,18,4,0,116,3,121,254,1,0,1,0,1,0, - 89,0,110,2,48,0,124,2,144,1,115,24,116,0,124,1, - 100,4,100,0,131,3,100,0,117,0,144,1,114,70,124,0, - 106,5,100,0,117,1,144,1,114,70,122,12,124,0,106,5, - 124,1,95,16,87,0,110,20,4,0,116,3,144,1,121,68, - 1,0,1,0,1,0,89,0,110,2,48,0,124,0,106,17, - 144,1,114,210,124,2,144,1,115,102,116,0,124,1,100,5, - 100,0,131,3,100,0,117,0,144,1,114,136,122,12,124,0, - 106,18,124,1,95,11,87,0,110,20,4,0,116,3,144,1, - 121,134,1,0,1,0,1,0,89,0,110,2,48,0,124,2, - 144,1,115,160,116,0,124,1,100,6,100,0,131,3,100,0, - 117,0,144,1,114,210,124,0,106,19,100,0,117,1,144,1, - 114,210,122,14,124,0,106,19,124,1,95,20,87,0,124,1, - 83,0,4,0,116,3,144,1,121,208,1,0,1,0,1,0, - 89,0,124,1,83,0,48,0,124,1,83,0,41,7,78,114, - 9,0,0,0,114,106,0,0,0,218,11,95,95,112,97,99, - 107,97,103,101,95,95,114,148,0,0,0,114,115,0,0,0, - 114,146,0,0,0,41,21,114,13,0,0,0,114,20,0,0, - 0,114,9,0,0,0,114,2,0,0,0,114,116,0,0,0, - 114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0,0,0, - 114,152,0,0,0,114,113,0,0,0,114,148,0,0,0,114, - 130,0,0,0,114,120,0,0,0,114,129,0,0,0,114,146, - 0,0,0,41,5,114,103,0,0,0,114,104,0,0,0,114, - 151,0,0,0,114,116,0,0,0,114,153,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,18,95, - 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, - 115,246,1,0,0,115,104,0,0,0,20,4,2,1,12,1, - 12,1,6,1,20,2,6,1,8,1,10,2,8,1,4,1, - 6,1,10,2,8,1,6,1,6,11,2,1,10,1,12,1, - 6,1,20,2,2,1,12,1,12,1,6,1,2,2,10,1, - 12,1,6,1,24,2,12,1,2,1,12,1,14,1,6,1, - 8,2,24,1,2,1,12,1,14,1,6,1,24,2,12,1, - 2,1,10,1,4,3,14,254,2,1,4,1,2,255,4,1, - 255,128,114,155,0,0,0,99,1,0,0,0,0,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, - 1,110,20,116,0,124,0,106,1,100,3,131,2,114,50,116, - 3,100,4,131,1,130,1,124,1,100,1,117,0,114,68,116, - 4,124,0,106,5,131,1,125,1,116,6,124,0,124,1,131, - 2,1,0,124,1,83,0,41,5,122,43,67,114,101,97,116, - 101,32,97,32,109,111,100,117,108,101,32,98,97,115,101,100, - 32,111,110,32,116,104,101,32,112,114,111,118,105,100,101,100, - 32,115,112,101,99,46,78,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,218,11,101,120,101,99,95,109,111,100, - 117,108,101,122,66,108,111,97,100,101,114,115,32,116,104,97, - 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,11,0,0,0,114,116, - 0,0,0,114,156,0,0,0,114,83,0,0,0,114,21,0, - 0,0,114,20,0,0,0,114,155,0,0,0,169,2,114,103, - 0,0,0,114,104,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,16,109,111,100,117,108,101,95, - 102,114,111,109,95,115,112,101,99,62,2,0,0,115,20,0, - 0,0,4,3,12,1,14,3,12,1,8,1,8,2,10,1, - 10,1,4,1,255,128,114,159,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, - 0,114,14,100,2,110,4,124,0,106,0,125,1,124,0,106, - 1,100,1,117,0,114,64,124,0,106,2,100,1,117,0,114, - 50,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, - 1,124,0,106,2,161,2,83,0,124,0,106,4,114,84,100, - 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, - 3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114,109,0, - 0,0,114,110,0,0,0,114,111,0,0,0,250,18,60,109, - 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, - 41,5,114,20,0,0,0,114,120,0,0,0,114,116,0,0, - 0,114,49,0,0,0,114,130,0,0,0,41,2,114,103,0, - 0,0,114,20,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,114,0,0,0,79,2,0,0,115, - 18,0,0,0,20,3,10,1,10,1,10,1,14,2,6,2, - 14,1,16,2,255,128,114,114,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,10,0,0,0, - 67,0,0,0,115,26,1,0,0,124,0,106,0,125,2,116, - 1,124,2,131,1,143,246,1,0,116,2,106,3,160,4,124, - 2,161,1,124,1,117,1,114,54,100,1,160,5,124,2,161, - 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,122, - 160,124,0,106,7,100,3,117,0,114,106,124,0,106,8,100, - 3,117,0,114,90,116,6,100,4,124,0,106,0,100,2,141, - 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,110,80,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,116,10,124,0,106,7,100,7,131,2,115,174,116,11,124, - 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, - 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, - 2,161,1,1,0,110,12,124,0,106,7,160,16,124,1,161, - 1,1,0,87,0,116,2,106,3,160,17,124,0,106,0,161, - 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,110, - 28,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,48,0,87,0,100, - 3,4,0,4,0,131,3,1,0,124,1,83,0,49,0,144, - 1,115,12,48,0,1,0,1,0,1,0,89,0,1,0,124, - 1,83,0,41,9,122,70,69,120,101,99,117,116,101,32,116, - 104,101,32,115,112,101,99,39,115,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,32,105,110,32,97,110, - 32,101,120,105,115,116,105,110,103,32,109,111,100,117,108,101, - 39,115,32,110,97,109,101,115,112,97,99,101,46,122,30,109, - 111,100,117,108,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,19,0, - 0,0,78,250,14,109,105,115,115,105,110,103,32,108,111,97, - 100,101,114,84,114,150,0,0,0,114,157,0,0,0,250,55, - 46,101,120,101,99,95,109,111,100,117,108,101,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,108,111,97,100,95,109, - 111,100,117,108,101,40,41,41,18,114,20,0,0,0,114,54, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, - 0,0,114,49,0,0,0,114,83,0,0,0,114,116,0,0, - 0,114,123,0,0,0,114,155,0,0,0,114,11,0,0,0, - 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,218, - 13,73,109,112,111,114,116,87,97,114,110,105,110,103,218,11, - 108,111,97,100,95,109,111,100,117,108,101,114,157,0,0,0, - 218,3,112,111,112,41,4,114,103,0,0,0,114,104,0,0, - 0,114,20,0,0,0,114,102,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,100,0,0,0,96, - 2,0,0,115,48,0,0,0,6,2,10,1,16,1,10,1, - 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, - 16,1,12,2,14,1,14,2,14,4,14,1,14,255,26,1, - 4,1,18,255,4,1,255,128,114,100,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,18,1,0,0,122,18,124,0,106, - 0,160,1,124,0,106,2,161,1,1,0,87,0,110,46,1, - 0,1,0,1,0,124,0,106,2,116,3,106,4,118,0,114, - 64,116,3,106,4,160,5,124,0,106,2,161,1,125,1,124, - 1,116,3,106,4,124,0,106,2,60,0,130,0,116,3,106, - 4,160,5,124,0,106,2,161,1,125,1,124,1,116,3,106, - 4,124,0,106,2,60,0,116,6,124,1,100,1,100,0,131, - 3,100,0,117,0,114,140,122,12,124,0,106,0,124,1,95, - 7,87,0,110,18,4,0,116,8,121,138,1,0,1,0,1, - 0,89,0,110,2,48,0,116,6,124,1,100,2,100,0,131, - 3,100,0,117,0,114,216,122,40,124,1,106,9,124,1,95, - 10,116,11,124,1,100,3,131,2,115,194,124,0,106,2,160, - 12,100,4,161,1,100,5,25,0,124,1,95,10,87,0,110, - 18,4,0,116,8,121,214,1,0,1,0,1,0,89,0,110, - 2,48,0,116,6,124,1,100,6,100,0,131,3,100,0,117, - 0,144,1,114,14,122,12,124,0,124,1,95,13,87,0,124, - 1,83,0,4,0,116,8,144,1,121,12,1,0,1,0,1, - 0,89,0,124,1,83,0,48,0,124,1,83,0,41,7,78, - 114,106,0,0,0,114,152,0,0,0,114,148,0,0,0,114, - 135,0,0,0,114,25,0,0,0,114,113,0,0,0,41,14, - 114,116,0,0,0,114,164,0,0,0,114,20,0,0,0,114, - 18,0,0,0,114,99,0,0,0,114,165,0,0,0,114,13, - 0,0,0,114,106,0,0,0,114,2,0,0,0,114,9,0, - 0,0,114,152,0,0,0,114,11,0,0,0,114,136,0,0, - 0,114,113,0,0,0,114,158,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,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,126,2,0,0,115,62,0,0,0,2,3, - 18,1,6,1,12,1,14,1,12,1,2,1,14,3,12,1, - 16,1,2,1,12,1,12,1,6,1,16,1,2,1,8,4, - 10,1,22,1,12,1,6,1,18,1,2,1,8,1,4,3, - 14,254,2,1,4,1,2,255,4,1,255,128,114,166,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,11,0,0,0,67,0,0,0,115,240,0,0,0,124, - 0,106,0,100,0,117,1,114,58,116,1,124,0,106,0,100, - 1,131,2,115,58,116,2,124,0,106,0,131,1,155,0,100, - 2,157,2,125,1,116,3,160,4,124,1,116,5,161,2,1, - 0,116,6,124,0,131,1,83,0,116,7,124,0,131,1,125, - 2,100,3,124,0,95,8,122,158,124,2,116,9,106,10,124, - 0,106,11,60,0,122,50,124,0,106,0,100,0,117,0,114, - 122,124,0,106,12,100,0,117,0,114,134,116,13,100,4,124, - 0,106,11,100,5,141,2,130,1,124,0,106,0,160,14,124, - 2,161,1,1,0,87,0,110,40,1,0,1,0,1,0,122, - 14,116,9,106,10,124,0,106,11,61,0,87,0,130,0,4, - 0,116,15,121,176,1,0,1,0,1,0,89,0,130,0,48, - 0,116,9,106,10,160,16,124,0,106,11,161,1,125,2,124, - 2,116,9,106,10,124,0,106,11,60,0,116,17,100,6,124, - 0,106,11,124,0,106,0,131,3,1,0,87,0,100,7,124, - 0,95,8,124,2,83,0,100,7,124,0,95,8,48,0,41, - 8,78,114,157,0,0,0,114,162,0,0,0,84,114,161,0, - 0,0,114,19,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,18,114,116, - 0,0,0,114,11,0,0,0,114,7,0,0,0,114,95,0, - 0,0,114,96,0,0,0,114,163,0,0,0,114,166,0,0, - 0,114,159,0,0,0,90,13,95,105,110,105,116,105,97,108, - 105,122,105,110,103,114,18,0,0,0,114,99,0,0,0,114, - 20,0,0,0,114,123,0,0,0,114,83,0,0,0,114,157, - 0,0,0,114,67,0,0,0,114,165,0,0,0,114,80,0, - 0,0,41,3,114,103,0,0,0,114,102,0,0,0,114,104, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,14,95,108,111,97,100,95,117,110,108,111,99,107, - 101,100,162,2,0,0,115,58,0,0,0,10,2,12,2,16, - 1,12,2,8,1,8,2,6,5,2,1,12,1,2,1,10, - 1,10,1,14,1,16,3,6,1,2,1,12,1,2,3,12, - 254,2,1,2,1,2,255,14,6,12,1,18,1,6,2,4, - 2,8,254,255,128,114,167,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, - 0,0,0,115,54,0,0,0,116,0,124,0,106,1,131,1, - 143,24,1,0,116,2,124,0,131,1,87,0,2,0,100,1, - 4,0,4,0,131,3,1,0,83,0,49,0,115,40,48,0, - 1,0,1,0,1,0,89,0,1,0,100,1,83,0,41,2, - 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, - 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, - 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, - 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, - 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, - 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, - 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, - 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, - 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, - 115,44,32,116,104,97,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,54,0,0,0,114,20,0,0,0,114,167, - 0,0,0,169,1,114,103,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,101,0,0,0,207,2, - 0,0,115,6,0,0,0,12,9,42,1,255,128,114,101,0, - 0,0,99,0,0,0,0,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,100,2,90,4, - 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,20, - 100,6,100,7,132,1,131,1,90,8,101,7,100,21,100,8, - 100,9,132,1,131,1,90,9,101,5,100,10,100,11,132,0, - 131,1,90,10,101,5,100,12,100,13,132,0,131,1,90,11, - 101,7,101,12,100,14,100,15,132,0,131,1,131,1,90,13, - 101,7,101,12,100,16,100,17,132,0,131,1,131,1,90,14, - 101,7,101,12,100,18,100,19,132,0,131,1,131,1,90,15, - 101,7,101,16,131,1,90,17,100,5,83,0,41,22,218,15, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,122, - 144,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, - 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, - 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, - 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, - 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, - 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, - 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, - 32,122,8,98,117,105,108,116,45,105,110,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0, - 67,0,0,0,115,22,0,0,0,100,1,124,0,106,0,155, - 2,100,2,116,1,106,2,155,0,100,3,157,5,83,0,41, - 5,250,115,82,101,116,117,114,110,32,114,101,112,114,32,102, - 111,114,32,116,104,101,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,101,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,84,104,101,32,105,109,112,111,114,116,32,109,97, - 99,104,105,110,101,114,121,32,100,111,101,115,32,116,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,8,60,109,111,100,117,108,101,32, - 122,2,32,40,122,2,41,62,78,41,3,114,9,0,0,0, - 114,169,0,0,0,114,145,0,0,0,169,1,114,104,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,107,0,0,0,233,2,0,0,115,4,0,0,0,22,7, - 255,128,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,0,0,0,0,0,4,0,0, - 0,5,0,0,0,67,0,0,0,115,42,0,0,0,124,2, - 100,0,117,1,114,12,100,0,83,0,116,0,160,1,124,1, - 161,1,114,38,116,2,124,1,124,0,124,0,106,3,100,1, - 141,3,83,0,100,0,83,0,169,2,78,114,144,0,0,0, - 41,4,114,61,0,0,0,90,10,105,115,95,98,117,105,108, - 116,105,110,114,98,0,0,0,114,145,0,0,0,169,4,218, - 3,99,108,115,114,85,0,0,0,218,4,112,97,116,104,218, - 6,116,97,114,103,101,116,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,9,102,105,110,100,95,115,112,101, - 99,242,2,0,0,115,12,0,0,0,8,2,4,1,10,1, - 16,1,4,2,255,128,122,25,66,117,105,108,116,105,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,0,0,0,0,0,4,0, - 0,0,4,0,0,0,67,0,0,0,115,30,0,0,0,124, - 0,160,0,124,1,124,2,161,2,125,3,124,3,100,1,117, - 1,114,26,124,3,106,1,83,0,100,1,83,0,41,2,122, - 175,70,105,110,100,32,116,104,101,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, - 32,32,32,32,73,102,32,39,112,97,116,104,39,32,105,115, - 32,101,118,101,114,32,115,112,101,99,105,102,105,101,100,32, - 116,104,101,110,32,116,104,101,32,115,101,97,114,99,104,32, - 105,115,32,99,111,110,115,105,100,101,114,101,100,32,97,32, - 102,97,105,108,117,114,101,46,10,10,32,32,32,32,32,32, + 101,0,0,0,207,2,0,0,115,6,0,0,0,12,9,42, + 1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,20,100,6,100,7,132,1,131,1,90,8, + 101,7,100,21,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,101,12,100,14,100,15,132,0, + 131,1,131,1,90,13,101,7,101,12,100,16,100,17,132,0, + 131,1,131,1,90,14,101,7,101,12,100,18,100,19,132,0, + 131,1,131,1,90,15,101,7,101,16,131,1,90,17,100,5, + 83,0,41,22,218,15,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,122,144,77,101,116,97,32,112,97,116,104, + 32,105,109,112,111,114,116,32,102,111,114,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,46,10,10,32, + 32,32,32,65,108,108,32,109,101,116,104,111,100,115,32,97, + 114,101,32,101,105,116,104,101,114,32,99,108,97,115,115,32, + 111,114,32,115,116,97,116,105,99,32,109,101,116,104,111,100, + 115,32,116,111,32,97,118,111,105,100,32,116,104,101,32,110, + 101,101,100,32,116,111,10,32,32,32,32,105,110,115,116,97, + 110,116,105,97,116,101,32,116,104,101,32,99,108,97,115,115, + 46,10,10,32,32,32,32,122,8,98,117,105,108,116,45,105, + 110,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,5,0,0,0,67,0,0,0,115,22,0,0,0,100, + 1,124,0,106,0,155,2,100,2,116,1,106,2,155,0,100, + 3,157,5,83,0,41,5,250,115,82,101,116,117,114,110,32, + 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, + 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, + 101,115,32,116,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,8,60,109, + 111,100,117,108,101,32,122,2,32,40,122,2,41,62,78,41, + 3,114,9,0,0,0,114,169,0,0,0,114,145,0,0,0, + 169,1,114,104,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,107,0,0,0,233,2,0,0,115, + 4,0,0,0,22,7,255,128,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,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 42,0,0,0,124,2,100,0,117,1,114,12,100,0,83,0, + 116,0,160,1,124,1,161,1,114,38,116,2,124,1,124,0, + 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, + 78,114,144,0,0,0,41,4,114,61,0,0,0,90,10,105, + 115,95,98,117,105,108,116,105,110,114,98,0,0,0,114,145, + 0,0,0,169,4,218,3,99,108,115,114,85,0,0,0,218, + 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,242,2,0,0,115,12,0,0,0, + 8,2,4,1,10,1,16,1,4,2,255,128,122,25,66,117, + 105,108,116,105,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,0, + 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, + 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, + 3,124,3,100,1,117,1,114,26,124,3,106,1,83,0,100, + 1,83,0,41,2,122,175,70,105,110,100,32,116,104,101,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, + 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, + 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, + 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, + 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116, + 0,0,0,41,4,114,174,0,0,0,114,85,0,0,0,114, + 175,0,0,0,114,103,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,11,102,105,110,100,95,109, + 111,100,117,108,101,251,2,0,0,115,6,0,0,0,12,9, + 18,1,255,128,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,67,0,0,0,115,46,0,0,0,124, + 0,106,0,116,1,106,2,118,1,114,34,116,3,100,1,160, + 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, + 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19, + 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, + 114,82,0,0,0,114,83,0,0,0,114,49,0,0,0,114, + 71,0,0,0,114,61,0,0,0,90,14,99,114,101,97,116, + 101,95,98,117,105,108,116,105,110,114,168,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,156,0, + 0,0,7,3,0,0,115,12,0,0,0,12,3,12,1,4, + 1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101,120,101, + 99,95,98,117,105,108,116,105,110,114,171,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,157,0, + 0,0,15,3,0,0,115,4,0,0,0,16,3,255,128,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,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, + 122,57,82,101,116,117,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,5,0,0, + 0,169,2,114,174,0,0,0,114,85,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,8,103,101, + 116,95,99,111,100,101,20,3,0,0,115,4,0,0,0,4, + 4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115, + 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, + 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,10,103,101,116,95,115,111,117,114,99, + 101,26,3,0,0,115,4,0,0,0,4,4,255,128,122,26, + 66,117,105,108,116,105,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,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,3,122,52, + 82,101,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,78,114,5,0,0,0,114,179,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 122,0,0,0,32,3,0,0,115,4,0,0,0,4,4,255, + 128,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,18,114,9,0,0,0,114,8,0,0,0, + 114,1,0,0,0,114,10,0,0,0,114,145,0,0,0,218, + 12,115,116,97,116,105,99,109,101,116,104,111,100,114,107,0, + 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, + 177,0,0,0,114,178,0,0,0,114,156,0,0,0,114,157, + 0,0,0,114,90,0,0,0,114,180,0,0,0,114,181,0, + 0,0,114,122,0,0,0,114,105,0,0,0,114,164,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,169,0,0,0,222,2,0,0,115,48, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, + 1,2,8,12,1,2,11,10,1,2,7,10,1,2,4,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,12,1,12, + 4,255,128,114,169,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,144,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,22,100,6,100,7,132,1,131,1,90,8, + 101,7,100,23,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,100,14,100,15,132,0,131,1, + 90,12,101,7,101,13,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,13,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,13,100,20,100,21,132,0,131,1,131,1, + 90,16,100,5,83,0,41,24,218,14,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,112, + 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,10, + 32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,32, + 97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,115, + 32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,111, + 100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,32, + 110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,116, + 97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,115, + 115,46,10,10,32,32,32,32,90,6,102,114,111,122,101,110, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,16,0,0,0,100,1, + 160,0,124,0,106,1,116,2,106,3,161,2,83,0,41,3, + 114,170,0,0,0,114,160,0,0,0,78,41,4,114,49,0, + 0,0,114,9,0,0,0,114,184,0,0,0,114,145,0,0, + 0,41,1,218,1,109,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,107,0,0,0,52,3,0,0,115,4, + 0,0,0,16,7,255,128,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,0,0,0,0,0,0,0, + 0,4,0,0,0,5,0,0,0,67,0,0,0,115,30,0, + 0,0,116,0,160,1,124,1,161,1,114,26,116,2,124,1, + 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, + 114,172,0,0,0,41,4,114,61,0,0,0,114,92,0,0, + 0,114,98,0,0,0,114,145,0,0,0,114,173,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 177,0,0,0,61,3,0,0,115,8,0,0,0,10,2,16, + 1,4,2,255,128,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,0,0,0,0,0,3,0,0,0, + 3,0,0,0,67,0,0,0,115,18,0,0,0,116,0,160, + 1,124,1,161,1,114,14,124,0,83,0,100,1,83,0,41, + 2,122,93,70,105,110,100,32,97,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, 32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0,0,41,4,114, - 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,103, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,251, - 2,0,0,115,6,0,0,0,12,9,18,1,255,128,122,27, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, + 78,41,2,114,61,0,0,0,114,92,0,0,0,41,3,114, + 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,178,0, + 0,0,68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,46,0,0,0,124,0,106,0,116,1,106, - 2,118,1,114,34,116,3,100,1,160,4,124,0,106,0,161, - 1,124,0,106,0,100,2,141,2,130,1,116,5,116,6,106, - 7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0,0,78,41,8, - 114,20,0,0,0,114,18,0,0,0,114,82,0,0,0,114, - 83,0,0,0,114,49,0,0,0,114,71,0,0,0,114,61, - 0,0,0,90,14,99,114,101,97,116,101,95,98,117,105,108, - 116,105,110,114,168,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,156,0,0,0,7,3,0,0, - 115,12,0,0,0,12,3,12,1,4,1,6,255,12,2,255, - 128,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,117,108,101, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,0, - 116,1,106,2,124,0,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,71,0,0,0, - 114,61,0,0,0,90,12,101,120,101,99,95,98,117,105,108, - 116,105,110,114,171,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,157,0,0,0,15,3,0,0, - 115,4,0,0,0,16,3,255,128,122,27,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,101,120,101,99,95, + 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, + 42,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,5,0,0, + 0,114,168,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,156,0,0,0,77,3,0,0,115,4, + 0,0,0,4,0,255,128,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,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, + 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,91,0,0,0,41,10,114,113,0,0,0,114, + 20,0,0,0,114,61,0,0,0,114,92,0,0,0,114,83, + 0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0, + 0,0,114,20,0,0,0,218,4,99,111,100,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,157,0,0, + 0,81,3,0,0,115,16,0,0,0,8,2,10,1,10,1, + 2,1,6,255,12,2,16,1,255,128,122,26,70,114,111,122, + 101,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,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,122,57,82,101,116,117, - 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,5,0,0,0,169,2,114,174,0, - 0,0,114,85,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,8,103,101,116,95,99,111,100,101, - 20,3,0,0,115,4,0,0,0,4,4,255,128,122,24,66, - 117,105,108,116,105,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, - 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,122,56,82,101,116, - 117,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,115,111,117,114,99,101,32, - 99,111,100,101,46,78,114,5,0,0,0,114,179,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, + 10,0,0,0,116,0,124,0,124,1,131,2,83,0,41,2, + 122,95,76,111,97,100,32,97,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,164,0, + 0,0,90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,10,0,0,0,116,0,160,1,124,1,161, + 1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0, + 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,180,0,0,0,100,3,0,0,115,4, + 0,0,0,10,4,255,128,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,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,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,5,0, + 0,0,114,179,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,181,0,0,0,106,3,0,0,115, + 4,0,0,0,4,4,255,128,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,0,0,0,0, + 2,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2, + 114,61,0,0,0,90,17,105,115,95,102,114,111,122,101,110, + 95,112,97,99,107,97,103,101,114,179,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,122,0,0, + 0,112,3,0,0,115,4,0,0,0,10,4,255,128,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,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,145,0,0,0,114,182,0,0,0, + 114,107,0,0,0,114,183,0,0,0,114,177,0,0,0,114, + 178,0,0,0,114,156,0,0,0,114,157,0,0,0,114,164, + 0,0,0,114,94,0,0,0,114,180,0,0,0,114,181,0, + 0,0,114,122,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,184,0,0,0, + 41,3,0,0,115,50,0,0,0,8,0,4,2,4,7,2, + 2,10,1,2,8,12,1,2,6,12,1,2,8,10,1,2, + 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, + 1,12,1,2,4,2,1,16,1,255,128,114,184,0,0,0, + 99,0,0,0,0,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,83,0,41,7, + 218,18,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,122,36,67,111,110,116,101,120,116,32,109,97, + 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109, + 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 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,61,0,0,0,114,62,0,0,0,114,51,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,58,0,0,0,125,3,0,0,115,4,0,0,0,12, + 2,255,128,122,28,95,73,109,112,111,114,116,76,111,99,107, + 67,111,110,116,101,120,116,46,95,95,101,110,116,101,114,95, + 95,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, + 0,160,1,161,0,1,0,100,1,83,0,41,2,122,60,82, + 101,108,101,97,115,101,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,61, + 0,0,0,114,64,0,0,0,41,4,114,33,0,0,0,218, + 8,101,120,99,95,116,121,112,101,218,9,101,120,99,95,118, + 97,108,117,101,218,13,101,120,99,95,116,114,97,99,101,98, + 97,99,107,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,60,0,0,0,129,3,0,0,115,4,0,0,0, + 12,2,255,128,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,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,58,0,0,0,114,60,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,189,0,0,0,121,3,0,0,115, + 10,0,0,0,8,0,4,2,8,2,12,4,255,128,114,189, + 0,0,0,99,3,0,0,0,0,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, + 3,131,1,130,1,124,3,100,4,25,0,125,4,124,0,114, + 60,100,5,160,3,124,4,124,0,161,2,83,0,124,4,83, + 0,41,7,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,135,0,0,0,114,42,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, + 99,107,97,103,101,114,25,0,0,0,250,5,123,125,46,123, + 125,78,41,4,218,6,114,115,112,108,105,116,218,3,108,101, + 110,114,83,0,0,0,114,49,0,0,0,41,5,114,20,0, + 0,0,218,7,112,97,99,107,97,103,101,218,5,108,101,118, + 101,108,90,4,98,105,116,115,90,4,98,97,115,101,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,13,95, + 114,101,115,111,108,118,101,95,110,97,109,101,134,3,0,0, + 115,12,0,0,0,16,2,12,1,8,1,8,1,20,1,255, + 128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1, + 124,3,131,2,83,0,114,0,0,0,0,41,2,114,178,0, + 0,0,114,98,0,0,0,41,4,218,6,102,105,110,100,101, + 114,114,20,0,0,0,114,175,0,0,0,114,116,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,26,3,0,0,115, - 4,0,0,0,4,4,255,128,122,26,66,117,105,108,116,105, - 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,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,3,122,52,82,101,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,78, - 114,5,0,0,0,114,179,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,122,0,0,0,32,3, - 0,0,115,4,0,0,0,4,4,255,128,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,18, - 114,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, - 10,0,0,0,114,145,0,0,0,218,12,115,116,97,116,105, - 99,109,101,116,104,111,100,114,107,0,0,0,218,11,99,108, - 97,115,115,109,101,116,104,111,100,114,177,0,0,0,114,178, - 0,0,0,114,156,0,0,0,114,157,0,0,0,114,90,0, - 0,0,114,180,0,0,0,114,181,0,0,0,114,122,0,0, - 0,114,105,0,0,0,114,164,0,0,0,114,5,0,0,0, + 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, + 99,121,143,3,0,0,115,10,0,0,0,12,3,8,1,4, + 1,10,1,255,128,114,200,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,67, + 0,0,0,115,28,1,0,0,116,0,106,1,125,3,124,3, + 100,1,117,0,114,22,116,2,100,2,131,1,130,1,124,3, + 115,38,116,3,160,4,100,3,116,5,161,2,1,0,124,0, + 116,0,106,6,118,0,125,4,124,3,68,0,93,226,125,5, + 116,7,131,0,143,94,1,0,122,10,124,5,106,8,125,6, + 87,0,110,54,4,0,116,9,121,128,1,0,1,0,1,0, + 116,10,124,5,124,0,124,1,131,3,125,7,124,7,100,1, + 117,0,114,124,89,0,87,0,100,1,4,0,4,0,131,3, + 1,0,113,52,89,0,110,14,48,0,124,6,124,0,124,1, + 124,2,131,3,125,7,87,0,100,1,4,0,4,0,131,3, + 1,0,110,16,49,0,115,162,48,0,1,0,1,0,1,0, + 89,0,1,0,124,7,100,1,117,1,114,52,124,4,144,1, + 115,16,124,0,116,0,106,6,118,0,144,1,114,16,116,0, + 106,6,124,0,25,0,125,8,122,10,124,8,106,11,125,9, + 87,0,110,26,4,0,116,9,121,244,1,0,1,0,1,0, + 124,7,6,0,89,0,2,0,1,0,83,0,48,0,124,9, + 100,1,117,0,144,1,114,8,124,7,2,0,1,0,83,0, + 124,9,2,0,1,0,83,0,124,7,2,0,1,0,83,0, + 100,1,83,0,41,4,122,21,70,105,110,100,32,97,32,109, + 111,100,117,108,101,39,115,32,115,112,101,99,46,78,122,53, + 115,121,115,46,109,101,116,97,95,112,97,116,104,32,105,115, + 32,78,111,110,101,44,32,80,121,116,104,111,110,32,105,115, + 32,108,105,107,101,108,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, + 18,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114, + 83,0,0,0,114,95,0,0,0,114,96,0,0,0,114,163, + 0,0,0,114,99,0,0,0,114,189,0,0,0,114,177,0, + 0,0,114,2,0,0,0,114,200,0,0,0,114,113,0,0, + 0,41,10,114,20,0,0,0,114,175,0,0,0,114,176,0, + 0,0,114,201,0,0,0,90,9,105,115,95,114,101,108,111, + 97,100,114,199,0,0,0,114,177,0,0,0,114,103,0,0, + 0,114,104,0,0,0,114,113,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,10,95,102,105,110, + 100,95,115,112,101,99,152,3,0,0,115,56,0,0,0,6, + 2,8,1,8,2,4,3,12,1,10,5,8,1,8,1,2, + 1,10,1,12,1,12,1,8,1,22,1,42,2,8,1,18, + 2,10,1,2,1,10,1,12,1,14,4,10,2,8,1,8, + 2,8,2,4,2,255,128,114,202,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0, + 0,67,0,0,0,115,110,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,0,114,44,116,5, + 100,3,131,1,130,1,124,2,100,2,107,4,114,82,116,0, + 124,1,116,1,131,2,115,70,116,2,100,4,131,1,130,1, + 124,1,115,82,116,6,100,5,131,1,130,1,124,0,115,106, + 124,2,100,2,107,2,114,102,116,5,100,6,131,1,130,1, + 100,7,83,0,100,7,83,0,41,8,122,28,86,101,114,105, + 102,121,32,97,114,103,117,109,101,110,116,115,32,97,114,101, + 32,34,115,97,110,101,34,46,122,31,109,111,100,117,108,101, + 32,110,97,109,101,32,109,117,115,116,32,98,101,32,115,116, + 114,44,32,110,111,116,32,123,125,114,25,0,0,0,122,18, + 108,101,118,101,108,32,109,117,115,116,32,98,101,32,62,61, + 32,48,122,31,95,95,112,97,99,107,97,103,101,95,95,32, + 110,111,116,32,115,101,116,32,116,111,32,97,32,115,116,114, + 105,110,103,122,54,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,119, + 105,116,104,32,110,111,32,107,110,111,119,110,32,112,97,114, + 101,110,116,32,112,97,99,107,97,103,101,122,17,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,49,0, + 0,0,114,3,0,0,0,218,10,86,97,108,117,101,69,114, + 114,111,114,114,83,0,0,0,169,3,114,20,0,0,0,114, + 196,0,0,0,114,197,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,13,95,115,97,110,105,116, + 121,95,99,104,101,99,107,199,3,0,0,115,26,0,0,0, + 10,2,18,1,8,1,8,1,8,1,10,1,8,1,4,1, + 8,1,12,2,8,1,8,255,255,128,114,208,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, + 0,0,0,0,9,0,0,0,8,0,0,0,67,0,0,0, + 115,20,1,0,0,100,0,125,2,124,0,160,0,100,1,161, + 1,100,2,25,0,125,3,124,3,114,128,124,3,116,1,106, + 2,118,1,114,42,116,3,124,1,124,3,131,2,1,0,124, + 0,116,1,106,2,118,0,114,62,116,1,106,2,124,0,25, + 0,83,0,116,1,106,2,124,3,25,0,125,4,122,10,124, + 4,106,4,125,2,87,0,110,44,4,0,116,5,121,126,1, + 0,1,0,1,0,116,6,100,3,23,0,160,7,124,0,124, + 3,161,2,125,5,116,8,124,5,124,0,100,4,141,2,100, + 0,130,2,48,0,116,9,124,0,124,2,131,2,125,6,124, + 6,100,0,117,0,114,164,116,8,116,6,160,7,124,0,161, + 1,124,0,100,4,141,2,130,1,116,10,124,6,131,1,125, + 7,124,3,144,1,114,16,116,1,106,2,124,3,25,0,125, + 4,124,0,160,0,100,1,161,1,100,5,25,0,125,8,122, + 18,116,11,124,4,124,8,124,7,131,3,1,0,87,0,124, + 7,83,0,4,0,116,5,144,1,121,14,1,0,1,0,1, + 0,100,6,124,3,155,2,100,7,124,8,155,2,157,4,125, + 5,116,12,160,13,124,5,116,14,161,2,1,0,89,0,124, + 7,83,0,48,0,124,7,83,0,41,8,78,114,135,0,0, + 0,114,25,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, + 19,0,0,0,233,2,0,0,0,122,27,67,97,110,110,111, + 116,32,115,101,116,32,97,110,32,97,116,116,114,105,98,117, + 116,101,32,111,110,32,122,18,32,102,111,114,32,99,104,105, + 108,100,32,109,111,100,117,108,101,32,41,15,114,136,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,71,0,0,0, + 114,148,0,0,0,114,2,0,0,0,218,8,95,69,82,82, + 95,77,83,71,114,49,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,202, + 0,0,0,114,167,0,0,0,114,12,0,0,0,114,95,0, + 0,0,114,96,0,0,0,114,163,0,0,0,41,9,114,20, + 0,0,0,218,7,105,109,112,111,114,116,95,114,175,0,0, + 0,114,137,0,0,0,90,13,112,97,114,101,110,116,95,109, + 111,100,117,108,101,114,102,0,0,0,114,103,0,0,0,114, + 104,0,0,0,90,5,99,104,105,108,100,114,5,0,0,0, + 114,5,0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1,14,1, + 4,1,10,1,10,1,10,2,10,1,10,1,2,1,10,1, + 12,1,16,1,16,1,10,1,8,1,18,1,8,2,6,1, + 10,2,14,1,2,1,14,1,4,4,14,253,16,1,14,1, + 4,1,2,255,4,1,255,128,114,213,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,8,0, + 0,0,67,0,0,0,115,128,0,0,0,116,0,124,0,131, + 1,143,62,1,0,116,1,106,2,160,3,124,0,116,4,161, + 2,125,2,124,2,116,4,117,0,114,56,116,5,124,0,124, + 1,131,2,87,0,2,0,100,1,4,0,4,0,131,3,1, + 0,83,0,87,0,100,1,4,0,4,0,131,3,1,0,110, + 16,49,0,115,76,48,0,1,0,1,0,1,0,89,0,1, + 0,124,2,100,1,117,0,114,116,100,2,160,6,124,0,161, + 1,125,3,116,7,124,3,124,0,100,3,141,2,130,1,116, + 8,124,0,131,1,1,0,124,2,83,0,41,4,122,25,70, + 105,110,100,32,97,110,100,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0,0,114, + 18,0,0,0,114,99,0,0,0,114,38,0,0,0,218,14, + 95,78,69,69,68,83,95,76,79,65,68,73,78,71,114,213, + 0,0,0,114,49,0,0,0,114,211,0,0,0,114,69,0, + 0,0,41,4,114,20,0,0,0,114,212,0,0,0,114,104, + 0,0,0,114,79,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,14,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,253,3,0,0,115,24,0,0,0, + 10,2,14,1,8,1,54,1,8,2,4,1,2,1,4,255, + 12,2,8,2,4,1,255,128,114,215,0,0,0,114,25,0, + 0,0,99,3,0,0,0,0,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,3,125,0, + 116,2,124,0,116,3,131,2,83,0,41,3,97,50,1,0, + 0,73,109,112,111,114,116,32,97,110,100,32,114,101,116,117, + 114,110,32,116,104,101,32,109,111,100,117,108,101,32,98,97, + 115,101,100,32,111,110,32,105,116,115,32,110,97,109,101,44, + 32,116,104,101,32,112,97,99,107,97,103,101,32,116,104,101, + 32,99,97,108,108,32,105,115,10,32,32,32,32,98,101,105, + 110,103,32,109,97,100,101,32,102,114,111,109,44,32,97,110, + 100,32,116,104,101,32,108,101,118,101,108,32,97,100,106,117, + 115,116,109,101,110,116,46,10,10,32,32,32,32,84,104,105, + 115,32,102,117,110,99,116,105,111,110,32,114,101,112,114,101, + 115,101,110,116,115,32,116,104,101,32,103,114,101,97,116,101, + 115,116,32,99,111,109,109,111,110,32,100,101,110,111,109,105, + 110,97,116,111,114,32,111,102,32,102,117,110,99,116,105,111, + 110,97,108,105,116,121,10,32,32,32,32,98,101,116,119,101, + 101,110,32,105,109,112,111,114,116,95,109,111,100,117,108,101, + 32,97,110,100,32,95,95,105,109,112,111,114,116,95,95,46, + 32,84,104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0,0,0, + 114,198,0,0,0,114,215,0,0,0,218,11,95,103,99,100, + 95,105,109,112,111,114,116,114,207,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,216,0,0,0, + 13,4,0,0,115,10,0,0,0,12,9,8,1,12,1,10, + 1,255,128,114,216,0,0,0,169,1,218,9,114,101,99,117, + 114,115,105,118,101,99,3,0,0,0,0,0,0,0,1,0, + 0,0,8,0,0,0,11,0,0,0,67,0,0,0,115,216, + 0,0,0,124,1,68,0,93,204,125,4,116,0,124,4,116, + 1,131,2,115,64,124,3,114,34,124,0,106,2,100,1,23, + 0,125,5,110,4,100,2,125,5,116,3,100,3,124,5,155, + 0,100,4,116,4,124,4,131,1,106,2,155,0,157,4,131, + 1,130,1,124,4,100,5,107,2,114,106,124,3,115,4,116, + 5,124,0,100,6,131,2,114,4,116,6,124,0,124,0,106, + 7,124,2,100,7,100,8,141,4,1,0,113,4,116,5,124, + 0,124,4,131,2,115,4,100,9,160,8,124,0,106,2,124, + 4,161,2,125,6,122,14,116,9,124,2,124,6,131,2,1, + 0,87,0,113,4,4,0,116,10,121,214,1,0,125,7,1, + 0,122,42,124,7,106,11,124,6,107,2,114,200,116,12,106, + 13,160,14,124,6,116,15,161,2,100,10,117,1,114,200,87, + 0,89,0,100,10,125,7,126,7,113,4,130,0,100,10,125, + 7,126,7,48,0,124,0,83,0,48,0,41,11,122,238,70, + 105,103,117,114,101,32,111,117,116,32,119,104,97,116,32,95, + 95,105,109,112,111,114,116,95,95,32,115,104,111,117,108,100, + 32,114,101,116,117,114,110,46,10,10,32,32,32,32,84,104, + 101,32,105,109,112,111,114,116,95,32,112,97,114,97,109,101, + 116,101,114,32,105,115,32,97,32,99,97,108,108,97,98,108, + 101,32,119,104,105,99,104,32,116,97,107,101,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,109,111,100,117,108,101, + 32,116,111,10,32,32,32,32,105,109,112,111,114,116,46,32, + 73,116,32,105,115,32,114,101,113,117,105,114,101,100,32,116, + 111,32,100,101,99,111,117,112,108,101,32,116,104,101,32,102, + 117,110,99,116,105,111,110,32,102,114,111,109,32,97,115,115, + 117,109,105,110,103,32,105,109,112,111,114,116,108,105,98,39, + 115,10,32,32,32,32,105,109,112,111,114,116,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,105,115,32,100, + 101,115,105,114,101,100,46,10,10,32,32,32,32,122,8,46, + 95,95,97,108,108,95,95,122,13,96,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,217,0,0,0,114,193,0,0,0,78,41,16,114,203, + 0,0,0,114,204,0,0,0,114,9,0,0,0,114,205,0, + 0,0,114,3,0,0,0,114,11,0,0,0,218,16,95,104, + 97,110,100,108,101,95,102,114,111,109,108,105,115,116,114,220, + 0,0,0,114,49,0,0,0,114,71,0,0,0,114,211,0, + 0,0,114,20,0,0,0,114,18,0,0,0,114,99,0,0, + 0,114,38,0,0,0,114,214,0,0,0,41,8,114,104,0, + 0,0,218,8,102,114,111,109,108,105,115,116,114,212,0,0, + 0,114,218,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,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 169,0,0,0,222,2,0,0,115,48,0,0,0,8,0,4, - 2,4,7,2,2,10,1,2,8,12,1,2,8,12,1,2, - 11,10,1,2,7,10,1,2,4,2,1,12,1,2,4,2, - 1,12,1,2,4,2,1,12,1,12,4,255,128,114,169,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,64,0,0,0,115,144,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4, - 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,22, - 100,6,100,7,132,1,131,1,90,8,101,7,100,23,100,8, - 100,9,132,1,131,1,90,9,101,5,100,10,100,11,132,0, - 131,1,90,10,101,5,100,12,100,13,132,0,131,1,90,11, - 101,7,100,14,100,15,132,0,131,1,90,12,101,7,101,13, - 100,16,100,17,132,0,131,1,131,1,90,14,101,7,101,13, - 100,18,100,19,132,0,131,1,131,1,90,15,101,7,101,13, - 100,20,100,21,132,0,131,1,131,1,90,16,100,5,83,0, - 41,24,218,14,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,122,142,77,101,116,97,32,112,97,116,104,32,105,109, - 112,111,114,116,32,102,111,114,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,115,46,10,10,32,32,32,32,65,108, - 108,32,109,101,116,104,111,100,115,32,97,114,101,32,101,105, - 116,104,101,114,32,99,108,97,115,115,32,111,114,32,115,116, - 97,116,105,99,32,109,101,116,104,111,100,115,32,116,111,32, - 97,118,111,105,100,32,116,104,101,32,110,101,101,100,32,116, - 111,10,32,32,32,32,105,110,115,116,97,110,116,105,97,116, - 101,32,116,104,101,32,99,108,97,115,115,46,10,10,32,32, - 32,32,90,6,102,114,111,122,101,110,99,1,0,0,0,0, + 221,0,0,0,28,4,0,0,115,54,0,0,0,8,10,10, + 1,4,1,12,1,4,2,10,1,8,1,8,255,8,2,14, + 1,10,1,2,1,8,255,10,2,14,1,2,1,14,1,14, + 1,10,4,16,1,2,255,12,2,2,1,8,128,4,1,2, + 248,255,128,114,221,0,0,0,99,1,0,0,0,0,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,117,1, + 114,82,124,2,100,3,117,1,114,78,124,1,124,2,106,1, + 107,3,114,78,116,2,106,3,100,4,124,1,155,2,100,5, + 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, + 141,3,1,0,124,1,83,0,124,2,100,3,117,1,114,96, + 124,2,106,1,83,0,116,2,106,3,100,9,116,4,100,7, + 100,8,141,3,1,0,124,0,100,10,25,0,125,1,100,11, + 124,0,118,1,114,142,124,1,160,5,100,12,161,1,100,13, + 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, + 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, + 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, + 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, + 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, + 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, + 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, + 101,116,32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89,99,97, + 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, + 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, + 95,32,111,114,32,95,95,112,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,9,0,0,0,114,148,0,0, + 0,114,135,0,0,0,114,25,0,0,0,41,6,114,38,0, + 0,0,114,137,0,0,0,114,95,0,0,0,114,96,0,0, + 0,114,163,0,0,0,114,136,0,0,0,41,3,218,7,103, + 108,111,98,97,108,115,114,196,0,0,0,114,103,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 17,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101, + 95,95,65,4,0,0,115,44,0,0,0,10,7,10,1,8, + 1,18,1,6,1,2,1,4,255,4,1,6,255,4,2,6, + 254,4,3,8,1,6,1,6,2,4,2,6,254,8,3,8, + 1,14,1,4,1,255,128,114,227,0,0,0,114,5,0,0, + 0,99,5,0,0,0,0,0,0,0,0,0,0,0,9,0, + 0,0,5,0,0,0,67,0,0,0,115,174,0,0,0,124, + 4,100,1,107,2,114,18,116,0,124,0,131,1,125,5,110, + 36,124,1,100,2,117,1,114,30,124,1,110,2,105,0,125, + 6,116,1,124,6,131,1,125,7,116,0,124,0,124,7,124, + 4,131,3,125,5,124,3,115,148,124,4,100,1,107,2,114, + 84,116,0,124,0,160,2,100,3,161,1,100,1,25,0,131, + 1,83,0,124,0,115,92,124,5,83,0,116,3,124,0,131, + 1,116,3,124,0,160,2,100,3,161,1,100,1,25,0,131, + 1,24,0,125,8,116,4,106,5,124,5,106,6,100,2,116, + 3,124,5,106,6,131,1,124,8,24,0,133,2,25,0,25, + 0,83,0,116,7,124,5,100,4,131,2,114,170,116,8,124, + 5,124,3,116,0,131,3,83,0,124,5,83,0,41,5,97, + 215,1,0,0,73,109,112,111,114,116,32,97,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,84,104,101,32,39,103, + 108,111,98,97,108,115,39,32,97,114,103,117,109,101,110,116, + 32,105,115,32,117,115,101,100,32,116,111,32,105,110,102,101, + 114,32,119,104,101,114,101,32,116,104,101,32,105,109,112,111, + 114,116,32,105,115,32,111,99,99,117,114,114,105,110,103,32, + 102,114,111,109,10,32,32,32,32,116,111,32,104,97,110,100, + 108,101,32,114,101,108,97,116,105,118,101,32,105,109,112,111, + 114,116,115,46,32,84,104,101,32,39,108,111,99,97,108,115, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, + 110,111,114,101,100,46,32,84,104,101,10,32,32,32,32,39, + 102,114,111,109,108,105,115,116,39,32,97,114,103,117,109,101, + 110,116,32,115,112,101,99,105,102,105,101,115,32,119,104,97, + 116,32,115,104,111,117,108,100,32,101,120,105,115,116,32,97, + 115,32,97,116,116,114,105,98,117,116,101,115,32,111,110,32, + 116,104,101,32,109,111,100,117,108,101,10,32,32,32,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,32,40,101, + 46,103,46,32,96,96,102,114,111,109,32,109,111,100,117,108, + 101,32,105,109,112,111,114,116,32,60,102,114,111,109,108,105, + 115,116,62,96,96,41,46,32,32,84,104,101,32,39,108,101, + 118,101,108,39,10,32,32,32,32,97,114,103,117,109,101,110, + 116,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, + 32,112,97,99,107,97,103,101,32,108,111,99,97,116,105,111, + 110,32,116,111,32,105,109,112,111,114,116,32,102,114,111,109, + 32,105,110,32,97,32,114,101,108,97,116,105,118,101,10,32, + 32,32,32,105,109,112,111,114,116,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,46,46,112,107,103,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,25,0,0,0, + 78,114,135,0,0,0,114,148,0,0,0,41,9,114,216,0, + 0,0,114,227,0,0,0,218,9,112,97,114,116,105,116,105, + 111,110,114,195,0,0,0,114,18,0,0,0,114,99,0,0, + 0,114,9,0,0,0,114,11,0,0,0,114,221,0,0,0, + 41,9,114,20,0,0,0,114,226,0,0,0,218,6,108,111, + 99,97,108,115,114,222,0,0,0,114,197,0,0,0,114,104, + 0,0,0,90,8,103,108,111,98,97,108,115,95,114,196,0, + 0,0,90,7,99,117,116,95,111,102,102,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,10,95,95,105,109, + 112,111,114,116,95,95,92,4,0,0,115,32,0,0,0,8, + 11,10,1,16,2,8,1,12,1,4,1,8,3,18,1,4, + 1,4,1,26,4,30,3,10,1,12,1,4,2,255,128,114, + 230,0,0,0,99,1,0,0,0,0,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, + 117,0,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,169,0,0,0,114,177,0, + 0,0,114,83,0,0,0,114,167,0,0,0,41,2,114,20, + 0,0,0,114,103,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,18,95,98,117,105,108,116,105, + 110,95,102,114,111,109,95,110,97,109,101,129,4,0,0,115, + 10,0,0,0,10,1,8,1,12,1,8,1,255,128,114,231, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 10,0,0,0,5,0,0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125, + 3,125,4,116,5,124,4,124,2,131,2,114,26,124,3,116, + 1,106,6,118,0,114,60,116,7,125,5,110,16,116,0,160, + 8,124,3,161,1,114,26,116,9,125,5,110,0,116,10,124, + 4,124,5,131,2,125,6,116,11,124,6,124,4,131,2,1, + 0,113,26,116,1,106,3,116,12,25,0,125,7,100,1,68, + 0,93,46,125,8,124,8,116,1,106,3,118,1,114,136,116, + 13,124,8,131,1,125,9,110,10,116,1,106,3,124,8,25, + 0,125,9,116,14,124,7,124,8,124,9,131,3,1,0,113, + 112,100,2,83,0,41,3,122,250,83,101,116,117,112,32,105, + 109,112,111,114,116,108,105,98,32,98,121,32,105,109,112,111, + 114,116,105,110,103,32,110,101,101,100,101,100,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,110, + 100,32,105,110,106,101,99,116,105,110,103,32,116,104,101,109, + 10,32,32,32,32,105,110,116,111,32,116,104,101,32,103,108, + 111,98,97,108,32,110,97,109,101,115,112,97,99,101,46,10, + 10,32,32,32,32,65,115,32,115,121,115,32,105,115,32,110, + 101,101,100,101,100,32,102,111,114,32,115,121,115,46,109,111, + 100,117,108,101,115,32,97,99,99,101,115,115,32,97,110,100, + 32,95,105,109,112,32,105,115,32,110,101,101,100,101,100,32, + 116,111,32,108,111,97,100,32,98,117,105,108,116,45,105,110, + 10,32,32,32,32,109,111,100,117,108,101,115,44,32,116,104, + 111,115,101,32,116,119,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,26,0,0,0,114,95,0,0,0,114, + 68,0,0,0,78,41,15,114,61,0,0,0,114,18,0,0, + 0,114,3,0,0,0,114,99,0,0,0,218,5,105,116,101, + 109,115,114,203,0,0,0,114,82,0,0,0,114,169,0,0, + 0,114,92,0,0,0,114,184,0,0,0,114,149,0,0,0, + 114,155,0,0,0,114,9,0,0,0,114,231,0,0,0,114, + 12,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,20,0,0, + 0,114,104,0,0,0,114,116,0,0,0,114,103,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,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,6,95,115,101,116, + 117,112,136,4,0,0,115,38,0,0,0,4,9,4,1,8, + 3,18,1,10,1,10,1,6,1,10,1,6,1,10,3,12, + 1,10,3,8,1,10,1,10,1,10,2,14,1,4,251,255, + 128,114,235,0,0,0,99,2,0,0,0,0,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,106,2,160,3, + 116,5,161,1,1,0,100,1,83,0,41,2,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,235,0,0,0,114,18,0,0,0,114,201,0,0,0, + 114,126,0,0,0,114,169,0,0,0,114,184,0,0,0,41, + 2,114,233,0,0,0,114,234,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,95,105,110,115, + 116,97,108,108,171,4,0,0,115,8,0,0,0,10,2,12, + 2,16,1,255,128,114,236,0,0,0,99,0,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, - 0,0,0,115,16,0,0,0,100,1,160,0,124,0,106,1, - 116,2,106,3,161,2,83,0,41,3,114,170,0,0,0,114, - 160,0,0,0,78,41,4,114,49,0,0,0,114,9,0,0, - 0,114,184,0,0,0,114,145,0,0,0,41,1,218,1,109, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 107,0,0,0,52,3,0,0,115,4,0,0,0,16,7,255, - 128,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,0,0,0,0,0,0,0,0,4,0,0,0,5, - 0,0,0,67,0,0,0,115,30,0,0,0,116,0,160,1, - 124,1,161,1,114,26,116,2,124,1,124,0,124,0,106,3, - 100,1,141,3,83,0,100,0,83,0,114,172,0,0,0,41, - 4,114,61,0,0,0,114,92,0,0,0,114,98,0,0,0, - 114,145,0,0,0,114,173,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,177,0,0,0,61,3, - 0,0,115,8,0,0,0,10,2,16,1,4,2,255,128,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,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, - 0,0,115,18,0,0,0,116,0,160,1,124,1,161,1,114, - 14,124,0,83,0,100,1,83,0,41,2,122,93,70,105,110, - 100,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, - 32,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,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,61,0, - 0,0,114,92,0,0,0,41,3,114,174,0,0,0,114,85, - 0,0,0,114,175,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,178,0,0,0,68,3,0,0, - 115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,4, - 0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114,168,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 156,0,0,0,77,3,0,0,115,4,0,0,0,4,0,255, - 128,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,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,67,0,0,0,115,64,0,0,0,124,0,106, - 0,106,1,125,1,116,2,160,3,124,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,91,0, - 0,0,41,10,114,113,0,0,0,114,20,0,0,0,114,61, - 0,0,0,114,92,0,0,0,114,83,0,0,0,114,49,0, - 0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0,114,20,0,0, - 0,218,4,99,111,100,101,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,157,0,0,0,81,3,0,0,115, - 16,0,0,0,8,2,10,1,10,1,2,1,6,255,12,2, - 16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, - 124,0,124,1,131,2,83,0,41,2,122,95,76,111,97,100, - 32,97,32,102,114,111,122,101,110,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, - 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,78,41,1,114,105, - 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,164,0,0,0,90,3,0,0, - 115,4,0,0,0,10,8,255,128,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,0,0, - 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, - 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41, - 2,114,61,0,0,0,114,186,0,0,0,114,179,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 180,0,0,0,100,3,0,0,115,4,0,0,0,10,4,255, - 128,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,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,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,5,0,0,0,114,179,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,181,0,0,0,106,3,0,0,115,4,0,0,0,4,4, - 255,128,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,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, - 1,161,1,83,0,41,2,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,78,41,2,114,61,0,0,0,90, - 17,105,115,95,102,114,111,122,101,110,95,112,97,99,107,97, - 103,101,114,179,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,122,0,0,0,112,3,0,0,115, - 4,0,0,0,10,4,255,128,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,17,114,9,0,0, - 0,114,8,0,0,0,114,1,0,0,0,114,10,0,0,0, - 114,145,0,0,0,114,182,0,0,0,114,107,0,0,0,114, - 183,0,0,0,114,177,0,0,0,114,178,0,0,0,114,156, - 0,0,0,114,157,0,0,0,114,164,0,0,0,114,94,0, - 0,0,114,180,0,0,0,114,181,0,0,0,114,122,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,184,0,0,0,41,3,0,0,115,50, - 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, - 1,2,6,12,1,2,8,10,1,2,3,10,1,2,8,10, - 1,2,9,2,1,12,1,2,4,2,1,12,1,2,4,2, - 1,16,1,255,128,114,184,0,0,0,99,0,0,0,0,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,83,0,41,7,218,18,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,122,36, - 67,111,110,116,101,120,116,32,109,97,110,97,103,101,114,32, - 102,111,114,32,116,104,101,32,105,109,112,111,114,116,32,108, - 111,99,107,46,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,2,0,0,0,67,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,61,0, - 0,0,114,62,0,0,0,114,51,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,58,0,0,0, - 125,3,0,0,115,4,0,0,0,12,2,255,128,122,28,95, - 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, - 116,46,95,95,101,110,116,101,114,95,95,99,4,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,2,0,0,0, - 67,0,0,0,115,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,60,82,101,108,101,97,115,101, - 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,61,0,0,0,114,64,0, - 0,0,41,4,114,33,0,0,0,218,8,101,120,99,95,116, - 121,112,101,218,9,101,120,99,95,118,97,108,117,101,218,13, - 101,120,99,95,116,114,97,99,101,98,97,99,107,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,60,0,0, - 0,129,3,0,0,115,4,0,0,0,12,2,255,128,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,9, - 0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0, - 0,0,114,58,0,0,0,114,60,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,189,0,0,0,121,3,0,0,115,10,0,0,0,8,0, - 4,2,8,2,12,4,255,128,114,189,0,0,0,99,3,0, - 0,0,0,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,3,131,1,130,1,124, - 3,100,4,25,0,125,4,124,0,114,60,100,5,160,3,124, - 4,124,0,161,2,83,0,124,4,83,0,41,7,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,135,0,0,0,114,42,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,99,107,97,103,101,114, - 25,0,0,0,250,5,123,125,46,123,125,78,41,4,218,6, - 114,115,112,108,105,116,218,3,108,101,110,114,83,0,0,0, - 114,49,0,0,0,41,5,114,20,0,0,0,218,7,112,97, - 99,107,97,103,101,218,5,108,101,118,101,108,90,4,98,105, - 116,115,90,4,98,97,115,101,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,13,95,114,101,115,111,108,118, - 101,95,110,97,109,101,134,3,0,0,115,12,0,0,0,16, - 2,12,1,8,1,8,1,20,1,255,128,114,198,0,0,0, - 99,3,0,0,0,0,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,117,0, - 114,24,100,0,83,0,116,1,124,1,124,3,131,2,83,0, - 114,0,0,0,0,41,2,114,178,0,0,0,114,98,0,0, - 0,41,4,218,6,102,105,110,100,101,114,114,20,0,0,0, - 114,175,0,0,0,114,116,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,17,95,102,105,110,100, - 95,115,112,101,99,95,108,101,103,97,99,121,143,3,0,0, - 115,10,0,0,0,12,3,8,1,4,1,10,1,255,128,114, - 200,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,10,0,0,0,10,0,0,0,67,0,0,0,115,28,1, - 0,0,116,0,106,1,125,3,124,3,100,1,117,0,114,22, - 116,2,100,2,131,1,130,1,124,3,115,38,116,3,160,4, - 100,3,116,5,161,2,1,0,124,0,116,0,106,6,118,0, - 125,4,124,3,68,0,93,226,125,5,116,7,131,0,143,94, - 1,0,122,10,124,5,106,8,125,6,87,0,110,54,4,0, - 116,9,121,128,1,0,1,0,1,0,116,10,124,5,124,0, - 124,1,131,3,125,7,124,7,100,1,117,0,114,124,89,0, - 87,0,100,1,4,0,4,0,131,3,1,0,113,52,89,0, - 110,14,48,0,124,6,124,0,124,1,124,2,131,3,125,7, - 87,0,100,1,4,0,4,0,131,3,1,0,110,16,49,0, - 115,162,48,0,1,0,1,0,1,0,89,0,1,0,124,7, - 100,1,117,1,114,52,124,4,144,1,115,16,124,0,116,0, - 106,6,118,0,144,1,114,16,116,0,106,6,124,0,25,0, - 125,8,122,10,124,8,106,11,125,9,87,0,110,26,4,0, - 116,9,121,244,1,0,1,0,1,0,124,7,6,0,89,0, - 2,0,1,0,83,0,48,0,124,9,100,1,117,0,144,1, - 114,8,124,7,2,0,1,0,83,0,124,9,2,0,1,0, - 83,0,124,7,2,0,1,0,83,0,100,1,83,0,41,4, - 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, - 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, - 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, - 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, - 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,18,0,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,83,0,0,0,114,95, - 0,0,0,114,96,0,0,0,114,163,0,0,0,114,99,0, - 0,0,114,189,0,0,0,114,177,0,0,0,114,2,0,0, - 0,114,200,0,0,0,114,113,0,0,0,41,10,114,20,0, - 0,0,114,175,0,0,0,114,176,0,0,0,114,201,0,0, - 0,90,9,105,115,95,114,101,108,111,97,100,114,199,0,0, - 0,114,177,0,0,0,114,103,0,0,0,114,104,0,0,0, - 114,113,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, - 152,3,0,0,115,56,0,0,0,6,2,8,1,8,2,4, - 3,12,1,10,5,8,1,8,1,2,1,10,1,12,1,12, - 1,8,1,22,1,42,2,8,1,18,2,10,1,2,1,10, - 1,12,1,14,4,10,2,8,1,8,2,8,2,4,2,255, - 128,114,202,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,5,0,0,0,67,0,0,0,115, - 110,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,0,114,44,116,5,100,3,131,1,130,1, - 124,2,100,2,107,4,114,82,116,0,124,1,116,1,131,2, - 115,70,116,2,100,4,131,1,130,1,124,1,115,82,116,6, - 100,5,131,1,130,1,124,0,115,106,124,2,100,2,107,2, - 114,102,116,5,100,6,131,1,130,1,100,7,83,0,100,7, - 83,0,41,8,122,28,86,101,114,105,102,121,32,97,114,103, - 117,109,101,110,116,115,32,97,114,101,32,34,115,97,110,101, - 34,46,122,31,109,111,100,117,108,101,32,110,97,109,101,32, - 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, - 32,123,125,114,25,0,0,0,122,18,108,101,118,101,108,32, - 109,117,115,116,32,98,101,32,62,61,32,48,122,31,95,95, - 112,97,99,107,97,103,101,95,95,32,110,111,116,32,115,101, - 116,32,116,111,32,97,32,115,116,114,105,110,103,122,54,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,119,105,116,104,32,110,111, - 32,107,110,111,119,110,32,112,97,114,101,110,116,32,112,97, - 99,107,97,103,101,122,17,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,49,0,0,0,114,3,0,0, - 0,218,10,86,97,108,117,101,69,114,114,111,114,114,83,0, - 0,0,169,3,114,20,0,0,0,114,196,0,0,0,114,197, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, - 107,199,3,0,0,115,26,0,0,0,10,2,18,1,8,1, - 8,1,8,1,10,1,8,1,4,1,8,1,12,2,8,1, - 8,255,255,128,114,208,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,0,0,0,0,9,0, - 0,0,8,0,0,0,67,0,0,0,115,20,1,0,0,100, - 0,125,2,124,0,160,0,100,1,161,1,100,2,25,0,125, - 3,124,3,114,128,124,3,116,1,106,2,118,1,114,42,116, - 3,124,1,124,3,131,2,1,0,124,0,116,1,106,2,118, - 0,114,62,116,1,106,2,124,0,25,0,83,0,116,1,106, - 2,124,3,25,0,125,4,122,10,124,4,106,4,125,2,87, - 0,110,44,4,0,116,5,121,126,1,0,1,0,1,0,116, - 6,100,3,23,0,160,7,124,0,124,3,161,2,125,5,116, - 8,124,5,124,0,100,4,141,2,100,0,130,2,48,0,116, - 9,124,0,124,2,131,2,125,6,124,6,100,0,117,0,114, - 164,116,8,116,6,160,7,124,0,161,1,124,0,100,4,141, - 2,130,1,116,10,124,6,131,1,125,7,124,3,144,1,114, - 16,116,1,106,2,124,3,25,0,125,4,124,0,160,0,100, - 1,161,1,100,5,25,0,125,8,122,18,116,11,124,4,124, - 8,124,7,131,3,1,0,87,0,124,7,83,0,4,0,116, - 5,144,1,121,14,1,0,1,0,1,0,100,6,124,3,155, - 2,100,7,124,8,155,2,157,4,125,5,116,12,160,13,124, - 5,116,14,161,2,1,0,89,0,124,7,83,0,48,0,124, - 7,83,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0,233,2, - 0,0,0,122,27,67,97,110,110,111,116,32,115,101,116,32, - 97,110,32,97,116,116,114,105,98,117,116,101,32,111,110,32, - 122,18,32,102,111,114,32,99,104,105,108,100,32,109,111,100, - 117,108,101,32,41,15,114,136,0,0,0,114,18,0,0,0, - 114,99,0,0,0,114,71,0,0,0,114,148,0,0,0,114, - 2,0,0,0,218,8,95,69,82,82,95,77,83,71,114,49, - 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,202,0,0,0,114,167,0, - 0,0,114,12,0,0,0,114,95,0,0,0,114,96,0,0, - 0,114,163,0,0,0,41,9,114,20,0,0,0,218,7,105, - 109,112,111,114,116,95,114,175,0,0,0,114,137,0,0,0, - 90,13,112,97,114,101,110,116,95,109,111,100,117,108,101,114, - 102,0,0,0,114,103,0,0,0,114,104,0,0,0,90,5, - 99,104,105,108,100,114,5,0,0,0,114,5,0,0,0,114, - 6,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,218,3,0, - 0,115,60,0,0,0,4,1,14,1,4,1,10,1,10,1, - 10,2,10,1,10,1,2,1,10,1,12,1,16,1,16,1, - 10,1,8,1,18,1,8,2,6,1,10,2,14,1,2,1, - 14,1,4,4,14,253,16,1,14,1,4,1,2,255,4,1, - 255,128,114,213,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, - 115,128,0,0,0,116,0,124,0,131,1,143,62,1,0,116, - 1,106,2,160,3,124,0,116,4,161,2,125,2,124,2,116, - 4,117,0,114,56,116,5,124,0,124,1,131,2,87,0,2, - 0,100,1,4,0,4,0,131,3,1,0,83,0,87,0,100, - 1,4,0,4,0,131,3,1,0,110,16,49,0,115,76,48, - 0,1,0,1,0,1,0,89,0,1,0,124,2,100,1,117, - 0,114,116,100,2,160,6,124,0,161,1,125,3,116,7,124, - 3,124,0,100,3,141,2,130,1,116,8,124,0,131,1,1, - 0,124,2,83,0,41,4,122,25,70,105,110,100,32,97,110, - 100,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, - 101,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,19,0, - 0,0,41,9,114,54,0,0,0,114,18,0,0,0,114,99, - 0,0,0,114,38,0,0,0,218,14,95,78,69,69,68,83, - 95,76,79,65,68,73,78,71,114,213,0,0,0,114,49,0, - 0,0,114,211,0,0,0,114,69,0,0,0,41,4,114,20, - 0,0,0,114,212,0,0,0,114,104,0,0,0,114,79,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,253,3,0,0,115,24,0,0,0,10,2,14,1,8,1, - 54,1,8,2,4,1,2,1,4,255,12,2,8,2,4,1, - 255,128,114,215,0,0,0,114,25,0,0,0,99,3,0,0, - 0,0,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,3,125,0,116,2,124,0,116,3, - 131,2,83,0,41,3,97,50,1,0,0,73,109,112,111,114, - 116,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, - 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, - 32,105,116,115,32,110,97,109,101,44,32,116,104,101,32,112, - 97,99,107,97,103,101,32,116,104,101,32,99,97,108,108,32, - 105,115,10,32,32,32,32,98,101,105,110,103,32,109,97,100, - 101,32,102,114,111,109,44,32,97,110,100,32,116,104,101,32, - 108,101,118,101,108,32,97,100,106,117,115,116,109,101,110,116, - 46,10,10,32,32,32,32,84,104,105,115,32,102,117,110,99, - 116,105,111,110,32,114,101,112,114,101,115,101,110,116,115,32, - 116,104,101,32,103,114,101,97,116,101,115,116,32,99,111,109, - 109,111,110,32,100,101,110,111,109,105,110,97,116,111,114,32, - 111,102,32,102,117,110,99,116,105,111,110,97,108,105,116,121, - 10,32,32,32,32,98,101,116,119,101,101,110,32,105,109,112, - 111,114,116,95,109,111,100,117,108,101,32,97,110,100,32,95, - 95,105,109,112,111,114,116,95,95,46,32,84,104,105,115,32, - 105,110,99,108,117,100,101,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,25,0, - 0,0,78,41,4,114,208,0,0,0,114,198,0,0,0,114, - 215,0,0,0,218,11,95,103,99,100,95,105,109,112,111,114, - 116,114,207,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,216,0,0,0,13,4,0,0,115,10, - 0,0,0,12,9,8,1,12,1,10,1,255,128,114,216,0, - 0,0,169,1,218,9,114,101,99,117,114,115,105,118,101,99, - 3,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, - 11,0,0,0,67,0,0,0,115,216,0,0,0,124,1,68, - 0,93,204,125,4,116,0,124,4,116,1,131,2,115,64,124, - 3,114,34,124,0,106,2,100,1,23,0,125,5,110,4,100, - 2,125,5,116,3,100,3,124,5,155,0,100,4,116,4,124, - 4,131,1,106,2,155,0,157,4,131,1,130,1,124,4,100, - 5,107,2,114,106,124,3,115,4,116,5,124,0,100,6,131, - 2,114,4,116,6,124,0,124,0,106,7,124,2,100,7,100, - 8,141,4,1,0,113,4,116,5,124,0,124,4,131,2,115, - 4,100,9,160,8,124,0,106,2,124,4,161,2,125,6,122, - 14,116,9,124,2,124,6,131,2,1,0,87,0,113,4,4, - 0,116,10,121,214,1,0,125,7,1,0,122,42,124,7,106, - 11,124,6,107,2,114,200,116,12,106,13,160,14,124,6,116, - 15,161,2,100,10,117,1,114,200,87,0,89,0,100,10,125, - 7,126,7,113,4,130,0,100,10,125,7,126,7,48,0,124, - 0,83,0,48,0,41,11,122,238,70,105,103,117,114,101,32, - 111,117,116,32,119,104,97,116,32,95,95,105,109,112,111,114, - 116,95,95,32,115,104,111,117,108,100,32,114,101,116,117,114, - 110,46,10,10,32,32,32,32,84,104,101,32,105,109,112,111, - 114,116,95,32,112,97,114,97,109,101,116,101,114,32,105,115, - 32,97,32,99,97,108,108,97,98,108,101,32,119,104,105,99, - 104,32,116,97,107,101,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,109,111,100,117,108,101,32,116,111,10,32,32, - 32,32,105,109,112,111,114,116,46,32,73,116,32,105,115,32, - 114,101,113,117,105,114,101,100,32,116,111,32,100,101,99,111, - 117,112,108,101,32,116,104,101,32,102,117,110,99,116,105,111, - 110,32,102,114,111,109,32,97,115,115,117,109,105,110,103,32, - 105,109,112,111,114,116,108,105,98,39,115,10,32,32,32,32, - 105,109,112,111,114,116,32,105,109,112,108,101,109,101,110,116, - 97,116,105,111,110,32,105,115,32,100,101,115,105,114,101,100, - 46,10,10,32,32,32,32,122,8,46,95,95,97,108,108,95, - 95,122,13,96,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,217,0,0,0, - 114,193,0,0,0,78,41,16,114,203,0,0,0,114,204,0, - 0,0,114,9,0,0,0,114,205,0,0,0,114,3,0,0, - 0,114,11,0,0,0,218,16,95,104,97,110,100,108,101,95, - 102,114,111,109,108,105,115,116,114,220,0,0,0,114,49,0, - 0,0,114,71,0,0,0,114,211,0,0,0,114,20,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, - 114,214,0,0,0,41,8,114,104,0,0,0,218,8,102,114, - 111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,221,0,0,0,28,4, - 0,0,115,54,0,0,0,8,10,10,1,4,1,12,1,4, - 2,10,1,8,1,8,255,8,2,14,1,10,1,2,1,8, - 255,10,2,14,1,2,1,14,1,14,1,10,4,16,1,2, - 255,12,2,2,1,8,128,4,1,2,248,255,128,114,221,0, - 0,0,99,1,0,0,0,0,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,117,1,114,82,124,2,100,3, - 117,1,114,78,124,1,124,2,106,1,107,3,114,78,116,2, - 106,3,100,4,124,1,155,2,100,5,124,2,106,1,155,2, - 100,6,157,5,116,4,100,7,100,8,141,3,1,0,124,1, - 83,0,124,2,100,3,117,1,114,96,124,2,106,1,83,0, - 116,2,106,3,100,9,116,4,100,7,100,8,141,3,1,0, - 124,0,100,10,25,0,125,1,100,11,124,0,118,1,114,142, - 124,1,160,5,100,12,161,1,100,13,25,0,125,1,124,1, - 83,0,41,14,122,167,67,97,108,99,117,108,97,116,101,32, - 119,104,97,116,32,95,95,112,97,99,107,97,103,101,95,95, - 32,115,104,111,117,108,100,32,98,101,46,10,10,32,32,32, - 32,95,95,112,97,99,107,97,103,101,95,95,32,105,115,32, - 110,111,116,32,103,117,97,114,97,110,116,101,101,100,32,116, - 111,32,98,101,32,100,101,102,105,110,101,100,32,111,114,32, - 99,111,117,108,100,32,98,101,32,115,101,116,32,116,111,32, - 78,111,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,152,0, - 0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32,114,101, - 115,111,108,118,101,32,112,97,99,107,97,103,101,32,102,114, - 111,109,32,95,95,115,112,101,99,95,95,32,111,114,32,95, - 95,112,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,9,0,0,0,114,148,0,0,0,114,135,0,0,0, - 114,25,0,0,0,41,6,114,38,0,0,0,114,137,0,0, - 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, - 114,136,0,0,0,41,3,218,7,103,108,111,98,97,108,115, - 114,196,0,0,0,114,103,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,17,95,99,97,108,99, - 95,95,95,112,97,99,107,97,103,101,95,95,65,4,0,0, - 115,44,0,0,0,10,7,10,1,8,1,18,1,6,1,2, - 1,4,255,4,1,6,255,4,2,6,254,4,3,8,1,6, - 1,6,2,4,2,6,254,8,3,8,1,14,1,4,1,255, - 128,114,227,0,0,0,114,5,0,0,0,99,5,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, - 67,0,0,0,115,174,0,0,0,124,4,100,1,107,2,114, - 18,116,0,124,0,131,1,125,5,110,36,124,1,100,2,117, - 1,114,30,124,1,110,2,105,0,125,6,116,1,124,6,131, - 1,125,7,116,0,124,0,124,7,124,4,131,3,125,5,124, - 3,115,148,124,4,100,1,107,2,114,84,116,0,124,0,160, - 2,100,3,161,1,100,1,25,0,131,1,83,0,124,0,115, - 92,124,5,83,0,116,3,124,0,131,1,116,3,124,0,160, - 2,100,3,161,1,100,1,25,0,131,1,24,0,125,8,116, - 4,106,5,124,5,106,6,100,2,116,3,124,5,106,6,131, - 1,124,8,24,0,133,2,25,0,25,0,83,0,116,7,124, - 5,100,4,131,2,114,170,116,8,124,5,124,3,116,0,131, - 3,83,0,124,5,83,0,41,5,97,215,1,0,0,73,109, - 112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,115, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,115, - 101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,114, - 101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,32, - 111,99,99,117,114,114,105,110,103,32,102,114,111,109,10,32, - 32,32,32,116,111,32,104,97,110,100,108,101,32,114,101,108, - 97,116,105,118,101,32,105,109,112,111,114,116,115,46,32,84, - 104,101,32,39,108,111,99,97,108,115,39,32,97,114,103,117, - 109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,46, - 32,84,104,101,10,32,32,32,32,39,102,114,111,109,108,105, - 115,116,39,32,97,114,103,117,109,101,110,116,32,115,112,101, - 99,105,102,105,101,115,32,119,104,97,116,32,115,104,111,117, - 108,100,32,101,120,105,115,116,32,97,115,32,97,116,116,114, - 105,98,117,116,101,115,32,111,110,32,116,104,101,32,109,111, - 100,117,108,101,10,32,32,32,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,32,40,101,46,103,46,32,96,96, - 102,114,111,109,32,109,111,100,117,108,101,32,105,109,112,111, - 114,116,32,60,102,114,111,109,108,105,115,116,62,96,96,41, - 46,32,32,84,104,101,32,39,108,101,118,101,108,39,10,32, - 32,32,32,97,114,103,117,109,101,110,116,32,114,101,112,114, - 101,115,101,110,116,115,32,116,104,101,32,112,97,99,107,97, - 103,101,32,108,111,99,97,116,105,111,110,32,116,111,32,105, - 109,112,111,114,116,32,102,114,111,109,32,105,110,32,97,32, - 114,101,108,97,116,105,118,101,10,32,32,32,32,105,109,112, - 111,114,116,32,40,101,46,103,46,32,96,96,102,114,111,109, - 32,46,46,112,107,103,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,25,0,0,0,78,114,135,0,0,0, - 114,148,0,0,0,41,9,114,216,0,0,0,114,227,0,0, - 0,218,9,112,97,114,116,105,116,105,111,110,114,195,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, - 114,11,0,0,0,114,221,0,0,0,41,9,114,20,0,0, - 0,114,226,0,0,0,218,6,108,111,99,97,108,115,114,222, - 0,0,0,114,197,0,0,0,114,104,0,0,0,90,8,103, - 108,111,98,97,108,115,95,114,196,0,0,0,90,7,99,117, - 116,95,111,102,102,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,10,95,95,105,109,112,111,114,116,95,95, - 92,4,0,0,115,32,0,0,0,8,11,10,1,16,2,8, - 1,12,1,4,1,8,3,18,1,4,1,4,1,26,4,30, - 3,10,1,12,1,4,2,255,128,114,230,0,0,0,99,1, - 0,0,0,0,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,117,0,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,169,0,0,0,114,177,0,0,0,114,83,0,0, - 0,114,167,0,0,0,41,2,114,20,0,0,0,114,103,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,18,95,98,117,105,108,116,105,110,95,102,114,111,109, - 95,110,97,109,101,129,4,0,0,115,10,0,0,0,10,1, - 8,1,12,1,8,1,255,128,114,231,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,10,0,0,0,5,0, - 0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125,3,125,4,116,5,124, - 4,124,2,131,2,114,26,124,3,116,1,106,6,118,0,114, - 60,116,7,125,5,110,16,116,0,160,8,124,3,161,1,114, - 26,116,9,125,5,110,0,116,10,124,4,124,5,131,2,125, - 6,116,11,124,6,124,4,131,2,1,0,113,26,116,1,106, - 3,116,12,25,0,125,7,100,1,68,0,93,46,125,8,124, - 8,116,1,106,3,118,1,114,136,116,13,124,8,131,1,125, - 9,110,10,116,1,106,3,124,8,25,0,125,9,116,14,124, - 7,124,8,124,9,131,3,1,0,113,112,100,2,83,0,41, - 3,122,250,83,101,116,117,112,32,105,109,112,111,114,116,108, - 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32, - 110,101,101,100,101,100,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,32,97,110,100,32,105,110,106,101, - 99,116,105,110,103,32,116,104,101,109,10,32,32,32,32,105, - 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110, - 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,65, - 115,32,115,121,115,32,105,115,32,110,101,101,100,101,100,32, - 102,111,114,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,99,99,101,115,115,32,97,110,100,32,95,105,109,112,32, - 105,115,32,110,101,101,100,101,100,32,116,111,32,108,111,97, - 100,32,98,117,105,108,116,45,105,110,10,32,32,32,32,109, - 111,100,117,108,101,115,44,32,116,104,111,115,101,32,116,119, - 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, - 26,0,0,0,114,95,0,0,0,114,68,0,0,0,78,41, - 15,114,61,0,0,0,114,18,0,0,0,114,3,0,0,0, - 114,99,0,0,0,218,5,105,116,101,109,115,114,203,0,0, - 0,114,82,0,0,0,114,169,0,0,0,114,92,0,0,0, - 114,184,0,0,0,114,149,0,0,0,114,155,0,0,0,114, - 9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0, - 114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,6,95,115,101,116,117,112,136,4,0,0, - 115,38,0,0,0,4,9,4,1,8,3,18,1,10,1,10, - 1,6,1,10,1,6,1,10,3,12,1,10,3,8,1,10, - 1,10,1,10,2,14,1,4,251,255,128,114,235,0,0,0, - 99,2,0,0,0,0,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,106,2,160,3,116,5,161,1,1,0, - 100,1,83,0,41,2,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,235,0,0,0, - 114,18,0,0,0,114,201,0,0,0,114,126,0,0,0,114, - 169,0,0,0,114,184,0,0,0,41,2,114,233,0,0,0, - 114,234,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,8,95,105,110,115,116,97,108,108,171,4, - 0,0,115,8,0,0,0,10,2,12,2,16,1,255,128,114, - 236,0,0,0,99,0,0,0,0,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,1,0,100,2, - 83,0,41,3,122,57,73,110,115,116,97,108,108,32,105,109, - 112,111,114,116,101,114,115,32,116,104,97,116,32,114,101,113, - 117,105,114,101,32,101,120,116,101,114,110,97,108,32,102,105, - 108,101,115,121,115,116,101,109,32,97,99,99,101,115,115,114, - 25,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,133,0,0,0,114,236,0,0,0,114,18,0, - 0,0,114,99,0,0,0,114,9,0,0,0,41,1,114,237, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,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,179, - 4,0,0,115,8,0,0,0,8,3,4,1,20,1,255,128, - 114,238,0,0,0,41,2,78,78,41,1,78,41,2,78,114, - 25,0,0,0,41,4,78,78,114,5,0,0,0,114,25,0, - 0,0,41,54,114,10,0,0,0,114,7,0,0,0,114,26, - 0,0,0,114,95,0,0,0,114,68,0,0,0,114,133,0, - 0,0,114,17,0,0,0,114,21,0,0,0,114,63,0,0, - 0,114,37,0,0,0,114,47,0,0,0,114,22,0,0,0, - 114,23,0,0,0,114,53,0,0,0,114,54,0,0,0,114, - 57,0,0,0,114,69,0,0,0,114,71,0,0,0,114,80, - 0,0,0,114,90,0,0,0,114,94,0,0,0,114,105,0, - 0,0,114,118,0,0,0,114,119,0,0,0,114,98,0,0, - 0,114,149,0,0,0,114,155,0,0,0,114,159,0,0,0, - 114,114,0,0,0,114,100,0,0,0,114,166,0,0,0,114, - 167,0,0,0,114,101,0,0,0,114,169,0,0,0,114,184, - 0,0,0,114,189,0,0,0,114,198,0,0,0,114,200,0, - 0,0,114,202,0,0,0,114,208,0,0,0,90,15,95,69, - 82,82,95,77,83,71,95,80,82,69,70,73,88,114,210,0, - 0,0,114,213,0,0,0,218,6,111,98,106,101,99,116,114, - 214,0,0,0,114,215,0,0,0,114,216,0,0,0,114,221, - 0,0,0,114,227,0,0,0,114,230,0,0,0,114,231,0, - 0,0,114,235,0,0,0,114,236,0,0,0,114,238,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,8,60,109,111,100,117,108,101,62,1, - 0,0,0,115,106,0,0,0,4,0,8,22,4,9,4,1, - 4,1,4,3,8,3,8,8,4,8,4,2,16,3,14,4, - 14,77,14,21,8,16,8,37,8,17,14,11,8,8,8,11, - 8,12,8,19,14,36,16,101,10,26,14,45,8,72,8,17, - 8,17,8,30,8,36,8,45,14,15,14,75,14,80,8,13, - 8,9,10,9,8,47,4,16,8,1,8,2,6,32,8,3, - 10,16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, - 255,128, + 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,1,0,100,2,83,0,41,3,122,57,73,110,115,116, + 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, + 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, + 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, + 99,99,101,115,115,114,25,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,133,0,0,0,114,236, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, + 0,0,41,1,114,237,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,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,179,4,0,0,115,8,0,0,0,8,3, + 4,1,20,1,255,128,114,238,0,0,0,41,2,78,78,41, + 1,78,41,2,78,114,25,0,0,0,41,4,78,78,114,5, + 0,0,0,114,25,0,0,0,41,54,114,10,0,0,0,114, + 7,0,0,0,114,26,0,0,0,114,95,0,0,0,114,68, + 0,0,0,114,133,0,0,0,114,17,0,0,0,114,21,0, + 0,0,114,63,0,0,0,114,37,0,0,0,114,47,0,0, + 0,114,22,0,0,0,114,23,0,0,0,114,53,0,0,0, + 114,54,0,0,0,114,57,0,0,0,114,69,0,0,0,114, + 71,0,0,0,114,80,0,0,0,114,90,0,0,0,114,94, + 0,0,0,114,105,0,0,0,114,118,0,0,0,114,119,0, + 0,0,114,98,0,0,0,114,149,0,0,0,114,155,0,0, + 0,114,159,0,0,0,114,114,0,0,0,114,100,0,0,0, + 114,166,0,0,0,114,167,0,0,0,114,101,0,0,0,114, + 169,0,0,0,114,184,0,0,0,114,189,0,0,0,114,198, + 0,0,0,114,200,0,0,0,114,202,0,0,0,114,208,0, + 0,0,90,15,95,69,82,82,95,77,83,71,95,80,82,69, + 70,73,88,114,210,0,0,0,114,213,0,0,0,218,6,111, + 98,106,101,99,116,114,214,0,0,0,114,215,0,0,0,114, + 216,0,0,0,114,221,0,0,0,114,227,0,0,0,114,230, + 0,0,0,114,231,0,0,0,114,235,0,0,0,114,236,0, + 0,0,114,238,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,8,60,109,111, + 100,117,108,101,62,1,0,0,0,115,106,0,0,0,4,0, + 8,22,4,9,4,1,4,1,4,3,8,3,8,8,4,8, + 4,2,16,3,14,4,14,77,14,21,8,16,8,37,8,17, + 14,11,8,8,8,11,8,12,8,19,14,36,16,101,10,26, + 14,45,8,72,8,17,8,17,8,30,8,36,8,45,14,15, + 14,75,14,80,8,13,8,9,10,9,8,47,4,16,8,1, + 8,2,6,32,8,3,10,16,14,15,8,37,10,27,8,37, + 8,7,8,35,12,8,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index cf6e8902ddcfd..59a2fe2502921 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -773,247 +773,247 @@ const unsigned char _Py_M__zipimport[] = { 99,101,112,116,105,111,110,114,142,0,0,0,114,9,0,0, 0,114,9,0,0,0,114,10,0,0,0,218,20,95,103,101, 116,95,100,101,99,111,109,112,114,101,115,115,95,102,117,110, - 99,31,2,0,0,115,26,0,0,0,4,2,10,3,8,1, - 4,2,4,1,16,1,12,1,10,1,12,1,12,2,10,2, - 4,1,255,128,114,146,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,17,0,0,0,9,0,0,0,67,0, - 0,0,115,132,1,0,0,124,1,92,8,125,2,125,3,125, - 4,125,5,125,6,125,7,125,8,125,9,124,4,100,1,107, - 0,114,36,116,0,100,2,131,1,130,1,116,1,160,2,124, - 0,161,1,144,1,143,6,125,10,122,14,124,10,160,3,124, - 6,161,1,1,0,87,0,110,32,4,0,116,4,121,96,1, - 0,1,0,1,0,116,0,100,3,124,0,155,2,157,2,124, - 0,100,4,141,2,130,1,48,0,124,10,160,5,100,5,161, - 1,125,11,116,6,124,11,131,1,100,5,107,3,114,128,116, - 7,100,6,131,1,130,1,124,11,100,0,100,7,133,2,25, - 0,100,8,107,3,114,162,116,0,100,9,124,0,155,2,157, - 2,124,0,100,4,141,2,130,1,116,8,124,11,100,10,100, - 11,133,2,25,0,131,1,125,12,116,8,124,11,100,11,100, - 5,133,2,25,0,131,1,125,13,100,5,124,12,23,0,124, - 13,23,0,125,14,124,6,124,14,55,0,125,6,122,14,124, - 10,160,3,124,6,161,1,1,0,87,0,110,34,4,0,116, - 4,144,1,121,6,1,0,1,0,1,0,116,0,100,3,124, - 0,155,2,157,2,124,0,100,4,141,2,130,1,48,0,124, - 10,160,5,124,4,161,1,125,15,116,6,124,15,131,1,124, - 4,107,3,144,1,114,40,116,4,100,12,131,1,130,1,87, - 0,100,0,4,0,4,0,131,3,1,0,110,18,49,0,144, - 1,115,62,48,0,1,0,1,0,1,0,89,0,1,0,124, - 3,100,1,107,2,144,1,114,86,124,15,83,0,122,10,116, - 9,131,0,125,16,87,0,110,24,4,0,116,10,144,1,121, - 120,1,0,1,0,1,0,116,0,100,13,131,1,130,1,48, - 0,124,16,124,15,100,14,131,2,83,0,41,15,78,114,0, - 0,0,0,122,18,110,101,103,97,116,105,118,101,32,100,97, - 116,97,32,115,105,122,101,114,94,0,0,0,114,12,0,0, - 0,114,106,0,0,0,114,100,0,0,0,114,95,0,0,0, - 115,4,0,0,0,80,75,3,4,122,23,98,97,100,32,108, - 111,99,97,108,32,102,105,108,101,32,104,101,97,100,101,114, - 58,32,233,26,0,0,0,114,105,0,0,0,122,26,122,105, - 112,105,109,112,111,114,116,58,32,99,97,110,39,116,32,114, - 101,97,100,32,100,97,116,97,114,141,0,0,0,105,241,255, - 255,255,41,11,114,3,0,0,0,114,112,0,0,0,114,113, - 0,0,0,114,114,0,0,0,114,22,0,0,0,114,116,0, - 0,0,114,55,0,0,0,114,121,0,0,0,114,1,0,0, - 0,114,146,0,0,0,114,145,0,0,0,41,17,114,29,0, - 0,0,114,58,0,0,0,90,8,100,97,116,97,112,97,116, - 104,114,132,0,0,0,114,136,0,0,0,114,127,0,0,0, - 114,139,0,0,0,114,133,0,0,0,114,134,0,0,0,114, - 135,0,0,0,114,125,0,0,0,114,126,0,0,0,114,137, - 0,0,0,114,138,0,0,0,114,129,0,0,0,90,8,114, - 97,119,95,100,97,116,97,114,143,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,56,0,0,0, - 52,2,0,0,115,64,0,0,0,20,1,8,1,8,1,14, - 2,2,2,14,1,12,1,20,1,10,1,12,1,8,1,16, - 2,18,2,16,2,16,1,12,1,8,1,2,1,14,1,14, - 1,20,1,10,1,14,1,40,1,10,2,4,2,2,3,10, - 1,14,1,10,1,10,1,255,128,114,56,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,124,0, - 124,1,24,0,131,1,100,1,107,1,83,0,41,2,78,114, - 5,0,0,0,41,1,218,3,97,98,115,41,2,90,2,116, - 49,90,2,116,50,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,9,95,101,113,95,109,116,105,109,101,98, - 2,0,0,115,4,0,0,0,16,2,255,128,114,149,0,0, - 0,99,5,0,0,0,0,0,0,0,0,0,0,0,14,0, - 0,0,8,0,0,0,67,0,0,0,115,60,1,0,0,124, - 3,124,2,100,1,156,2,125,5,122,18,116,0,160,1,124, - 4,124,3,124,5,161,3,125,6,87,0,110,20,4,0,116, - 2,121,48,1,0,1,0,1,0,89,0,100,0,83,0,48, - 0,124,6,100,2,64,0,100,3,107,3,125,7,124,7,114, - 182,124,6,100,4,64,0,100,3,107,3,125,8,116,3,106, - 4,100,5,107,3,144,1,114,10,124,8,115,106,116,3,106, - 4,100,6,107,2,144,1,114,10,116,5,124,0,124,2,131, - 2,125,9,124,9,100,0,117,1,144,1,114,10,116,3,160, - 6,116,0,106,7,124,9,161,2,125,10,122,20,116,0,160, - 8,124,4,124,10,124,3,124,5,161,4,1,0,87,0,110, - 104,4,0,116,2,121,180,1,0,1,0,1,0,89,0,100, - 0,83,0,48,0,116,9,124,0,124,2,131,2,92,2,125, - 11,125,12,124,11,144,1,114,10,116,10,116,11,124,4,100, - 7,100,8,133,2,25,0,131,1,124,11,131,2,114,246,116, - 11,124,4,100,8,100,9,133,2,25,0,131,1,124,12,107, - 3,144,1,114,10,116,12,160,13,100,10,124,3,155,2,157, - 2,161,1,1,0,100,0,83,0,116,14,160,15,124,4,100, - 9,100,0,133,2,25,0,161,1,125,13,116,16,124,13,116, - 17,131,2,144,1,115,56,116,18,100,11,124,1,155,2,100, - 12,157,3,131,1,130,1,124,13,83,0,41,13,78,41,2, - 114,44,0,0,0,114,13,0,0,0,114,5,0,0,0,114, - 0,0,0,0,114,88,0,0,0,90,5,110,101,118,101,114, - 90,6,97,108,119,97,121,115,114,101,0,0,0,114,96,0, - 0,0,114,97,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,122, - 16,99,111,109,112,105,108,101,100,32,109,111,100,117,108,101, - 32,122,21,32,105,115,32,110,111,116,32,97,32,99,111,100, - 101,32,111,98,106,101,99,116,41,19,114,21,0,0,0,90, - 13,95,99,108,97,115,115,105,102,121,95,112,121,99,114,79, - 0,0,0,218,4,95,105,109,112,90,21,99,104,101,99,107, - 95,104,97,115,104,95,98,97,115,101,100,95,112,121,99,115, - 218,15,95,103,101,116,95,112,121,99,95,115,111,117,114,99, - 101,218,11,115,111,117,114,99,101,95,104,97,115,104,90,17, - 95,82,65,87,95,77,65,71,73,67,95,78,85,77,66,69, - 82,90,18,95,118,97,108,105,100,97,116,101,95,104,97,115, - 104,95,112,121,99,218,29,95,103,101,116,95,109,116,105,109, - 101,95,97,110,100,95,115,105,122,101,95,111,102,95,115,111, - 117,114,99,101,114,149,0,0,0,114,2,0,0,0,114,45, - 0,0,0,114,80,0,0,0,218,7,109,97,114,115,104,97, - 108,90,5,108,111,97,100,115,114,15,0,0,0,218,10,95, - 99,111,100,101,95,116,121,112,101,218,9,84,121,112,101,69, - 114,114,111,114,41,14,114,32,0,0,0,114,57,0,0,0, - 114,66,0,0,0,114,38,0,0,0,114,128,0,0,0,90, - 11,101,120,99,95,100,101,116,97,105,108,115,114,131,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,90,12,115,111,117, - 114,99,101,95,98,121,116,101,115,114,152,0,0,0,90,12, - 115,111,117,114,99,101,95,109,116,105,109,101,90,11,115,111, - 117,114,99,101,95,115,105,122,101,114,50,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,15,95, - 117,110,109,97,114,115,104,97,108,95,99,111,100,101,108,2, - 0,0,115,84,0,0,0,2,2,2,1,6,254,2,5,18, - 1,12,1,8,1,12,2,4,1,12,1,12,1,2,1,2, - 255,8,1,4,255,10,2,10,1,4,1,4,1,2,1,4, - 254,2,5,4,1,8,1,8,255,12,2,8,1,8,3,6, - 255,6,3,22,3,18,1,4,255,4,2,8,1,4,255,4, - 2,18,2,12,1,16,1,4,1,255,128,114,157,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,4,0,0,0,67,0,0,0,115,28,0,0,0,124,0, - 160,0,100,1,100,2,161,2,125,0,124,0,160,0,100,3, - 100,2,161,2,125,0,124,0,83,0,41,4,78,115,2,0, - 0,0,13,10,243,1,0,0,0,10,243,1,0,0,0,13, - 41,1,114,19,0,0,0,41,1,218,6,115,111,117,114,99, - 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 218,23,95,110,111,114,109,97,108,105,122,101,95,108,105,110, - 101,95,101,110,100,105,110,103,115,159,2,0,0,115,8,0, - 0,0,12,1,12,1,4,1,255,128,114,161,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 6,0,0,0,67,0,0,0,115,24,0,0,0,116,0,124, - 1,131,1,125,1,116,1,124,1,124,0,100,1,100,2,100, - 3,141,4,83,0,41,4,78,114,78,0,0,0,84,41,1, - 90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,2, - 114,161,0,0,0,218,7,99,111,109,112,105,108,101,41,2, - 114,57,0,0,0,114,160,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,112, - 105,108,101,95,115,111,117,114,99,101,166,2,0,0,115,6, - 0,0,0,8,1,16,1,255,128,114,163,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11, - 0,0,0,67,0,0,0,115,68,0,0,0,116,0,160,1, - 124,0,100,1,63,0,100,2,23,0,124,0,100,3,63,0, - 100,4,64,0,124,0,100,5,64,0,124,1,100,6,63,0, - 124,1,100,3,63,0,100,7,64,0,124,1,100,5,64,0, - 100,8,20,0,100,9,100,9,100,9,102,9,161,1,83,0, - 41,10,78,233,9,0,0,0,105,188,7,0,0,233,5,0, - 0,0,233,15,0,0,0,233,31,0,0,0,233,11,0,0, - 0,233,63,0,0,0,114,88,0,0,0,114,14,0,0,0, - 41,2,114,133,0,0,0,90,6,109,107,116,105,109,101,41, - 2,218,1,100,114,140,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,14,95,112,97,114,115,101, - 95,100,111,115,116,105,109,101,172,2,0,0,115,20,0,0, - 0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,6, - 1,6,249,255,128,114,171,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,10,0,0,0,67, - 0,0,0,115,110,0,0,0,122,82,124,1,100,1,100,0, - 133,2,25,0,100,2,118,0,115,22,74,0,130,1,124,1, - 100,0,100,1,133,2,25,0,125,1,124,0,106,0,124,1, - 25,0,125,2,124,2,100,3,25,0,125,3,124,2,100,4, - 25,0,125,4,124,2,100,5,25,0,125,5,116,1,124,4, - 124,3,131,2,124,5,102,2,87,0,83,0,4,0,116,2, - 116,3,116,4,102,3,121,108,1,0,1,0,1,0,89,0, - 100,6,83,0,48,0,41,7,78,114,14,0,0,0,169,2, - 218,1,99,218,1,111,114,165,0,0,0,233,6,0,0,0, - 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0, - 0,41,5,114,28,0,0,0,114,171,0,0,0,114,26,0, - 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,156, - 0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,114, - 58,0,0,0,114,133,0,0,0,114,134,0,0,0,90,17, - 117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122, - 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,153,0,0,0,185,2,0,0,115,22,0,0,0,2,1, - 20,2,12,1,10,1,8,3,8,1,8,1,16,1,18,1, - 8,1,255,128,114,153,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, - 0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25, - 0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100, - 1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25, - 0,125,2,87,0,110,20,4,0,116,1,121,66,1,0,1, - 0,1,0,89,0,100,0,83,0,48,0,116,2,124,0,106, - 3,124,2,131,2,83,0,41,3,78,114,14,0,0,0,114, - 172,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0, - 114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0, - 0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,151,0,0,0,204, - 2,0,0,115,16,0,0,0,20,2,12,1,2,2,14,1, - 12,1,8,1,12,2,255,128,114,151,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,11,0,0,0,9,0, - 0,0,67,0,0,0,115,190,0,0,0,116,0,124,0,124, - 1,131,2,125,2,116,1,68,0,93,156,92,3,125,3,125, - 4,125,5,124,2,124,3,23,0,125,6,116,2,106,3,100, - 1,124,0,106,4,116,5,124,6,100,2,100,3,141,5,1, - 0,122,14,124,0,106,6,124,6,25,0,125,7,87,0,110, - 18,4,0,116,7,121,86,1,0,1,0,1,0,89,0,113, - 14,48,0,124,7,100,4,25,0,125,8,116,8,124,0,106, - 4,124,7,131,2,125,9,124,4,114,130,116,9,124,0,124, - 8,124,6,124,1,124,9,131,5,125,10,110,10,116,10,124, - 8,124,9,131,2,125,10,124,10,100,0,117,0,114,150,113, - 14,124,7,100,4,25,0,125,8,124,10,124,5,124,8,102, - 3,2,0,1,0,83,0,116,11,100,5,124,1,155,2,157, - 2,124,1,100,6,141,2,130,1,41,7,78,122,13,116,114, - 121,105,110,103,32,123,125,123,125,123,125,114,88,0,0,0, - 41,1,90,9,118,101,114,98,111,115,105,116,121,114,0,0, - 0,0,114,61,0,0,0,114,62,0,0,0,41,12,114,36, - 0,0,0,114,91,0,0,0,114,45,0,0,0,114,80,0, - 0,0,114,29,0,0,0,114,20,0,0,0,114,28,0,0, - 0,114,26,0,0,0,114,56,0,0,0,114,157,0,0,0, - 114,163,0,0,0,114,3,0,0,0,41,11,114,32,0,0, - 0,114,38,0,0,0,114,13,0,0,0,114,92,0,0,0, - 114,93,0,0,0,114,51,0,0,0,114,66,0,0,0,114, - 58,0,0,0,114,40,0,0,0,114,128,0,0,0,114,50, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,48,0,0,0,219,2,0,0,115,38,0,0,0, - 10,1,14,1,8,1,22,1,2,1,14,1,12,1,6,1, - 8,2,12,1,4,1,18,1,10,2,8,1,2,3,8,1, - 14,1,18,2,255,128,114,48,0,0,0,41,46,114,86,0, - 0,0,90,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,21, - 0,0,0,114,1,0,0,0,114,2,0,0,0,90,17,95, - 102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,98, - 114,45,0,0,0,114,150,0,0,0,114,112,0,0,0,114, - 154,0,0,0,114,71,0,0,0,114,133,0,0,0,114,69, - 0,0,0,90,7,95,95,97,108,108,95,95,114,20,0,0, - 0,90,15,112,97,116,104,95,115,101,112,97,114,97,116,111, - 114,115,114,18,0,0,0,114,79,0,0,0,114,3,0,0, - 0,114,25,0,0,0,218,4,116,121,112,101,114,74,0,0, - 0,114,115,0,0,0,114,117,0,0,0,114,119,0,0,0, - 90,13,95,76,111,97,100,101,114,66,97,115,105,99,115,114, - 4,0,0,0,114,91,0,0,0,114,36,0,0,0,114,37, - 0,0,0,114,35,0,0,0,114,27,0,0,0,114,124,0, - 0,0,114,144,0,0,0,114,146,0,0,0,114,56,0,0, - 0,114,149,0,0,0,114,157,0,0,0,218,8,95,95,99, - 111,100,101,95,95,114,155,0,0,0,114,161,0,0,0,114, - 163,0,0,0,114,171,0,0,0,114,153,0,0,0,114,151, - 0,0,0,114,48,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,92,0,0,0,4, - 0,8,16,16,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,2,6,3,14,1,16,3,4,4,8,2,4, - 2,4,1,4,1,18,2,0,127,0,127,12,33,12,1,2, - 1,2,1,4,252,8,9,8,4,8,9,8,31,2,126,2, - 254,4,29,8,5,8,21,8,46,8,10,10,46,8,5,8, - 7,8,6,8,13,8,19,12,15,255,128, + 99,31,2,0,0,115,28,0,0,0,4,2,10,3,8,1, + 4,2,4,1,16,1,12,1,10,1,10,1,2,128,12,2, + 10,2,4,1,255,128,114,146,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,17,0,0,0,9,0,0,0, + 67,0,0,0,115,132,1,0,0,124,1,92,8,125,2,125, + 3,125,4,125,5,125,6,125,7,125,8,125,9,124,4,100, + 1,107,0,114,36,116,0,100,2,131,1,130,1,116,1,160, + 2,124,0,161,1,144,1,143,6,125,10,122,14,124,10,160, + 3,124,6,161,1,1,0,87,0,110,32,4,0,116,4,121, + 96,1,0,1,0,1,0,116,0,100,3,124,0,155,2,157, + 2,124,0,100,4,141,2,130,1,48,0,124,10,160,5,100, + 5,161,1,125,11,116,6,124,11,131,1,100,5,107,3,114, + 128,116,7,100,6,131,1,130,1,124,11,100,0,100,7,133, + 2,25,0,100,8,107,3,114,162,116,0,100,9,124,0,155, + 2,157,2,124,0,100,4,141,2,130,1,116,8,124,11,100, + 10,100,11,133,2,25,0,131,1,125,12,116,8,124,11,100, + 11,100,5,133,2,25,0,131,1,125,13,100,5,124,12,23, + 0,124,13,23,0,125,14,124,6,124,14,55,0,125,6,122, + 14,124,10,160,3,124,6,161,1,1,0,87,0,110,34,4, + 0,116,4,144,1,121,6,1,0,1,0,1,0,116,0,100, + 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,48, + 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, + 1,124,4,107,3,144,1,114,40,116,4,100,12,131,1,130, + 1,87,0,100,0,4,0,4,0,131,3,1,0,110,18,49, + 0,144,1,115,62,48,0,1,0,1,0,1,0,89,0,1, + 0,124,3,100,1,107,2,144,1,114,86,124,15,83,0,122, + 10,116,9,131,0,125,16,87,0,110,24,4,0,116,10,144, + 1,121,120,1,0,1,0,1,0,116,0,100,13,131,1,130, + 1,48,0,124,16,124,15,100,14,131,2,83,0,41,15,78, + 114,0,0,0,0,122,18,110,101,103,97,116,105,118,101,32, + 100,97,116,97,32,115,105,122,101,114,94,0,0,0,114,12, + 0,0,0,114,106,0,0,0,114,100,0,0,0,114,95,0, + 0,0,115,4,0,0,0,80,75,3,4,122,23,98,97,100, + 32,108,111,99,97,108,32,102,105,108,101,32,104,101,97,100, + 101,114,58,32,233,26,0,0,0,114,105,0,0,0,122,26, + 122,105,112,105,109,112,111,114,116,58,32,99,97,110,39,116, + 32,114,101,97,100,32,100,97,116,97,114,141,0,0,0,105, + 241,255,255,255,41,11,114,3,0,0,0,114,112,0,0,0, + 114,113,0,0,0,114,114,0,0,0,114,22,0,0,0,114, + 116,0,0,0,114,55,0,0,0,114,121,0,0,0,114,1, + 0,0,0,114,146,0,0,0,114,145,0,0,0,41,17,114, + 29,0,0,0,114,58,0,0,0,90,8,100,97,116,97,112, + 97,116,104,114,132,0,0,0,114,136,0,0,0,114,127,0, + 0,0,114,139,0,0,0,114,133,0,0,0,114,134,0,0, + 0,114,135,0,0,0,114,125,0,0,0,114,126,0,0,0, + 114,137,0,0,0,114,138,0,0,0,114,129,0,0,0,90, + 8,114,97,119,95,100,97,116,97,114,143,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,114,56,0, + 0,0,52,2,0,0,115,64,0,0,0,20,1,8,1,8, + 1,14,2,2,2,14,1,12,1,20,1,10,1,12,1,8, + 1,16,2,18,2,16,2,16,1,12,1,8,1,2,1,14, + 1,14,1,20,1,10,1,14,1,40,1,10,2,4,2,2, + 3,10,1,14,1,10,1,10,1,255,128,114,56,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 124,0,124,1,24,0,131,1,100,1,107,1,83,0,41,2, + 78,114,5,0,0,0,41,1,218,3,97,98,115,41,2,90, + 2,116,49,90,2,116,50,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,9,95,101,113,95,109,116,105,109, + 101,98,2,0,0,115,4,0,0,0,16,2,255,128,114,149, + 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, + 14,0,0,0,8,0,0,0,67,0,0,0,115,60,1,0, + 0,124,3,124,2,100,1,156,2,125,5,122,18,116,0,160, + 1,124,4,124,3,124,5,161,3,125,6,87,0,110,20,4, + 0,116,2,121,48,1,0,1,0,1,0,89,0,100,0,83, + 0,48,0,124,6,100,2,64,0,100,3,107,3,125,7,124, + 7,114,182,124,6,100,4,64,0,100,3,107,3,125,8,116, + 3,106,4,100,5,107,3,144,1,114,10,124,8,115,106,116, + 3,106,4,100,6,107,2,144,1,114,10,116,5,124,0,124, + 2,131,2,125,9,124,9,100,0,117,1,144,1,114,10,116, + 3,160,6,116,0,106,7,124,9,161,2,125,10,122,20,116, + 0,160,8,124,4,124,10,124,3,124,5,161,4,1,0,87, + 0,110,104,4,0,116,2,121,180,1,0,1,0,1,0,89, + 0,100,0,83,0,48,0,116,9,124,0,124,2,131,2,92, + 2,125,11,125,12,124,11,144,1,114,10,116,10,116,11,124, + 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, + 246,116,11,124,4,100,8,100,9,133,2,25,0,131,1,124, + 12,107,3,144,1,114,10,116,12,160,13,100,10,124,3,155, + 2,157,2,161,1,1,0,100,0,83,0,116,14,160,15,124, + 4,100,9,100,0,133,2,25,0,161,1,125,13,116,16,124, + 13,116,17,131,2,144,1,115,56,116,18,100,11,124,1,155, + 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, + 41,2,114,44,0,0,0,114,13,0,0,0,114,5,0,0, + 0,114,0,0,0,0,114,88,0,0,0,90,5,110,101,118, + 101,114,90,6,97,108,119,97,121,115,114,101,0,0,0,114, + 96,0,0,0,114,97,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,122,16,99,111,109,112,105,108,101,100,32,109,111,100,117, + 108,101,32,122,21,32,105,115,32,110,111,116,32,97,32,99, + 111,100,101,32,111,98,106,101,99,116,41,19,114,21,0,0, + 0,90,13,95,99,108,97,115,115,105,102,121,95,112,121,99, + 114,79,0,0,0,218,4,95,105,109,112,90,21,99,104,101, + 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121, + 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117, + 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104, + 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, + 66,69,82,90,18,95,118,97,108,105,100,97,116,101,95,104, + 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116, + 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95, + 115,111,117,114,99,101,114,149,0,0,0,114,2,0,0,0, + 114,45,0,0,0,114,80,0,0,0,218,7,109,97,114,115, + 104,97,108,90,5,108,111,97,100,115,114,15,0,0,0,218, + 10,95,99,111,100,101,95,116,121,112,101,218,9,84,121,112, + 101,69,114,114,111,114,41,14,114,32,0,0,0,114,57,0, + 0,0,114,66,0,0,0,114,38,0,0,0,114,128,0,0, + 0,90,11,101,120,99,95,100,101,116,97,105,108,115,114,131, + 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,90,12,115, + 111,117,114,99,101,95,98,121,116,101,115,114,152,0,0,0, + 90,12,115,111,117,114,99,101,95,109,116,105,109,101,90,11, + 115,111,117,114,99,101,95,115,105,122,101,114,50,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, + 108,2,0,0,115,84,0,0,0,2,2,2,1,6,254,2, + 5,18,1,12,1,8,1,12,2,4,1,12,1,12,1,2, + 1,2,255,8,1,4,255,10,2,10,1,4,1,4,1,2, + 1,4,254,2,5,4,1,8,1,8,255,12,2,8,1,8, + 3,6,255,6,3,22,3,18,1,4,255,4,2,8,1,4, + 255,4,2,18,2,12,1,16,1,4,1,255,128,114,157,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,28,0,0,0, + 124,0,160,0,100,1,100,2,161,2,125,0,124,0,160,0, + 100,3,100,2,161,2,125,0,124,0,83,0,41,4,78,115, + 2,0,0,0,13,10,243,1,0,0,0,10,243,1,0,0, + 0,13,41,1,114,19,0,0,0,41,1,218,6,115,111,117, + 114,99,101,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,23,95,110,111,114,109,97,108,105,122,101,95,108, + 105,110,101,95,101,110,100,105,110,103,115,159,2,0,0,115, + 8,0,0,0,12,1,12,1,4,1,255,128,114,161,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,6,0,0,0,67,0,0,0,115,24,0,0,0,116, + 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, + 2,100,3,141,4,83,0,41,4,78,114,78,0,0,0,84, + 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, + 41,2,114,161,0,0,0,218,7,99,111,109,112,105,108,101, + 41,2,114,57,0,0,0,114,160,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,15,95,99,111, + 109,112,105,108,101,95,115,111,117,114,99,101,166,2,0,0, + 115,6,0,0,0,8,1,16,1,255,128,114,163,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,11,0,0,0,67,0,0,0,115,68,0,0,0,116,0, + 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, + 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, + 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, + 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, + 83,0,41,10,78,233,9,0,0,0,105,188,7,0,0,233, + 5,0,0,0,233,15,0,0,0,233,31,0,0,0,233,11, + 0,0,0,233,63,0,0,0,114,88,0,0,0,114,14,0, + 0,0,41,2,114,133,0,0,0,90,6,109,107,116,105,109, + 101,41,2,218,1,100,114,140,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,14,95,112,97,114, + 115,101,95,100,111,115,116,105,109,101,172,2,0,0,115,20, + 0,0,0,4,1,10,1,10,1,6,1,6,1,10,1,10, + 1,6,1,6,249,255,128,114,171,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,10,0,0, + 0,67,0,0,0,115,110,0,0,0,122,82,124,1,100,1, + 100,0,133,2,25,0,100,2,118,0,115,22,74,0,130,1, + 124,1,100,0,100,1,133,2,25,0,125,1,124,0,106,0, + 124,1,25,0,125,2,124,2,100,3,25,0,125,3,124,2, + 100,4,25,0,125,4,124,2,100,5,25,0,125,5,116,1, + 124,4,124,3,131,2,124,5,102,2,87,0,83,0,4,0, + 116,2,116,3,116,4,102,3,121,108,1,0,1,0,1,0, + 89,0,100,6,83,0,48,0,41,7,78,114,14,0,0,0, + 169,2,218,1,99,218,1,111,114,165,0,0,0,233,6,0, + 0,0,233,3,0,0,0,41,2,114,0,0,0,0,114,0, + 0,0,0,41,5,114,28,0,0,0,114,171,0,0,0,114, + 26,0,0,0,218,10,73,110,100,101,120,69,114,114,111,114, + 114,156,0,0,0,41,6,114,32,0,0,0,114,13,0,0, + 0,114,58,0,0,0,114,133,0,0,0,114,134,0,0,0, + 90,17,117,110,99,111,109,112,114,101,115,115,101,100,95,115, + 105,122,101,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,153,0,0,0,185,2,0,0,115,22,0,0,0, + 2,1,20,2,12,1,10,1,8,3,8,1,8,1,16,1, + 18,1,8,1,255,128,114,153,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, + 67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133, + 2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100, + 0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124, + 1,25,0,125,2,87,0,110,20,4,0,116,1,121,66,1, + 0,1,0,1,0,89,0,100,0,83,0,48,0,116,2,124, + 0,106,3,124,2,131,2,83,0,41,3,78,114,14,0,0, + 0,114,172,0,0,0,41,4,114,28,0,0,0,114,26,0, + 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32, + 0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,114,151,0,0, + 0,204,2,0,0,115,16,0,0,0,20,2,12,1,2,2, + 14,1,12,1,8,1,12,2,255,128,114,151,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0, + 9,0,0,0,67,0,0,0,115,190,0,0,0,116,0,124, + 0,124,1,131,2,125,2,116,1,68,0,93,156,92,3,125, + 3,125,4,125,5,124,2,124,3,23,0,125,6,116,2,106, + 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141, + 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87, + 0,110,18,4,0,116,7,121,86,1,0,1,0,1,0,89, + 0,113,14,48,0,124,7,100,4,25,0,125,8,116,8,124, + 0,106,4,124,7,131,2,125,9,124,4,114,130,116,9,124, + 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116, + 10,124,8,124,9,131,2,125,10,124,10,100,0,117,0,114, + 150,113,14,124,7,100,4,25,0,125,8,124,10,124,5,124, + 8,102,3,2,0,1,0,83,0,116,11,100,5,124,1,155, + 2,157,2,124,1,100,6,141,2,130,1,41,7,78,122,13, + 116,114,121,105,110,103,32,123,125,123,125,123,125,114,88,0, + 0,0,41,1,90,9,118,101,114,98,111,115,105,116,121,114, + 0,0,0,0,114,61,0,0,0,114,62,0,0,0,41,12, + 114,36,0,0,0,114,91,0,0,0,114,45,0,0,0,114, + 80,0,0,0,114,29,0,0,0,114,20,0,0,0,114,28, + 0,0,0,114,26,0,0,0,114,56,0,0,0,114,157,0, + 0,0,114,163,0,0,0,114,3,0,0,0,41,11,114,32, + 0,0,0,114,38,0,0,0,114,13,0,0,0,114,92,0, + 0,0,114,93,0,0,0,114,51,0,0,0,114,66,0,0, + 0,114,58,0,0,0,114,40,0,0,0,114,128,0,0,0, + 114,50,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,114,48,0,0,0,219,2,0,0,115,38,0, + 0,0,10,1,14,1,8,1,22,1,2,1,14,1,12,1, + 6,1,8,2,12,1,4,1,18,1,10,2,8,1,2,3, + 8,1,14,1,18,2,255,128,114,48,0,0,0,41,46,114, + 86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2,0,0,0,90, + 17,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108, + 105,98,114,45,0,0,0,114,150,0,0,0,114,112,0,0, + 0,114,154,0,0,0,114,71,0,0,0,114,133,0,0,0, + 114,69,0,0,0,90,7,95,95,97,108,108,95,95,114,20, + 0,0,0,90,15,112,97,116,104,95,115,101,112,97,114,97, + 116,111,114,115,114,18,0,0,0,114,79,0,0,0,114,3, + 0,0,0,114,25,0,0,0,218,4,116,121,112,101,114,74, + 0,0,0,114,115,0,0,0,114,117,0,0,0,114,119,0, + 0,0,90,13,95,76,111,97,100,101,114,66,97,115,105,99, + 115,114,4,0,0,0,114,91,0,0,0,114,36,0,0,0, + 114,37,0,0,0,114,35,0,0,0,114,27,0,0,0,114, + 124,0,0,0,114,144,0,0,0,114,146,0,0,0,114,56, + 0,0,0,114,149,0,0,0,114,157,0,0,0,218,8,95, + 95,99,111,100,101,95,95,114,155,0,0,0,114,161,0,0, + 0,114,163,0,0,0,114,171,0,0,0,114,153,0,0,0, + 114,151,0,0,0,114,48,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, + 60,109,111,100,117,108,101,62,1,0,0,0,115,92,0,0, + 0,4,0,8,16,16,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,2,6,3,14,1,16,3,4,4,8, + 2,4,2,4,1,4,1,18,2,0,127,0,127,12,33,12, + 1,2,1,2,1,4,252,8,9,8,4,8,9,8,31,2, + 126,2,254,4,29,8,5,8,21,8,46,8,10,10,46,8, + 5,8,7,8,6,8,13,8,19,12,15,255,128, }; From webhook-mailer at python.org Mon Dec 14 06:28:55 2020 From: webhook-mailer at python.org (markshannon) Date: Mon, 14 Dec 2020 11:28:55 -0000 Subject: [Python-checkins] bpo-42635: Mark JUMP_ABSOLUTE at end of 'for' loop as artificial to avoid spurious line events. (GH-23761) Message-ID: https://github.com/python/cpython/commit/f5e97b72fecff9b9ced35704ec5e6cad29e2825d commit: f5e97b72fecff9b9ced35704ec5e6cad29e2825d branch: master author: Mark Shannon committer: markshannon date: 2020-12-14T11:28:39Z summary: bpo-42635: Mark JUMP_ABSOLUTE at end of 'for' loop as artificial to avoid spurious line events. (GH-23761) files: M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index f257809021fcf..37013e51c94b1 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -646,6 +646,32 @@ def func(): (6, 'line'), (6, 'return')]) + def test_nested_loops(self): + + def func(): + for i in range(2): + for j in range(2): + a = i + j + return a == 1 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (2, 'line'), + (3, 'line'), + (2, 'line'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (2, 'line'), + (3, 'line'), + (2, 'line'), + (1, 'line'), + (4, 'line'), + (4, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index 241e8ffd12376..c7a0ae402bf23 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2773,6 +2773,8 @@ compiler_for(struct compiler *c, stmt_ty s) compiler_use_next_block(c, body); VISIT(c, expr, s->v.For.target); VISIT_SEQ(c, stmt, s->v.For.body); + /* Mark jump as artificial */ + c->u->u_lineno = -1; ADDOP_JUMP(c, JUMP_ABSOLUTE, start); compiler_use_next_block(c, cleanup); diff --git a/Python/importlib.h b/Python/importlib.h index 3d076c757fe6d..fce7d863db7b7 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -81,1774 +81,1774 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 100,105,99,116,95,95,218,6,117,112,100,97,116,101,41,3, 90,3,110,101,119,90,3,111,108,100,218,7,114,101,112,108, 97,99,101,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,5,95,119,114,97,112,40,0,0,0,115,10,0, - 0,0,8,2,10,1,20,1,18,1,255,128,114,17,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, - 0,116,1,131,1,124,0,131,1,83,0,114,0,0,0,0, - 41,2,114,3,0,0,0,218,3,115,121,115,169,1,218,4, - 110,97,109,101,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,11,95,110,101,119,95,109,111,100,117,108,101, - 48,0,0,0,115,4,0,0,0,12,1,255,128,114,21,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,64,0,0,0,115,12,0,0,0, - 101,0,90,1,100,0,90,2,100,1,83,0,41,2,218,14, - 95,68,101,97,100,108,111,99,107,69,114,114,111,114,78,41, - 3,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,22,0,0,0,61,0,0,0,115,6,0, - 0,0,8,0,4,1,255,128,114,22,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,56,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,90,6,100, - 8,100,9,132,0,90,7,100,10,100,11,132,0,90,8,100, - 12,83,0,41,13,218,11,95,77,111,100,117,108,101,76,111, - 99,107,122,169,65,32,114,101,99,117,114,115,105,118,101,32, - 108,111,99,107,32,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,32,119,104,105,99,104,32,105,115,32,97,98,108, - 101,32,116,111,32,100,101,116,101,99,116,32,100,101,97,100, - 108,111,99,107,115,10,32,32,32,32,40,101,46,103,46,32, - 116,104,114,101,97,100,32,49,32,116,114,121,105,110,103,32, - 116,111,32,116,97,107,101,32,108,111,99,107,115,32,65,32, - 116,104,101,110,32,66,44,32,97,110,100,32,116,104,114,101, - 97,100,32,50,32,116,114,121,105,110,103,32,116,111,10,32, - 32,32,32,116,97,107,101,32,108,111,99,107,115,32,66,32, - 116,104,101,110,32,65,41,46,10,32,32,32,32,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,48,0,0,0,116,0,160,1,161, - 0,124,0,95,2,116,0,160,1,161,0,124,0,95,3,124, - 1,124,0,95,4,100,0,124,0,95,5,100,1,124,0,95, - 6,100,1,124,0,95,7,100,0,83,0,169,2,78,233,0, - 0,0,0,41,8,218,7,95,116,104,114,101,97,100,90,13, - 97,108,108,111,99,97,116,101,95,108,111,99,107,218,4,108, - 111,99,107,218,6,119,97,107,101,117,112,114,20,0,0,0, - 218,5,111,119,110,101,114,218,5,99,111,117,110,116,218,7, - 119,97,105,116,101,114,115,169,2,218,4,115,101,108,102,114, - 20,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,8,95,95,105,110,105,116,95,95,71,0,0, - 0,115,14,0,0,0,10,1,10,1,6,1,6,1,6,1, - 10,1,255,128,122,20,95,77,111,100,117,108,101,76,111,99, - 107,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,67, - 0,0,0,115,84,0,0,0,116,0,160,1,161,0,125,1, - 124,0,106,2,125,2,116,3,131,0,125,3,116,4,160,5, - 124,2,161,1,125,4,124,4,100,0,117,0,114,42,100,1, - 83,0,124,4,106,2,125,2,124,2,124,1,107,2,114,60, - 100,2,83,0,124,2,124,3,118,0,114,72,100,1,83,0, - 124,3,160,6,124,2,161,1,1,0,113,20,41,3,78,70, - 84,41,7,114,26,0,0,0,218,9,103,101,116,95,105,100, - 101,110,116,114,29,0,0,0,218,3,115,101,116,218,12,95, - 98,108,111,99,107,105,110,103,95,111,110,218,3,103,101,116, - 218,3,97,100,100,41,5,114,33,0,0,0,90,2,109,101, - 218,3,116,105,100,90,4,115,101,101,110,114,27,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 12,104,97,115,95,100,101,97,100,108,111,99,107,79,0,0, - 0,115,26,0,0,0,8,2,6,1,6,1,10,2,8,1, - 4,1,6,1,8,1,4,1,8,1,4,6,12,1,255,128, - 122,24,95,77,111,100,117,108,101,76,111,99,107,46,104,97, - 115,95,100,101,97,100,108,111,99,107,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,67, - 0,0,0,115,196,0,0,0,116,0,160,1,161,0,125,1, - 124,0,116,2,124,1,60,0,122,170,124,0,106,3,143,126, - 1,0,124,0,106,4,100,1,107,2,115,46,124,0,106,5, - 124,1,107,2,114,90,124,1,124,0,95,5,124,0,4,0, - 106,4,100,2,55,0,2,0,95,4,87,0,100,3,4,0, - 4,0,131,3,1,0,87,0,116,2,124,1,61,0,100,4, - 83,0,124,0,160,6,161,0,114,110,116,7,100,5,124,0, - 22,0,131,1,130,1,124,0,106,8,160,9,100,6,161,1, - 114,136,124,0,4,0,106,10,100,2,55,0,2,0,95,10, - 87,0,100,3,4,0,4,0,131,3,1,0,110,16,49,0, - 115,156,48,0,1,0,1,0,1,0,89,0,1,0,124,0, - 106,8,160,9,161,0,1,0,124,0,106,8,160,11,161,0, - 1,0,113,18,116,2,124,1,61,0,48,0,41,7,122,185, - 10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,101, - 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, - 46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,97, - 108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,101, - 116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,32, - 97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,114, - 32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,32, - 32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,116, - 104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,121, - 115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,84, - 114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,46, - 10,32,32,32,32,32,32,32,32,114,25,0,0,0,233,1, - 0,0,0,78,84,122,23,100,101,97,100,108,111,99,107,32, - 100,101,116,101,99,116,101,100,32,98,121,32,37,114,70,41, - 12,114,26,0,0,0,114,35,0,0,0,114,37,0,0,0, - 114,27,0,0,0,114,30,0,0,0,114,29,0,0,0,114, - 41,0,0,0,114,22,0,0,0,114,28,0,0,0,218,7, - 97,99,113,117,105,114,101,114,31,0,0,0,218,7,114,101, - 108,101,97,115,101,169,2,114,33,0,0,0,114,40,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,43,0,0,0,100,0,0,0,115,36,0,0,0,8,6, - 8,1,2,1,8,2,20,1,6,1,14,1,14,1,6,9, - 4,247,8,1,12,1,12,1,44,1,10,2,12,1,8,2, - 255,128,122,19,95,77,111,100,117,108,101,76,111,99,107,46, - 97,99,113,117,105,114,101,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, - 115,144,0,0,0,116,0,160,1,161,0,125,1,124,0,106, - 2,143,110,1,0,124,0,106,3,124,1,107,3,114,34,116, - 4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,115, - 48,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, - 0,95,5,124,0,106,5,100,2,107,2,114,108,100,0,124, - 0,95,3,124,0,106,6,114,108,124,0,4,0,106,6,100, - 3,56,0,2,0,95,6,124,0,106,7,160,8,161,0,1, - 0,87,0,100,0,4,0,4,0,131,3,1,0,100,0,83, - 0,49,0,115,130,48,0,1,0,1,0,1,0,89,0,1, - 0,100,0,83,0,41,4,78,250,31,99,97,110,110,111,116, - 32,114,101,108,101,97,115,101,32,117,110,45,97,99,113,117, - 105,114,101,100,32,108,111,99,107,114,25,0,0,0,114,42, - 0,0,0,41,9,114,26,0,0,0,114,35,0,0,0,114, - 27,0,0,0,114,29,0,0,0,218,12,82,117,110,116,105, - 109,101,69,114,114,111,114,114,30,0,0,0,114,31,0,0, - 0,114,28,0,0,0,114,44,0,0,0,114,45,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 44,0,0,0,125,0,0,0,115,24,0,0,0,8,1,8, - 1,10,1,8,1,14,1,14,1,10,1,6,1,6,1,14, - 1,46,1,255,128,122,19,95,77,111,100,117,108,101,76,111, - 99,107,46,114,101,108,101,97,115,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,67, - 0,0,0,115,18,0,0,0,100,1,160,0,124,0,106,1, - 116,2,124,0,131,1,161,2,83,0,41,2,78,122,23,95, - 77,111,100,117,108,101,76,111,99,107,40,123,33,114,125,41, - 32,97,116,32,123,125,169,3,218,6,102,111,114,109,97,116, - 114,20,0,0,0,218,2,105,100,169,1,114,33,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 8,95,95,114,101,112,114,95,95,138,0,0,0,115,4,0, - 0,0,18,1,255,128,122,20,95,77,111,100,117,108,101,76, - 111,99,107,46,95,95,114,101,112,114,95,95,78,41,9,114, - 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, - 0,0,0,114,34,0,0,0,114,41,0,0,0,114,43,0, - 0,0,114,44,0,0,0,114,52,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,23,0,0,0,65,0,0,0,115,16,0,0,0,8,0, - 4,1,8,5,8,8,8,21,8,25,12,13,255,128,114,23, - 0,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100, - 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,83, - 0,41,11,218,16,95,68,117,109,109,121,77,111,100,117,108, - 101,76,111,99,107,122,86,65,32,115,105,109,112,108,101,32, - 95,77,111,100,117,108,101,76,111,99,107,32,101,113,117,105, - 118,97,108,101,110,116,32,102,111,114,32,80,121,116,104,111, - 110,32,98,117,105,108,100,115,32,119,105,116,104,111,117,116, - 10,32,32,32,32,109,117,108,116,105,45,116,104,114,101,97, - 100,105,110,103,32,115,117,112,112,111,114,116,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,16,0,0,0,124,1,124,0,95, - 0,100,1,124,0,95,1,100,0,83,0,114,24,0,0,0, - 41,2,114,20,0,0,0,114,30,0,0,0,114,32,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,34,0,0,0,146,0,0,0,115,6,0,0,0,6,1, - 10,1,255,128,122,25,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,67,0,0,0,115,18,0,0,0,124,0,4, - 0,106,0,100,1,55,0,2,0,95,0,100,2,83,0,41, - 3,78,114,42,0,0,0,84,41,1,114,30,0,0,0,114, - 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,43,0,0,0,150,0,0,0,115,6,0,0, - 0,14,1,4,1,255,128,122,24,95,68,117,109,109,121,77, - 111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,114, - 101,99,1,0,0,0,0,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,2,114,18,116,1,100,2,131,1,130, - 1,124,0,4,0,106,0,100,3,56,0,2,0,95,0,100, - 0,83,0,41,4,78,114,25,0,0,0,114,46,0,0,0, - 114,42,0,0,0,41,2,114,30,0,0,0,114,47,0,0, - 0,114,51,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,44,0,0,0,154,0,0,0,115,8, - 0,0,0,10,1,8,1,18,1,255,128,122,24,95,68,117, - 109,109,121,77,111,100,117,108,101,76,111,99,107,46,114,101, - 108,101,97,115,101,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,18, - 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, - 1,161,2,83,0,41,2,78,122,28,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,40,123,33,114,125,41, - 32,97,116,32,123,125,114,48,0,0,0,114,51,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 52,0,0,0,159,0,0,0,115,4,0,0,0,18,1,255, - 128,122,25,95,68,117,109,109,121,77,111,100,117,108,101,76, - 111,99,107,46,95,95,114,101,112,114,95,95,78,41,8,114, - 9,0,0,0,114,8,0,0,0,114,1,0,0,0,114,10, - 0,0,0,114,34,0,0,0,114,43,0,0,0,114,44,0, - 0,0,114,52,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,53,0,0,0, - 142,0,0,0,115,14,0,0,0,8,0,4,1,8,3,8, - 4,8,4,12,5,255,128,114,53,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,64,0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0,41,8, - 218,18,95,77,111,100,117,108,101,76,111,99,107,77,97,110, - 97,103,101,114,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,0, - 0,0,124,1,124,0,95,0,100,0,124,0,95,1,100,0, - 83,0,114,0,0,0,0,41,2,218,5,95,110,97,109,101, - 218,5,95,108,111,99,107,114,32,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,34,0,0,0, - 165,0,0,0,115,6,0,0,0,6,1,10,1,255,128,122, - 27,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, - 103,101,114,46,95,95,105,110,105,116,95,95,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0, - 0,67,0,0,0,115,26,0,0,0,116,0,124,0,106,1, - 131,1,124,0,95,2,124,0,106,2,160,3,161,0,1,0, - 100,0,83,0,114,0,0,0,0,41,4,218,16,95,103,101, - 116,95,109,111,100,117,108,101,95,108,111,99,107,114,55,0, - 0,0,114,56,0,0,0,114,43,0,0,0,114,51,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,9,95,95,101,110,116,101,114,95,95,169,0,0,0,115, - 6,0,0,0,12,1,14,1,255,128,122,28,95,77,111,100, - 117,108,101,76,111,99,107,77,97,110,97,103,101,114,46,95, - 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0, - 0,0,0,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,0,0,0,0,41,2,114,56,0,0,0, - 114,44,0,0,0,41,3,114,33,0,0,0,218,4,97,114, - 103,115,90,6,107,119,97,114,103,115,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,8,95,95,101,120,105, - 116,95,95,173,0,0,0,115,4,0,0,0,14,1,255,128, - 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,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, - 34,0,0,0,114,58,0,0,0,114,60,0,0,0,114,5, + 0,0,218,5,95,119,114,97,112,40,0,0,0,115,12,0, + 0,0,8,2,10,1,18,1,2,128,18,1,255,128,114,17, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, + 0,116,0,116,1,131,1,124,0,131,1,83,0,114,0,0, + 0,0,41,2,114,3,0,0,0,218,3,115,121,115,169,1, + 218,4,110,97,109,101,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,11,95,110,101,119,95,109,111,100,117, + 108,101,48,0,0,0,115,4,0,0,0,12,1,255,128,114, + 21,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,64,0,0,0,115,12,0, + 0,0,101,0,90,1,100,0,90,2,100,1,83,0,41,2, + 218,14,95,68,101,97,100,108,111,99,107,69,114,114,111,114, + 78,41,3,114,9,0,0,0,114,8,0,0,0,114,1,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,22,0,0,0,61,0,0,0,115, + 6,0,0,0,8,0,4,1,255,128,114,22,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,64,0,0,0,115,56,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,90, + 6,100,8,100,9,132,0,90,7,100,10,100,11,132,0,90, + 8,100,12,83,0,41,13,218,11,95,77,111,100,117,108,101, + 76,111,99,107,122,169,65,32,114,101,99,117,114,115,105,118, + 101,32,108,111,99,107,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,119,104,105,99,104,32,105,115,32,97, + 98,108,101,32,116,111,32,100,101,116,101,99,116,32,100,101, + 97,100,108,111,99,107,115,10,32,32,32,32,40,101,46,103, + 46,32,116,104,114,101,97,100,32,49,32,116,114,121,105,110, + 103,32,116,111,32,116,97,107,101,32,108,111,99,107,115,32, + 65,32,116,104,101,110,32,66,44,32,97,110,100,32,116,104, + 114,101,97,100,32,50,32,116,114,121,105,110,103,32,116,111, + 10,32,32,32,32,116,97,107,101,32,108,111,99,107,115,32, + 66,32,116,104,101,110,32,65,41,46,10,32,32,32,32,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 2,0,0,0,67,0,0,0,115,48,0,0,0,116,0,160, + 1,161,0,124,0,95,2,116,0,160,1,161,0,124,0,95, + 3,124,1,124,0,95,4,100,0,124,0,95,5,100,1,124, + 0,95,6,100,1,124,0,95,7,100,0,83,0,169,2,78, + 233,0,0,0,0,41,8,218,7,95,116,104,114,101,97,100, + 90,13,97,108,108,111,99,97,116,101,95,108,111,99,107,218, + 4,108,111,99,107,218,6,119,97,107,101,117,112,114,20,0, + 0,0,218,5,111,119,110,101,114,218,5,99,111,117,110,116, + 218,7,119,97,105,116,101,114,115,169,2,218,4,115,101,108, + 102,114,20,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,8,95,95,105,110,105,116,95,95,71, + 0,0,0,115,14,0,0,0,10,1,10,1,6,1,6,1, + 6,1,10,1,255,128,122,20,95,77,111,100,117,108,101,76, + 111,99,107,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, + 0,67,0,0,0,115,84,0,0,0,116,0,160,1,161,0, + 125,1,124,0,106,2,125,2,116,3,131,0,125,3,116,4, + 160,5,124,2,161,1,125,4,124,4,100,0,117,0,114,42, + 100,1,83,0,124,4,106,2,125,2,124,2,124,1,107,2, + 114,60,100,2,83,0,124,2,124,3,118,0,114,72,100,1, + 83,0,124,3,160,6,124,2,161,1,1,0,113,20,41,3, + 78,70,84,41,7,114,26,0,0,0,218,9,103,101,116,95, + 105,100,101,110,116,114,29,0,0,0,218,3,115,101,116,218, + 12,95,98,108,111,99,107,105,110,103,95,111,110,218,3,103, + 101,116,218,3,97,100,100,41,5,114,33,0,0,0,90,2, + 109,101,218,3,116,105,100,90,4,115,101,101,110,114,27,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,12,104,97,115,95,100,101,97,100,108,111,99,107,79, + 0,0,0,115,26,0,0,0,8,2,6,1,6,1,10,2, + 8,1,4,1,6,1,8,1,4,1,8,1,4,6,12,1, + 255,128,122,24,95,77,111,100,117,108,101,76,111,99,107,46, + 104,97,115,95,100,101,97,100,108,111,99,107,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0, + 0,67,0,0,0,115,196,0,0,0,116,0,160,1,161,0, + 125,1,124,0,116,2,124,1,60,0,122,170,124,0,106,3, + 143,126,1,0,124,0,106,4,100,1,107,2,115,46,124,0, + 106,5,124,1,107,2,114,90,124,1,124,0,95,5,124,0, + 4,0,106,4,100,2,55,0,2,0,95,4,87,0,100,3, + 4,0,4,0,131,3,1,0,87,0,116,2,124,1,61,0, + 100,4,83,0,124,0,160,6,161,0,114,110,116,7,100,5, + 124,0,22,0,131,1,130,1,124,0,106,8,160,9,100,6, + 161,1,114,136,124,0,4,0,106,10,100,2,55,0,2,0, + 95,10,87,0,100,3,4,0,4,0,131,3,1,0,110,16, + 49,0,115,156,48,0,1,0,1,0,1,0,89,0,1,0, + 124,0,106,8,160,9,161,0,1,0,124,0,106,8,160,11, + 161,0,1,0,113,18,116,2,124,1,61,0,48,0,41,7, + 122,185,10,32,32,32,32,32,32,32,32,65,99,113,117,105, + 114,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, + 99,107,46,32,32,73,102,32,97,32,112,111,116,101,110,116, + 105,97,108,32,100,101,97,100,108,111,99,107,32,105,115,32, + 100,101,116,101,99,116,101,100,44,10,32,32,32,32,32,32, + 32,32,97,32,95,68,101,97,100,108,111,99,107,69,114,114, + 111,114,32,105,115,32,114,97,105,115,101,100,46,10,32,32, + 32,32,32,32,32,32,79,116,104,101,114,119,105,115,101,44, + 32,116,104,101,32,108,111,99,107,32,105,115,32,97,108,119, + 97,121,115,32,97,99,113,117,105,114,101,100,32,97,110,100, + 32,84,114,117,101,32,105,115,32,114,101,116,117,114,110,101, + 100,46,10,32,32,32,32,32,32,32,32,114,25,0,0,0, + 233,1,0,0,0,78,84,122,23,100,101,97,100,108,111,99, + 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, + 70,41,12,114,26,0,0,0,114,35,0,0,0,114,37,0, + 0,0,114,27,0,0,0,114,30,0,0,0,114,29,0,0, + 0,114,41,0,0,0,114,22,0,0,0,114,28,0,0,0, + 218,7,97,99,113,117,105,114,101,114,31,0,0,0,218,7, + 114,101,108,101,97,115,101,169,2,114,33,0,0,0,114,40, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,54,0,0,0,163,0,0,0,115,10,0,0,0, - 8,0,8,2,8,4,12,4,255,128,114,54,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 8,0,0,0,67,0,0,0,115,134,0,0,0,116,0,160, - 1,161,0,1,0,122,114,122,14,116,2,124,0,25,0,131, - 0,125,1,87,0,110,22,4,0,116,3,121,46,1,0,1, - 0,1,0,100,1,125,1,89,0,110,2,48,0,124,1,100, - 1,117,0,114,110,116,4,100,1,117,0,114,74,116,5,124, - 0,131,1,125,1,110,8,116,6,124,0,131,1,125,1,124, - 0,102,1,100,2,100,3,132,1,125,2,116,7,160,8,124, - 1,124,2,161,2,116,2,124,0,60,0,87,0,116,0,160, - 9,161,0,1,0,124,1,83,0,116,0,160,9,161,0,1, - 0,48,0,41,4,122,139,71,101,116,32,111,114,32,99,114, - 101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,32, - 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110, - 32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,32, - 32,32,32,65,99,113,117,105,114,101,47,114,101,108,101,97, - 115,101,32,105,110,116,101,114,110,97,108,108,121,32,116,104, - 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32, - 108,111,99,107,32,116,111,32,112,114,111,116,101,99,116,10, - 32,32,32,32,95,109,111,100,117,108,101,95,108,111,99,107, - 115,46,78,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,8,0,0,0,83,0,0,0,115,54,0,0, - 0,116,0,160,1,161,0,1,0,122,34,116,2,160,3,124, - 1,161,1,124,0,117,0,114,30,116,2,124,1,61,0,87, - 0,116,0,160,4,161,0,1,0,100,0,83,0,116,0,160, - 4,161,0,1,0,48,0,114,0,0,0,0,41,5,218,4, - 95,105,109,112,218,12,97,99,113,117,105,114,101,95,108,111, - 99,107,218,13,95,109,111,100,117,108,101,95,108,111,99,107, - 115,114,38,0,0,0,218,12,114,101,108,101,97,115,101,95, - 108,111,99,107,41,2,218,3,114,101,102,114,20,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 2,99,98,198,0,0,0,115,14,0,0,0,8,1,2,1, - 14,4,6,1,2,128,22,2,255,128,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,61,0,0,0,114, - 62,0,0,0,114,63,0,0,0,218,8,75,101,121,69,114, - 114,111,114,114,26,0,0,0,114,53,0,0,0,114,23,0, - 0,0,218,8,95,119,101,97,107,114,101,102,114,65,0,0, - 0,114,64,0,0,0,41,3,114,20,0,0,0,114,27,0, - 0,0,114,66,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,57,0,0,0,179,0,0,0,115, - 34,0,0,0,8,6,2,1,2,1,14,1,12,1,10,1, - 8,2,8,1,10,1,8,2,12,2,16,11,2,128,8,2, - 4,2,10,254,255,128,114,57,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,124,0,131,1,125, - 1,122,12,124,1,160,1,161,0,1,0,87,0,110,20,4, - 0,116,2,121,40,1,0,1,0,1,0,89,0,100,1,83, - 0,48,0,124,1,160,3,161,0,1,0,100,1,83,0,41, - 2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,110, - 32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,111, - 100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,32, - 103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,109, - 101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32, - 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, - 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, - 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, - 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, - 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, - 104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,32, - 78,41,4,114,57,0,0,0,114,43,0,0,0,114,22,0, - 0,0,114,44,0,0,0,41,2,114,20,0,0,0,114,27, + 0,0,114,43,0,0,0,100,0,0,0,115,36,0,0,0, + 8,6,8,1,2,1,8,2,20,1,6,1,14,1,14,1, + 6,9,4,247,8,1,12,1,12,1,44,1,10,2,12,1, + 8,2,255,128,122,19,95,77,111,100,117,108,101,76,111,99, + 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, + 0,0,115,144,0,0,0,116,0,160,1,161,0,125,1,124, + 0,106,2,143,110,1,0,124,0,106,3,124,1,107,3,114, + 34,116,4,100,1,131,1,130,1,124,0,106,5,100,2,107, + 4,115,48,74,0,130,1,124,0,4,0,106,5,100,3,56, + 0,2,0,95,5,124,0,106,5,100,2,107,2,114,108,100, + 0,124,0,95,3,124,0,106,6,114,108,124,0,4,0,106, + 6,100,3,56,0,2,0,95,6,124,0,106,7,160,8,161, + 0,1,0,87,0,100,0,4,0,4,0,131,3,1,0,100, + 0,83,0,49,0,115,130,48,0,1,0,1,0,1,0,89, + 0,1,0,100,0,83,0,41,4,78,250,31,99,97,110,110, + 111,116,32,114,101,108,101,97,115,101,32,117,110,45,97,99, + 113,117,105,114,101,100,32,108,111,99,107,114,25,0,0,0, + 114,42,0,0,0,41,9,114,26,0,0,0,114,35,0,0, + 0,114,27,0,0,0,114,29,0,0,0,218,12,82,117,110, + 116,105,109,101,69,114,114,111,114,114,30,0,0,0,114,31, + 0,0,0,114,28,0,0,0,114,44,0,0,0,114,45,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,44,0,0,0,125,0,0,0,115,24,0,0,0,8, + 1,8,1,10,1,8,1,14,1,14,1,10,1,6,1,6, + 1,14,1,46,1,255,128,122,19,95,77,111,100,117,108,101, + 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, + 0,67,0,0,0,115,18,0,0,0,100,1,160,0,124,0, + 106,1,116,2,124,0,131,1,161,2,83,0,41,2,78,122, + 23,95,77,111,100,117,108,101,76,111,99,107,40,123,33,114, + 125,41,32,97,116,32,123,125,169,3,218,6,102,111,114,109, + 97,116,114,20,0,0,0,218,2,105,100,169,1,114,33,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,115, + 4,0,0,0,18,1,255,128,122,20,95,77,111,100,117,108, + 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, + 9,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, + 114,10,0,0,0,114,34,0,0,0,114,41,0,0,0,114, + 43,0,0,0,114,44,0,0,0,114,52,0,0,0,114,5, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,107, - 95,109,111,100,117,108,101,216,0,0,0,115,14,0,0,0, - 8,6,2,1,12,1,12,1,8,3,12,2,255,128,114,69, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,4,0,0,0,79,0,0,0,115,14,0,0, - 0,124,0,124,1,105,0,124,2,164,1,142,1,83,0,41, - 2,97,46,1,0,0,114,101,109,111,118,101,95,105,109,112, - 111,114,116,108,105,98,95,102,114,97,109,101,115,32,105,110, - 32,105,109,112,111,114,116,46,99,32,119,105,108,108,32,97, - 108,119,97,121,115,32,114,101,109,111,118,101,32,115,101,113, - 117,101,110,99,101,115,10,32,32,32,32,111,102,32,105,109, - 112,111,114,116,108,105,98,32,102,114,97,109,101,115,32,116, - 104,97,116,32,101,110,100,32,119,105,116,104,32,97,32,99, - 97,108,108,32,116,111,32,116,104,105,115,32,102,117,110,99, - 116,105,111,110,10,10,32,32,32,32,85,115,101,32,105,116, - 32,105,110,115,116,101,97,100,32,111,102,32,97,32,110,111, - 114,109,97,108,32,99,97,108,108,32,105,110,32,112,108,97, - 99,101,115,32,119,104,101,114,101,32,105,110,99,108,117,100, - 105,110,103,32,116,104,101,32,105,109,112,111,114,116,108,105, - 98,10,32,32,32,32,102,114,97,109,101,115,32,105,110,116, - 114,111,100,117,99,101,115,32,117,110,119,97,110,116,101,100, - 32,110,111,105,115,101,32,105,110,116,111,32,116,104,101,32, - 116,114,97,99,101,98,97,99,107,32,40,101,46,103,46,32, - 119,104,101,110,32,101,120,101,99,117,116,105,110,103,10,32, - 32,32,32,109,111,100,117,108,101,32,99,111,100,101,41,10, - 32,32,32,32,78,114,5,0,0,0,41,3,218,1,102,114, - 59,0,0,0,90,4,107,119,100,115,114,5,0,0,0,114, - 5,0,0,0,114,6,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,233,0,0,0,115,4,0,0,0,14,8,255, - 128,114,71,0,0,0,114,42,0,0,0,41,1,218,9,118, - 101,114,98,111,115,105,116,121,99,1,0,0,0,0,0,0, - 0,1,0,0,0,3,0,0,0,4,0,0,0,71,0,0, - 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, - 114,54,124,0,160,3,100,1,161,1,115,30,100,2,124,0, - 23,0,125,0,116,4,124,0,106,5,124,2,142,0,116,0, - 106,6,100,3,141,2,1,0,100,4,83,0,100,4,83,0, - 41,5,122,61,80,114,105,110,116,32,116,104,101,32,109,101, - 115,115,97,103,101,32,116,111,32,115,116,100,101,114,114,32, - 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, - 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, - 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, - 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, - 0,0,0,218,5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100, - 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,72, - 0,0,0,114,59,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,244,0,0,0,115,12,0, - 0,0,12,2,10,1,8,1,24,1,4,253,255,128,114,80, - 0,0,0,99,1,0,0,0,0,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,1,83,0,41,4,122,49,68, - 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, - 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, - 117,108,101,32,105,115,32,98,117,105,108,116,45,105,110,46, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,4,0,0,0,19,0,0,0,115,38,0,0,0,124,1, - 116,0,106,1,118,1,114,28,116,2,100,1,160,3,124,1, - 161,1,124,1,100,2,141,2,130,1,136,0,124,0,124,1, - 131,2,83,0,41,3,78,250,29,123,33,114,125,32,105,115, - 32,110,111,116,32,97,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,114,19,0,0,0,41,4,114,18,0, - 0,0,218,20,98,117,105,108,116,105,110,95,109,111,100,117, - 108,101,95,110,97,109,101,115,218,11,73,109,112,111,114,116, - 69,114,114,111,114,114,49,0,0,0,169,2,114,33,0,0, - 0,218,8,102,117,108,108,110,97,109,101,169,1,218,3,102, - 120,110,114,5,0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0, - 10,1,10,1,2,1,6,255,10,2,255,128,122,52,95,114, - 101,113,117,105,114,101,115,95,98,117,105,108,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,78,169,1,114,17,0,0,0,41,2,114,87,0,0, - 0,114,88,0,0,0,114,5,0,0,0,114,86,0,0,0, - 114,6,0,0,0,218,17,95,114,101,113,117,105,114,101,115, - 95,98,117,105,108,116,105,110,252,0,0,0,115,8,0,0, - 0,12,2,10,5,4,1,255,128,114,90,0,0,0,99,1, - 0,0,0,0,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,1,83,0,41,4,122,47,68,101,99,111,114,97, - 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, - 101,32,110,97,109,101,100,32,109,111,100,117,108,101,32,105, - 115,32,102,114,111,122,101,110,46,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,4,0,0,0,19,0, - 0,0,115,38,0,0,0,116,0,160,1,124,1,161,1,115, - 28,116,2,100,1,160,3,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,19,0, - 0,0,41,4,114,61,0,0,0,218,9,105,115,95,102,114, - 111,122,101,110,114,83,0,0,0,114,49,0,0,0,114,84, - 0,0,0,114,86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0, - 115,12,0,0,0,10,1,10,1,2,1,6,255,10,2,255, - 128,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,78,114,89,0,0,0,41,2,114,87,0, - 0,0,114,93,0,0,0,114,5,0,0,0,114,86,0,0, - 0,114,6,0,0,0,218,16,95,114,101,113,117,105,114,101, - 115,95,102,114,111,122,101,110,7,1,0,0,115,8,0,0, - 0,12,2,10,5,4,1,255,128,114,94,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4, - 0,0,0,67,0,0,0,115,74,0,0,0,100,1,125,2, - 116,0,160,1,124,2,116,2,161,2,1,0,116,3,124,1, - 124,0,131,2,125,3,124,1,116,4,106,5,118,0,114,66, - 116,4,106,5,124,1,25,0,125,4,116,6,124,3,124,4, - 131,2,1,0,116,4,106,5,124,1,25,0,83,0,116,7, - 124,3,131,1,83,0,41,3,122,128,76,111,97,100,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,32,105,110,116,111,32,115,121,115,46,109,111,100, - 117,108,101,115,32,97,110,100,32,114,101,116,117,114,110,32, - 105,116,46,10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46, - 101,120,101,99,95,109,111,100,117,108,101,32,105,110,115,116, - 101,97,100,46,10,10,32,32,32,32,122,103,116,104,101,32, - 108,111,97,100,95,109,111,100,117,108,101,40,41,32,109,101, - 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, - 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, - 101,97,100,78,41,8,218,9,95,119,97,114,110,105,110,103, - 115,218,4,119,97,114,110,218,18,68,101,112,114,101,99,97, - 116,105,111,110,87,97,114,110,105,110,103,218,16,115,112,101, - 99,95,102,114,111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0, - 114,85,0,0,0,218,3,109,115,103,218,4,115,112,101,99, - 218,6,109,111,100,117,108,101,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,17,95,108,111,97,100,95,109, - 111,100,117,108,101,95,115,104,105,109,19,1,0,0,115,18, - 0,0,0,4,6,12,2,10,1,10,1,10,1,10,1,10, - 1,8,2,255,128,114,105,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,67, - 0,0,0,115,210,0,0,0,116,0,124,0,100,1,100,0, - 131,3,125,1,116,1,124,1,100,2,131,2,114,54,122,12, - 124,1,160,2,124,0,161,1,87,0,83,0,4,0,116,3, - 121,52,1,0,1,0,1,0,89,0,110,2,48,0,122,10, - 124,0,106,4,125,2,87,0,110,18,4,0,116,5,121,82, - 1,0,1,0,1,0,89,0,110,18,48,0,124,2,100,0, - 117,1,114,100,116,6,124,2,131,1,83,0,122,10,124,0, - 106,7,125,3,87,0,110,22,4,0,116,5,121,132,1,0, - 1,0,1,0,100,3,125,3,89,0,110,2,48,0,122,10, - 124,0,106,8,125,4,87,0,110,52,4,0,116,5,121,196, - 1,0,1,0,1,0,124,1,100,0,117,0,114,180,100,4, - 160,9,124,3,161,1,6,0,89,0,83,0,100,5,160,9, - 124,3,124,1,161,2,6,0,89,0,83,0,48,0,100,6, - 160,9,124,3,124,4,161,2,83,0,41,7,78,218,10,95, - 95,108,111,97,100,101,114,95,95,218,11,109,111,100,117,108, - 101,95,114,101,112,114,250,1,63,250,13,60,109,111,100,117, - 108,101,32,123,33,114,125,62,250,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,13,0,0,0,114,11, - 0,0,0,114,107,0,0,0,218,9,69,120,99,101,112,116, - 105,111,110,218,8,95,95,115,112,101,99,95,95,114,2,0, - 0,0,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,9,0,0,0,218, - 8,95,95,102,105,108,101,95,95,114,49,0,0,0,41,5, - 114,104,0,0,0,218,6,108,111,97,100,101,114,114,103,0, - 0,0,114,20,0,0,0,218,8,102,105,108,101,110,97,109, - 101,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,12,95,109,111,100,117,108,101,95,114,101,112,114,38,1, - 0,0,115,48,0,0,0,12,2,10,1,2,4,12,1,12, - 1,6,1,2,1,10,1,12,1,6,1,8,2,8,1,2, - 4,10,1,12,1,10,1,2,1,10,1,12,1,8,1,14, - 1,18,2,12,2,255,128,114,118,0,0,0,99,0,0,0, - 0,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,132,2,90,4,100,6,100,7,132,0,90,5, - 100,8,100,9,132,0,90,6,101,7,100,10,100,11,132,0, - 131,1,90,8,101,8,106,9,100,12,100,11,132,0,131,1, - 90,8,101,7,100,13,100,14,132,0,131,1,90,10,101,7, - 100,15,100,16,132,0,131,1,90,11,101,11,106,9,100,17, - 100,16,132,0,131,1,90,11,100,2,83,0,41,18,218,10, - 77,111,100,117,108,101,83,112,101,99,97,208,5,0,0,84, - 104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110, - 32,102,111,114,32,97,32,109,111,100,117,108,101,44,32,117, - 115,101,100,32,102,111,114,32,108,111,97,100,105,110,103,46, - 10,10,32,32,32,32,65,32,109,111,100,117,108,101,39,115, - 32,115,112,101,99,32,105,115,32,116,104,101,32,115,111,117, - 114,99,101,32,102,111,114,32,105,110,102,111,114,109,97,116, - 105,111,110,32,97,98,111,117,116,32,116,104,101,32,109,111, - 100,117,108,101,46,32,32,70,111,114,10,32,32,32,32,100, - 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, - 105,116,104,32,116,104,101,32,109,111,100,117,108,101,44,32, - 105,110,99,108,117,100,105,110,103,32,115,111,117,114,99,101, - 44,32,117,115,101,32,116,104,101,32,115,112,101,99,39,115, - 10,32,32,32,32,108,111,97,100,101,114,46,10,10,32,32, - 32,32,96,110,97,109,101,96,32,105,115,32,116,104,101,32, - 97,98,115,111,108,117,116,101,32,110,97,109,101,32,111,102, - 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,108, - 111,97,100,101,114,96,32,105,115,32,116,104,101,32,108,111, - 97,100,101,114,10,32,32,32,32,116,111,32,117,115,101,32, - 119,104,101,110,32,108,111,97,100,105,110,103,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,112,97,114,101,110, - 116,96,32,105,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,116,104,101,10,32,32,32,32,112,97,99,107,97,103, - 101,32,116,104,101,32,109,111,100,117,108,101,32,105,115,32, - 105,110,46,32,32,84,104,101,32,112,97,114,101,110,116,32, - 105,115,32,100,101,114,105,118,101,100,32,102,114,111,109,32, - 116,104,101,32,110,97,109,101,46,10,10,32,32,32,32,96, - 105,115,95,112,97,99,107,97,103,101,96,32,100,101,116,101, - 114,109,105,110,101,115,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,99,111,110,115,105,100,101,114, - 101,100,32,97,32,112,97,99,107,97,103,101,32,111,114,10, - 32,32,32,32,110,111,116,46,32,32,79,110,32,109,111,100, - 117,108,101,115,32,116,104,105,115,32,105,115,32,114,101,102, - 108,101,99,116,101,100,32,98,121,32,116,104,101,32,96,95, - 95,112,97,116,104,95,95,96,32,97,116,116,114,105,98,117, - 116,101,46,10,10,32,32,32,32,96,111,114,105,103,105,110, - 96,32,105,115,32,116,104,101,32,115,112,101,99,105,102,105, - 99,32,108,111,99,97,116,105,111,110,32,117,115,101,100,32, - 98,121,32,116,104,101,32,108,111,97,100,101,114,32,102,114, - 111,109,32,119,104,105,99,104,32,116,111,10,32,32,32,32, - 108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,44, - 32,105,102,32,116,104,97,116,32,105,110,102,111,114,109,97, - 116,105,111,110,32,105,115,32,97,118,97,105,108,97,98,108, - 101,46,32,32,87,104,101,110,32,102,105,108,101,110,97,109, - 101,32,105,115,10,32,32,32,32,115,101,116,44,32,111,114, - 105,103,105,110,32,119,105,108,108,32,109,97,116,99,104,46, - 10,10,32,32,32,32,96,104,97,115,95,108,111,99,97,116, - 105,111,110,96,32,105,110,100,105,99,97,116,101,115,32,116, - 104,97,116,32,97,32,115,112,101,99,39,115,32,34,111,114, - 105,103,105,110,34,32,114,101,102,108,101,99,116,115,32,97, - 32,108,111,99,97,116,105,111,110,46,10,32,32,32,32,87, - 104,101,110,32,116,104,105,115,32,105,115,32,84,114,117,101, - 44,32,96,95,95,102,105,108,101,95,95,96,32,97,116,116, - 114,105,98,117,116,101,32,111,102,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,115,101,116,46,10,10,32,32, - 32,32,96,99,97,99,104,101,100,96,32,105,115,32,116,104, - 101,32,108,111,99,97,116,105,111,110,32,111,102,32,116,104, - 101,32,99,97,99,104,101,100,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,44,32,105,102,32,97,110,121,46,32, - 32,73,116,10,32,32,32,32,99,111,114,114,101,115,112,111, - 110,100,115,32,116,111,32,116,104,101,32,96,95,95,99,97, - 99,104,101,100,95,95,96,32,97,116,116,114,105,98,117,116, - 101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113,117, - 101,110,99,101,32,111,102,32,112,97,116,104,32,101,110,116, - 114,105,101,115,32,116,111,10,32,32,32,32,115,101,97,114, - 99,104,32,119,104,101,110,32,105,109,112,111,114,116,105,110, - 103,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, - 102,32,115,101,116,44,32,105,115,95,112,97,99,107,97,103, - 101,32,115,104,111,117,108,100,32,98,101,10,32,32,32,32, - 84,114,117,101,45,45,97,110,100,32,70,97,108,115,101,32, - 111,116,104,101,114,119,105,115,101,46,10,10,32,32,32,32, - 80,97,99,107,97,103,101,115,32,97,114,101,32,115,105,109, - 112,108,121,32,109,111,100,117,108,101,115,32,116,104,97,116, - 32,40,109,97,121,41,32,104,97,118,101,32,115,117,98,109, - 111,100,117,108,101,115,46,32,32,73,102,32,97,32,115,112, - 101,99,10,32,32,32,32,104,97,115,32,97,32,110,111,110, - 45,78,111,110,101,32,118,97,108,117,101,32,105,110,32,96, - 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,96,44,32,116,104,101, - 32,105,109,112,111,114,116,10,32,32,32,32,115,121,115,116, - 101,109,32,119,105,108,108,32,99,111,110,115,105,100,101,114, - 32,109,111,100,117,108,101,115,32,108,111,97,100,101,100,32, - 102,114,111,109,32,116,104,101,32,115,112,101,99,32,97,115, - 32,112,97,99,107,97,103,101,115,46,10,10,32,32,32,32, - 79,110,108,121,32,102,105,110,100,101,114,115,32,40,115,101, - 101,32,105,109,112,111,114,116,108,105,98,46,97,98,99,46, - 77,101,116,97,80,97,116,104,70,105,110,100,101,114,32,97, - 110,100,10,32,32,32,32,105,109,112,111,114,116,108,105,98, - 46,97,98,99,46,80,97,116,104,69,110,116,114,121,70,105, - 110,100,101,114,41,32,115,104,111,117,108,100,32,109,111,100, - 105,102,121,32,77,111,100,117,108,101,83,112,101,99,32,105, - 110,115,116,97,110,99,101,115,46,10,10,32,32,32,32,78, - 41,3,218,6,111,114,105,103,105,110,218,12,108,111,97,100, - 101,114,95,115,116,97,116,101,218,10,105,115,95,112,97,99, - 107,97,103,101,99,3,0,0,0,0,0,0,0,3,0,0, - 0,6,0,0,0,2,0,0,0,67,0,0,0,115,54,0, - 0,0,124,1,124,0,95,0,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,41,2,78,70,41,7,114,20, - 0,0,0,114,116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0, - 0,0,114,116,0,0,0,114,120,0,0,0,114,121,0,0, - 0,114,122,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,34,0,0,0,111,1,0,0,115,16, - 0,0,0,6,2,6,1,6,1,6,1,14,1,6,3,10, - 1,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, - 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,6,0,0,0,67,0,0, - 0,115,102,0,0,0,100,1,160,0,124,0,106,1,161,1, - 100,2,160,0,124,0,106,2,161,1,103,2,125,1,124,0, - 106,3,100,0,117,1,114,52,124,1,160,4,100,3,160,0, - 124,0,106,3,161,1,161,1,1,0,124,0,106,5,100,0, - 117,1,114,80,124,1,160,4,100,4,160,0,124,0,106,5, - 161,1,161,1,1,0,100,5,160,0,124,0,106,6,106,7, - 100,6,160,8,124,1,161,1,161,2,83,0,41,7,78,122, - 9,110,97,109,101,61,123,33,114,125,122,11,108,111,97,100, - 101,114,61,123,33,114,125,122,11,111,114,105,103,105,110,61, - 123,33,114,125,122,29,115,117,98,109,111,100,117,108,101,95, + 0,0,114,23,0,0,0,65,0,0,0,115,16,0,0,0, + 8,0,4,1,8,5,8,8,8,21,8,25,12,13,255,128, + 114,23,0,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100, + 6,100,7,132,0,90,6,100,8,100,9,132,0,90,7,100, + 10,83,0,41,11,218,16,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,122,86,65,32,115,105,109,112,108, + 101,32,95,77,111,100,117,108,101,76,111,99,107,32,101,113, + 117,105,118,97,108,101,110,116,32,102,111,114,32,80,121,116, + 104,111,110,32,98,117,105,108,100,115,32,119,105,116,104,111, + 117,116,10,32,32,32,32,109,117,108,116,105,45,116,104,114, + 101,97,100,105,110,103,32,115,117,112,112,111,114,116,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,124, + 0,95,0,100,1,124,0,95,1,100,0,83,0,114,24,0, + 0,0,41,2,114,20,0,0,0,114,30,0,0,0,114,32, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,34,0,0,0,146,0,0,0,115,6,0,0,0, + 6,1,10,1,255,128,122,25,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, + 95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,124, + 0,4,0,106,0,100,1,55,0,2,0,95,0,100,2,83, + 0,41,3,78,114,42,0,0,0,84,41,1,114,30,0,0, + 0,114,51,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,43,0,0,0,150,0,0,0,115,6, + 0,0,0,14,1,4,1,255,128,122,24,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, + 105,114,101,99,1,0,0,0,0,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,2,114,18,116,1,100,2,131, + 1,130,1,124,0,4,0,106,0,100,3,56,0,2,0,95, + 0,100,0,83,0,41,4,78,114,25,0,0,0,114,46,0, + 0,0,114,42,0,0,0,41,2,114,30,0,0,0,114,47, + 0,0,0,114,51,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,44,0,0,0,154,0,0,0, + 115,8,0,0,0,10,1,8,1,18,1,255,128,122,24,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, + 114,101,108,101,97,115,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, + 115,18,0,0,0,100,1,160,0,124,0,106,1,116,2,124, + 0,131,1,161,2,83,0,41,2,78,122,28,95,68,117,109, + 109,121,77,111,100,117,108,101,76,111,99,107,40,123,33,114, + 125,41,32,97,116,32,123,125,114,48,0,0,0,114,51,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,52,0,0,0,159,0,0,0,115,4,0,0,0,18, + 1,255,128,122,25,95,68,117,109,109,121,77,111,100,117,108, + 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, + 8,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, + 114,10,0,0,0,114,34,0,0,0,114,43,0,0,0,114, + 44,0,0,0,114,52,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,53,0, + 0,0,142,0,0,0,115,14,0,0,0,8,0,4,1,8, + 3,8,4,8,4,12,5,255,128,114,53,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,64,0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0, + 41,8,218,18,95,77,111,100,117,108,101,76,111,99,107,77, + 97,110,97,103,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,124,1,124,0,95,0,100,0,124,0,95,1, + 100,0,83,0,114,0,0,0,0,41,2,218,5,95,110,97, + 109,101,218,5,95,108,111,99,107,114,32,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,34,0, + 0,0,165,0,0,0,115,6,0,0,0,6,1,10,1,255, + 128,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, + 110,97,103,101,114,46,95,95,105,110,105,116,95,95,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2, + 0,0,0,67,0,0,0,115,26,0,0,0,116,0,124,0, + 106,1,131,1,124,0,95,2,124,0,106,2,160,3,161,0, + 1,0,100,0,83,0,114,0,0,0,0,41,4,218,16,95, + 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,114, + 55,0,0,0,114,56,0,0,0,114,43,0,0,0,114,51, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,9,95,95,101,110,116,101,114,95,95,169,0,0, + 0,115,6,0,0,0,12,1,14,1,255,128,122,28,95,77, + 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, + 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, + 0,0,0,0,0,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,0,0,0,0,41,2,114,56,0, + 0,0,114,44,0,0,0,41,3,114,33,0,0,0,218,4, + 97,114,103,115,90,6,107,119,97,114,103,115,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,101, + 120,105,116,95,95,173,0,0,0,115,4,0,0,0,14,1, + 255,128,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,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,34,0,0,0,114,58,0,0,0,114,60,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,54,0,0,0,163,0,0,0,115,10,0, + 0,0,8,0,8,2,8,4,12,4,255,128,114,54,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,8,0,0,0,67,0,0,0,115,134,0,0,0,116, + 0,160,1,161,0,1,0,122,114,122,14,116,2,124,0,25, + 0,131,0,125,1,87,0,110,22,4,0,116,3,121,46,1, + 0,1,0,1,0,100,1,125,1,89,0,110,2,48,0,124, + 1,100,1,117,0,114,110,116,4,100,1,117,0,114,74,116, + 5,124,0,131,1,125,1,110,8,116,6,124,0,131,1,125, + 1,124,0,102,1,100,2,100,3,132,1,125,2,116,7,160, + 8,124,1,124,2,161,2,116,2,124,0,60,0,87,0,116, + 0,160,9,161,0,1,0,124,1,83,0,116,0,160,9,161, + 0,1,0,48,0,41,4,122,139,71,101,116,32,111,114,32, + 99,114,101,97,116,101,32,116,104,101,32,109,111,100,117,108, + 101,32,108,111,99,107,32,102,111,114,32,97,32,103,105,118, + 101,110,32,109,111,100,117,108,101,32,110,97,109,101,46,10, + 10,32,32,32,32,65,99,113,117,105,114,101,47,114,101,108, + 101,97,115,101,32,105,110,116,101,114,110,97,108,108,121,32, + 116,104,101,32,103,108,111,98,97,108,32,105,109,112,111,114, + 116,32,108,111,99,107,32,116,111,32,112,114,111,116,101,99, + 116,10,32,32,32,32,95,109,111,100,117,108,101,95,108,111, + 99,107,115,46,78,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,83,0,0,0,115,54, + 0,0,0,116,0,160,1,161,0,1,0,122,34,116,2,160, + 3,124,1,161,1,124,0,117,0,114,30,116,2,124,1,61, + 0,87,0,116,0,160,4,161,0,1,0,100,0,83,0,116, + 0,160,4,161,0,1,0,48,0,114,0,0,0,0,41,5, + 218,4,95,105,109,112,218,12,97,99,113,117,105,114,101,95, + 108,111,99,107,218,13,95,109,111,100,117,108,101,95,108,111, + 99,107,115,114,38,0,0,0,218,12,114,101,108,101,97,115, + 101,95,108,111,99,107,41,2,218,3,114,101,102,114,20,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,2,99,98,198,0,0,0,115,14,0,0,0,8,1, + 2,1,14,4,6,1,2,128,22,2,255,128,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,61,0,0, + 0,114,62,0,0,0,114,63,0,0,0,218,8,75,101,121, + 69,114,114,111,114,114,26,0,0,0,114,53,0,0,0,114, + 23,0,0,0,218,8,95,119,101,97,107,114,101,102,114,65, + 0,0,0,114,64,0,0,0,41,3,114,20,0,0,0,114, + 27,0,0,0,114,66,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,57,0,0,0,179,0,0, + 0,115,34,0,0,0,8,6,2,1,2,1,14,1,12,1, + 10,1,8,2,8,1,10,1,8,2,12,2,16,11,2,128, + 8,2,4,2,10,254,255,128,114,57,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,54,0,0,0,116,0,124,0,131, + 1,125,1,122,12,124,1,160,1,161,0,1,0,87,0,110, + 20,4,0,116,2,121,40,1,0,1,0,1,0,89,0,100, + 1,83,0,48,0,124,1,160,3,161,0,1,0,100,1,83, + 0,41,2,122,189,65,99,113,117,105,114,101,115,32,116,104, + 101,110,32,114,101,108,101,97,115,101,115,32,116,104,101,32, + 109,111,100,117,108,101,32,108,111,99,107,32,102,111,114,32, + 97,32,103,105,118,101,110,32,109,111,100,117,108,101,32,110, + 97,109,101,46,10,10,32,32,32,32,84,104,105,115,32,105, + 115,32,117,115,101,100,32,116,111,32,101,110,115,117,114,101, + 32,97,32,109,111,100,117,108,101,32,105,115,32,99,111,109, + 112,108,101,116,101,108,121,32,105,110,105,116,105,97,108,105, + 122,101,100,44,32,105,110,32,116,104,101,10,32,32,32,32, + 101,118,101,110,116,32,105,116,32,105,115,32,98,101,105,110, + 103,32,105,109,112,111,114,116,101,100,32,98,121,32,97,110, + 111,116,104,101,114,32,116,104,114,101,97,100,46,10,32,32, + 32,32,78,41,4,114,57,0,0,0,114,43,0,0,0,114, + 22,0,0,0,114,44,0,0,0,41,2,114,20,0,0,0, + 114,27,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,19,95,108,111,99,107,95,117,110,108,111, + 99,107,95,109,111,100,117,108,101,216,0,0,0,115,14,0, + 0,0,8,6,2,1,12,1,12,1,8,3,12,2,255,128, + 114,69,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,79,0,0,0,115,14, + 0,0,0,124,0,124,1,105,0,124,2,164,1,142,1,83, + 0,41,2,97,46,1,0,0,114,101,109,111,118,101,95,105, + 109,112,111,114,116,108,105,98,95,102,114,97,109,101,115,32, + 105,110,32,105,109,112,111,114,116,46,99,32,119,105,108,108, + 32,97,108,119,97,121,115,32,114,101,109,111,118,101,32,115, + 101,113,117,101,110,99,101,115,10,32,32,32,32,111,102,32, + 105,109,112,111,114,116,108,105,98,32,102,114,97,109,101,115, + 32,116,104,97,116,32,101,110,100,32,119,105,116,104,32,97, + 32,99,97,108,108,32,116,111,32,116,104,105,115,32,102,117, + 110,99,116,105,111,110,10,10,32,32,32,32,85,115,101,32, + 105,116,32,105,110,115,116,101,97,100,32,111,102,32,97,32, + 110,111,114,109,97,108,32,99,97,108,108,32,105,110,32,112, + 108,97,99,101,115,32,119,104,101,114,101,32,105,110,99,108, + 117,100,105,110,103,32,116,104,101,32,105,109,112,111,114,116, + 108,105,98,10,32,32,32,32,102,114,97,109,101,115,32,105, + 110,116,114,111,100,117,99,101,115,32,117,110,119,97,110,116, + 101,100,32,110,111,105,115,101,32,105,110,116,111,32,116,104, + 101,32,116,114,97,99,101,98,97,99,107,32,40,101,46,103, + 46,32,119,104,101,110,32,101,120,101,99,117,116,105,110,103, + 10,32,32,32,32,109,111,100,117,108,101,32,99,111,100,101, + 41,10,32,32,32,32,78,114,5,0,0,0,41,3,218,1, + 102,114,59,0,0,0,90,4,107,119,100,115,114,5,0,0, + 0,114,5,0,0,0,114,6,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,233,0,0,0,115,4,0,0,0,14, + 8,255,128,114,71,0,0,0,114,42,0,0,0,41,1,218, + 9,118,101,114,98,111,115,105,116,121,99,1,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,71, + 0,0,0,115,58,0,0,0,116,0,106,1,106,2,124,1, + 107,5,114,54,124,0,160,3,100,1,161,1,115,30,100,2, + 124,0,23,0,125,0,116,4,124,0,106,5,124,2,142,0, + 116,0,106,6,100,3,141,2,1,0,100,4,83,0,100,4, + 83,0,41,5,122,61,80,114,105,110,116,32,116,104,101,32, + 109,101,115,115,97,103,101,32,116,111,32,115,116,100,101,114, + 114,32,105,102,32,45,118,47,80,89,84,72,79,78,86,69, + 82,66,79,83,69,32,105,115,32,116,117,114,110,101,100,32, + 111,110,46,41,2,250,1,35,122,7,105,109,112,111,114,116, + 32,122,2,35,32,41,1,90,4,102,105,108,101,78,41,7, + 114,18,0,0,0,218,5,102,108,97,103,115,218,7,118,101, + 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,49,0,0,0,218,6,115, + 116,100,101,114,114,41,3,218,7,109,101,115,115,97,103,101, + 114,72,0,0,0,114,59,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,16,95,118,101,114,98, + 111,115,101,95,109,101,115,115,97,103,101,244,0,0,0,115, + 12,0,0,0,12,2,10,1,8,1,24,1,4,253,255,128, + 114,80,0,0,0,99,1,0,0,0,0,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,1,83,0,41,4,122, + 49,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, + 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, + 111,100,117,108,101,32,105,115,32,98,117,105,108,116,45,105, + 110,46,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,4,0,0,0,19,0,0,0,115,38,0,0,0, + 124,1,116,0,106,1,118,1,114,28,116,2,100,1,160,3, + 124,1,161,1,124,1,100,2,141,2,130,1,136,0,124,0, + 124,1,131,2,83,0,41,3,78,250,29,123,33,114,125,32, + 105,115,32,110,111,116,32,97,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,114,19,0,0,0,41,4,114, + 18,0,0,0,218,20,98,117,105,108,116,105,110,95,109,111, + 100,117,108,101,95,110,97,109,101,115,218,11,73,109,112,111, + 114,116,69,114,114,111,114,114,49,0,0,0,169,2,114,33, + 0,0,0,218,8,102,117,108,108,110,97,109,101,169,1,218, + 3,102,120,110,114,5,0,0,0,114,6,0,0,0,218,25, + 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,254,0,0,0,115,12,0, + 0,0,10,1,10,1,2,1,6,255,10,2,255,128,122,52, + 95,114,101,113,117,105,114,101,115,95,98,117,105,108,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,78,169,1,114,17,0,0,0,41,2,114,87, + 0,0,0,114,88,0,0,0,114,5,0,0,0,114,86,0, + 0,0,114,6,0,0,0,218,17,95,114,101,113,117,105,114, + 101,115,95,98,117,105,108,116,105,110,252,0,0,0,115,8, + 0,0,0,12,2,10,5,4,1,255,128,114,90,0,0,0, + 99,1,0,0,0,0,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,1,83,0,41,4,122,47,68,101,99,111, + 114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,32, + 116,104,101,32,110,97,109,101,100,32,109,111,100,117,108,101, + 32,105,115,32,102,114,111,122,101,110,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, + 1,115,28,116,2,100,1,160,3,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, + 19,0,0,0,41,4,114,61,0,0,0,218,9,105,115,95, + 102,114,111,122,101,110,114,83,0,0,0,114,49,0,0,0, + 114,84,0,0,0,114,86,0,0,0,114,5,0,0,0,114, + 6,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,9,1, + 0,0,115,12,0,0,0,10,1,10,1,2,1,6,255,10, + 2,255,128,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,78,114,89,0,0,0,41,2,114, + 87,0,0,0,114,93,0,0,0,114,5,0,0,0,114,86, + 0,0,0,114,6,0,0,0,218,16,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,7,1,0,0,115,8, + 0,0,0,12,2,10,5,4,1,255,128,114,94,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,4,0,0,0,67,0,0,0,115,74,0,0,0,100,1, + 125,2,116,0,160,1,124,2,116,2,161,2,1,0,116,3, + 124,1,124,0,131,2,125,3,124,1,116,4,106,5,118,0, + 114,66,116,4,106,5,124,1,25,0,125,4,116,6,124,3, + 124,4,131,2,1,0,116,4,106,5,124,1,25,0,83,0, + 116,7,124,3,131,1,83,0,41,3,122,128,76,111,97,100, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,117,108,101,32,105,110,116,111,32,115,121,115,46,109, + 111,100,117,108,101,115,32,97,110,100,32,114,101,116,117,114, + 110,32,105,116,46,10,10,32,32,32,32,84,104,105,115,32, + 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,108,111,97,100,101, + 114,46,101,120,101,99,95,109,111,100,117,108,101,32,105,110, + 115,116,101,97,100,46,10,10,32,32,32,32,122,103,116,104, + 101,32,108,111,97,100,95,109,111,100,117,108,101,40,41,32, + 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, + 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, + 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, + 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, + 115,116,101,97,100,78,41,8,218,9,95,119,97,114,110,105, + 110,103,115,218,4,119,97,114,110,218,18,68,101,112,114,101, + 99,97,116,105,111,110,87,97,114,110,105,110,103,218,16,115, + 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,114, + 18,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,5,114,33,0, + 0,0,114,85,0,0,0,218,3,109,115,103,218,4,115,112, + 101,99,218,6,109,111,100,117,108,101,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,17,95,108,111,97,100, + 95,109,111,100,117,108,101,95,115,104,105,109,19,1,0,0, + 115,18,0,0,0,4,6,12,2,10,1,10,1,10,1,10, + 1,10,1,8,2,255,128,114,105,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,8,0,0, + 0,67,0,0,0,115,210,0,0,0,116,0,124,0,100,1, + 100,0,131,3,125,1,116,1,124,1,100,2,131,2,114,54, + 122,12,124,1,160,2,124,0,161,1,87,0,83,0,4,0, + 116,3,121,52,1,0,1,0,1,0,89,0,110,2,48,0, + 122,10,124,0,106,4,125,2,87,0,110,18,4,0,116,5, + 121,82,1,0,1,0,1,0,89,0,110,18,48,0,124,2, + 100,0,117,1,114,100,116,6,124,2,131,1,83,0,122,10, + 124,0,106,7,125,3,87,0,110,22,4,0,116,5,121,132, + 1,0,1,0,1,0,100,3,125,3,89,0,110,2,48,0, + 122,10,124,0,106,8,125,4,87,0,110,52,4,0,116,5, + 121,196,1,0,1,0,1,0,124,1,100,0,117,0,114,180, + 100,4,160,9,124,3,161,1,6,0,89,0,83,0,100,5, + 160,9,124,3,124,1,161,2,6,0,89,0,83,0,48,0, + 100,6,160,9,124,3,124,4,161,2,83,0,41,7,78,218, + 10,95,95,108,111,97,100,101,114,95,95,218,11,109,111,100, + 117,108,101,95,114,101,112,114,250,1,63,250,13,60,109,111, + 100,117,108,101,32,123,33,114,125,62,250,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,13,0,0,0, + 114,11,0,0,0,114,107,0,0,0,218,9,69,120,99,101, + 112,116,105,111,110,218,8,95,95,115,112,101,99,95,95,114, + 2,0,0,0,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,9,0,0, + 0,218,8,95,95,102,105,108,101,95,95,114,49,0,0,0, + 41,5,114,104,0,0,0,218,6,108,111,97,100,101,114,114, + 103,0,0,0,114,20,0,0,0,218,8,102,105,108,101,110, + 97,109,101,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,12,95,109,111,100,117,108,101,95,114,101,112,114, + 38,1,0,0,115,48,0,0,0,12,2,10,1,2,4,12, + 1,12,1,6,1,2,1,10,1,12,1,6,1,8,2,8, + 1,2,4,10,1,12,1,10,1,2,1,10,1,12,1,8, + 1,14,1,18,2,12,2,255,128,114,118,0,0,0,99,0, + 0,0,0,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,132,2,90,4,100,6,100,7,132,0, + 90,5,100,8,100,9,132,0,90,6,101,7,100,10,100,11, + 132,0,131,1,90,8,101,8,106,9,100,12,100,11,132,0, + 131,1,90,8,101,7,100,13,100,14,132,0,131,1,90,10, + 101,7,100,15,100,16,132,0,131,1,90,11,101,11,106,9, + 100,17,100,16,132,0,131,1,90,11,100,2,83,0,41,18, + 218,10,77,111,100,117,108,101,83,112,101,99,97,208,5,0, + 0,84,104,101,32,115,112,101,99,105,102,105,99,97,116,105, + 111,110,32,102,111,114,32,97,32,109,111,100,117,108,101,44, + 32,117,115,101,100,32,102,111,114,32,108,111,97,100,105,110, + 103,46,10,10,32,32,32,32,65,32,109,111,100,117,108,101, + 39,115,32,115,112,101,99,32,105,115,32,116,104,101,32,115, + 111,117,114,99,101,32,102,111,114,32,105,110,102,111,114,109, + 97,116,105,111,110,32,97,98,111,117,116,32,116,104,101,32, + 109,111,100,117,108,101,46,32,32,70,111,114,10,32,32,32, + 32,100,97,116,97,32,97,115,115,111,99,105,97,116,101,100, + 32,119,105,116,104,32,116,104,101,32,109,111,100,117,108,101, + 44,32,105,110,99,108,117,100,105,110,103,32,115,111,117,114, + 99,101,44,32,117,115,101,32,116,104,101,32,115,112,101,99, + 39,115,10,32,32,32,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,96,110,97,109,101,96,32,105,115,32,116,104, + 101,32,97,98,115,111,108,117,116,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,46,32,32, + 96,108,111,97,100,101,114,96,32,105,115,32,116,104,101,32, + 108,111,97,100,101,114,10,32,32,32,32,116,111,32,117,115, + 101,32,119,104,101,110,32,108,111,97,100,105,110,103,32,116, + 104,101,32,109,111,100,117,108,101,46,32,32,96,112,97,114, + 101,110,116,96,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,10,32,32,32,32,112,97,99,107, + 97,103,101,32,116,104,101,32,109,111,100,117,108,101,32,105, + 115,32,105,110,46,32,32,84,104,101,32,112,97,114,101,110, + 116,32,105,115,32,100,101,114,105,118,101,100,32,102,114,111, + 109,32,116,104,101,32,110,97,109,101,46,10,10,32,32,32, + 32,96,105,115,95,112,97,99,107,97,103,101,96,32,100,101, + 116,101,114,109,105,110,101,115,32,105,102,32,116,104,101,32, + 109,111,100,117,108,101,32,105,115,32,99,111,110,115,105,100, + 101,114,101,100,32,97,32,112,97,99,107,97,103,101,32,111, + 114,10,32,32,32,32,110,111,116,46,32,32,79,110,32,109, + 111,100,117,108,101,115,32,116,104,105,115,32,105,115,32,114, + 101,102,108,101,99,116,101,100,32,98,121,32,116,104,101,32, + 96,95,95,112,97,116,104,95,95,96,32,97,116,116,114,105, + 98,117,116,101,46,10,10,32,32,32,32,96,111,114,105,103, + 105,110,96,32,105,115,32,116,104,101,32,115,112,101,99,105, + 102,105,99,32,108,111,99,97,116,105,111,110,32,117,115,101, + 100,32,98,121,32,116,104,101,32,108,111,97,100,101,114,32, + 102,114,111,109,32,119,104,105,99,104,32,116,111,10,32,32, + 32,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,44,32,105,102,32,116,104,97,116,32,105,110,102,111,114, + 109,97,116,105,111,110,32,105,115,32,97,118,97,105,108,97, + 98,108,101,46,32,32,87,104,101,110,32,102,105,108,101,110, + 97,109,101,32,105,115,10,32,32,32,32,115,101,116,44,32, + 111,114,105,103,105,110,32,119,105,108,108,32,109,97,116,99, + 104,46,10,10,32,32,32,32,96,104,97,115,95,108,111,99, + 97,116,105,111,110,96,32,105,110,100,105,99,97,116,101,115, + 32,116,104,97,116,32,97,32,115,112,101,99,39,115,32,34, + 111,114,105,103,105,110,34,32,114,101,102,108,101,99,116,115, + 32,97,32,108,111,99,97,116,105,111,110,46,10,32,32,32, + 32,87,104,101,110,32,116,104,105,115,32,105,115,32,84,114, + 117,101,44,32,96,95,95,102,105,108,101,95,95,96,32,97, + 116,116,114,105,98,117,116,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,32,105,115,32,115,101,116,46,10,10, + 32,32,32,32,96,99,97,99,104,101,100,96,32,105,115,32, + 116,104,101,32,108,111,99,97,116,105,111,110,32,111,102,32, + 116,104,101,32,99,97,99,104,101,100,32,98,121,116,101,99, + 111,100,101,32,102,105,108,101,44,32,105,102,32,97,110,121, + 46,32,32,73,116,10,32,32,32,32,99,111,114,114,101,115, + 112,111,110,100,115,32,116,111,32,116,104,101,32,96,95,95, + 99,97,99,104,101,100,95,95,96,32,97,116,116,114,105,98, + 117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101, + 113,117,101,110,99,101,32,111,102,32,112,97,116,104,32,101, + 110,116,114,105,101,115,32,116,111,10,32,32,32,32,115,101, + 97,114,99,104,32,119,104,101,110,32,105,109,112,111,114,116, + 105,110,103,32,115,117,98,109,111,100,117,108,101,115,46,32, + 32,73,102,32,115,101,116,44,32,105,115,95,112,97,99,107, + 97,103,101,32,115,104,111,117,108,100,32,98,101,10,32,32, + 32,32,84,114,117,101,45,45,97,110,100,32,70,97,108,115, + 101,32,111,116,104,101,114,119,105,115,101,46,10,10,32,32, + 32,32,80,97,99,107,97,103,101,115,32,97,114,101,32,115, + 105,109,112,108,121,32,109,111,100,117,108,101,115,32,116,104, + 97,116,32,40,109,97,121,41,32,104,97,118,101,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,97,32, + 115,112,101,99,10,32,32,32,32,104,97,115,32,97,32,110, + 111,110,45,78,111,110,101,32,118,97,108,117,101,32,105,110, + 32,96,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,96,44,32,116, + 104,101,32,105,109,112,111,114,116,10,32,32,32,32,115,121, + 115,116,101,109,32,119,105,108,108,32,99,111,110,115,105,100, + 101,114,32,109,111,100,117,108,101,115,32,108,111,97,100,101, + 100,32,102,114,111,109,32,116,104,101,32,115,112,101,99,32, + 97,115,32,112,97,99,107,97,103,101,115,46,10,10,32,32, + 32,32,79,110,108,121,32,102,105,110,100,101,114,115,32,40, + 115,101,101,32,105,109,112,111,114,116,108,105,98,46,97,98, + 99,46,77,101,116,97,80,97,116,104,70,105,110,100,101,114, + 32,97,110,100,10,32,32,32,32,105,109,112,111,114,116,108, + 105,98,46,97,98,99,46,80,97,116,104,69,110,116,114,121, + 70,105,110,100,101,114,41,32,115,104,111,117,108,100,32,109, + 111,100,105,102,121,32,77,111,100,117,108,101,83,112,101,99, + 32,105,110,115,116,97,110,99,101,115,46,10,10,32,32,32, + 32,78,41,3,218,6,111,114,105,103,105,110,218,12,108,111, + 97,100,101,114,95,115,116,97,116,101,218,10,105,115,95,112, + 97,99,107,97,103,101,99,3,0,0,0,0,0,0,0,3, + 0,0,0,6,0,0,0,2,0,0,0,67,0,0,0,115, + 54,0,0,0,124,1,124,0,95,0,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,41,2,78,70,41,7, + 114,20,0,0,0,114,116,0,0,0,114,120,0,0,0,114, + 121,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, - 61,123,125,122,6,123,125,40,123,125,41,122,2,44,32,41, - 9,114,49,0,0,0,114,20,0,0,0,114,116,0,0,0, - 114,120,0,0,0,218,6,97,112,112,101,110,100,114,123,0, - 0,0,218,9,95,95,99,108,97,115,115,95,95,114,9,0, - 0,0,218,4,106,111,105,110,41,2,114,33,0,0,0,114, - 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,52,0,0,0,123,1,0,0,115,22,0,0, - 0,10,1,10,1,4,255,10,2,18,1,10,1,8,1,4, - 1,6,255,22,2,255,128,122,19,77,111,100,117,108,101,83, - 112,101,99,46,95,95,114,101,112,114,95,95,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0, - 0,67,0,0,0,115,102,0,0,0,124,0,106,0,125,2, - 122,72,124,0,106,1,124,1,106,1,107,2,111,76,124,0, - 106,2,124,1,106,2,107,2,111,76,124,0,106,3,124,1, - 106,3,107,2,111,76,124,2,124,1,106,0,107,2,111,76, - 124,0,106,4,124,1,106,4,107,2,111,76,124,0,106,5, - 124,1,106,5,107,2,87,0,83,0,4,0,116,6,121,100, - 1,0,1,0,1,0,116,7,6,0,89,0,83,0,48,0, - 114,0,0,0,0,41,8,114,123,0,0,0,114,20,0,0, - 0,114,116,0,0,0,114,120,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,2,0,0,0,218,14,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,41,3,114,33,0,0,0,90,5,111, - 116,104,101,114,90,4,115,109,115,108,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,6,95,95,101,113,95, - 95,133,1,0,0,115,32,0,0,0,6,1,2,1,12,1, - 10,1,2,255,10,2,2,254,8,3,2,253,10,4,2,252, - 10,5,4,251,12,6,10,1,255,128,122,17,77,111,100,117, - 108,101,83,112,101,99,46,95,95,101,113,95,95,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,58,0,0,0,124,0,106,0,100, - 0,117,0,114,52,124,0,106,1,100,0,117,1,114,52,124, - 0,106,2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0, - 0,114,120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,129,0,0,0,145,1,0,0,115, - 14,0,0,0,10,2,16,1,8,1,4,1,14,1,6,1, - 255,128,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,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,0,0, - 0,0,41,1,114,125,0,0,0,41,2,114,33,0,0,0, - 114,129,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,129,0,0,0,154,1,0,0,115,4,0, - 0,0,10,2,255,128,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 32,0,0,0,124,0,106,0,100,1,117,0,114,26,124,0, - 106,1,160,2,100,2,161,1,100,3,25,0,83,0,124,0, - 106,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,25,0,0, - 0,41,3,114,123,0,0,0,114,20,0,0,0,218,10,114, - 112,97,114,116,105,116,105,111,110,114,51,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,112, - 97,114,101,110,116,158,1,0,0,115,8,0,0,0,10,3, - 16,1,6,2,255,128,122,17,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,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,0,0, - 0,0,41,1,114,124,0,0,0,114,51,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,130,0, - 0,0,166,1,0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111, - 108,114,124,0,0,0,41,2,114,33,0,0,0,218,5,118, - 97,108,117,101,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,130,0,0,0,170,1,0,0,115,4,0,0, - 0,14,2,255,128,41,12,114,9,0,0,0,114,8,0,0, - 0,114,1,0,0,0,114,10,0,0,0,114,34,0,0,0, - 114,52,0,0,0,114,132,0,0,0,218,8,112,114,111,112, - 101,114,116,121,114,129,0,0,0,218,6,115,101,116,116,101, - 114,114,137,0,0,0,114,130,0,0,0,114,5,0,0,0, + 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,33,0,0,0,114, + 20,0,0,0,114,116,0,0,0,114,120,0,0,0,114,121, + 0,0,0,114,122,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,34,0,0,0,111,1,0,0, + 115,16,0,0,0,6,2,6,1,6,1,6,1,14,1,6, + 3,10,1,255,128,122,19,77,111,100,117,108,101,83,112,101, + 99,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,67, + 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, + 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, + 124,0,106,3,100,0,117,1,114,52,124,1,160,4,100,3, + 160,0,124,0,106,3,161,1,161,1,1,0,124,0,106,5, + 100,0,117,1,114,80,124,1,160,4,100,4,160,0,124,0, + 106,5,161,1,161,1,1,0,100,5,160,0,124,0,106,6, + 106,7,100,6,160,8,124,1,161,1,161,2,83,0,41,7, + 78,122,9,110,97,109,101,61,123,33,114,125,122,11,108,111, + 97,100,101,114,61,123,33,114,125,122,11,111,114,105,103,105, + 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,49,0,0,0,114,20,0,0,0,114,116,0, + 0,0,114,120,0,0,0,218,6,97,112,112,101,110,100,114, + 123,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, + 9,0,0,0,218,4,106,111,105,110,41,2,114,33,0,0, + 0,114,59,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,52,0,0,0,123,1,0,0,115,22, + 0,0,0,10,1,10,1,4,255,10,2,18,1,10,1,8, + 1,4,1,6,255,22,2,255,128,122,19,77,111,100,117,108, + 101,83,112,101,99,46,95,95,114,101,112,114,95,95,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, + 0,0,0,67,0,0,0,115,102,0,0,0,124,0,106,0, + 125,2,122,72,124,0,106,1,124,1,106,1,107,2,111,76, + 124,0,106,2,124,1,106,2,107,2,111,76,124,0,106,3, + 124,1,106,3,107,2,111,76,124,2,124,1,106,0,107,2, + 111,76,124,0,106,4,124,1,106,4,107,2,111,76,124,0, + 106,5,124,1,106,5,107,2,87,0,83,0,4,0,116,6, + 121,100,1,0,1,0,1,0,116,7,6,0,89,0,83,0, + 48,0,114,0,0,0,0,41,8,114,123,0,0,0,114,20, + 0,0,0,114,116,0,0,0,114,120,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,2,0,0,0,218,14,78,111,116,73,109,112, + 108,101,109,101,110,116,101,100,41,3,114,33,0,0,0,90, + 5,111,116,104,101,114,90,4,115,109,115,108,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,6,95,95,101, + 113,95,95,133,1,0,0,115,32,0,0,0,6,1,2,1, + 12,1,10,1,2,255,10,2,2,254,8,3,2,253,10,4, + 2,252,10,5,4,251,12,6,10,1,255,128,122,17,77,111, + 100,117,108,101,83,112,101,99,46,95,95,101,113,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, + 0,100,0,117,0,114,52,124,0,106,1,100,0,117,1,114, + 52,124,0,106,2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125, + 0,0,0,114,120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,129,0,0,0,145,1,0, + 0,115,14,0,0,0,10,2,16,1,8,1,4,1,14,1, + 6,1,255,128,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, + 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, + 0,0,0,0,41,1,114,125,0,0,0,41,2,114,33,0, + 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,129,0,0,0,154,1,0,0,115, + 4,0,0,0,10,2,255,128,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,32,0,0,0,124,0,106,0,100,1,117,0,114,26, + 124,0,106,1,160,2,100,2,161,1,100,3,25,0,83,0, + 124,0,106,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,25, + 0,0,0,41,3,114,123,0,0,0,114,20,0,0,0,218, + 10,114,112,97,114,116,105,116,105,111,110,114,51,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 6,112,97,114,101,110,116,158,1,0,0,115,8,0,0,0, + 10,3,16,1,6,2,255,128,122,17,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,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, + 0,0,0,0,41,1,114,124,0,0,0,114,51,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 119,0,0,0,74,1,0,0,115,36,0,0,0,8,0,4, - 1,4,36,2,1,12,255,8,12,8,10,2,12,10,1,4, - 8,10,1,2,3,10,1,2,7,10,1,4,3,14,1,255, - 128,114,119,0,0,0,169,2,114,120,0,0,0,114,122,0, - 0,0,99,2,0,0,0,0,0,0,0,2,0,0,0,6, - 0,0,0,8,0,0,0,67,0,0,0,115,150,0,0,0, - 116,0,124,1,100,1,131,2,114,74,116,1,100,2,117,0, - 114,22,116,2,130,1,116,1,106,3,125,4,124,3,100,2, - 117,0,114,48,124,4,124,0,124,1,100,3,141,2,83,0, - 124,3,114,56,103,0,110,2,100,2,125,5,124,4,124,0, - 124,1,124,5,100,4,141,3,83,0,124,3,100,2,117,0, - 114,134,116,0,124,1,100,5,131,2,114,130,122,14,124,1, - 160,4,124,0,161,1,125,3,87,0,110,26,4,0,116,5, - 121,128,1,0,1,0,1,0,100,2,125,3,89,0,110,6, - 48,0,100,6,125,3,116,6,124,0,124,1,124,2,124,3, - 100,7,141,4,83,0,41,8,122,53,82,101,116,117,114,110, - 32,97,32,109,111,100,117,108,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,116,0,0,0,41,2,114,116,0,0,0,114,123,0,0, - 0,114,122,0,0,0,70,114,142,0,0,0,41,7,114,11, - 0,0,0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0, - 114,119,0,0,0,41,6,114,20,0,0,0,114,116,0,0, - 0,114,120,0,0,0,114,122,0,0,0,114,143,0,0,0, - 90,6,115,101,97,114,99,104,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,98,0,0,0,175,1,0,0, - 115,38,0,0,0,10,2,8,1,4,1,6,1,8,2,12, - 1,12,1,6,1,2,1,6,255,8,3,10,1,2,1,14, - 1,12,1,10,1,4,3,16,2,255,128,114,98,0,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,8,0,0,0,67,0,0,0,115,40,1,0,0,122,10, - 124,0,106,0,125,3,87,0,110,18,4,0,116,1,121,28, - 1,0,1,0,1,0,89,0,110,14,48,0,124,3,100,0, - 117,1,114,42,124,3,83,0,124,0,106,2,125,4,124,1, - 100,0,117,0,114,86,122,10,124,0,106,3,125,1,87,0, - 110,18,4,0,116,1,121,84,1,0,1,0,1,0,89,0, - 110,2,48,0,122,10,124,0,106,4,125,5,87,0,110,22, - 4,0,116,1,121,118,1,0,1,0,1,0,100,0,125,5, - 89,0,110,2,48,0,124,2,100,0,117,0,114,174,124,5, - 100,0,117,0,114,170,122,10,124,1,106,5,125,2,87,0, - 110,26,4,0,116,1,121,168,1,0,1,0,1,0,100,0, - 125,2,89,0,110,6,48,0,124,5,125,2,122,10,124,0, - 106,6,125,6,87,0,110,22,4,0,116,1,121,206,1,0, - 1,0,1,0,100,0,125,6,89,0,110,2,48,0,122,14, - 116,7,124,0,106,8,131,1,125,7,87,0,110,22,4,0, - 116,1,121,244,1,0,1,0,1,0,100,0,125,7,89,0, - 110,2,48,0,116,9,124,4,124,1,124,2,100,1,141,3, - 125,3,124,5,100,0,117,0,144,1,114,18,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,120,0,0,0, - 70,84,41,13,114,113,0,0,0,114,2,0,0,0,114,9, - 0,0,0,114,106,0,0,0,114,115,0,0,0,218,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,119,0,0,0,114,124,0,0,0,114,129,0,0, - 0,114,123,0,0,0,41,8,114,104,0,0,0,114,116,0, - 0,0,114,120,0,0,0,114,103,0,0,0,114,20,0,0, - 0,90,8,108,111,99,97,116,105,111,110,114,129,0,0,0, - 114,123,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,17,95,115,112,101,99,95,102,114,111,109, - 95,109,111,100,117,108,101,201,1,0,0,115,74,0,0,0, - 2,2,10,1,12,1,6,1,8,2,4,1,6,2,8,1, - 2,1,10,1,12,1,6,2,2,1,10,1,12,1,10,1, - 8,1,8,1,2,1,10,1,12,1,10,1,4,2,2,1, - 10,1,12,1,10,1,2,1,14,1,12,1,10,1,14,2, - 20,1,6,1,6,1,4,1,255,128,114,149,0,0,0,70, - 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, - 0,0,0,0,0,1,0,0,0,5,0,0,0,8,0,0, - 0,67,0,0,0,115,214,1,0,0,124,2,115,20,116,0, - 124,1,100,1,100,0,131,3,100,0,117,0,114,52,122,12, - 124,0,106,1,124,1,95,2,87,0,110,18,4,0,116,3, - 121,50,1,0,1,0,1,0,89,0,110,2,48,0,124,2, - 115,72,116,0,124,1,100,2,100,0,131,3,100,0,117,0, - 114,174,124,0,106,4,125,3,124,3,100,0,117,0,114,144, - 124,0,106,5,100,0,117,1,114,144,116,6,100,0,117,0, - 114,108,116,7,130,1,116,6,106,8,125,4,124,4,160,9, - 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, - 124,0,95,4,100,0,124,1,95,11,122,10,124,3,124,1, - 95,12,87,0,110,18,4,0,116,3,121,172,1,0,1,0, - 1,0,89,0,110,2,48,0,124,2,115,194,116,0,124,1, - 100,3,100,0,131,3,100,0,117,0,114,226,122,12,124,0, - 106,13,124,1,95,14,87,0,110,18,4,0,116,3,121,224, - 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, - 124,1,95,15,87,0,110,18,4,0,116,3,121,254,1,0, - 1,0,1,0,89,0,110,2,48,0,124,2,144,1,115,24, - 116,0,124,1,100,4,100,0,131,3,100,0,117,0,144,1, - 114,70,124,0,106,5,100,0,117,1,144,1,114,70,122,12, - 124,0,106,5,124,1,95,16,87,0,110,20,4,0,116,3, - 144,1,121,68,1,0,1,0,1,0,89,0,110,2,48,0, - 124,0,106,17,144,1,114,210,124,2,144,1,115,102,116,0, - 124,1,100,5,100,0,131,3,100,0,117,0,144,1,114,136, - 122,12,124,0,106,18,124,1,95,11,87,0,110,20,4,0, - 116,3,144,1,121,134,1,0,1,0,1,0,89,0,110,2, - 48,0,124,2,144,1,115,160,116,0,124,1,100,6,100,0, - 131,3,100,0,117,0,144,1,114,210,124,0,106,19,100,0, - 117,1,144,1,114,210,122,14,124,0,106,19,124,1,95,20, - 87,0,124,1,83,0,4,0,116,3,144,1,121,208,1,0, - 1,0,1,0,89,0,124,1,83,0,48,0,124,1,83,0, - 41,7,78,114,9,0,0,0,114,106,0,0,0,218,11,95, - 95,112,97,99,107,97,103,101,95,95,114,148,0,0,0,114, - 115,0,0,0,114,146,0,0,0,41,21,114,13,0,0,0, - 114,20,0,0,0,114,9,0,0,0,114,2,0,0,0,114, - 116,0,0,0,114,123,0,0,0,114,133,0,0,0,114,134, - 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,115,0,0,0,114,106,0,0,0,114, - 137,0,0,0,114,152,0,0,0,114,113,0,0,0,114,148, - 0,0,0,114,130,0,0,0,114,120,0,0,0,114,129,0, - 0,0,114,146,0,0,0,41,5,114,103,0,0,0,114,104, - 0,0,0,114,151,0,0,0,114,116,0,0,0,114,153,0, + 130,0,0,0,166,1,0,0,115,4,0,0,0,6,2,255, + 128,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,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,0,0,0,0,41,2,218,4,98, + 111,111,108,114,124,0,0,0,41,2,114,33,0,0,0,218, + 5,118,97,108,117,101,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,130,0,0,0,170,1,0,0,115,4, + 0,0,0,14,2,255,128,41,12,114,9,0,0,0,114,8, + 0,0,0,114,1,0,0,0,114,10,0,0,0,114,34,0, + 0,0,114,52,0,0,0,114,132,0,0,0,218,8,112,114, + 111,112,101,114,116,121,114,129,0,0,0,218,6,115,101,116, + 116,101,114,114,137,0,0,0,114,130,0,0,0,114,5,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, - 97,116,116,114,115,246,1,0,0,115,104,0,0,0,20,4, - 2,1,12,1,12,1,6,1,20,2,6,1,8,1,10,2, - 8,1,4,1,6,1,10,2,8,1,6,1,6,11,2,1, - 10,1,12,1,6,1,20,2,2,1,12,1,12,1,6,1, - 2,2,10,1,12,1,6,1,24,2,12,1,2,1,12,1, - 14,1,6,1,8,2,24,1,2,1,12,1,14,1,6,1, - 24,2,12,1,2,1,10,1,4,3,14,254,2,1,4,1, - 2,255,4,1,255,128,114,155,0,0,0,99,1,0,0,0, - 0,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,1,110,20,116,0,124,0,106,1,100,3,131, - 2,114,50,116,3,100,4,131,1,130,1,124,1,100,1,117, - 0,114,68,116,4,124,0,106,5,131,1,125,1,116,6,124, - 0,124,1,131,2,1,0,124,1,83,0,41,5,122,43,67, - 114,101,97,116,101,32,97,32,109,111,100,117,108,101,32,98, - 97,115,101,100,32,111,110,32,116,104,101,32,112,114,111,118, - 105,100,101,100,32,115,112,101,99,46,78,218,13,99,114,101, - 97,116,101,95,109,111,100,117,108,101,218,11,101,120,101,99, - 95,109,111,100,117,108,101,122,66,108,111,97,100,101,114,115, - 32,116,104,97,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,11,0, - 0,0,114,116,0,0,0,114,156,0,0,0,114,83,0,0, - 0,114,21,0,0,0,114,20,0,0,0,114,155,0,0,0, - 169,2,114,103,0,0,0,114,104,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,16,109,111,100, - 117,108,101,95,102,114,111,109,95,115,112,101,99,62,2,0, - 0,115,20,0,0,0,4,3,12,1,14,3,12,1,8,1, - 8,2,10,1,10,1,4,1,255,128,114,159,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,67,0,0,0,115,100,0,0,0,124,0,106, - 0,100,1,117,0,114,14,100,2,110,4,124,0,106,0,125, - 1,124,0,106,1,100,1,117,0,114,64,124,0,106,2,100, - 1,117,0,114,50,100,3,160,3,124,1,161,1,83,0,100, - 4,160,3,124,1,124,0,106,2,161,2,83,0,124,0,106, - 4,114,84,100,5,160,3,124,1,124,0,106,1,161,2,83, - 0,100,6,160,3,124,0,106,0,124,0,106,1,161,2,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,108,0,0, - 0,114,109,0,0,0,114,110,0,0,0,114,111,0,0,0, - 250,18,60,109,111,100,117,108,101,32,123,33,114,125,32,40, - 123,125,41,62,41,5,114,20,0,0,0,114,120,0,0,0, - 114,116,0,0,0,114,49,0,0,0,114,130,0,0,0,41, - 2,114,103,0,0,0,114,20,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,114,0,0,0,79, - 2,0,0,115,18,0,0,0,20,3,10,1,10,1,10,1, - 14,2,6,2,14,1,16,2,255,128,114,114,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 10,0,0,0,67,0,0,0,115,26,1,0,0,124,0,106, - 0,125,2,116,1,124,2,131,1,143,246,1,0,116,2,106, - 3,160,4,124,2,161,1,124,1,117,1,114,54,100,1,160, - 5,124,2,161,1,125,3,116,6,124,3,124,2,100,2,141, - 2,130,1,122,160,124,0,106,7,100,3,117,0,114,106,124, - 0,106,8,100,3,117,0,114,90,116,6,100,4,124,0,106, - 0,100,2,141,2,130,1,116,9,124,0,124,1,100,5,100, - 6,141,3,1,0,110,80,116,9,124,0,124,1,100,5,100, - 6,141,3,1,0,116,10,124,0,106,7,100,7,131,2,115, - 174,116,11,124,0,106,7,131,1,155,0,100,8,157,2,125, - 3,116,12,160,13,124,3,116,14,161,2,1,0,124,0,106, - 7,160,15,124,2,161,1,1,0,110,12,124,0,106,7,160, - 16,124,1,161,1,1,0,87,0,116,2,106,3,160,17,124, - 0,106,0,161,1,125,1,124,1,116,2,106,3,124,0,106, - 0,60,0,110,28,116,2,106,3,160,17,124,0,106,0,161, - 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,48, - 0,87,0,100,3,4,0,4,0,131,3,1,0,124,1,83, - 0,49,0,144,1,115,12,48,0,1,0,1,0,1,0,89, - 0,1,0,124,1,83,0,41,9,122,70,69,120,101,99,117, - 116,101,32,116,104,101,32,115,112,101,99,39,115,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, - 110,32,97,110,32,101,120,105,115,116,105,110,103,32,109,111, - 100,117,108,101,39,115,32,110,97,109,101,115,112,97,99,101, - 46,122,30,109,111,100,117,108,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,19,0,0,0,78,250,14,109,105,115,115,105,110,103, - 32,108,111,97,100,101,114,84,114,150,0,0,0,114,157,0, - 0,0,250,55,46,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, - 108,108,105,110,103,32,98,97,99,107,32,116,111,32,108,111, - 97,100,95,109,111,100,117,108,101,40,41,41,18,114,20,0, - 0,0,114,54,0,0,0,114,18,0,0,0,114,99,0,0, - 0,114,38,0,0,0,114,49,0,0,0,114,83,0,0,0, - 114,116,0,0,0,114,123,0,0,0,114,155,0,0,0,114, - 11,0,0,0,114,7,0,0,0,114,95,0,0,0,114,96, - 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, - 110,103,218,11,108,111,97,100,95,109,111,100,117,108,101,114, - 157,0,0,0,218,3,112,111,112,41,4,114,103,0,0,0, - 114,104,0,0,0,114,20,0,0,0,114,102,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,100, - 0,0,0,96,2,0,0,115,50,0,0,0,6,2,10,1, - 16,1,10,1,12,1,2,1,10,1,10,1,14,1,16,2, - 14,2,12,1,16,1,12,2,14,1,12,2,2,128,14,4, - 14,1,14,255,26,1,4,1,18,255,4,1,255,128,114,100, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,8,0,0,0,67,0,0,0,115,18,1,0, - 0,122,18,124,0,106,0,160,1,124,0,106,2,161,1,1, - 0,87,0,110,46,1,0,1,0,1,0,124,0,106,2,116, - 3,106,4,118,0,114,64,116,3,106,4,160,5,124,0,106, - 2,161,1,125,1,124,1,116,3,106,4,124,0,106,2,60, - 0,130,0,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,116,6,124, - 1,100,1,100,0,131,3,100,0,117,0,114,140,122,12,124, - 0,106,0,124,1,95,7,87,0,110,18,4,0,116,8,121, - 138,1,0,1,0,1,0,89,0,110,2,48,0,116,6,124, - 1,100,2,100,0,131,3,100,0,117,0,114,216,122,40,124, - 1,106,9,124,1,95,10,116,11,124,1,100,3,131,2,115, - 194,124,0,106,2,160,12,100,4,161,1,100,5,25,0,124, - 1,95,10,87,0,110,18,4,0,116,8,121,214,1,0,1, - 0,1,0,89,0,110,2,48,0,116,6,124,1,100,6,100, - 0,131,3,100,0,117,0,144,1,114,14,122,12,124,0,124, - 1,95,13,87,0,124,1,83,0,4,0,116,8,144,1,121, - 12,1,0,1,0,1,0,89,0,124,1,83,0,48,0,124, - 1,83,0,41,7,78,114,106,0,0,0,114,152,0,0,0, - 114,148,0,0,0,114,135,0,0,0,114,25,0,0,0,114, - 113,0,0,0,41,14,114,116,0,0,0,114,164,0,0,0, - 114,20,0,0,0,114,18,0,0,0,114,99,0,0,0,114, - 165,0,0,0,114,13,0,0,0,114,106,0,0,0,114,2, - 0,0,0,114,9,0,0,0,114,152,0,0,0,114,11,0, - 0,0,114,136,0,0,0,114,113,0,0,0,114,158,0,0, + 0,114,119,0,0,0,74,1,0,0,115,36,0,0,0,8, + 0,4,1,4,36,2,1,12,255,8,12,8,10,2,12,10, + 1,4,8,10,1,2,3,10,1,2,7,10,1,4,3,14, + 1,255,128,114,119,0,0,0,169,2,114,120,0,0,0,114, + 122,0,0,0,99,2,0,0,0,0,0,0,0,2,0,0, + 0,6,0,0,0,8,0,0,0,67,0,0,0,115,150,0, + 0,0,116,0,124,1,100,1,131,2,114,74,116,1,100,2, + 117,0,114,22,116,2,130,1,116,1,106,3,125,4,124,3, + 100,2,117,0,114,48,124,4,124,0,124,1,100,3,141,2, + 83,0,124,3,114,56,103,0,110,2,100,2,125,5,124,4, + 124,0,124,1,124,5,100,4,141,3,83,0,124,3,100,2, + 117,0,114,134,116,0,124,1,100,5,131,2,114,130,122,14, + 124,1,160,4,124,0,161,1,125,3,87,0,110,26,4,0, + 116,5,121,128,1,0,1,0,1,0,100,2,125,3,89,0, + 110,6,48,0,100,6,125,3,116,6,124,0,124,1,124,2, + 124,3,100,7,141,4,83,0,41,8,122,53,82,101,116,117, + 114,110,32,97,32,109,111,100,117,108,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,116,0,0,0,41,2,114,116,0,0,0,114,123, + 0,0,0,114,122,0,0,0,70,114,142,0,0,0,41,7, + 114,11,0,0,0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0, + 0,0,114,119,0,0,0,41,6,114,20,0,0,0,114,116, + 0,0,0,114,120,0,0,0,114,122,0,0,0,114,143,0, + 0,0,90,6,115,101,97,114,99,104,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,98,0,0,0,175,1, + 0,0,115,38,0,0,0,10,2,8,1,4,1,6,1,8, + 2,12,1,12,1,6,1,2,1,6,255,8,3,10,1,2, + 1,14,1,12,1,10,1,4,3,16,2,255,128,114,98,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,8,0,0,0,67,0,0,0,115,40,1,0,0, + 122,10,124,0,106,0,125,3,87,0,110,18,4,0,116,1, + 121,28,1,0,1,0,1,0,89,0,110,14,48,0,124,3, + 100,0,117,1,114,42,124,3,83,0,124,0,106,2,125,4, + 124,1,100,0,117,0,114,86,122,10,124,0,106,3,125,1, + 87,0,110,18,4,0,116,1,121,84,1,0,1,0,1,0, + 89,0,110,2,48,0,122,10,124,0,106,4,125,5,87,0, + 110,22,4,0,116,1,121,118,1,0,1,0,1,0,100,0, + 125,5,89,0,110,2,48,0,124,2,100,0,117,0,114,174, + 124,5,100,0,117,0,114,170,122,10,124,1,106,5,125,2, + 87,0,110,26,4,0,116,1,121,168,1,0,1,0,1,0, + 100,0,125,2,89,0,110,6,48,0,124,5,125,2,122,10, + 124,0,106,6,125,6,87,0,110,22,4,0,116,1,121,206, + 1,0,1,0,1,0,100,0,125,6,89,0,110,2,48,0, + 122,14,116,7,124,0,106,8,131,1,125,7,87,0,110,22, + 4,0,116,1,121,244,1,0,1,0,1,0,100,0,125,7, + 89,0,110,2,48,0,116,9,124,4,124,1,124,2,100,1, + 141,3,125,3,124,5,100,0,117,0,144,1,114,18,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,120,0, + 0,0,70,84,41,13,114,113,0,0,0,114,2,0,0,0, + 114,9,0,0,0,114,106,0,0,0,114,115,0,0,0,218, + 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,119,0,0,0,114,124,0,0,0,114,129, + 0,0,0,114,123,0,0,0,41,8,114,104,0,0,0,114, + 116,0,0,0,114,120,0,0,0,114,103,0,0,0,114,20, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,129,0, + 0,0,114,123,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,17,95,115,112,101,99,95,102,114, + 111,109,95,109,111,100,117,108,101,201,1,0,0,115,74,0, + 0,0,2,2,10,1,12,1,6,1,8,2,4,1,6,2, + 8,1,2,1,10,1,12,1,6,2,2,1,10,1,12,1, + 10,1,8,1,8,1,2,1,10,1,12,1,10,1,4,2, + 2,1,10,1,12,1,10,1,2,1,14,1,12,1,10,1, + 14,2,20,1,6,1,6,1,4,1,255,128,114,149,0,0, + 0,70,169,1,218,8,111,118,101,114,114,105,100,101,99,2, + 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,8, + 0,0,0,67,0,0,0,115,214,1,0,0,124,2,115,20, + 116,0,124,1,100,1,100,0,131,3,100,0,117,0,114,52, + 122,12,124,0,106,1,124,1,95,2,87,0,110,18,4,0, + 116,3,121,50,1,0,1,0,1,0,89,0,110,2,48,0, + 124,2,115,72,116,0,124,1,100,2,100,0,131,3,100,0, + 117,0,114,174,124,0,106,4,125,3,124,3,100,0,117,0, + 114,144,124,0,106,5,100,0,117,1,114,144,116,6,100,0, + 117,0,114,108,116,7,130,1,116,6,106,8,125,4,124,4, + 160,9,124,4,161,1,125,3,124,0,106,5,124,3,95,10, + 124,3,124,0,95,4,100,0,124,1,95,11,122,10,124,3, + 124,1,95,12,87,0,110,18,4,0,116,3,121,172,1,0, + 1,0,1,0,89,0,110,2,48,0,124,2,115,194,116,0, + 124,1,100,3,100,0,131,3,100,0,117,0,114,226,122,12, + 124,0,106,13,124,1,95,14,87,0,110,18,4,0,116,3, + 121,224,1,0,1,0,1,0,89,0,110,2,48,0,122,10, + 124,0,124,1,95,15,87,0,110,18,4,0,116,3,121,254, + 1,0,1,0,1,0,89,0,110,2,48,0,124,2,144,1, + 115,24,116,0,124,1,100,4,100,0,131,3,100,0,117,0, + 144,1,114,70,124,0,106,5,100,0,117,1,144,1,114,70, + 122,12,124,0,106,5,124,1,95,16,87,0,110,20,4,0, + 116,3,144,1,121,68,1,0,1,0,1,0,89,0,110,2, + 48,0,124,0,106,17,144,1,114,210,124,2,144,1,115,102, + 116,0,124,1,100,5,100,0,131,3,100,0,117,0,144,1, + 114,136,122,12,124,0,106,18,124,1,95,11,87,0,110,20, + 4,0,116,3,144,1,121,134,1,0,1,0,1,0,89,0, + 110,2,48,0,124,2,144,1,115,160,116,0,124,1,100,6, + 100,0,131,3,100,0,117,0,144,1,114,210,124,0,106,19, + 100,0,117,1,144,1,114,210,122,14,124,0,106,19,124,1, + 95,20,87,0,124,1,83,0,4,0,116,3,144,1,121,208, + 1,0,1,0,1,0,89,0,124,1,83,0,48,0,124,1, + 83,0,41,7,78,114,9,0,0,0,114,106,0,0,0,218, + 11,95,95,112,97,99,107,97,103,101,95,95,114,148,0,0, + 0,114,115,0,0,0,114,146,0,0,0,41,21,114,13,0, + 0,0,114,20,0,0,0,114,9,0,0,0,114,2,0,0, + 0,114,116,0,0,0,114,123,0,0,0,114,133,0,0,0, + 114,134,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,115,0,0,0,114,106,0,0, + 0,114,137,0,0,0,114,152,0,0,0,114,113,0,0,0, + 114,148,0,0,0,114,130,0,0,0,114,120,0,0,0,114, + 129,0,0,0,114,146,0,0,0,41,5,114,103,0,0,0, + 114,104,0,0,0,114,151,0,0,0,114,116,0,0,0,114, + 153,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,18,95,105,110,105,116,95,109,111,100,117,108, + 101,95,97,116,116,114,115,246,1,0,0,115,104,0,0,0, + 20,4,2,1,12,1,12,1,6,1,20,2,6,1,8,1, + 10,2,8,1,4,1,6,1,10,2,8,1,6,1,6,11, + 2,1,10,1,12,1,6,1,20,2,2,1,12,1,12,1, + 6,1,2,2,10,1,12,1,6,1,24,2,12,1,2,1, + 12,1,14,1,6,1,8,2,24,1,2,1,12,1,14,1, + 6,1,24,2,12,1,2,1,10,1,4,3,14,254,2,1, + 4,1,2,255,4,1,255,128,114,155,0,0,0,99,1,0, + 0,0,0,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,1,110,20,116,0,124,0,106,1,100, + 3,131,2,114,50,116,3,100,4,131,1,130,1,124,1,100, + 1,117,0,114,68,116,4,124,0,106,5,131,1,125,1,116, + 6,124,0,124,1,131,2,1,0,124,1,83,0,41,5,122, + 43,67,114,101,97,116,101,32,97,32,109,111,100,117,108,101, + 32,98,97,115,101,100,32,111,110,32,116,104,101,32,112,114, + 111,118,105,100,101,100,32,115,112,101,99,46,78,218,13,99, + 114,101,97,116,101,95,109,111,100,117,108,101,218,11,101,120, + 101,99,95,109,111,100,117,108,101,122,66,108,111,97,100,101, + 114,115,32,116,104,97,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, + 11,0,0,0,114,116,0,0,0,114,156,0,0,0,114,83, + 0,0,0,114,21,0,0,0,114,20,0,0,0,114,155,0, + 0,0,169,2,114,103,0,0,0,114,104,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,16,109, + 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,62, + 2,0,0,115,20,0,0,0,4,3,12,1,14,3,12,1, + 8,1,8,2,10,1,10,1,4,1,255,128,114,159,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,100,0,0,0,124, + 0,106,0,100,1,117,0,114,14,100,2,110,4,124,0,106, + 0,125,1,124,0,106,1,100,1,117,0,114,64,124,0,106, + 2,100,1,117,0,114,50,100,3,160,3,124,1,161,1,83, + 0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,124, + 0,106,4,114,84,100,5,160,3,124,1,124,0,106,1,161, + 2,83,0,100,6,160,3,124,0,106,0,124,0,106,1,161, + 2,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,108, + 0,0,0,114,109,0,0,0,114,110,0,0,0,114,111,0, + 0,0,250,18,60,109,111,100,117,108,101,32,123,33,114,125, + 32,40,123,125,41,62,41,5,114,20,0,0,0,114,120,0, + 0,0,114,116,0,0,0,114,49,0,0,0,114,130,0,0, + 0,41,2,114,103,0,0,0,114,20,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,114,0,0, + 0,79,2,0,0,115,18,0,0,0,20,3,10,1,10,1, + 10,1,14,2,6,2,14,1,16,2,255,128,114,114,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,10,0,0,0,67,0,0,0,115,26,1,0,0,124, + 0,106,0,125,2,116,1,124,2,131,1,143,246,1,0,116, + 2,106,3,160,4,124,2,161,1,124,1,117,1,114,54,100, + 1,160,5,124,2,161,1,125,3,116,6,124,3,124,2,100, + 2,141,2,130,1,122,160,124,0,106,7,100,3,117,0,114, + 106,124,0,106,8,100,3,117,0,114,90,116,6,100,4,124, + 0,106,0,100,2,141,2,130,1,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,110,80,116,9,124,0,124,1,100, + 5,100,6,141,3,1,0,116,10,124,0,106,7,100,7,131, + 2,115,174,116,11,124,0,106,7,131,1,155,0,100,8,157, + 2,125,3,116,12,160,13,124,3,116,14,161,2,1,0,124, + 0,106,7,160,15,124,2,161,1,1,0,110,12,124,0,106, + 7,160,16,124,1,161,1,1,0,87,0,116,2,106,3,160, + 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, + 0,106,0,60,0,110,28,116,2,106,3,160,17,124,0,106, + 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, + 0,48,0,87,0,100,3,4,0,4,0,131,3,1,0,124, + 1,83,0,49,0,144,1,115,12,48,0,1,0,1,0,1, + 0,89,0,1,0,124,1,83,0,41,9,122,70,69,120,101, + 99,117,116,101,32,116,104,101,32,115,112,101,99,39,115,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,105,110,32,97,110,32,101,120,105,115,116,105,110,103,32, + 109,111,100,117,108,101,39,115,32,110,97,109,101,115,112,97, + 99,101,46,122,30,109,111,100,117,108,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,19,0,0,0,78,250,14,109,105,115,115,105, + 110,103,32,108,111,97,100,101,114,84,114,150,0,0,0,114, + 157,0,0,0,250,55,46,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,110,111,116,32,102,111,117,110,100,59,32, + 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, + 108,111,97,100,95,109,111,100,117,108,101,40,41,41,18,114, + 20,0,0,0,114,54,0,0,0,114,18,0,0,0,114,99, + 0,0,0,114,38,0,0,0,114,49,0,0,0,114,83,0, + 0,0,114,116,0,0,0,114,123,0,0,0,114,155,0,0, + 0,114,11,0,0,0,114,7,0,0,0,114,95,0,0,0, + 114,96,0,0,0,218,13,73,109,112,111,114,116,87,97,114, + 110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,108, + 101,114,157,0,0,0,218,3,112,111,112,41,4,114,103,0, + 0,0,114,104,0,0,0,114,20,0,0,0,114,102,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,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,126,2,0,0,115, - 62,0,0,0,2,3,18,1,6,1,12,1,14,1,12,1, - 2,1,14,3,12,1,16,1,2,1,12,1,12,1,6,1, - 16,1,2,1,8,4,10,1,22,1,12,1,6,1,18,1, - 2,1,8,1,4,3,14,254,2,1,4,1,2,255,4,1, - 255,128,114,166,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0, - 115,240,0,0,0,124,0,106,0,100,0,117,1,114,58,116, - 1,124,0,106,0,100,1,131,2,115,58,116,2,124,0,106, - 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, - 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, - 7,124,0,131,1,125,2,100,3,124,0,95,8,122,158,124, - 2,116,9,106,10,124,0,106,11,60,0,122,50,124,0,106, - 0,100,0,117,0,114,122,124,0,106,12,100,0,117,0,114, - 134,116,13,100,4,124,0,106,11,100,5,141,2,130,1,124, - 0,106,0,160,14,124,2,161,1,1,0,87,0,110,40,1, - 0,1,0,1,0,122,14,116,9,106,10,124,0,106,11,61, - 0,87,0,130,0,4,0,116,15,121,176,1,0,1,0,1, - 0,89,0,130,0,48,0,116,9,106,10,160,16,124,0,106, - 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, - 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, - 0,87,0,100,7,124,0,95,8,124,2,83,0,100,7,124, - 0,95,8,48,0,41,8,78,114,157,0,0,0,114,162,0, - 0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7, - 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, - 0,0,114,166,0,0,0,114,159,0,0,0,90,13,95,105, - 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, - 114,99,0,0,0,114,20,0,0,0,114,123,0,0,0,114, - 83,0,0,0,114,157,0,0,0,114,67,0,0,0,114,165, - 0,0,0,114,80,0,0,0,41,3,114,103,0,0,0,114, - 102,0,0,0,114,104,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,14,95,108,111,97,100,95, - 117,110,108,111,99,107,101,100,162,2,0,0,115,58,0,0, - 0,10,2,12,2,16,1,12,2,8,1,8,2,6,5,2, - 1,12,1,2,1,10,1,10,1,14,1,16,3,6,1,2, - 1,12,1,2,3,12,254,2,1,2,1,2,255,14,6,12, - 1,18,1,6,2,4,2,8,254,255,128,114,167,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,8,0,0,0,67,0,0,0,115,54,0,0,0,116,0, - 124,0,106,1,131,1,143,24,1,0,116,2,124,0,131,1, - 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 49,0,115,40,48,0,1,0,1,0,1,0,89,0,1,0, - 100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,97, - 32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,101, - 99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,104, - 101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,46, - 10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,101, - 32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,111, - 32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,32, - 32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,115, - 32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114, - 20,0,0,0,114,167,0,0,0,169,1,114,103,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 101,0,0,0,207,2,0,0,115,6,0,0,0,12,9,42, - 1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0,131,1, - 90,6,101,7,100,20,100,6,100,7,132,1,131,1,90,8, - 101,7,100,21,100,8,100,9,132,1,131,1,90,9,101,5, - 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, - 132,0,131,1,90,11,101,7,101,12,100,14,100,15,132,0, - 131,1,131,1,90,13,101,7,101,12,100,16,100,17,132,0, - 131,1,131,1,90,14,101,7,101,12,100,18,100,19,132,0, - 131,1,131,1,90,15,101,7,101,16,131,1,90,17,100,5, - 83,0,41,22,218,15,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,122,144,77,101,116,97,32,112,97,116,104, - 32,105,109,112,111,114,116,32,102,111,114,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,46,10,10,32, - 32,32,32,65,108,108,32,109,101,116,104,111,100,115,32,97, - 114,101,32,101,105,116,104,101,114,32,99,108,97,115,115,32, - 111,114,32,115,116,97,116,105,99,32,109,101,116,104,111,100, - 115,32,116,111,32,97,118,111,105,100,32,116,104,101,32,110, - 101,101,100,32,116,111,10,32,32,32,32,105,110,115,116,97, - 110,116,105,97,116,101,32,116,104,101,32,99,108,97,115,115, - 46,10,10,32,32,32,32,122,8,98,117,105,108,116,45,105, - 110,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,5,0,0,0,67,0,0,0,115,22,0,0,0,100, - 1,124,0,106,0,155,2,100,2,116,1,106,2,155,0,100, - 3,157,5,83,0,41,5,250,115,82,101,116,117,114,110,32, - 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, - 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, - 101,115,32,116,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,8,60,109, - 111,100,117,108,101,32,122,2,32,40,122,2,41,62,78,41, - 3,114,9,0,0,0,114,169,0,0,0,114,145,0,0,0, - 169,1,114,104,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,107,0,0,0,233,2,0,0,115, - 4,0,0,0,22,7,255,128,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,0,0, - 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, - 42,0,0,0,124,2,100,0,117,1,114,12,100,0,83,0, - 116,0,160,1,124,1,161,1,114,38,116,2,124,1,124,0, - 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, - 78,114,144,0,0,0,41,4,114,61,0,0,0,90,10,105, - 115,95,98,117,105,108,116,105,110,114,98,0,0,0,114,145, - 0,0,0,169,4,218,3,99,108,115,114,85,0,0,0,218, - 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, - 110,100,95,115,112,101,99,242,2,0,0,115,12,0,0,0, - 8,2,4,1,10,1,16,1,4,2,255,128,122,25,66,117, - 105,108,116,105,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,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, - 3,124,3,100,1,117,1,114,26,124,3,106,1,83,0,100, - 1,83,0,41,2,122,175,70,105,110,100,32,116,104,101,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, - 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, - 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, - 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, - 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116, - 0,0,0,41,4,114,174,0,0,0,114,85,0,0,0,114, - 175,0,0,0,114,103,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,11,102,105,110,100,95,109, - 111,100,117,108,101,251,2,0,0,115,6,0,0,0,12,9, - 18,1,255,128,122,27,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,4,0,0,0,67,0,0,0,115,46,0,0,0,124, - 0,106,0,116,1,106,2,118,1,114,34,116,3,100,1,160, - 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, - 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19, - 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, - 114,82,0,0,0,114,83,0,0,0,114,49,0,0,0,114, - 71,0,0,0,114,61,0,0,0,90,14,99,114,101,97,116, - 101,95,98,117,105,108,116,105,110,114,168,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,156,0, - 0,0,7,3,0,0,115,12,0,0,0,12,3,12,1,4, - 1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101,120,101, - 99,95,98,117,105,108,116,105,110,114,171,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,157,0, - 0,0,15,3,0,0,115,4,0,0,0,16,3,255,128,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,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, - 122,57,82,101,116,117,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,5,0,0, - 0,169,2,114,174,0,0,0,114,85,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,8,103,101, - 116,95,99,111,100,101,20,3,0,0,115,4,0,0,0,4, - 4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115, - 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, - 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,10,103,101,116,95,115,111,117,114,99, - 101,26,3,0,0,115,4,0,0,0,4,4,255,128,122,26, + 114,100,0,0,0,96,2,0,0,115,50,0,0,0,6,2, + 10,1,16,1,10,1,12,1,2,1,10,1,10,1,14,1, + 16,2,14,2,12,1,16,1,12,2,14,1,12,2,2,128, + 14,4,14,1,14,255,26,1,4,1,18,255,4,1,255,128, + 114,100,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,18, + 1,0,0,122,18,124,0,106,0,160,1,124,0,106,2,161, + 1,1,0,87,0,110,46,1,0,1,0,1,0,124,0,106, + 2,116,3,106,4,118,0,114,64,116,3,106,4,160,5,124, + 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, + 2,60,0,130,0,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,116, + 6,124,1,100,1,100,0,131,3,100,0,117,0,114,140,122, + 12,124,0,106,0,124,1,95,7,87,0,110,18,4,0,116, + 8,121,138,1,0,1,0,1,0,89,0,110,2,48,0,116, + 6,124,1,100,2,100,0,131,3,100,0,117,0,114,216,122, + 40,124,1,106,9,124,1,95,10,116,11,124,1,100,3,131, + 2,115,194,124,0,106,2,160,12,100,4,161,1,100,5,25, + 0,124,1,95,10,87,0,110,18,4,0,116,8,121,214,1, + 0,1,0,1,0,89,0,110,2,48,0,116,6,124,1,100, + 6,100,0,131,3,100,0,117,0,144,1,114,14,122,12,124, + 0,124,1,95,13,87,0,124,1,83,0,4,0,116,8,144, + 1,121,12,1,0,1,0,1,0,89,0,124,1,83,0,48, + 0,124,1,83,0,41,7,78,114,106,0,0,0,114,152,0, + 0,0,114,148,0,0,0,114,135,0,0,0,114,25,0,0, + 0,114,113,0,0,0,41,14,114,116,0,0,0,114,164,0, + 0,0,114,20,0,0,0,114,18,0,0,0,114,99,0,0, + 0,114,165,0,0,0,114,13,0,0,0,114,106,0,0,0, + 114,2,0,0,0,114,9,0,0,0,114,152,0,0,0,114, + 11,0,0,0,114,136,0,0,0,114,113,0,0,0,114,158, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,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,126,2,0, + 0,115,62,0,0,0,2,3,18,1,6,1,12,1,14,1, + 12,1,2,1,14,3,12,1,16,1,2,1,12,1,12,1, + 6,1,16,1,2,1,8,4,10,1,22,1,12,1,6,1, + 18,1,2,1,8,1,4,3,14,254,2,1,4,1,2,255, + 4,1,255,128,114,166,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,11,0,0,0,67,0, + 0,0,115,240,0,0,0,124,0,106,0,100,0,117,1,114, + 58,116,1,124,0,106,0,100,1,131,2,115,58,116,2,124, + 0,106,0,131,1,155,0,100,2,157,2,125,1,116,3,160, + 4,124,1,116,5,161,2,1,0,116,6,124,0,131,1,83, + 0,116,7,124,0,131,1,125,2,100,3,124,0,95,8,122, + 158,124,2,116,9,106,10,124,0,106,11,60,0,122,50,124, + 0,106,0,100,0,117,0,114,122,124,0,106,12,100,0,117, + 0,114,134,116,13,100,4,124,0,106,11,100,5,141,2,130, + 1,124,0,106,0,160,14,124,2,161,1,1,0,87,0,110, + 40,1,0,1,0,1,0,122,14,116,9,106,10,124,0,106, + 11,61,0,87,0,130,0,4,0,116,15,121,176,1,0,1, + 0,1,0,89,0,130,0,48,0,116,9,106,10,160,16,124, + 0,106,11,161,1,125,2,124,2,116,9,106,10,124,0,106, + 11,60,0,116,17,100,6,124,0,106,11,124,0,106,0,131, + 3,1,0,87,0,100,7,124,0,95,8,124,2,83,0,100, + 7,124,0,95,8,48,0,41,8,78,114,157,0,0,0,114, + 162,0,0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0, + 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,114, + 163,0,0,0,114,166,0,0,0,114,159,0,0,0,90,13, + 95,105,110,105,116,105,97,108,105,122,105,110,103,114,18,0, + 0,0,114,99,0,0,0,114,20,0,0,0,114,123,0,0, + 0,114,83,0,0,0,114,157,0,0,0,114,67,0,0,0, + 114,165,0,0,0,114,80,0,0,0,41,3,114,103,0,0, + 0,114,102,0,0,0,114,104,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,14,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,162,2,0,0,115,58, + 0,0,0,10,2,12,2,16,1,12,2,8,1,8,2,6, + 5,2,1,12,1,2,1,10,1,10,1,14,1,16,3,6, + 1,2,1,12,1,2,3,12,254,2,1,2,1,2,255,14, + 6,12,1,18,1,6,2,4,2,8,254,255,128,114,167,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,8,0,0,0,67,0,0,0,115,54,0,0,0, + 116,0,124,0,106,1,131,1,143,24,1,0,116,2,124,0, + 131,1,87,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,49,0,115,40,48,0,1,0,1,0,1,0,89,0, + 1,0,100,1,83,0,41,2,122,191,82,101,116,117,114,110, + 32,97,32,110,101,119,32,109,111,100,117,108,101,32,111,98, + 106,101,99,116,44,32,108,111,97,100,101,100,32,98,121,32, + 116,104,101,32,115,112,101,99,39,115,32,108,111,97,100,101, + 114,46,10,10,32,32,32,32,84,104,101,32,109,111,100,117, + 108,101,32,105,115,32,110,111,116,32,97,100,100,101,100,32, + 116,111,32,105,116,115,32,112,97,114,101,110,116,46,10,10, + 32,32,32,32,73,102,32,97,32,109,111,100,117,108,101,32, + 105,115,32,97,108,114,101,97,100,121,32,105,110,32,115,121, + 115,46,109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0, + 0,114,20,0,0,0,114,167,0,0,0,169,1,114,103,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,101,0,0,0,207,2,0,0,115,6,0,0,0,12, + 9,42,1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, + 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, + 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, + 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, + 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, + 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, + 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, + 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, + 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, + 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, + 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, + 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, + 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, + 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, + 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,5,0,0,0,67,0,0,0,115,22,0,0, + 0,100,1,124,0,106,0,155,2,100,2,116,1,106,2,155, + 0,100,3,157,5,83,0,41,5,250,115,82,101,116,117,114, + 110,32,114,101,112,114,32,102,111,114,32,116,104,101,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 84,104,101,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,84,104,101,32,105, + 109,112,111,114,116,32,109,97,99,104,105,110,101,114,121,32, + 100,111,101,115,32,116,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,8, + 60,109,111,100,117,108,101,32,122,2,32,40,122,2,41,62, + 78,41,3,114,9,0,0,0,114,169,0,0,0,114,145,0, + 0,0,169,1,114,104,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,107,0,0,0,233,2,0, + 0,115,4,0,0,0,22,7,255,128,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, + 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, + 0,115,42,0,0,0,124,2,100,0,117,1,114,12,100,0, + 83,0,116,0,160,1,124,1,161,1,114,38,116,2,124,1, + 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, + 169,2,78,114,144,0,0,0,41,4,114,61,0,0,0,90, + 10,105,115,95,98,117,105,108,116,105,110,114,98,0,0,0, + 114,145,0,0,0,169,4,218,3,99,108,115,114,85,0,0, + 0,218,4,112,97,116,104,218,6,116,97,114,103,101,116,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,242,2,0,0,115,12,0, + 0,0,8,2,4,1,10,1,16,1,4,2,255,128,122,25, 66,117,105,108,116,105,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,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,3,122,52, - 82,101,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,78,114,5,0,0,0,114,179,0,0,0, + 102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, + 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, + 2,125,3,124,3,100,1,117,1,114,26,124,3,106,1,83, + 0,100,1,83,0,41,2,122,175,70,105,110,100,32,116,104, + 101,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, + 112,97,116,104,39,32,105,115,32,101,118,101,114,32,115,112, + 101,99,105,102,105,101,100,32,116,104,101,110,32,116,104,101, + 32,115,101,97,114,99,104,32,105,115,32,99,111,110,115,105, + 100,101,114,101,100,32,97,32,102,97,105,108,117,114,101,46, + 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0, + 114,116,0,0,0,41,4,114,174,0,0,0,114,85,0,0, + 0,114,175,0,0,0,114,103,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,11,102,105,110,100, + 95,109,111,100,117,108,101,251,2,0,0,115,6,0,0,0, + 12,9,18,1,255,128,122,27,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,100, + 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,4,0,0,0,67,0,0,0,115,46,0,0, + 0,124,0,106,0,116,1,106,2,118,1,114,34,116,3,100, + 1,160,4,124,0,106,0,161,1,124,0,106,0,100,2,141, + 2,130,1,116,5,116,6,106,7,124,0,131,2,83,0,41, + 4,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,81,0,0,0, + 114,19,0,0,0,78,41,8,114,20,0,0,0,114,18,0, + 0,0,114,82,0,0,0,114,83,0,0,0,114,49,0,0, + 0,114,71,0,0,0,114,61,0,0,0,90,14,99,114,101, + 97,116,101,95,98,117,105,108,116,105,110,114,168,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 122,0,0,0,32,3,0,0,115,4,0,0,0,4,4,255, - 128,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,18,114,9,0,0,0,114,8,0,0,0, - 114,1,0,0,0,114,10,0,0,0,114,145,0,0,0,218, - 12,115,116,97,116,105,99,109,101,116,104,111,100,114,107,0, - 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, - 177,0,0,0,114,178,0,0,0,114,156,0,0,0,114,157, - 0,0,0,114,90,0,0,0,114,180,0,0,0,114,181,0, - 0,0,114,122,0,0,0,114,105,0,0,0,114,164,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,169,0,0,0,222,2,0,0,115,48, - 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, - 1,2,8,12,1,2,11,10,1,2,7,10,1,2,4,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,12,1,12, - 4,255,128,114,169,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,144,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, - 90,6,101,7,100,22,100,6,100,7,132,1,131,1,90,8, - 101,7,100,23,100,8,100,9,132,1,131,1,90,9,101,5, - 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, - 132,0,131,1,90,11,101,7,100,14,100,15,132,0,131,1, - 90,12,101,7,101,13,100,16,100,17,132,0,131,1,131,1, - 90,14,101,7,101,13,100,18,100,19,132,0,131,1,131,1, - 90,15,101,7,101,13,100,20,100,21,132,0,131,1,131,1, - 90,16,100,5,83,0,41,24,218,14,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,112, - 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,10, - 32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,32, - 97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,115, - 32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,111, - 100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,32, - 110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,116, - 97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,115, - 115,46,10,10,32,32,32,32,90,6,102,114,111,122,101,110, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,4,0,0,0,67,0,0,0,115,16,0,0,0,100,1, - 160,0,124,0,106,1,116,2,106,3,161,2,83,0,41,3, - 114,170,0,0,0,114,160,0,0,0,78,41,4,114,49,0, - 0,0,114,9,0,0,0,114,184,0,0,0,114,145,0,0, - 0,41,1,218,1,109,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,107,0,0,0,52,3,0,0,115,4, - 0,0,0,16,7,255,128,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,0,0,0,0,0,0,0, - 0,4,0,0,0,5,0,0,0,67,0,0,0,115,30,0, - 0,0,116,0,160,1,124,1,161,1,114,26,116,2,124,1, - 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, - 114,172,0,0,0,41,4,114,61,0,0,0,114,92,0,0, - 0,114,98,0,0,0,114,145,0,0,0,114,173,0,0,0, + 156,0,0,0,7,3,0,0,115,12,0,0,0,12,3,12, + 1,4,1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101, + 120,101,99,95,98,117,105,108,116,105,110,114,171,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 177,0,0,0,61,3,0,0,115,8,0,0,0,10,2,16, - 1,4,2,255,128,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,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,18,0,0,0,116,0,160, - 1,124,1,161,1,114,14,124,0,83,0,100,1,83,0,41, - 2,122,93,70,105,110,100,32,97,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41,3,114, - 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,178,0, - 0,0,68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, - 42,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,5,0,0, - 0,114,168,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,156,0,0,0,77,3,0,0,115,4, - 0,0,0,4,0,255,128,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,0,0,0,0, - 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,64, - 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, - 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,91,0,0,0,41,10,114,113,0,0,0,114, - 20,0,0,0,114,61,0,0,0,114,92,0,0,0,114,83, - 0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0, - 0,0,114,20,0,0,0,218,4,99,111,100,101,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,157,0,0, - 0,81,3,0,0,115,16,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,255,128,122,26,70,114,111,122, - 101,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,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, - 10,0,0,0,116,0,124,0,124,1,131,2,83,0,41,2, - 122,95,76,111,97,100,32,97,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,164,0, - 0,0,90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0, - 67,0,0,0,115,10,0,0,0,116,0,160,1,124,1,161, - 1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0, - 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,180,0,0,0,100,3,0,0,115,4, - 0,0,0,10,4,255,128,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,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,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, + 157,0,0,0,15,3,0,0,115,4,0,0,0,16,3,255, + 128,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,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,122,57,82,101,116,117,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, - 115,111,117,114,99,101,32,99,111,100,101,46,78,114,5,0, - 0,0,114,179,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,181,0,0,0,106,3,0,0,115, - 4,0,0,0,4,4,255,128,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,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, - 0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2, - 114,61,0,0,0,90,17,105,115,95,102,114,111,122,101,110, - 95,112,97,99,107,97,103,101,114,179,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,122,0,0, - 0,112,3,0,0,115,4,0,0,0,10,4,255,128,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,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,145,0,0,0,114,182,0,0,0, - 114,107,0,0,0,114,183,0,0,0,114,177,0,0,0,114, - 178,0,0,0,114,156,0,0,0,114,157,0,0,0,114,164, - 0,0,0,114,94,0,0,0,114,180,0,0,0,114,181,0, - 0,0,114,122,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,184,0,0,0, - 41,3,0,0,115,50,0,0,0,8,0,4,2,4,7,2, - 2,10,1,2,8,12,1,2,6,12,1,2,8,10,1,2, - 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, - 1,12,1,2,4,2,1,16,1,255,128,114,184,0,0,0, - 99,0,0,0,0,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,83,0,41,7, - 218,18,95,73,109,112,111,114,116,76,111,99,107,67,111,110, - 116,101,120,116,122,36,67,111,110,116,101,120,116,32,109,97, - 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, - 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,61,0,0,0,114,62,0,0,0,114,51,0, + 99,111,100,101,32,111,98,106,101,99,116,115,46,78,114,5, + 0,0,0,169,2,114,174,0,0,0,114,85,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, + 103,101,116,95,99,111,100,101,20,3,0,0,115,4,0,0, + 0,4,4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, + 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,26,3,0,0,115,4,0,0,0,4,4,255,128, + 122,26,66,117,105,108,116,105,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,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,3, + 122,52,82,101,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,78,114,5,0,0,0,114,179,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,58,0,0,0,125,3,0,0,115,4,0,0,0,12, - 2,255,128,122,28,95,73,109,112,111,114,116,76,111,99,107, - 67,111,110,116,101,120,116,46,95,95,101,110,116,101,114,95, - 95,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, - 0,160,1,161,0,1,0,100,1,83,0,41,2,122,60,82, - 101,108,101,97,115,101,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,61, - 0,0,0,114,64,0,0,0,41,4,114,33,0,0,0,218, - 8,101,120,99,95,116,121,112,101,218,9,101,120,99,95,118, - 97,108,117,101,218,13,101,120,99,95,116,114,97,99,101,98, - 97,99,107,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,60,0,0,0,129,3,0,0,115,4,0,0,0, - 12,2,255,128,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,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,58,0,0,0,114,60,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,189,0,0,0,121,3,0,0,115, - 10,0,0,0,8,0,4,2,8,2,12,4,255,128,114,189, - 0,0,0,99,3,0,0,0,0,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, - 3,131,1,130,1,124,3,100,4,25,0,125,4,124,0,114, - 60,100,5,160,3,124,4,124,0,161,2,83,0,124,4,83, - 0,41,7,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,135,0,0,0,114,42,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, - 99,107,97,103,101,114,25,0,0,0,250,5,123,125,46,123, - 125,78,41,4,218,6,114,115,112,108,105,116,218,3,108,101, - 110,114,83,0,0,0,114,49,0,0,0,41,5,114,20,0, - 0,0,218,7,112,97,99,107,97,103,101,218,5,108,101,118, - 101,108,90,4,98,105,116,115,90,4,98,97,115,101,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,13,95, - 114,101,115,111,108,118,101,95,110,97,109,101,134,3,0,0, - 115,12,0,0,0,16,2,12,1,8,1,8,1,20,1,255, - 128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1, - 124,3,131,2,83,0,114,0,0,0,0,41,2,114,178,0, - 0,0,114,98,0,0,0,41,4,218,6,102,105,110,100,101, - 114,114,20,0,0,0,114,175,0,0,0,114,116,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, - 99,121,143,3,0,0,115,10,0,0,0,12,3,8,1,4, - 1,10,1,255,128,114,200,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,67, - 0,0,0,115,28,1,0,0,116,0,106,1,125,3,124,3, - 100,1,117,0,114,22,116,2,100,2,131,1,130,1,124,3, - 115,38,116,3,160,4,100,3,116,5,161,2,1,0,124,0, - 116,0,106,6,118,0,125,4,124,3,68,0,93,226,125,5, - 116,7,131,0,143,94,1,0,122,10,124,5,106,8,125,6, - 87,0,110,54,4,0,116,9,121,128,1,0,1,0,1,0, - 116,10,124,5,124,0,124,1,131,3,125,7,124,7,100,1, - 117,0,114,124,89,0,87,0,100,1,4,0,4,0,131,3, - 1,0,113,52,89,0,110,14,48,0,124,6,124,0,124,1, - 124,2,131,3,125,7,87,0,100,1,4,0,4,0,131,3, - 1,0,110,16,49,0,115,162,48,0,1,0,1,0,1,0, - 89,0,1,0,124,7,100,1,117,1,114,52,124,4,144,1, - 115,16,124,0,116,0,106,6,118,0,144,1,114,16,116,0, - 106,6,124,0,25,0,125,8,122,10,124,8,106,11,125,9, - 87,0,110,26,4,0,116,9,121,244,1,0,1,0,1,0, - 124,7,6,0,89,0,2,0,1,0,83,0,48,0,124,9, - 100,1,117,0,144,1,114,8,124,7,2,0,1,0,83,0, - 124,9,2,0,1,0,83,0,124,7,2,0,1,0,83,0, - 100,1,83,0,41,4,122,21,70,105,110,100,32,97,32,109, - 111,100,117,108,101,39,115,32,115,112,101,99,46,78,122,53, - 115,121,115,46,109,101,116,97,95,112,97,116,104,32,105,115, - 32,78,111,110,101,44,32,80,121,116,104,111,110,32,105,115, - 32,108,105,107,101,108,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, - 18,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114, - 83,0,0,0,114,95,0,0,0,114,96,0,0,0,114,163, - 0,0,0,114,99,0,0,0,114,189,0,0,0,114,177,0, - 0,0,114,2,0,0,0,114,200,0,0,0,114,113,0,0, - 0,41,10,114,20,0,0,0,114,175,0,0,0,114,176,0, - 0,0,114,201,0,0,0,90,9,105,115,95,114,101,108,111, - 97,100,114,199,0,0,0,114,177,0,0,0,114,103,0,0, - 0,114,104,0,0,0,114,113,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,10,95,102,105,110, - 100,95,115,112,101,99,152,3,0,0,115,56,0,0,0,6, - 2,8,1,8,2,4,3,12,1,10,5,8,1,8,1,2, - 1,10,1,12,1,12,1,8,1,22,1,42,2,8,1,18, - 2,10,1,2,1,10,1,12,1,14,4,10,2,8,1,8, - 2,8,2,4,2,255,128,114,202,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0, - 0,67,0,0,0,115,110,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,0,114,44,116,5, - 100,3,131,1,130,1,124,2,100,2,107,4,114,82,116,0, - 124,1,116,1,131,2,115,70,116,2,100,4,131,1,130,1, - 124,1,115,82,116,6,100,5,131,1,130,1,124,0,115,106, - 124,2,100,2,107,2,114,102,116,5,100,6,131,1,130,1, - 100,7,83,0,100,7,83,0,41,8,122,28,86,101,114,105, - 102,121,32,97,114,103,117,109,101,110,116,115,32,97,114,101, - 32,34,115,97,110,101,34,46,122,31,109,111,100,117,108,101, - 32,110,97,109,101,32,109,117,115,116,32,98,101,32,115,116, - 114,44,32,110,111,116,32,123,125,114,25,0,0,0,122,18, - 108,101,118,101,108,32,109,117,115,116,32,98,101,32,62,61, - 32,48,122,31,95,95,112,97,99,107,97,103,101,95,95,32, - 110,111,116,32,115,101,116,32,116,111,32,97,32,115,116,114, - 105,110,103,122,54,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,119, - 105,116,104,32,110,111,32,107,110,111,119,110,32,112,97,114, - 101,110,116,32,112,97,99,107,97,103,101,122,17,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,49,0, - 0,0,114,3,0,0,0,218,10,86,97,108,117,101,69,114, - 114,111,114,114,83,0,0,0,169,3,114,20,0,0,0,114, - 196,0,0,0,114,197,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,13,95,115,97,110,105,116, - 121,95,99,104,101,99,107,199,3,0,0,115,26,0,0,0, - 10,2,18,1,8,1,8,1,8,1,10,1,8,1,4,1, - 8,1,12,2,8,1,8,255,255,128,114,208,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, - 0,0,0,0,9,0,0,0,8,0,0,0,67,0,0,0, - 115,20,1,0,0,100,0,125,2,124,0,160,0,100,1,161, - 1,100,2,25,0,125,3,124,3,114,128,124,3,116,1,106, - 2,118,1,114,42,116,3,124,1,124,3,131,2,1,0,124, - 0,116,1,106,2,118,0,114,62,116,1,106,2,124,0,25, - 0,83,0,116,1,106,2,124,3,25,0,125,4,122,10,124, - 4,106,4,125,2,87,0,110,44,4,0,116,5,121,126,1, - 0,1,0,1,0,116,6,100,3,23,0,160,7,124,0,124, - 3,161,2,125,5,116,8,124,5,124,0,100,4,141,2,100, - 0,130,2,48,0,116,9,124,0,124,2,131,2,125,6,124, - 6,100,0,117,0,114,164,116,8,116,6,160,7,124,0,161, - 1,124,0,100,4,141,2,130,1,116,10,124,6,131,1,125, - 7,124,3,144,1,114,16,116,1,106,2,124,3,25,0,125, - 4,124,0,160,0,100,1,161,1,100,5,25,0,125,8,122, - 18,116,11,124,4,124,8,124,7,131,3,1,0,87,0,124, - 7,83,0,4,0,116,5,144,1,121,14,1,0,1,0,1, - 0,100,6,124,3,155,2,100,7,124,8,155,2,157,4,125, - 5,116,12,160,13,124,5,116,14,161,2,1,0,89,0,124, - 7,83,0,48,0,124,7,83,0,41,8,78,114,135,0,0, - 0,114,25,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, - 19,0,0,0,233,2,0,0,0,122,27,67,97,110,110,111, - 116,32,115,101,116,32,97,110,32,97,116,116,114,105,98,117, - 116,101,32,111,110,32,122,18,32,102,111,114,32,99,104,105, - 108,100,32,109,111,100,117,108,101,32,41,15,114,136,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,71,0,0,0, - 114,148,0,0,0,114,2,0,0,0,218,8,95,69,82,82, - 95,77,83,71,114,49,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,202, - 0,0,0,114,167,0,0,0,114,12,0,0,0,114,95,0, - 0,0,114,96,0,0,0,114,163,0,0,0,41,9,114,20, - 0,0,0,218,7,105,109,112,111,114,116,95,114,175,0,0, - 0,114,137,0,0,0,90,13,112,97,114,101,110,116,95,109, - 111,100,117,108,101,114,102,0,0,0,114,103,0,0,0,114, - 104,0,0,0,90,5,99,104,105,108,100,114,5,0,0,0, - 114,5,0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1,14,1, - 4,1,10,1,10,1,10,2,10,1,10,1,2,1,10,1, - 12,1,16,1,16,1,10,1,8,1,18,1,8,2,6,1, - 10,2,14,1,2,1,14,1,4,4,14,253,16,1,14,1, - 4,1,2,255,4,1,255,128,114,213,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,8,0, - 0,0,67,0,0,0,115,128,0,0,0,116,0,124,0,131, - 1,143,62,1,0,116,1,106,2,160,3,124,0,116,4,161, - 2,125,2,124,2,116,4,117,0,114,56,116,5,124,0,124, - 1,131,2,87,0,2,0,100,1,4,0,4,0,131,3,1, - 0,83,0,87,0,100,1,4,0,4,0,131,3,1,0,110, - 16,49,0,115,76,48,0,1,0,1,0,1,0,89,0,1, - 0,124,2,100,1,117,0,114,116,100,2,160,6,124,0,161, - 1,125,3,116,7,124,3,124,0,100,3,141,2,130,1,116, - 8,124,0,131,1,1,0,124,2,83,0,41,4,122,25,70, - 105,110,100,32,97,110,100,32,108,111,97,100,32,116,104,101, - 32,109,111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0,0,114, - 18,0,0,0,114,99,0,0,0,114,38,0,0,0,218,14, - 95,78,69,69,68,83,95,76,79,65,68,73,78,71,114,213, - 0,0,0,114,49,0,0,0,114,211,0,0,0,114,69,0, - 0,0,41,4,114,20,0,0,0,114,212,0,0,0,114,104, - 0,0,0,114,79,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,14,95,102,105,110,100,95,97, - 110,100,95,108,111,97,100,253,3,0,0,115,24,0,0,0, - 10,2,14,1,8,1,54,1,8,2,4,1,2,1,4,255, - 12,2,8,2,4,1,255,128,114,215,0,0,0,114,25,0, - 0,0,99,3,0,0,0,0,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,3,125,0, - 116,2,124,0,116,3,131,2,83,0,41,3,97,50,1,0, - 0,73,109,112,111,114,116,32,97,110,100,32,114,101,116,117, - 114,110,32,116,104,101,32,109,111,100,117,108,101,32,98,97, - 115,101,100,32,111,110,32,105,116,115,32,110,97,109,101,44, - 32,116,104,101,32,112,97,99,107,97,103,101,32,116,104,101, - 32,99,97,108,108,32,105,115,10,32,32,32,32,98,101,105, - 110,103,32,109,97,100,101,32,102,114,111,109,44,32,97,110, - 100,32,116,104,101,32,108,101,118,101,108,32,97,100,106,117, - 115,116,109,101,110,116,46,10,10,32,32,32,32,84,104,105, - 115,32,102,117,110,99,116,105,111,110,32,114,101,112,114,101, - 115,101,110,116,115,32,116,104,101,32,103,114,101,97,116,101, - 115,116,32,99,111,109,109,111,110,32,100,101,110,111,109,105, - 110,97,116,111,114,32,111,102,32,102,117,110,99,116,105,111, - 110,97,108,105,116,121,10,32,32,32,32,98,101,116,119,101, - 101,110,32,105,109,112,111,114,116,95,109,111,100,117,108,101, - 32,97,110,100,32,95,95,105,109,112,111,114,116,95,95,46, - 32,84,104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0,0,0, - 114,198,0,0,0,114,215,0,0,0,218,11,95,103,99,100, - 95,105,109,112,111,114,116,114,207,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,216,0,0,0, - 13,4,0,0,115,10,0,0,0,12,9,8,1,12,1,10, - 1,255,128,114,216,0,0,0,169,1,218,9,114,101,99,117, - 114,115,105,118,101,99,3,0,0,0,0,0,0,0,1,0, - 0,0,8,0,0,0,11,0,0,0,67,0,0,0,115,216, - 0,0,0,124,1,68,0,93,204,125,4,116,0,124,4,116, - 1,131,2,115,64,124,3,114,34,124,0,106,2,100,1,23, - 0,125,5,110,4,100,2,125,5,116,3,100,3,124,5,155, - 0,100,4,116,4,124,4,131,1,106,2,155,0,157,4,131, - 1,130,1,124,4,100,5,107,2,114,106,124,3,115,4,116, - 5,124,0,100,6,131,2,114,4,116,6,124,0,124,0,106, - 7,124,2,100,7,100,8,141,4,1,0,113,4,116,5,124, - 0,124,4,131,2,115,4,100,9,160,8,124,0,106,2,124, - 4,161,2,125,6,122,14,116,9,124,2,124,6,131,2,1, - 0,87,0,113,4,4,0,116,10,121,214,1,0,125,7,1, - 0,122,42,124,7,106,11,124,6,107,2,114,200,116,12,106, - 13,160,14,124,6,116,15,161,2,100,10,117,1,114,200,87, - 0,89,0,100,10,125,7,126,7,113,4,130,0,100,10,125, - 7,126,7,48,0,124,0,83,0,48,0,41,11,122,238,70, - 105,103,117,114,101,32,111,117,116,32,119,104,97,116,32,95, - 95,105,109,112,111,114,116,95,95,32,115,104,111,117,108,100, - 32,114,101,116,117,114,110,46,10,10,32,32,32,32,84,104, - 101,32,105,109,112,111,114,116,95,32,112,97,114,97,109,101, - 116,101,114,32,105,115,32,97,32,99,97,108,108,97,98,108, - 101,32,119,104,105,99,104,32,116,97,107,101,115,32,116,104, - 101,32,110,97,109,101,32,111,102,32,109,111,100,117,108,101, - 32,116,111,10,32,32,32,32,105,109,112,111,114,116,46,32, - 73,116,32,105,115,32,114,101,113,117,105,114,101,100,32,116, - 111,32,100,101,99,111,117,112,108,101,32,116,104,101,32,102, - 117,110,99,116,105,111,110,32,102,114,111,109,32,97,115,115, - 117,109,105,110,103,32,105,109,112,111,114,116,108,105,98,39, - 115,10,32,32,32,32,105,109,112,111,114,116,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,105,115,32,100, - 101,115,105,114,101,100,46,10,10,32,32,32,32,122,8,46, - 95,95,97,108,108,95,95,122,13,96,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,217,0,0,0,114,193,0,0,0,78,41,16,114,203, - 0,0,0,114,204,0,0,0,114,9,0,0,0,114,205,0, - 0,0,114,3,0,0,0,114,11,0,0,0,218,16,95,104, - 97,110,100,108,101,95,102,114,111,109,108,105,115,116,114,220, - 0,0,0,114,49,0,0,0,114,71,0,0,0,114,211,0, - 0,0,114,20,0,0,0,114,18,0,0,0,114,99,0,0, - 0,114,38,0,0,0,114,214,0,0,0,41,8,114,104,0, - 0,0,218,8,102,114,111,109,108,105,115,116,114,212,0,0, - 0,114,218,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, + 0,114,122,0,0,0,32,3,0,0,115,4,0,0,0,4, + 4,255,128,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,18,114,9,0,0,0,114,8,0, + 0,0,114,1,0,0,0,114,10,0,0,0,114,145,0,0, + 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, + 107,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, + 100,114,177,0,0,0,114,178,0,0,0,114,156,0,0,0, + 114,157,0,0,0,114,90,0,0,0,114,180,0,0,0,114, + 181,0,0,0,114,122,0,0,0,114,105,0,0,0,114,164, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,169,0,0,0,222,2,0,0, + 115,48,0,0,0,8,0,4,2,4,7,2,2,10,1,2, + 8,12,1,2,8,12,1,2,11,10,1,2,7,10,1,2, + 4,2,1,12,1,2,4,2,1,12,1,2,4,2,1,12, + 1,12,4,255,128,114,169,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, + 0,0,0,115,144,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,22,100,6,100,7,132,1,131,1, + 90,8,101,7,100,23,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,100,14,100,15,132,0, + 131,1,90,12,101,7,101,13,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,13,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,13,100,20,100,21,132,0,131,1, + 131,1,90,16,100,5,83,0,41,24,218,14,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,122,142,77,101,116,97, + 32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,114, + 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,46, + 10,10,32,32,32,32,65,108,108,32,109,101,116,104,111,100, + 115,32,97,114,101,32,101,105,116,104,101,114,32,99,108,97, + 115,115,32,111,114,32,115,116,97,116,105,99,32,109,101,116, + 104,111,100,115,32,116,111,32,97,118,111,105,100,32,116,104, + 101,32,110,101,101,100,32,116,111,10,32,32,32,32,105,110, + 115,116,97,110,116,105,97,116,101,32,116,104,101,32,99,108, + 97,115,115,46,10,10,32,32,32,32,90,6,102,114,111,122, + 101,110,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,0, + 100,1,160,0,124,0,106,1,116,2,106,3,161,2,83,0, + 41,3,114,170,0,0,0,114,160,0,0,0,78,41,4,114, + 49,0,0,0,114,9,0,0,0,114,184,0,0,0,114,145, + 0,0,0,41,1,218,1,109,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,107,0,0,0,52,3,0,0, + 115,4,0,0,0,16,7,255,128,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,0,0,0,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 30,0,0,0,116,0,160,1,124,1,161,1,114,26,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,114,172,0,0,0,41,4,114,61,0,0,0,114,92, + 0,0,0,114,98,0,0,0,114,145,0,0,0,114,173,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,177,0,0,0,61,3,0,0,115,8,0,0,0,10, + 2,16,1,4,2,255,128,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,0,0,0,0,0,3,0, + 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,116, + 0,160,1,124,1,161,1,114,14,124,0,83,0,100,1,83, + 0,41,2,122,93,70,105,110,100,32,97,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41, + 3,114,174,0,0,0,114,85,0,0,0,114,175,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 221,0,0,0,28,4,0,0,115,54,0,0,0,8,10,10, - 1,4,1,12,1,4,2,10,1,8,1,8,255,8,2,14, - 1,10,1,2,1,8,255,10,2,14,1,2,1,14,1,14, - 1,10,4,16,1,2,255,12,2,2,1,8,128,4,1,2, - 248,255,128,114,221,0,0,0,99,1,0,0,0,0,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,117,1, - 114,82,124,2,100,3,117,1,114,78,124,1,124,2,106,1, - 107,3,114,78,116,2,106,3,100,4,124,1,155,2,100,5, - 124,2,106,1,155,2,100,6,157,5,116,4,100,7,100,8, - 141,3,1,0,124,1,83,0,124,2,100,3,117,1,114,96, - 124,2,106,1,83,0,116,2,106,3,100,9,116,4,100,7, - 100,8,141,3,1,0,124,0,100,10,25,0,125,1,100,11, - 124,0,118,1,114,142,124,1,160,5,100,12,161,1,100,13, - 25,0,125,1,124,1,83,0,41,14,122,167,67,97,108,99, - 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, - 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, - 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, - 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, - 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, - 101,116,32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89,99,97, - 110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,107, - 97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,95, - 95,32,111,114,32,95,95,112,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,9,0,0,0,114,148,0,0, - 0,114,135,0,0,0,114,25,0,0,0,41,6,114,38,0, - 0,0,114,137,0,0,0,114,95,0,0,0,114,96,0,0, - 0,114,163,0,0,0,114,136,0,0,0,41,3,218,7,103, - 108,111,98,97,108,115,114,196,0,0,0,114,103,0,0,0, + 178,0,0,0,68,3,0,0,115,4,0,0,0,18,7,255, + 128,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,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,42,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,5, + 0,0,0,114,168,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,156,0,0,0,77,3,0,0, + 115,4,0,0,0,4,0,255,128,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,0,0, + 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, + 115,64,0,0,0,124,0,106,0,106,1,125,1,116,2,160, + 3,124,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,91,0,0,0,41,10,114,113,0,0, + 0,114,20,0,0,0,114,61,0,0,0,114,92,0,0,0, + 114,83,0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114, + 104,0,0,0,114,20,0,0,0,218,4,99,111,100,101,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,157, + 0,0,0,81,3,0,0,115,16,0,0,0,8,2,10,1, + 10,1,2,1,6,255,12,2,16,1,255,128,122,26,70,114, + 111,122,101,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,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, + 0,115,10,0,0,0,116,0,124,0,124,1,131,2,83,0, + 41,2,122,95,76,111,97,100,32,97,32,102,114,111,122,101, + 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 164,0,0,0,90,3,0,0,115,4,0,0,0,10,8,255, + 128,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,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, + 1,161,1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186, + 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,180,0,0,0,100,3,0,0, + 115,4,0,0,0,10,4,255,128,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,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,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, + 5,0,0,0,114,179,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,181,0,0,0,106,3,0, + 0,115,4,0,0,0,4,4,255,128,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,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,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,78, + 41,2,114,61,0,0,0,90,17,105,115,95,102,114,111,122, + 101,110,95,112,97,99,107,97,103,101,114,179,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,122, + 0,0,0,112,3,0,0,115,4,0,0,0,10,4,255,128, + 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,17,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,145,0,0,0,114,182,0, + 0,0,114,107,0,0,0,114,183,0,0,0,114,177,0,0, + 0,114,178,0,0,0,114,156,0,0,0,114,157,0,0,0, + 114,164,0,0,0,114,94,0,0,0,114,180,0,0,0,114, + 181,0,0,0,114,122,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,184,0, + 0,0,41,3,0,0,115,50,0,0,0,8,0,4,2,4, + 7,2,2,10,1,2,8,12,1,2,6,12,1,2,8,10, + 1,2,3,10,1,2,8,10,1,2,9,2,1,12,1,2, + 4,2,1,12,1,2,4,2,1,16,1,255,128,114,184,0, + 0,0,99,0,0,0,0,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,83,0, + 41,7,218,18,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,122,36,67,111,110,116,101,120,116,32, + 109,97,110,97,103,101,114,32,102,111,114,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,46,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0, + 0,67,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,61,0,0,0,114,62,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,58,0,0,0,125,3,0,0,115,4,0,0, + 0,12,2,255,128,122,28,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,46,95,95,101,110,116,101, + 114,95,95,99,4,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, + 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, + 60,82,101,108,101,97,115,101,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,61,0,0,0,114,64,0,0,0,41,4,114,33,0,0, + 0,218,8,101,120,99,95,116,121,112,101,218,9,101,120,99, + 95,118,97,108,117,101,218,13,101,120,99,95,116,114,97,99, + 101,98,97,99,107,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,60,0,0,0,129,3,0,0,115,4,0, + 0,0,12,2,255,128,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,9,0,0,0,114,8,0,0,0, + 114,1,0,0,0,114,10,0,0,0,114,58,0,0,0,114, + 60,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,189,0,0,0,121,3,0, + 0,115,10,0,0,0,8,0,4,2,8,2,12,4,255,128, + 114,189,0,0,0,99,3,0,0,0,0,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,3,131,1,130,1,124,3,100,4,25,0,125,4,124, + 0,114,60,100,5,160,3,124,4,124,0,161,2,83,0,124, + 4,83,0,41,7,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,135,0,0,0,114,42, + 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,99,107,97,103,101,114,25,0,0,0,250,5,123,125, + 46,123,125,78,41,4,218,6,114,115,112,108,105,116,218,3, + 108,101,110,114,83,0,0,0,114,49,0,0,0,41,5,114, + 20,0,0,0,218,7,112,97,99,107,97,103,101,218,5,108, + 101,118,101,108,90,4,98,105,116,115,90,4,98,97,115,101, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 17,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101, - 95,95,65,4,0,0,115,44,0,0,0,10,7,10,1,8, - 1,18,1,6,1,2,1,4,255,4,1,6,255,4,2,6, - 254,4,3,8,1,6,1,6,2,4,2,6,254,8,3,8, - 1,14,1,4,1,255,128,114,227,0,0,0,114,5,0,0, - 0,99,5,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,5,0,0,0,67,0,0,0,115,174,0,0,0,124, - 4,100,1,107,2,114,18,116,0,124,0,131,1,125,5,110, - 36,124,1,100,2,117,1,114,30,124,1,110,2,105,0,125, - 6,116,1,124,6,131,1,125,7,116,0,124,0,124,7,124, - 4,131,3,125,5,124,3,115,148,124,4,100,1,107,2,114, - 84,116,0,124,0,160,2,100,3,161,1,100,1,25,0,131, - 1,83,0,124,0,115,92,124,5,83,0,116,3,124,0,131, - 1,116,3,124,0,160,2,100,3,161,1,100,1,25,0,131, - 1,24,0,125,8,116,4,106,5,124,5,106,6,100,2,116, - 3,124,5,106,6,131,1,124,8,24,0,133,2,25,0,25, - 0,83,0,116,7,124,5,100,4,131,2,114,170,116,8,124, - 5,124,3,116,0,131,3,83,0,124,5,83,0,41,5,97, - 215,1,0,0,73,109,112,111,114,116,32,97,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,84,104,101,32,39,103, - 108,111,98,97,108,115,39,32,97,114,103,117,109,101,110,116, - 32,105,115,32,117,115,101,100,32,116,111,32,105,110,102,101, - 114,32,119,104,101,114,101,32,116,104,101,32,105,109,112,111, - 114,116,32,105,115,32,111,99,99,117,114,114,105,110,103,32, - 102,114,111,109,10,32,32,32,32,116,111,32,104,97,110,100, - 108,101,32,114,101,108,97,116,105,118,101,32,105,109,112,111, - 114,116,115,46,32,84,104,101,32,39,108,111,99,97,108,115, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, - 110,111,114,101,100,46,32,84,104,101,10,32,32,32,32,39, - 102,114,111,109,108,105,115,116,39,32,97,114,103,117,109,101, - 110,116,32,115,112,101,99,105,102,105,101,115,32,119,104,97, - 116,32,115,104,111,117,108,100,32,101,120,105,115,116,32,97, - 115,32,97,116,116,114,105,98,117,116,101,115,32,111,110,32, - 116,104,101,32,109,111,100,117,108,101,10,32,32,32,32,98, - 101,105,110,103,32,105,109,112,111,114,116,101,100,32,40,101, - 46,103,46,32,96,96,102,114,111,109,32,109,111,100,117,108, - 101,32,105,109,112,111,114,116,32,60,102,114,111,109,108,105, - 115,116,62,96,96,41,46,32,32,84,104,101,32,39,108,101, - 118,101,108,39,10,32,32,32,32,97,114,103,117,109,101,110, - 116,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101, - 32,112,97,99,107,97,103,101,32,108,111,99,97,116,105,111, - 110,32,116,111,32,105,109,112,111,114,116,32,102,114,111,109, - 32,105,110,32,97,32,114,101,108,97,116,105,118,101,10,32, - 32,32,32,105,109,112,111,114,116,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,46,46,112,107,103,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,25,0,0,0, - 78,114,135,0,0,0,114,148,0,0,0,41,9,114,216,0, - 0,0,114,227,0,0,0,218,9,112,97,114,116,105,116,105, - 111,110,114,195,0,0,0,114,18,0,0,0,114,99,0,0, - 0,114,9,0,0,0,114,11,0,0,0,114,221,0,0,0, - 41,9,114,20,0,0,0,114,226,0,0,0,218,6,108,111, - 99,97,108,115,114,222,0,0,0,114,197,0,0,0,114,104, - 0,0,0,90,8,103,108,111,98,97,108,115,95,114,196,0, - 0,0,90,7,99,117,116,95,111,102,102,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,10,95,95,105,109, - 112,111,114,116,95,95,92,4,0,0,115,32,0,0,0,8, - 11,10,1,16,2,8,1,12,1,4,1,8,3,18,1,4, - 1,4,1,26,4,30,3,10,1,12,1,4,2,255,128,114, - 230,0,0,0,99,1,0,0,0,0,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, - 117,0,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,169,0,0,0,114,177,0, - 0,0,114,83,0,0,0,114,167,0,0,0,41,2,114,20, - 0,0,0,114,103,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,18,95,98,117,105,108,116,105, - 110,95,102,114,111,109,95,110,97,109,101,129,4,0,0,115, - 10,0,0,0,10,1,8,1,12,1,8,1,255,128,114,231, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 10,0,0,0,5,0,0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125, - 3,125,4,116,5,124,4,124,2,131,2,114,26,124,3,116, - 1,106,6,118,0,114,60,116,7,125,5,110,16,116,0,160, - 8,124,3,161,1,114,26,116,9,125,5,110,0,116,10,124, - 4,124,5,131,2,125,6,116,11,124,6,124,4,131,2,1, - 0,113,26,116,1,106,3,116,12,25,0,125,7,100,1,68, - 0,93,46,125,8,124,8,116,1,106,3,118,1,114,136,116, - 13,124,8,131,1,125,9,110,10,116,1,106,3,124,8,25, - 0,125,9,116,14,124,7,124,8,124,9,131,3,1,0,113, - 112,100,2,83,0,41,3,122,250,83,101,116,117,112,32,105, - 109,112,111,114,116,108,105,98,32,98,121,32,105,109,112,111, - 114,116,105,110,103,32,110,101,101,100,101,100,32,98,117,105, - 108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,110, - 100,32,105,110,106,101,99,116,105,110,103,32,116,104,101,109, - 10,32,32,32,32,105,110,116,111,32,116,104,101,32,103,108, - 111,98,97,108,32,110,97,109,101,115,112,97,99,101,46,10, - 10,32,32,32,32,65,115,32,115,121,115,32,105,115,32,110, - 101,101,100,101,100,32,102,111,114,32,115,121,115,46,109,111, - 100,117,108,101,115,32,97,99,99,101,115,115,32,97,110,100, - 32,95,105,109,112,32,105,115,32,110,101,101,100,101,100,32, - 116,111,32,108,111,97,100,32,98,117,105,108,116,45,105,110, - 10,32,32,32,32,109,111,100,117,108,101,115,44,32,116,104, - 111,115,101,32,116,119,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,26,0,0,0,114,95,0,0,0,114, - 68,0,0,0,78,41,15,114,61,0,0,0,114,18,0,0, - 0,114,3,0,0,0,114,99,0,0,0,218,5,105,116,101, - 109,115,114,203,0,0,0,114,82,0,0,0,114,169,0,0, - 0,114,92,0,0,0,114,184,0,0,0,114,149,0,0,0, - 114,155,0,0,0,114,9,0,0,0,114,231,0,0,0,114, - 12,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,20,0,0, - 0,114,104,0,0,0,114,116,0,0,0,114,103,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,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,6,95,115,101,116, - 117,112,136,4,0,0,115,38,0,0,0,4,9,4,1,8, - 3,18,1,10,1,10,1,6,1,10,1,6,1,10,3,12, - 1,10,3,8,1,10,1,10,1,10,2,14,1,4,251,255, - 128,114,235,0,0,0,99,2,0,0,0,0,0,0,0,0, + 13,95,114,101,115,111,108,118,101,95,110,97,109,101,134,3, + 0,0,115,12,0,0,0,16,2,12,1,8,1,8,1,20, + 1,255,128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1, + 124,1,124,3,131,2,83,0,114,0,0,0,0,41,2,114, + 178,0,0,0,114,98,0,0,0,41,4,218,6,102,105,110, + 100,101,114,114,20,0,0,0,114,175,0,0,0,114,116,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,17,95,102,105,110,100,95,115,112,101,99,95,108,101, + 103,97,99,121,143,3,0,0,115,10,0,0,0,12,3,8, + 1,4,1,10,1,255,128,114,200,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,0, + 0,67,0,0,0,115,28,1,0,0,116,0,106,1,125,3, + 124,3,100,1,117,0,114,22,116,2,100,2,131,1,130,1, + 124,3,115,38,116,3,160,4,100,3,116,5,161,2,1,0, + 124,0,116,0,106,6,118,0,125,4,124,3,68,0,93,226, + 125,5,116,7,131,0,143,94,1,0,122,10,124,5,106,8, + 125,6,87,0,110,54,4,0,116,9,121,128,1,0,1,0, + 1,0,116,10,124,5,124,0,124,1,131,3,125,7,124,7, + 100,1,117,0,114,124,89,0,87,0,100,1,4,0,4,0, + 131,3,1,0,113,52,89,0,110,14,48,0,124,6,124,0, + 124,1,124,2,131,3,125,7,87,0,100,1,4,0,4,0, + 131,3,1,0,110,16,49,0,115,162,48,0,1,0,1,0, + 1,0,89,0,1,0,124,7,100,1,117,1,114,52,124,4, + 144,1,115,16,124,0,116,0,106,6,118,0,144,1,114,16, + 116,0,106,6,124,0,25,0,125,8,122,10,124,8,106,11, + 125,9,87,0,110,26,4,0,116,9,121,244,1,0,1,0, + 1,0,124,7,6,0,89,0,2,0,1,0,83,0,48,0, + 124,9,100,1,117,0,144,1,114,8,124,7,2,0,1,0, + 83,0,124,9,2,0,1,0,83,0,124,7,2,0,1,0, + 83,0,100,1,83,0,41,4,122,21,70,105,110,100,32,97, + 32,109,111,100,117,108,101,39,115,32,115,112,101,99,46,78, + 122,53,115,121,115,46,109,101,116,97,95,112,97,116,104,32, + 105,115,32,78,111,110,101,44,32,80,121,116,104,111,110,32, + 105,115,32,108,105,107,101,108,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,18,0,0,0,218,9,109,101,116,97,95,112,97,116, + 104,114,83,0,0,0,114,95,0,0,0,114,96,0,0,0, + 114,163,0,0,0,114,99,0,0,0,114,189,0,0,0,114, + 177,0,0,0,114,2,0,0,0,114,200,0,0,0,114,113, + 0,0,0,41,10,114,20,0,0,0,114,175,0,0,0,114, + 176,0,0,0,114,201,0,0,0,90,9,105,115,95,114,101, + 108,111,97,100,114,199,0,0,0,114,177,0,0,0,114,103, + 0,0,0,114,104,0,0,0,114,113,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,10,95,102, + 105,110,100,95,115,112,101,99,152,3,0,0,115,56,0,0, + 0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8, + 1,2,1,10,1,12,1,12,1,8,1,22,1,42,2,8, + 1,18,2,10,1,2,1,10,1,12,1,14,4,10,2,8, + 1,8,2,8,2,4,2,255,128,114,202,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, + 0,0,0,67,0,0,0,115,110,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,0,114,44, + 116,5,100,3,131,1,130,1,124,2,100,2,107,4,114,82, + 116,0,124,1,116,1,131,2,115,70,116,2,100,4,131,1, + 130,1,124,1,115,82,116,6,100,5,131,1,130,1,124,0, + 115,106,124,2,100,2,107,2,114,102,116,5,100,6,131,1, + 130,1,100,7,83,0,100,7,83,0,41,8,122,28,86,101, + 114,105,102,121,32,97,114,103,117,109,101,110,116,115,32,97, + 114,101,32,34,115,97,110,101,34,46,122,31,109,111,100,117, + 108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32, + 115,116,114,44,32,110,111,116,32,123,125,114,25,0,0,0, + 122,18,108,101,118,101,108,32,109,117,115,116,32,98,101,32, + 62,61,32,48,122,31,95,95,112,97,99,107,97,103,101,95, + 95,32,110,111,116,32,115,101,116,32,116,111,32,97,32,115, + 116,114,105,110,103,122,54,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,119,105,116,104,32,110,111,32,107,110,111,119,110,32,112, + 97,114,101,110,116,32,112,97,99,107,97,103,101,122,17,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, + 49,0,0,0,114,3,0,0,0,218,10,86,97,108,117,101, + 69,114,114,111,114,114,83,0,0,0,169,3,114,20,0,0, + 0,114,196,0,0,0,114,197,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,13,95,115,97,110, + 105,116,121,95,99,104,101,99,107,199,3,0,0,115,26,0, + 0,0,10,2,18,1,8,1,8,1,8,1,10,1,8,1, + 4,1,8,1,12,2,8,1,8,255,255,128,114,208,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,0,0,0,0,9,0,0,0,8,0,0,0,67,0, + 0,0,115,20,1,0,0,100,0,125,2,124,0,160,0,100, + 1,161,1,100,2,25,0,125,3,124,3,114,128,124,3,116, + 1,106,2,118,1,114,42,116,3,124,1,124,3,131,2,1, + 0,124,0,116,1,106,2,118,0,114,62,116,1,106,2,124, + 0,25,0,83,0,116,1,106,2,124,3,25,0,125,4,122, + 10,124,4,106,4,125,2,87,0,110,44,4,0,116,5,121, + 126,1,0,1,0,1,0,116,6,100,3,23,0,160,7,124, + 0,124,3,161,2,125,5,116,8,124,5,124,0,100,4,141, + 2,100,0,130,2,48,0,116,9,124,0,124,2,131,2,125, + 6,124,6,100,0,117,0,114,164,116,8,116,6,160,7,124, + 0,161,1,124,0,100,4,141,2,130,1,116,10,124,6,131, + 1,125,7,124,3,144,1,114,16,116,1,106,2,124,3,25, + 0,125,4,124,0,160,0,100,1,161,1,100,5,25,0,125, + 8,122,18,116,11,124,4,124,8,124,7,131,3,1,0,87, + 0,124,7,83,0,4,0,116,5,144,1,121,14,1,0,1, + 0,1,0,100,6,124,3,155,2,100,7,124,8,155,2,157, + 4,125,5,116,12,160,13,124,5,116,14,161,2,1,0,89, + 0,124,7,83,0,48,0,124,7,83,0,41,8,78,114,135, + 0,0,0,114,25,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,19,0,0,0,233,2,0,0,0,122,27,67,97,110, + 110,111,116,32,115,101,116,32,97,110,32,97,116,116,114,105, + 98,117,116,101,32,111,110,32,122,18,32,102,111,114,32,99, + 104,105,108,100,32,109,111,100,117,108,101,32,41,15,114,136, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,71,0, + 0,0,114,148,0,0,0,114,2,0,0,0,218,8,95,69, + 82,82,95,77,83,71,114,49,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,202,0,0,0,114,167,0,0,0,114,12,0,0,0,114, + 95,0,0,0,114,96,0,0,0,114,163,0,0,0,41,9, + 114,20,0,0,0,218,7,105,109,112,111,114,116,95,114,175, + 0,0,0,114,137,0,0,0,90,13,112,97,114,101,110,116, + 95,109,111,100,117,108,101,114,102,0,0,0,114,103,0,0, + 0,114,104,0,0,0,90,5,99,104,105,108,100,114,5,0, + 0,0,114,5,0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1, + 14,1,4,1,10,1,10,1,10,2,10,1,10,1,2,1, + 10,1,12,1,16,1,16,1,10,1,8,1,18,1,8,2, + 6,1,10,2,14,1,2,1,14,1,4,4,14,253,16,1, + 14,1,4,1,2,255,4,1,255,128,114,213,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, + 0,131,1,143,62,1,0,116,1,106,2,160,3,124,0,116, + 4,161,2,125,2,124,2,116,4,117,0,114,56,116,5,124, + 0,124,1,131,2,87,0,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,87,0,100,1,4,0,4,0,131,3,1, + 0,110,16,49,0,115,76,48,0,1,0,1,0,1,0,89, + 0,1,0,124,2,100,1,117,0,114,116,100,2,160,6,124, + 0,161,1,125,3,116,7,124,3,124,0,100,3,141,2,130, + 1,116,8,124,0,131,1,1,0,124,2,83,0,41,4,122, + 25,70,105,110,100,32,97,110,100,32,108,111,97,100,32,116, + 104,101,32,109,111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, + 218,14,95,78,69,69,68,83,95,76,79,65,68,73,78,71, + 114,213,0,0,0,114,49,0,0,0,114,211,0,0,0,114, + 69,0,0,0,41,4,114,20,0,0,0,114,212,0,0,0, + 114,104,0,0,0,114,79,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,14,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,253,3,0,0,115,24,0, + 0,0,10,2,14,1,8,1,54,1,8,2,4,1,2,1, + 4,255,12,2,8,2,4,1,255,128,114,215,0,0,0,114, + 25,0,0,0,99,3,0,0,0,0,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,3, + 125,0,116,2,124,0,116,3,131,2,83,0,41,3,97,50, + 1,0,0,73,109,112,111,114,116,32,97,110,100,32,114,101, + 116,117,114,110,32,116,104,101,32,109,111,100,117,108,101,32, + 98,97,115,101,100,32,111,110,32,105,116,115,32,110,97,109, + 101,44,32,116,104,101,32,112,97,99,107,97,103,101,32,116, + 104,101,32,99,97,108,108,32,105,115,10,32,32,32,32,98, + 101,105,110,103,32,109,97,100,101,32,102,114,111,109,44,32, + 97,110,100,32,116,104,101,32,108,101,118,101,108,32,97,100, + 106,117,115,116,109,101,110,116,46,10,10,32,32,32,32,84, + 104,105,115,32,102,117,110,99,116,105,111,110,32,114,101,112, + 114,101,115,101,110,116,115,32,116,104,101,32,103,114,101,97, + 116,101,115,116,32,99,111,109,109,111,110,32,100,101,110,111, + 109,105,110,97,116,111,114,32,111,102,32,102,117,110,99,116, + 105,111,110,97,108,105,116,121,10,32,32,32,32,98,101,116, + 119,101,101,110,32,105,109,112,111,114,116,95,109,111,100,117, + 108,101,32,97,110,100,32,95,95,105,109,112,111,114,116,95, + 95,46,32,84,104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0, + 0,0,114,198,0,0,0,114,215,0,0,0,218,11,95,103, + 99,100,95,105,109,112,111,114,116,114,207,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,216,0, + 0,0,13,4,0,0,115,10,0,0,0,12,9,8,1,12, + 1,10,1,255,128,114,216,0,0,0,169,1,218,9,114,101, + 99,117,114,115,105,118,101,99,3,0,0,0,0,0,0,0, + 1,0,0,0,8,0,0,0,11,0,0,0,67,0,0,0, + 115,216,0,0,0,124,1,68,0,93,204,125,4,116,0,124, + 4,116,1,131,2,115,64,124,3,114,34,124,0,106,2,100, + 1,23,0,125,5,110,4,100,2,125,5,116,3,100,3,124, + 5,155,0,100,4,116,4,124,4,131,1,106,2,155,0,157, + 4,131,1,130,1,124,4,100,5,107,2,114,106,124,3,115, + 4,116,5,124,0,100,6,131,2,114,4,116,6,124,0,124, + 0,106,7,124,2,100,7,100,8,141,4,1,0,113,4,116, + 5,124,0,124,4,131,2,115,4,100,9,160,8,124,0,106, + 2,124,4,161,2,125,6,122,14,116,9,124,2,124,6,131, + 2,1,0,87,0,113,4,4,0,116,10,121,214,1,0,125, + 7,1,0,122,42,124,7,106,11,124,6,107,2,114,200,116, + 12,106,13,160,14,124,6,116,15,161,2,100,10,117,1,114, + 200,87,0,89,0,100,10,125,7,126,7,113,4,130,0,100, + 10,125,7,126,7,48,0,124,0,83,0,48,0,41,11,122, + 238,70,105,103,117,114,101,32,111,117,116,32,119,104,97,116, + 32,95,95,105,109,112,111,114,116,95,95,32,115,104,111,117, + 108,100,32,114,101,116,117,114,110,46,10,10,32,32,32,32, + 84,104,101,32,105,109,112,111,114,116,95,32,112,97,114,97, + 109,101,116,101,114,32,105,115,32,97,32,99,97,108,108,97, + 98,108,101,32,119,104,105,99,104,32,116,97,107,101,115,32, + 116,104,101,32,110,97,109,101,32,111,102,32,109,111,100,117, + 108,101,32,116,111,10,32,32,32,32,105,109,112,111,114,116, + 46,32,73,116,32,105,115,32,114,101,113,117,105,114,101,100, + 32,116,111,32,100,101,99,111,117,112,108,101,32,116,104,101, + 32,102,117,110,99,116,105,111,110,32,102,114,111,109,32,97, + 115,115,117,109,105,110,103,32,105,109,112,111,114,116,108,105, + 98,39,115,10,32,32,32,32,105,109,112,111,114,116,32,105, + 109,112,108,101,109,101,110,116,97,116,105,111,110,32,105,115, + 32,100,101,115,105,114,101,100,46,10,10,32,32,32,32,122, + 8,46,95,95,97,108,108,95,95,122,13,96,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,217,0,0,0,114,193,0,0,0,78,41,16, + 114,203,0,0,0,114,204,0,0,0,114,9,0,0,0,114, + 205,0,0,0,114,3,0,0,0,114,11,0,0,0,218,16, + 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116, + 114,220,0,0,0,114,49,0,0,0,114,71,0,0,0,114, + 211,0,0,0,114,20,0,0,0,114,18,0,0,0,114,99, + 0,0,0,114,38,0,0,0,114,214,0,0,0,41,8,114, + 104,0,0,0,218,8,102,114,111,109,108,105,115,116,114,212, + 0,0,0,114,218,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,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,221,0,0,0,28,4,0,0,115,54,0,0,0,8, + 10,10,1,4,1,12,1,4,2,10,1,8,1,8,255,8, + 2,14,1,10,1,2,1,8,255,10,2,14,1,2,1,14, + 1,14,1,10,4,16,1,2,255,12,2,2,1,8,128,4, + 1,2,248,255,128,114,221,0,0,0,99,1,0,0,0,0, + 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, + 117,1,114,82,124,2,100,3,117,1,114,78,124,1,124,2, + 106,1,107,3,114,78,116,2,106,3,100,4,124,1,155,2, + 100,5,124,2,106,1,155,2,100,6,157,5,116,4,100,7, + 100,8,141,3,1,0,124,1,83,0,124,2,100,3,117,1, + 114,96,124,2,106,1,83,0,116,2,106,3,100,9,116,4, + 100,7,100,8,141,3,1,0,124,0,100,10,25,0,125,1, + 100,11,124,0,118,1,114,142,124,1,160,5,100,12,161,1, + 100,13,25,0,125,1,124,1,83,0,41,14,122,167,67,97, + 108,99,117,108,97,116,101,32,119,104,97,116,32,95,95,112, + 97,99,107,97,103,101,95,95,32,115,104,111,117,108,100,32, + 98,101,46,10,10,32,32,32,32,95,95,112,97,99,107,97, + 103,101,95,95,32,105,115,32,110,111,116,32,103,117,97,114, + 97,110,116,101,101,100,32,116,111,32,98,101,32,100,101,102, + 105,110,101,100,32,111,114,32,99,111,117,108,100,32,98,101, + 32,115,101,116,32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89, + 99,97,110,39,116,32,114,101,115,111,108,118,101,32,112,97, + 99,107,97,103,101,32,102,114,111,109,32,95,95,115,112,101, + 99,95,95,32,111,114,32,95,95,112,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,9,0,0,0,114,148, + 0,0,0,114,135,0,0,0,114,25,0,0,0,41,6,114, + 38,0,0,0,114,137,0,0,0,114,95,0,0,0,114,96, + 0,0,0,114,163,0,0,0,114,136,0,0,0,41,3,218, + 7,103,108,111,98,97,108,115,114,196,0,0,0,114,103,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,17,95,99,97,108,99,95,95,95,112,97,99,107,97, + 103,101,95,95,65,4,0,0,115,44,0,0,0,10,7,10, + 1,8,1,18,1,6,1,2,1,4,255,4,1,6,255,4, + 2,6,254,4,3,8,1,6,1,6,2,4,2,6,254,8, + 3,8,1,14,1,4,1,255,128,114,227,0,0,0,114,5, + 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,5,0,0,0,67,0,0,0,115,174,0,0, + 0,124,4,100,1,107,2,114,18,116,0,124,0,131,1,125, + 5,110,36,124,1,100,2,117,1,114,30,124,1,110,2,105, + 0,125,6,116,1,124,6,131,1,125,7,116,0,124,0,124, + 7,124,4,131,3,125,5,124,3,115,148,124,4,100,1,107, + 2,114,84,116,0,124,0,160,2,100,3,161,1,100,1,25, + 0,131,1,83,0,124,0,115,92,124,5,83,0,116,3,124, + 0,131,1,116,3,124,0,160,2,100,3,161,1,100,1,25, + 0,131,1,24,0,125,8,116,4,106,5,124,5,106,6,100, + 2,116,3,124,5,106,6,131,1,124,8,24,0,133,2,25, + 0,25,0,83,0,116,7,124,5,100,4,131,2,114,170,116, + 8,124,5,124,3,116,0,131,3,83,0,124,5,83,0,41, + 5,97,215,1,0,0,73,109,112,111,114,116,32,97,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,84,104,101,32, + 39,103,108,111,98,97,108,115,39,32,97,114,103,117,109,101, + 110,116,32,105,115,32,117,115,101,100,32,116,111,32,105,110, + 102,101,114,32,119,104,101,114,101,32,116,104,101,32,105,109, + 112,111,114,116,32,105,115,32,111,99,99,117,114,114,105,110, + 103,32,102,114,111,109,10,32,32,32,32,116,111,32,104,97, + 110,100,108,101,32,114,101,108,97,116,105,118,101,32,105,109, + 112,111,114,116,115,46,32,84,104,101,32,39,108,111,99,97, + 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 105,103,110,111,114,101,100,46,32,84,104,101,10,32,32,32, + 32,39,102,114,111,109,108,105,115,116,39,32,97,114,103,117, + 109,101,110,116,32,115,112,101,99,105,102,105,101,115,32,119, + 104,97,116,32,115,104,111,117,108,100,32,101,120,105,115,116, + 32,97,115,32,97,116,116,114,105,98,117,116,101,115,32,111, + 110,32,116,104,101,32,109,111,100,117,108,101,10,32,32,32, + 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,32, + 40,101,46,103,46,32,96,96,102,114,111,109,32,109,111,100, + 117,108,101,32,105,109,112,111,114,116,32,60,102,114,111,109, + 108,105,115,116,62,96,96,41,46,32,32,84,104,101,32,39, + 108,101,118,101,108,39,10,32,32,32,32,97,114,103,117,109, + 101,110,116,32,114,101,112,114,101,115,101,110,116,115,32,116, + 104,101,32,112,97,99,107,97,103,101,32,108,111,99,97,116, + 105,111,110,32,116,111,32,105,109,112,111,114,116,32,102,114, + 111,109,32,105,110,32,97,32,114,101,108,97,116,105,118,101, + 10,32,32,32,32,105,109,112,111,114,116,32,40,101,46,103, + 46,32,96,96,102,114,111,109,32,46,46,112,107,103,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,25,0, + 0,0,78,114,135,0,0,0,114,148,0,0,0,41,9,114, + 216,0,0,0,114,227,0,0,0,218,9,112,97,114,116,105, + 116,105,111,110,114,195,0,0,0,114,18,0,0,0,114,99, + 0,0,0,114,9,0,0,0,114,11,0,0,0,114,221,0, + 0,0,41,9,114,20,0,0,0,114,226,0,0,0,218,6, + 108,111,99,97,108,115,114,222,0,0,0,114,197,0,0,0, + 114,104,0,0,0,90,8,103,108,111,98,97,108,115,95,114, + 196,0,0,0,90,7,99,117,116,95,111,102,102,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,10,95,95, + 105,109,112,111,114,116,95,95,92,4,0,0,115,32,0,0, + 0,8,11,10,1,16,2,8,1,12,1,4,1,8,3,18, + 1,4,1,4,1,26,4,30,3,10,1,12,1,4,2,255, + 128,114,230,0,0,0,99,1,0,0,0,0,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,106,2,160,3, - 116,5,161,1,1,0,100,1,83,0,41,2,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,235,0,0,0,114,18,0,0,0,114,201,0,0,0, - 114,126,0,0,0,114,169,0,0,0,114,184,0,0,0,41, - 2,114,233,0,0,0,114,234,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,95,105,110,115, - 116,97,108,108,171,4,0,0,115,8,0,0,0,10,2,12, - 2,16,1,255,128,114,236,0,0,0,99,0,0,0,0,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,1,0,100,2,83,0,41,3,122,57,73,110,115,116, - 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, - 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, - 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, - 99,99,101,115,115,114,25,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,133,0,0,0,114,236, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, - 0,0,41,1,114,237,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,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,179,4,0,0,115,8,0,0,0,8,3, - 4,1,20,1,255,128,114,238,0,0,0,41,2,78,78,41, - 1,78,41,2,78,114,25,0,0,0,41,4,78,78,114,5, - 0,0,0,114,25,0,0,0,41,54,114,10,0,0,0,114, - 7,0,0,0,114,26,0,0,0,114,95,0,0,0,114,68, - 0,0,0,114,133,0,0,0,114,17,0,0,0,114,21,0, - 0,0,114,63,0,0,0,114,37,0,0,0,114,47,0,0, - 0,114,22,0,0,0,114,23,0,0,0,114,53,0,0,0, - 114,54,0,0,0,114,57,0,0,0,114,69,0,0,0,114, - 71,0,0,0,114,80,0,0,0,114,90,0,0,0,114,94, - 0,0,0,114,105,0,0,0,114,118,0,0,0,114,119,0, - 0,0,114,98,0,0,0,114,149,0,0,0,114,155,0,0, - 0,114,159,0,0,0,114,114,0,0,0,114,100,0,0,0, - 114,166,0,0,0,114,167,0,0,0,114,101,0,0,0,114, - 169,0,0,0,114,184,0,0,0,114,189,0,0,0,114,198, - 0,0,0,114,200,0,0,0,114,202,0,0,0,114,208,0, - 0,0,90,15,95,69,82,82,95,77,83,71,95,80,82,69, - 70,73,88,114,210,0,0,0,114,213,0,0,0,218,6,111, - 98,106,101,99,116,114,214,0,0,0,114,215,0,0,0,114, - 216,0,0,0,114,221,0,0,0,114,227,0,0,0,114,230, - 0,0,0,114,231,0,0,0,114,235,0,0,0,114,236,0, - 0,0,114,238,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,60,109,111, - 100,117,108,101,62,1,0,0,0,115,106,0,0,0,4,0, - 8,22,4,9,4,1,4,1,4,3,8,3,8,8,4,8, - 4,2,16,3,14,4,14,77,14,21,8,16,8,37,8,17, - 14,11,8,8,8,11,8,12,8,19,14,36,16,101,10,26, - 14,45,8,72,8,17,8,17,8,30,8,36,8,45,14,15, - 14,75,14,80,8,13,8,9,10,9,8,47,4,16,8,1, - 8,2,6,32,8,3,10,16,14,15,8,37,10,27,8,37, - 8,7,8,35,12,8,255,128, + 38,0,0,0,116,0,160,1,124,0,161,1,125,1,124,1, + 100,0,117,0,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,169,0,0,0,114, + 177,0,0,0,114,83,0,0,0,114,167,0,0,0,41,2, + 114,20,0,0,0,114,103,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, + 116,105,110,95,102,114,111,109,95,110,97,109,101,129,4,0, + 0,115,10,0,0,0,10,1,8,1,12,1,8,1,255,128, + 114,231,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,10,0,0,0,5,0,0,0,67,0,0,0,115,164, + 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,0,68,0,93,70,92, + 2,125,3,125,4,116,5,124,4,124,2,131,2,114,26,124, + 3,116,1,106,6,118,0,114,60,116,7,125,5,110,16,116, + 0,160,8,124,3,161,1,114,26,116,9,125,5,110,0,116, + 10,124,4,124,5,131,2,125,6,116,11,124,6,124,4,131, + 2,1,0,113,26,116,1,106,3,116,12,25,0,125,7,100, + 1,68,0,93,46,125,8,124,8,116,1,106,3,118,1,114, + 136,116,13,124,8,131,1,125,9,110,10,116,1,106,3,124, + 8,25,0,125,9,116,14,124,7,124,8,124,9,131,3,1, + 0,113,112,100,2,83,0,41,3,122,250,83,101,116,117,112, + 32,105,109,112,111,114,116,108,105,98,32,98,121,32,105,109, + 112,111,114,116,105,110,103,32,110,101,101,100,101,100,32,98, + 117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,32, + 97,110,100,32,105,110,106,101,99,116,105,110,103,32,116,104, + 101,109,10,32,32,32,32,105,110,116,111,32,116,104,101,32, + 103,108,111,98,97,108,32,110,97,109,101,115,112,97,99,101, + 46,10,10,32,32,32,32,65,115,32,115,121,115,32,105,115, + 32,110,101,101,100,101,100,32,102,111,114,32,115,121,115,46, + 109,111,100,117,108,101,115,32,97,99,99,101,115,115,32,97, + 110,100,32,95,105,109,112,32,105,115,32,110,101,101,100,101, + 100,32,116,111,32,108,111,97,100,32,98,117,105,108,116,45, + 105,110,10,32,32,32,32,109,111,100,117,108,101,115,44,32, + 116,104,111,115,101,32,116,119,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,26,0,0,0,114,95,0,0, + 0,114,68,0,0,0,78,41,15,114,61,0,0,0,114,18, + 0,0,0,114,3,0,0,0,114,99,0,0,0,218,5,105, + 116,101,109,115,114,203,0,0,0,114,82,0,0,0,114,169, + 0,0,0,114,92,0,0,0,114,184,0,0,0,114,149,0, + 0,0,114,155,0,0,0,114,9,0,0,0,114,231,0,0, + 0,114,12,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,20, + 0,0,0,114,104,0,0,0,114,116,0,0,0,114,103,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,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,6,95,115, + 101,116,117,112,136,4,0,0,115,40,0,0,0,4,9,4, + 1,8,3,18,1,10,1,10,1,6,1,10,1,6,1,10, + 3,10,1,2,128,10,3,8,1,10,1,10,1,10,2,14, + 1,4,251,255,128,114,235,0,0,0,99,2,0,0,0,0, + 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, + 106,2,160,3,116,5,161,1,1,0,100,1,83,0,41,2, + 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,235,0,0,0,114,18,0,0,0,114, + 201,0,0,0,114,126,0,0,0,114,169,0,0,0,114,184, + 0,0,0,41,2,114,233,0,0,0,114,234,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, + 95,105,110,115,116,97,108,108,171,4,0,0,115,8,0,0, + 0,10,2,12,2,16,1,255,128,114,236,0,0,0,99,0, + 0,0,0,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,1,0,100,2,83,0,41,3,122,57, + 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, + 115,32,116,104,97,116,32,114,101,113,117,105,114,101,32,101, + 120,116,101,114,110,97,108,32,102,105,108,101,115,121,115,116, + 101,109,32,97,99,99,101,115,115,114,25,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,133,0, + 0,0,114,236,0,0,0,114,18,0,0,0,114,99,0,0, + 0,114,9,0,0,0,41,1,114,237,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,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,179,4,0,0,115,8,0, + 0,0,8,3,4,1,20,1,255,128,114,238,0,0,0,41, + 2,78,78,41,1,78,41,2,78,114,25,0,0,0,41,4, + 78,78,114,5,0,0,0,114,25,0,0,0,41,54,114,10, + 0,0,0,114,7,0,0,0,114,26,0,0,0,114,95,0, + 0,0,114,68,0,0,0,114,133,0,0,0,114,17,0,0, + 0,114,21,0,0,0,114,63,0,0,0,114,37,0,0,0, + 114,47,0,0,0,114,22,0,0,0,114,23,0,0,0,114, + 53,0,0,0,114,54,0,0,0,114,57,0,0,0,114,69, + 0,0,0,114,71,0,0,0,114,80,0,0,0,114,90,0, + 0,0,114,94,0,0,0,114,105,0,0,0,114,118,0,0, + 0,114,119,0,0,0,114,98,0,0,0,114,149,0,0,0, + 114,155,0,0,0,114,159,0,0,0,114,114,0,0,0,114, + 100,0,0,0,114,166,0,0,0,114,167,0,0,0,114,101, + 0,0,0,114,169,0,0,0,114,184,0,0,0,114,189,0, + 0,0,114,198,0,0,0,114,200,0,0,0,114,202,0,0, + 0,114,208,0,0,0,90,15,95,69,82,82,95,77,83,71, + 95,80,82,69,70,73,88,114,210,0,0,0,114,213,0,0, + 0,218,6,111,98,106,101,99,116,114,214,0,0,0,114,215, + 0,0,0,114,216,0,0,0,114,221,0,0,0,114,227,0, + 0,0,114,230,0,0,0,114,231,0,0,0,114,235,0,0, + 0,114,236,0,0,0,114,238,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 8,60,109,111,100,117,108,101,62,1,0,0,0,115,106,0, + 0,0,4,0,8,22,4,9,4,1,4,1,4,3,8,3, + 8,8,4,8,4,2,16,3,14,4,14,77,14,21,8,16, + 8,37,8,17,14,11,8,8,8,11,8,12,8,19,14,36, + 16,101,10,26,14,45,8,72,8,17,8,17,8,30,8,36, + 8,45,14,15,14,75,14,80,8,13,8,9,10,9,8,47, + 4,16,8,1,8,2,6,32,8,3,10,16,14,15,8,37, + 10,27,8,37,8,7,8,35,12,8,255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 58dc10b6f35bc..a5da2a92df474 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -632,2037 +632,2037 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,6,117,112,100,97,116,101,41,3,90,3,110,101,119,90, 3,111,108,100,114,75,0,0,0,114,7,0,0,0,114,7, 0,0,0,114,8,0,0,0,218,5,95,119,114,97,112,3, - 2,0,0,115,10,0,0,0,8,1,10,1,20,1,18,1, - 255,128,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,2,218,10,95,98,111,111,116,115,116,114,97,112,114, - 138,0,0,0,41,3,114,127,0,0,0,114,128,0,0,0, - 114,138,0,0,0,114,7,0,0,0,114,126,0,0,0,114, - 8,0,0,0,218,11,95,99,104,101,99,107,95,110,97,109, - 101,238,1,0,0,115,14,0,0,0,14,8,8,10,8,1, - 8,2,10,6,4,1,255,128,114,140,0,0,0,99,2,0, - 0,0,0,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,117,0,114, - 56,116,1,124,3,131,1,114,56,100,2,125,4,116,2,160, - 3,124,4,160,4,124,3,100,3,25,0,161,1,116,5,161, - 2,1,0,124,2,83,0,41,4,122,155,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,32, - 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,32,98,121,32,100,101,108,101, - 103,97,116,105,110,103,32,116,111,10,32,32,32,32,115,101, - 108,102,46,102,105,110,100,95,108,111,97,100,101,114,40,41, - 46,10,10,32,32,32,32,84,104,105,115,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,105,110,32,102,97,118,111,114,32,111,102,32,102,105,110, - 100,101,114,46,102,105,110,100,95,115,112,101,99,40,41,46, - 10,10,32,32,32,32,78,122,44,78,111,116,32,105,109,112, - 111,114,116,105,110,103,32,100,105,114,101,99,116,111,114,121, - 32,123,125,58,32,109,105,115,115,105,110,103,32,95,95,105, - 110,105,116,95,95,114,0,0,0,0,41,6,218,11,102,105, - 110,100,95,108,111,97,100,101,114,114,4,0,0,0,114,81, - 0,0,0,114,82,0,0,0,114,70,0,0,0,218,13,73, - 109,112,111,114,116,87,97,114,110,105,110,103,41,5,114,123, - 0,0,0,218,8,102,117,108,108,110,97,109,101,218,6,108, - 111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218, - 3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108, - 101,95,115,104,105,109,13,2,0,0,115,12,0,0,0,14, - 10,16,1,4,1,22,1,4,1,255,128,114,147,0,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,4,0,0,0,67,0,0,0,115,166,0,0,0,124,0, - 100,1,100,2,133,2,25,0,125,3,124,3,116,0,107,3, - 114,64,100,3,124,1,155,2,100,4,124,3,155,2,157,4, - 125,4,116,1,160,2,100,5,124,4,161,2,1,0,116,3, - 124,4,102,1,105,0,124,2,164,1,142,1,130,1,116,4, - 124,0,131,1,100,6,107,0,114,106,100,7,124,1,155,2, - 157,2,125,4,116,1,160,2,100,5,124,4,161,2,1,0, - 116,5,124,4,131,1,130,1,116,6,124,0,100,2,100,8, - 133,2,25,0,131,1,125,5,124,5,100,9,64,0,114,162, - 100,10,124,5,155,2,100,11,124,1,155,2,157,4,125,4, + 2,0,0,115,12,0,0,0,8,1,10,1,18,1,2,128, + 18,1,255,128,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,2,218,10,95,98,111,111,116,115,116,114,97, + 112,114,138,0,0,0,41,3,114,127,0,0,0,114,128,0, + 0,0,114,138,0,0,0,114,7,0,0,0,114,126,0,0, + 0,114,8,0,0,0,218,11,95,99,104,101,99,107,95,110, + 97,109,101,238,1,0,0,115,14,0,0,0,14,8,8,10, + 8,1,8,2,10,6,4,1,255,128,114,140,0,0,0,99, + 2,0,0,0,0,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,117, + 0,114,56,116,1,124,3,131,1,114,56,100,2,125,4,116, + 2,160,3,124,4,160,4,124,3,100,3,25,0,161,1,116, + 5,161,2,1,0,124,2,83,0,41,4,122,155,84,114,121, + 32,116,111,32,102,105,110,100,32,97,32,108,111,97,100,101, + 114,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,117,108,101,32,98,121,32,100,101, + 108,101,103,97,116,105,110,103,32,116,111,10,32,32,32,32, + 115,101,108,102,46,102,105,110,100,95,108,111,97,100,101,114, + 40,41,46,10,10,32,32,32,32,84,104,105,115,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,105,110,32,102,97,118,111,114,32,111,102,32,102, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,40, + 41,46,10,10,32,32,32,32,78,122,44,78,111,116,32,105, + 109,112,111,114,116,105,110,103,32,100,105,114,101,99,116,111, + 114,121,32,123,125,58,32,109,105,115,115,105,110,103,32,95, + 95,105,110,105,116,95,95,114,0,0,0,0,41,6,218,11, + 102,105,110,100,95,108,111,97,100,101,114,114,4,0,0,0, + 114,81,0,0,0,114,82,0,0,0,114,70,0,0,0,218, + 13,73,109,112,111,114,116,87,97,114,110,105,110,103,41,5, + 114,123,0,0,0,218,8,102,117,108,108,110,97,109,101,218, + 6,108,111,97,100,101,114,218,8,112,111,114,116,105,111,110, + 115,218,3,109,115,103,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,17,95,102,105,110,100,95,109,111,100, + 117,108,101,95,115,104,105,109,13,2,0,0,115,12,0,0, + 0,14,10,16,1,4,1,22,1,4,1,255,128,114,147,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,4,0,0,0,67,0,0,0,115,166,0,0,0, + 124,0,100,1,100,2,133,2,25,0,125,3,124,3,116,0, + 107,3,114,64,100,3,124,1,155,2,100,4,124,3,155,2, + 157,4,125,4,116,1,160,2,100,5,124,4,161,2,1,0, 116,3,124,4,102,1,105,0,124,2,164,1,142,1,130,1, - 124,5,83,0,41,12,97,84,2,0,0,80,101,114,102,111, - 114,109,32,98,97,115,105,99,32,118,97,108,105,100,105,116, - 121,32,99,104,101,99,107,105,110,103,32,111,102,32,97,32, - 112,121,99,32,104,101,97,100,101,114,32,97,110,100,32,114, - 101,116,117,114,110,32,116,104,101,32,102,108,97,103,115,32, - 102,105,101,108,100,44,10,32,32,32,32,119,104,105,99,104, - 32,100,101,116,101,114,109,105,110,101,115,32,104,111,119,32, - 116,104,101,32,112,121,99,32,115,104,111,117,108,100,32,98, - 101,32,102,117,114,116,104,101,114,32,118,97,108,105,100,97, - 116,101,100,32,97,103,97,105,110,115,116,32,116,104,101,32, - 115,111,117,114,99,101,46,10,10,32,32,32,32,42,100,97, - 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, - 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, - 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, - 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, - 101,10,32,32,32,32,114,101,113,117,105,114,101,100,44,32, - 116,104,111,117,103,104,46,41,10,10,32,32,32,32,42,110, - 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, - 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, - 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, - 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, - 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, - 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, - 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, - 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, - 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, - 98,117,103,103,105,110,103,46,10,10,32,32,32,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,32,119,104,101,110,32,116,104,101,32,109,97,103, - 105,99,32,110,117,109,98,101,114,32,105,115,32,105,110,99, - 111,114,114,101,99,116,32,111,114,32,119,104,101,110,32,116, - 104,101,32,102,108,97,103,115,10,32,32,32,32,102,105,101, - 108,100,32,105,115,32,105,110,118,97,108,105,100,46,32,69, - 79,70,69,114,114,111,114,32,105,115,32,114,97,105,115,101, - 100,32,119,104,101,110,32,116,104,101,32,100,97,116,97,32, - 105,115,32,102,111,117,110,100,32,116,111,32,98,101,32,116, - 114,117,110,99,97,116,101,100,46,10,10,32,32,32,32,78, - 114,28,0,0,0,122,20,98,97,100,32,109,97,103,105,99, - 32,110,117,109,98,101,114,32,105,110,32,122,2,58,32,250, - 2,123,125,233,16,0,0,0,122,40,114,101,97,99,104,101, - 100,32,69,79,70,32,119,104,105,108,101,32,114,101,97,100, - 105,110,103,32,112,121,99,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,139,0,0,0,218,16,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,114,122,0,0,0,114,4, - 0,0,0,218,8,69,79,70,69,114,114,111,114,114,38,0, - 0,0,41,6,114,37,0,0,0,114,121,0,0,0,218,11, - 101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103, - 105,99,114,98,0,0,0,114,16,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,13,95,99,108, - 97,115,115,105,102,121,95,112,121,99,30,2,0,0,115,30, - 0,0,0,12,16,8,1,16,1,12,1,16,1,12,1,10, - 1,12,1,8,1,16,1,8,2,16,1,16,1,4,1,255, - 128,114,156,0,0,0,99,5,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, - 124,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,62,100,4,124,3, - 155,2,157,2,125,5,116,1,160,2,100,5,124,5,161,2, - 1,0,116,3,124,5,102,1,105,0,124,4,164,1,142,1, - 130,1,124,2,100,6,117,1,114,120,116,0,124,0,100,2, - 100,7,133,2,25,0,131,1,124,2,100,3,64,0,107,3, - 114,116,116,3,100,4,124,3,155,2,157,2,102,1,105,0, - 124,4,164,1,142,1,130,1,100,6,83,0,100,6,83,0, - 41,8,97,7,2,0,0,86,97,108,105,100,97,116,101,32, - 97,32,112,121,99,32,97,103,97,105,110,115,116,32,116,104, - 101,32,115,111,117,114,99,101,32,108,97,115,116,45,109,111, - 100,105,102,105,101,100,32,116,105,109,101,46,10,10,32,32, - 32,32,42,100,97,116,97,42,32,105,115,32,116,104,101,32, - 99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,32, - 112,121,99,32,102,105,108,101,46,32,40,79,110,108,121,32, - 116,104,101,32,102,105,114,115,116,32,49,54,32,98,121,116, - 101,115,32,97,114,101,10,32,32,32,32,114,101,113,117,105, - 114,101,100,46,41,10,10,32,32,32,32,42,115,111,117,114, - 99,101,95,109,116,105,109,101,42,32,105,115,32,116,104,101, - 32,108,97,115,116,32,109,111,100,105,102,105,101,100,32,116, - 105,109,101,115,116,97,109,112,32,111,102,32,116,104,101,32, - 115,111,117,114,99,101,32,102,105,108,101,46,10,10,32,32, - 32,32,42,115,111,117,114,99,101,95,115,105,122,101,42,32, - 105,115,32,78,111,110,101,32,111,114,32,116,104,101,32,115, - 105,122,101,32,111,102,32,116,104,101,32,115,111,117,114,99, - 101,32,102,105,108,101,32,105,110,32,98,121,116,101,115,46, - 10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,32, - 116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, - 109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,101, - 100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,10, - 32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,115, - 42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,114, - 121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,111, - 114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,97, - 105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,112, - 114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,46, - 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,150, - 0,0,0,233,12,0,0,0,114,27,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,148,0,0,0,78,114,149,0,0,0, - 41,4,114,38,0,0,0,114,139,0,0,0,114,153,0,0, - 0,114,122,0,0,0,41,6,114,37,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,121,0,0,0,114,155,0, - 0,0,114,98,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,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,63, - 2,0,0,115,20,0,0,0,24,19,10,1,12,1,16,1, - 8,1,22,1,2,255,22,2,8,254,255,128,114,160,0,0, - 0,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,67,0,0,0,115,42,0,0,0,124, - 0,100,1,100,2,133,2,25,0,124,1,107,3,114,38,116, - 0,100,3,124,2,155,2,157,2,102,1,105,0,124,3,164, - 1,142,1,130,1,100,4,83,0,41,5,97,243,1,0,0, - 86,97,108,105,100,97,116,101,32,97,32,104,97,115,104,45, - 98,97,115,101,100,32,112,121,99,32,98,121,32,99,104,101, - 99,107,105,110,103,32,116,104,101,32,114,101,97,108,32,115, - 111,117,114,99,101,32,104,97,115,104,32,97,103,97,105,110, - 115,116,32,116,104,101,32,111,110,101,32,105,110,10,32,32, - 32,32,116,104,101,32,112,121,99,32,104,101,97,100,101,114, - 46,10,10,32,32,32,32,42,100,97,116,97,42,32,105,115, - 32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102, - 32,116,104,101,32,112,121,99,32,102,105,108,101,46,32,40, - 79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,49, - 54,32,98,121,116,101,115,32,97,114,101,10,32,32,32,32, - 114,101,113,117,105,114,101,100,46,41,10,10,32,32,32,32, - 42,115,111,117,114,99,101,95,104,97,115,104,42,32,105,115, - 32,116,104,101,32,105,109,112,111,114,116,108,105,98,46,117, - 116,105,108,46,115,111,117,114,99,101,95,104,97,115,104,40, - 41,32,111,102,32,116,104,101,32,115,111,117,114,99,101,32, - 102,105,108,101,46,10,10,32,32,32,32,42,110,97,109,101, - 42,32,105,115,32,116,104,101,32,110,97,109,101,32,111,102, - 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, - 103,32,105,109,112,111,114,116,101,100,46,32,73,116,32,105, - 115,32,117,115,101,100,32,102,111,114,32,108,111,103,103,105, - 110,103,46,10,10,32,32,32,32,42,101,120,99,95,100,101, - 116,97,105,108,115,42,32,105,115,32,97,32,100,105,99,116, - 105,111,110,97,114,121,32,112,97,115,115,101,100,32,116,111, - 32,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, - 105,116,32,114,97,105,115,101,100,32,102,111,114,10,32,32, - 32,32,105,109,112,114,111,118,101,100,32,100,101,98,117,103, - 103,105,110,103,46,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,150,0,0,0,114,149,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,122,0,0,0,41,4,114,37,0,0,0,218,11,115,111, - 117,114,99,101,95,104,97,115,104,114,121,0,0,0,114,155, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,18,95,118,97,108,105,100,97,116,101,95,104,97, - 115,104,95,112,121,99,91,2,0,0,115,16,0,0,0,16, - 17,2,1,8,1,4,255,2,2,6,254,4,255,255,128,114, - 162,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,5,0,0,0,67,0,0,0,115,76,0, - 0,0,116,0,160,1,124,0,161,1,125,4,116,2,124,4, - 116,3,131,2,114,56,116,4,160,5,100,1,124,2,161,2, - 1,0,124,3,100,2,117,1,114,52,116,6,160,7,124,4, - 124,3,161,2,1,0,124,4,83,0,116,8,100,3,160,9, - 124,2,161,1,124,1,124,2,100,4,141,3,130,1,41,5, - 122,35,67,111,109,112,105,108,101,32,98,121,116,101,99,111, - 100,101,32,97,115,32,102,111,117,110,100,32,105,110,32,97, - 32,112,121,99,46,122,21,99,111,100,101,32,111,98,106,101, - 99,116,32,102,114,111,109,32,123,33,114,125,78,122,23,78, - 111,110,45,99,111,100,101,32,111,98,106,101,99,116,32,105, - 110,32,123,33,114,125,169,2,114,121,0,0,0,114,52,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,139,0,0, - 0,114,153,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,122, - 0,0,0,114,70,0,0,0,41,5,114,37,0,0,0,114, - 121,0,0,0,114,111,0,0,0,114,112,0,0,0,218,4, - 99,111,100,101,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,17,95,99,111,109,112,105,108,101,95,98,121, - 116,101,99,111,100,101,115,2,0,0,115,20,0,0,0,10, - 2,10,1,12,1,8,1,12,1,4,1,10,2,4,1,6, - 255,255,128,114,169,0,0,0,99,3,0,0,0,0,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,131,1,161,1,1,0,124,3,160,2, - 116,3,124,1,131,1,161,1,1,0,124,3,160,2,116,3, - 124,2,131,1,161,1,1,0,124,3,160,2,116,4,160,5, - 124,0,161,1,161,1,1,0,124,3,83,0,41,3,122,43, - 80,114,111,100,117,99,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,0,0,0,0, - 78,41,6,218,9,98,121,116,101,97,114,114,97,121,114,152, - 0,0,0,218,6,101,120,116,101,110,100,114,33,0,0,0, - 114,164,0,0,0,218,5,100,117,109,112,115,41,4,114,168, - 0,0,0,218,5,109,116,105,109,101,114,159,0,0,0,114, - 37,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 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,128,2,0,0,115, - 14,0,0,0,8,2,14,1,14,1,14,1,16,1,4,1, - 255,128,114,174,0,0,0,84,99,3,0,0,0,0,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,2,116,3, - 124,4,131,1,161,1,1,0,116,4,124,1,131,1,100,2, - 107,2,115,50,74,0,130,1,124,3,160,2,124,1,161,1, - 1,0,124,3,160,2,116,5,160,6,124,0,161,1,161,1, - 1,0,124,3,83,0,41,4,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,3,0,0,0,114,150,0,0,0,78,41,7,114,170,0, - 0,0,114,152,0,0,0,114,171,0,0,0,114,33,0,0, - 0,114,4,0,0,0,114,164,0,0,0,114,172,0,0,0, - 41,5,114,168,0,0,0,114,161,0,0,0,90,7,99,104, - 101,99,107,101,100,114,37,0,0,0,114,16,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,17, - 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, - 99,138,2,0,0,115,16,0,0,0,8,2,12,1,14,1, - 16,1,10,1,16,1,4,1,255,128,114,175,0,0,0,99, - 1,0,0,0,0,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,100, - 2,100,3,161,2,125,4,124,4,160,6,124,0,160,6,124, - 3,100,1,25,0,161,1,161,1,83,0,41,4,122,121,68, - 101,99,111,100,101,32,98,121,116,101,115,32,114,101,112,114, - 101,115,101,110,116,105,110,103,32,115,111,117,114,99,101,32, - 99,111,100,101,32,97,110,100,32,114,101,116,117,114,110,32, - 116,104,101,32,115,116,114,105,110,103,46,10,10,32,32,32, - 32,85,110,105,118,101,114,115,97,108,32,110,101,119,108,105, - 110,101,32,115,117,112,112,111,114,116,32,105,115,32,117,115, - 101,100,32,105,110,32,116,104,101,32,100,101,99,111,100,105, - 110,103,46,10,32,32,32,32,114,0,0,0,0,78,84,41, - 7,218,8,116,111,107,101,110,105,122,101,114,72,0,0,0, - 90,7,66,121,116,101,115,73,79,90,8,114,101,97,100,108, - 105,110,101,90,15,100,101,116,101,99,116,95,101,110,99,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,176,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,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,100, - 101,99,111,100,101,95,115,111,117,114,99,101,149,2,0,0, - 115,12,0,0,0,8,5,12,1,10,1,12,1,20,1,255, - 128,114,180,0,0,0,169,2,114,144,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,0,0, - 0,0,2,0,0,0,9,0,0,0,8,0,0,0,67,0, - 0,0,115,8,1,0,0,124,1,100,1,117,0,114,56,100, - 2,125,1,116,0,124,2,100,3,131,2,114,66,122,14,124, - 2,160,1,124,0,161,1,125,1,87,0,110,28,4,0,116, - 2,121,54,1,0,1,0,1,0,89,0,110,12,48,0,116, - 3,160,4,124,1,161,1,125,1,116,5,106,6,124,0,124, - 2,124,1,100,4,141,3,125,4,100,5,124,4,95,7,124, - 2,100,1,117,0,114,148,116,8,131,0,68,0,93,40,92, - 2,125,5,125,6,124,1,160,9,116,10,124,6,131,1,161, - 1,114,102,124,5,124,0,124,1,131,2,125,2,124,2,124, - 4,95,11,1,0,113,148,100,1,83,0,124,3,116,12,117, - 0,114,212,116,0,124,2,100,6,131,2,114,218,122,14,124, - 2,160,13,124,0,161,1,125,7,87,0,110,18,4,0,116, - 2,121,198,1,0,1,0,1,0,89,0,110,20,48,0,124, - 7,114,218,103,0,124,4,95,14,110,6,124,3,124,4,95, - 14,124,4,106,14,103,0,107,2,144,1,114,4,124,1,144, - 1,114,4,116,15,124,1,131,1,100,7,25,0,125,8,124, - 4,106,14,160,16,124,8,161,1,1,0,124,4,83,0,41, - 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109, - 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, - 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116, - 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100, - 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109, - 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, - 103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105,115,116, - 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97, - 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112, - 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105, - 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116, - 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32, - 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32, - 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46, - 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114, - 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101, - 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95, - 105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0,0,0, - 114,183,0,0,0,114,122,0,0,0,114,18,0,0,0,114, - 85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0,0,0, - 218,9,95,80,79,80,85,76,65,84,69,114,186,0,0,0, - 114,182,0,0,0,114,55,0,0,0,218,6,97,112,112,101, - 110,100,41,9,114,121,0,0,0,90,8,108,111,99,97,116, - 105,111,110,114,144,0,0,0,114,182,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,186,0,0,0, - 90,7,100,105,114,110,97,109,101,114,7,0,0,0,114,7, - 0,0,0,114,8,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,166,2,0,0,115,64,0,0,0,8,12,4,4,10,1, - 2,2,14,1,12,1,6,1,10,2,16,8,6,1,8,3, - 14,1,14,1,10,1,6,1,4,1,4,2,8,3,10,2, - 2,1,14,1,12,1,6,1,4,2,8,1,6,2,12,1, - 6,1,12,1,12,1,4,2,255,128,114,194,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,88,0,0,0,101,0,90, - 1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,90, - 5,101,6,111,30,100,4,101,7,118,0,90,8,101,9,100, - 5,100,6,132,0,131,1,90,10,101,11,100,7,100,8,132, - 0,131,1,90,12,101,11,100,14,100,10,100,11,132,1,131, - 1,90,13,101,11,100,15,100,12,100,13,132,1,131,1,90, - 14,100,9,83,0,41,16,218,21,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,122,62, - 77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,114, - 32,102,111,114,32,109,111,100,117,108,101,115,32,100,101,99, - 108,97,114,101,100,32,105,110,32,116,104,101,32,87,105,110, - 100,111,119,115,32,114,101,103,105,115,116,114,121,46,122,59, - 83,111,102,116,119,97,114,101,92,80,121,116,104,111,110,92, - 80,121,116,104,111,110,67,111,114,101,92,123,115,121,115,95, - 118,101,114,115,105,111,110,125,92,77,111,100,117,108,101,115, - 92,123,102,117,108,108,110,97,109,101,125,122,65,83,111,102, - 116,119,97,114,101,92,80,121,116,104,111,110,92,80,121,116, - 104,111,110,67,111,114,101,92,123,115,121,115,95,118,101,114, - 115,105,111,110,125,92,77,111,100,117,108,101,115,92,123,102, - 117,108,108,110,97,109,101,125,92,68,101,98,117,103,122,6, - 95,100,46,112,121,100,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, - 50,0,0,0,122,16,116,0,160,1,116,0,106,2,124,0, - 161,2,87,0,83,0,4,0,116,3,121,48,1,0,1,0, - 1,0,116,0,160,1,116,0,106,4,124,0,161,2,6,0, - 89,0,83,0,48,0,114,114,0,0,0,41,5,218,6,119, - 105,110,114,101,103,90,7,79,112,101,110,75,101,121,90,17, - 72,75,69,89,95,67,85,82,82,69,78,84,95,85,83,69, - 82,114,58,0,0,0,90,18,72,75,69,89,95,76,79,67, - 65,76,95,77,65,67,72,73,78,69,114,19,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14, - 95,111,112,101,110,95,114,101,103,105,115,116,114,121,246,2, - 0,0,115,10,0,0,0,2,2,16,1,12,1,20,1,255, - 128,122,36,87,105,110,100,111,119,115,82,101,103,105,115,116, - 114,121,70,105,110,100,101,114,46,95,111,112,101,110,95,114, - 101,103,105,115,116,114,121,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,8,0,0,0,67,0,0,0, - 115,130,0,0,0,124,0,106,0,114,14,124,0,106,1,125, - 2,110,6,124,0,106,2,125,2,124,2,106,3,124,1,100, - 1,116,4,106,5,100,0,100,2,133,2,25,0,22,0,100, - 3,141,2,125,3,122,60,124,0,160,6,124,3,161,1,143, - 28,125,4,116,7,160,8,124,4,100,4,161,2,125,5,87, - 0,100,0,4,0,4,0,131,3,1,0,110,16,49,0,115, - 94,48,0,1,0,1,0,1,0,89,0,1,0,87,0,124, - 5,83,0,4,0,116,9,121,128,1,0,1,0,1,0,89, - 0,100,0,83,0,48,0,41,5,78,122,5,37,100,46,37, - 100,114,39,0,0,0,41,2,114,143,0,0,0,90,11,115, - 121,115,95,118,101,114,115,105,111,110,114,10,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,70,0,0,0,114,15,0,0,0,218,12,118,101,114,115, - 105,111,110,95,105,110,102,111,114,197,0,0,0,114,196,0, - 0,0,90,10,81,117,101,114,121,86,97,108,117,101,114,58, - 0,0,0,41,6,218,3,99,108,115,114,143,0,0,0,90, - 12,114,101,103,105,115,116,114,121,95,107,101,121,114,20,0, - 0,0,90,4,104,107,101,121,218,8,102,105,108,101,112,97, - 116,104,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,16,95,115,101,97,114,99,104,95,114,101,103,105,115, - 116,114,121,253,2,0,0,115,26,0,0,0,6,2,8,1, - 6,2,6,1,16,1,6,255,2,2,12,1,44,1,4,3, - 12,254,8,1,255,128,122,38,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,46,95,115, - 101,97,114,99,104,95,114,101,103,105,115,116,114,121,78,99, - 4,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0, - 8,0,0,0,67,0,0,0,115,118,0,0,0,124,0,160, - 0,124,1,161,1,125,4,124,4,100,0,117,0,114,22,100, - 0,83,0,122,12,116,1,124,4,131,1,1,0,87,0,110, - 20,4,0,116,2,121,54,1,0,1,0,1,0,89,0,100, - 0,83,0,48,0,116,3,131,0,68,0,93,50,92,2,125, - 5,125,6,124,4,160,4,116,5,124,6,131,1,161,1,114, - 62,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,100, - 0,83,0,41,2,78,114,184,0,0,0,41,8,114,204,0, - 0,0,114,57,0,0,0,114,58,0,0,0,114,188,0,0, - 0,114,115,0,0,0,114,116,0,0,0,114,139,0,0,0, - 218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, - 101,114,41,8,114,202,0,0,0,114,143,0,0,0,114,52, - 0,0,0,218,6,116,97,114,103,101,116,114,203,0,0,0, - 114,144,0,0,0,114,193,0,0,0,114,191,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,12,3,0,0,115,32,0, - 0,0,10,2,8,1,4,1,2,1,12,1,12,1,8,1, - 14,1,14,1,6,1,8,1,2,1,6,254,8,3,4,251, - 255,128,122,31,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,115, - 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0, - 0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100, - 1,117,1,114,26,124,3,106,1,83,0,100,1,83,0,41, - 2,122,108,70,105,110,100,32,109,111,100,117,108,101,32,110, - 97,109,101,100,32,105,110,32,116,104,101,32,114,101,103,105, - 115,116,114,121,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,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,78, - 169,2,114,207,0,0,0,114,144,0,0,0,169,4,114,202, - 0,0,0,114,143,0,0,0,114,52,0,0,0,114,191,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,102,105,110,100,95,109,111,100,117,108,101,28,3, - 0,0,115,10,0,0,0,12,7,8,1,6,1,4,2,255, - 128,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,2,78,78,41,1,78,41,15,114,130,0, - 0,0,114,129,0,0,0,114,131,0,0,0,114,132,0,0, - 0,114,200,0,0,0,114,199,0,0,0,218,11,95,77,83, - 95,87,73,78,68,79,87,83,218,18,69,88,84,69,78,83, - 73,79,78,95,83,85,70,70,73,88,69,83,114,198,0,0, - 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, - 197,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, - 100,114,204,0,0,0,114,207,0,0,0,114,210,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,195,0,0,0,234,2,0,0,115,32,0, - 0,0,8,0,4,2,2,3,2,255,2,4,2,255,12,3, - 2,2,10,1,2,6,10,1,2,14,12,1,2,15,16,1, - 255,128,114,195,0,0,0,99,0,0,0,0,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,4,100,5,132,0,90, - 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, - 7,100,10,83,0,41,11,218,13,95,76,111,97,100,101,114, - 66,97,115,105,99,115,122,83,66,97,115,101,32,99,108,97, - 115,115,32,111,102,32,99,111,109,109,111,110,32,99,111,100, - 101,32,110,101,101,100,101,100,32,98,121,32,98,111,116,104, - 32,83,111,117,114,99,101,76,111,97,100,101,114,32,97,110, - 100,10,32,32,32,32,83,111,117,114,99,101,108,101,115,115, - 70,105,108,101,76,111,97,100,101,114,46,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, - 67,0,0,0,115,64,0,0,0,116,0,124,0,160,1,124, - 1,161,1,131,1,100,1,25,0,125,2,124,2,160,2,100, - 2,100,1,161,2,100,3,25,0,125,3,124,1,160,3,100, - 2,161,1,100,4,25,0,125,4,124,3,100,5,107,2,111, - 62,124,4,100,5,107,3,83,0,41,7,122,141,67,111,110, - 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, - 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, - 32,98,121,32,99,104,101,99,107,105,110,103,32,105,102,10, - 32,32,32,32,32,32,32,32,116,104,101,32,112,97,116,104, - 32,114,101,116,117,114,110,101,100,32,98,121,32,103,101,116, - 95,102,105,108,101,110,97,109,101,32,104,97,115,32,97,32, - 102,105,108,101,110,97,109,101,32,111,102,32,39,95,95,105, - 110,105,116,95,95,46,112,121,39,46,114,3,0,0,0,114, - 79,0,0,0,114,0,0,0,0,114,39,0,0,0,218,8, - 95,95,105,110,105,116,95,95,78,41,4,114,55,0,0,0, - 114,183,0,0,0,114,51,0,0,0,114,49,0,0,0,41, - 5,114,123,0,0,0,114,143,0,0,0,114,101,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,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,186,0,0,0,47,3, - 0,0,115,10,0,0,0,18,3,16,1,14,1,16,1,255, - 128,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,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,169,2,122, - 42,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,7,0,0, - 0,169,2,114,123,0,0,0,114,191,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,13,99,114, - 101,97,116,101,95,109,111,100,117,108,101,55,3,0,0,115, - 4,0,0,0,4,0,255,128,122,27,95,76,111,97,100,101, - 114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,56, - 0,0,0,124,0,160,0,124,1,106,1,161,1,125,2,124, - 2,100,1,117,0,114,36,116,2,100,2,160,3,124,1,106, - 1,161,1,131,1,130,1,116,4,160,5,116,6,124,2,124, - 1,106,7,161,3,1,0,100,1,83,0,41,3,122,19,69, - 120,101,99,117,116,101,32,116,104,101,32,109,111,100,117,108, - 101,46,78,122,52,99,97,110,110,111,116,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,130,0,0,0,114,122,0,0,0,114, - 70,0,0,0,114,139,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,136,0,0,0,41, - 3,114,123,0,0,0,218,6,109,111,100,117,108,101,114,168, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,11,101,120,101,99,95,109,111,100,117,108,101,58, - 3,0,0,115,14,0,0,0,12,2,8,1,6,1,4,1, - 6,255,20,2,255,128,122,25,95,76,111,97,100,101,114,66, - 97,115,105,99,115,46,101,120,101,99,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,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,2,122,26,84, - 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,46,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0, + 116,4,124,0,131,1,100,6,107,0,114,106,100,7,124,1, + 155,2,157,2,125,4,116,1,160,2,100,5,124,4,161,2, + 1,0,116,5,124,4,131,1,130,1,116,6,124,0,100,2, + 100,8,133,2,25,0,131,1,125,5,124,5,100,9,64,0, + 114,162,100,10,124,5,155,2,100,11,124,1,155,2,157,4, + 125,4,116,3,124,4,102,1,105,0,124,2,164,1,142,1, + 130,1,124,5,83,0,41,12,97,84,2,0,0,80,101,114, + 102,111,114,109,32,98,97,115,105,99,32,118,97,108,105,100, + 105,116,121,32,99,104,101,99,107,105,110,103,32,111,102,32, + 97,32,112,121,99,32,104,101,97,100,101,114,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,102,108,97,103, + 115,32,102,105,101,108,100,44,10,32,32,32,32,119,104,105, + 99,104,32,100,101,116,101,114,109,105,110,101,115,32,104,111, + 119,32,116,104,101,32,112,121,99,32,115,104,111,117,108,100, + 32,98,101,32,102,117,114,116,104,101,114,32,118,97,108,105, + 100,97,116,101,100,32,97,103,97,105,110,115,116,32,116,104, + 101,32,115,111,117,114,99,101,46,10,10,32,32,32,32,42, + 100,97,116,97,42,32,105,115,32,116,104,101,32,99,111,110, + 116,101,110,116,115,32,111,102,32,116,104,101,32,112,121,99, + 32,102,105,108,101,46,32,40,79,110,108,121,32,116,104,101, + 32,102,105,114,115,116,32,49,54,32,98,121,116,101,115,32, + 97,114,101,10,32,32,32,32,114,101,113,117,105,114,101,100, + 44,32,116,104,111,117,103,104,46,41,10,10,32,32,32,32, + 42,110,97,109,101,42,32,105,115,32,116,104,101,32,110,97, + 109,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,46, + 32,73,116,32,105,115,32,117,115,101,100,32,102,111,114,32, + 108,111,103,103,105,110,103,46,10,10,32,32,32,32,42,101, + 120,99,95,100,101,116,97,105,108,115,42,32,105,115,32,97, + 32,100,105,99,116,105,111,110,97,114,121,32,112,97,115,115, + 101,100,32,116,111,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,102,32,105,116,32,114,97,105,115,101,100,32,102, + 111,114,10,32,32,32,32,105,109,112,114,111,118,101,100,32, + 100,101,98,117,103,103,105,110,103,46,10,10,32,32,32,32, + 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, + 97,105,115,101,100,32,119,104,101,110,32,116,104,101,32,109, + 97,103,105,99,32,110,117,109,98,101,114,32,105,115,32,105, + 110,99,111,114,114,101,99,116,32,111,114,32,119,104,101,110, + 32,116,104,101,32,102,108,97,103,115,10,32,32,32,32,102, + 105,101,108,100,32,105,115,32,105,110,118,97,108,105,100,46, + 32,69,79,70,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,32,119,104,101,110,32,116,104,101,32,100,97,116, + 97,32,105,115,32,102,111,117,110,100,32,116,111,32,98,101, + 32,116,114,117,110,99,97,116,101,100,46,10,10,32,32,32, + 32,78,114,28,0,0,0,122,20,98,97,100,32,109,97,103, + 105,99,32,110,117,109,98,101,114,32,105,110,32,122,2,58, + 32,250,2,123,125,233,16,0,0,0,122,40,114,101,97,99, + 104,101,100,32,69,79,70,32,119,104,105,108,101,32,114,101, + 97,100,105,110,103,32,112,121,99,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,139,0,0,0,218,16,95,118,101,114,98, + 111,115,101,95,109,101,115,115,97,103,101,114,122,0,0,0, + 114,4,0,0,0,218,8,69,79,70,69,114,114,111,114,114, + 38,0,0,0,41,6,114,37,0,0,0,114,121,0,0,0, + 218,11,101,120,99,95,100,101,116,97,105,108,115,90,5,109, + 97,103,105,99,114,98,0,0,0,114,16,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,95, + 99,108,97,115,115,105,102,121,95,112,121,99,30,2,0,0, + 115,30,0,0,0,12,16,8,1,16,1,12,1,16,1,12, + 1,10,1,12,1,8,1,16,1,8,2,16,1,16,1,4, + 1,255,128,114,156,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, + 0,115,124,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,62,100,4, + 124,3,155,2,157,2,125,5,116,1,160,2,100,5,124,5, + 161,2,1,0,116,3,124,5,102,1,105,0,124,4,164,1, + 142,1,130,1,124,2,100,6,117,1,114,120,116,0,124,0, + 100,2,100,7,133,2,25,0,131,1,124,2,100,3,64,0, + 107,3,114,116,116,3,100,4,124,3,155,2,157,2,102,1, + 105,0,124,4,164,1,142,1,130,1,100,6,83,0,100,6, + 83,0,41,8,97,7,2,0,0,86,97,108,105,100,97,116, + 101,32,97,32,112,121,99,32,97,103,97,105,110,115,116,32, + 116,104,101,32,115,111,117,114,99,101,32,108,97,115,116,45, + 109,111,100,105,102,105,101,100,32,116,105,109,101,46,10,10, + 32,32,32,32,42,100,97,116,97,42,32,105,115,32,116,104, + 101,32,99,111,110,116,101,110,116,115,32,111,102,32,116,104, + 101,32,112,121,99,32,102,105,108,101,46,32,40,79,110,108, + 121,32,116,104,101,32,102,105,114,115,116,32,49,54,32,98, + 121,116,101,115,32,97,114,101,10,32,32,32,32,114,101,113, + 117,105,114,101,100,46,41,10,10,32,32,32,32,42,115,111, + 117,114,99,101,95,109,116,105,109,101,42,32,105,115,32,116, + 104,101,32,108,97,115,116,32,109,111,100,105,102,105,101,100, + 32,116,105,109,101,115,116,97,109,112,32,111,102,32,116,104, + 101,32,115,111,117,114,99,101,32,102,105,108,101,46,10,10, + 32,32,32,32,42,115,111,117,114,99,101,95,115,105,122,101, + 42,32,105,115,32,78,111,110,101,32,111,114,32,116,104,101, + 32,115,105,122,101,32,111,102,32,116,104,101,32,115,111,117, + 114,99,101,32,102,105,108,101,32,105,110,32,98,121,116,101, + 115,46,10,10,32,32,32,32,42,110,97,109,101,42,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,46,32,73,116,32,105,115,32,117, + 115,101,100,32,102,111,114,32,108,111,103,103,105,110,103,46, + 10,10,32,32,32,32,42,101,120,99,95,100,101,116,97,105, + 108,115,42,32,105,115,32,97,32,100,105,99,116,105,111,110, + 97,114,121,32,112,97,115,115,101,100,32,116,111,32,73,109, + 112,111,114,116,69,114,114,111,114,32,105,102,32,105,116,32, + 114,97,105,115,101,100,32,102,111,114,10,32,32,32,32,105, + 109,112,114,111,118,101,100,32,100,101,98,117,103,103,105,110, + 103,46,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,150,0,0,0,233,12,0,0,0,114,27,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,148,0,0,0,78,114,149,0, + 0,0,41,4,114,38,0,0,0,114,139,0,0,0,114,153, + 0,0,0,114,122,0,0,0,41,6,114,37,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,121,0,0,0,114, + 155,0,0,0,114,98,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,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,63,2,0,0,115,20,0,0,0,24,19,10,1,12,1, + 16,1,8,1,22,1,2,255,22,2,8,254,255,128,114,160, + 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, + 0,124,0,100,1,100,2,133,2,25,0,124,1,107,3,114, + 38,116,0,100,3,124,2,155,2,157,2,102,1,105,0,124, + 3,164,1,142,1,130,1,100,4,83,0,41,5,97,243,1, + 0,0,86,97,108,105,100,97,116,101,32,97,32,104,97,115, + 104,45,98,97,115,101,100,32,112,121,99,32,98,121,32,99, + 104,101,99,107,105,110,103,32,116,104,101,32,114,101,97,108, + 32,115,111,117,114,99,101,32,104,97,115,104,32,97,103,97, + 105,110,115,116,32,116,104,101,32,111,110,101,32,105,110,10, + 32,32,32,32,116,104,101,32,112,121,99,32,104,101,97,100, + 101,114,46,10,10,32,32,32,32,42,100,97,116,97,42,32, + 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, + 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, + 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, + 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, + 32,32,114,101,113,117,105,114,101,100,46,41,10,10,32,32, + 32,32,42,115,111,117,114,99,101,95,104,97,115,104,42,32, + 105,115,32,116,104,101,32,105,109,112,111,114,116,108,105,98, + 46,117,116,105,108,46,115,111,117,114,99,101,95,104,97,115, + 104,40,41,32,111,102,32,116,104,101,32,115,111,117,114,99, + 101,32,102,105,108,101,46,10,10,32,32,32,32,42,110,97, + 109,101,42,32,105,115,32,116,104,101,32,110,97,109,101,32, + 111,102,32,116,104,101,32,109,111,100,117,108,101,32,98,101, + 105,110,103,32,105,109,112,111,114,116,101,100,46,32,73,116, + 32,105,115,32,117,115,101,100,32,102,111,114,32,108,111,103, + 103,105,110,103,46,10,10,32,32,32,32,42,101,120,99,95, + 100,101,116,97,105,108,115,42,32,105,115,32,97,32,100,105, + 99,116,105,111,110,97,114,121,32,112,97,115,115,101,100,32, + 116,111,32,73,109,112,111,114,116,69,114,114,111,114,32,105, + 102,32,105,116,32,114,97,105,115,101,100,32,102,111,114,10, + 32,32,32,32,105,109,112,114,111,118,101,100,32,100,101,98, + 117,103,103,105,110,103,46,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,150,0,0,0,114,149,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,122,0,0,0,41,4,114,37,0,0,0,218,11, + 115,111,117,114,99,101,95,104,97,115,104,114,121,0,0,0, + 114,155,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,18,95,118,97,108,105,100,97,116,101,95, + 104,97,115,104,95,112,121,99,91,2,0,0,115,16,0,0, + 0,16,17,2,1,8,1,4,255,2,2,6,254,4,255,255, + 128,114,162,0,0,0,99,4,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, + 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, + 124,4,116,3,131,2,114,56,116,4,160,5,100,1,124,2, + 161,2,1,0,124,3,100,2,117,1,114,52,116,6,160,7, + 124,4,124,3,161,2,1,0,124,4,83,0,116,8,100,3, + 160,9,124,2,161,1,124,1,124,2,100,4,141,3,130,1, + 41,5,122,35,67,111,109,112,105,108,101,32,98,121,116,101, + 99,111,100,101,32,97,115,32,102,111,117,110,100,32,105,110, + 32,97,32,112,121,99,46,122,21,99,111,100,101,32,111,98, + 106,101,99,116,32,102,114,111,109,32,123,33,114,125,78,122, + 23,78,111,110,45,99,111,100,101,32,111,98,106,101,99,116, + 32,105,110,32,123,33,114,125,169,2,114,121,0,0,0,114, + 52,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,139, + 0,0,0,114,153,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,122,0,0,0,114,70,0,0,0,41,5,114,37,0,0, + 0,114,121,0,0,0,114,111,0,0,0,114,112,0,0,0, + 218,4,99,111,100,101,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,17,95,99,111,109,112,105,108,101,95, + 98,121,116,101,99,111,100,101,115,2,0,0,115,20,0,0, + 0,10,2,10,1,12,1,8,1,12,1,4,1,10,2,4, + 1,6,255,255,128,114,169,0,0,0,99,3,0,0,0,0, + 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,131,1,161,1,1,0,124,3, + 160,2,116,3,124,1,131,1,161,1,1,0,124,3,160,2, + 116,3,124,2,131,1,161,1,1,0,124,3,160,2,116,4, + 160,5,124,0,161,1,161,1,1,0,124,3,83,0,41,3, + 122,43,80,114,111,100,117,99,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,0,0, + 0,0,78,41,6,218,9,98,121,116,101,97,114,114,97,121, + 114,152,0,0,0,218,6,101,120,116,101,110,100,114,33,0, + 0,0,114,164,0,0,0,218,5,100,117,109,112,115,41,4, + 114,168,0,0,0,218,5,109,116,105,109,101,114,159,0,0, + 0,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,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,128,2,0, + 0,115,14,0,0,0,8,2,14,1,14,1,14,1,16,1, + 4,1,255,128,114,174,0,0,0,84,99,3,0,0,0,0, + 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,2, + 116,3,124,4,131,1,161,1,1,0,116,4,124,1,131,1, + 100,2,107,2,115,50,74,0,130,1,124,3,160,2,124,1, + 161,1,1,0,124,3,160,2,116,5,160,6,124,0,161,1, + 161,1,1,0,124,3,83,0,41,4,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,3,0,0,0,114,150,0,0,0,78,41,7,114, + 170,0,0,0,114,152,0,0,0,114,171,0,0,0,114,33, + 0,0,0,114,4,0,0,0,114,164,0,0,0,114,172,0, + 0,0,41,5,114,168,0,0,0,114,161,0,0,0,90,7, + 99,104,101,99,107,101,100,114,37,0,0,0,114,16,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,17,95,99,111,100,101,95,116,111,95,104,97,115,104,95, + 112,121,99,138,2,0,0,115,16,0,0,0,8,2,12,1, + 14,1,16,1,10,1,16,1,4,1,255,128,114,175,0,0, + 0,99,1,0,0,0,0,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,100,2,100,3,161,2,125,4,124,4,160,6,124,0,160, + 6,124,3,100,1,25,0,161,1,161,1,83,0,41,4,122, + 121,68,101,99,111,100,101,32,98,121,116,101,115,32,114,101, + 112,114,101,115,101,110,116,105,110,103,32,115,111,117,114,99, + 101,32,99,111,100,101,32,97,110,100,32,114,101,116,117,114, + 110,32,116,104,101,32,115,116,114,105,110,103,46,10,10,32, + 32,32,32,85,110,105,118,101,114,115,97,108,32,110,101,119, + 108,105,110,101,32,115,117,112,112,111,114,116,32,105,115,32, + 117,115,101,100,32,105,110,32,116,104,101,32,100,101,99,111, + 100,105,110,103,46,10,32,32,32,32,114,0,0,0,0,78, + 84,41,7,218,8,116,111,107,101,110,105,122,101,114,72,0, + 0,0,90,7,66,121,116,101,115,73,79,90,8,114,101,97, + 100,108,105,110,101,90,15,100,101,116,101,99,116,95,101,110, + 99,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,176,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,108,111,97,100,95,109,111,100,117,108,101,66,3,0,0, - 115,4,0,0,0,12,3,255,128,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,130,0,0,0,114,129,0,0, - 0,114,131,0,0,0,114,132,0,0,0,114,186,0,0,0, - 114,219,0,0,0,114,224,0,0,0,114,227,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,215,0,0,0,42,3,0,0,115,14,0,0, - 0,8,0,4,2,8,3,8,8,8,3,12,8,255,128,114, - 215,0,0,0,99,0,0,0,0,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,100,6,132,0, - 90,5,100,7,100,8,132,0,90,6,100,9,100,10,132,0, - 90,7,100,11,100,12,156,1,100,13,100,14,132,2,90,8, - 100,15,100,16,132,0,90,9,100,17,83,0,41,18,218,12, - 83,111,117,114,99,101,76,111,97,100,101,114,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,4,0,0,0,116,0,130,1,41,2, - 122,165,79,112,116,105,111,110,97,108,32,109,101,116,104,111, - 100,32,116,104,97,116,32,114,101,116,117,114,110,115,32,116, - 104,101,32,109,111,100,105,102,105,99,97,116,105,111,110,32, - 116,105,109,101,32,40,97,110,32,105,110,116,41,32,102,111, - 114,32,116,104,101,10,32,32,32,32,32,32,32,32,115,112, - 101,99,105,102,105,101,100,32,112,97,116,104,32,40,97,32, - 115,116,114,41,46,10,10,32,32,32,32,32,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,78,41,1,114,58,0,0,0,169, - 2,114,123,0,0,0,114,52,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,10,112,97,116,104, - 95,109,116,105,109,101,74,3,0,0,115,4,0,0,0,4, - 6,255,128,122,23,83,111,117,114,99,101,76,111,97,100,101, - 114,46,112,97,116,104,95,109,116,105,109,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,14,0,0,0,100,1,124,0,160,0, - 124,1,161,1,105,1,83,0,41,3,97,158,1,0,0,79, - 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,114, - 101,116,117,114,110,105,110,103,32,97,32,109,101,116,97,100, - 97,116,97,32,100,105,99,116,32,102,111,114,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,10,32,32,32,32,32, - 32,32,32,112,97,116,104,32,40,97,32,115,116,114,41,46, - 10,10,32,32,32,32,32,32,32,32,80,111,115,115,105,98, - 108,101,32,107,101,121,115,58,10,32,32,32,32,32,32,32, - 32,45,32,39,109,116,105,109,101,39,32,40,109,97,110,100, - 97,116,111,114,121,41,32,105,115,32,116,104,101,32,110,117, - 109,101,114,105,99,32,116,105,109,101,115,116,97,109,112,32, - 111,102,32,108,97,115,116,32,115,111,117,114,99,101,10,32, - 32,32,32,32,32,32,32,32,32,99,111,100,101,32,109,111, - 100,105,102,105,99,97,116,105,111,110,59,10,32,32,32,32, - 32,32,32,32,45,32,39,115,105,122,101,39,32,40,111,112, - 116,105,111,110,97,108,41,32,105,115,32,116,104,101,32,115, - 105,122,101,32,105,110,32,98,121,116,101,115,32,111,102,32, - 116,104,101,32,115,111,117,114,99,101,32,99,111,100,101,46, + 13,100,101,99,111,100,101,95,115,111,117,114,99,101,149,2, + 0,0,115,12,0,0,0,8,5,12,1,10,1,12,1,20, + 1,255,128,114,180,0,0,0,169,2,114,144,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, + 0,0,0,0,2,0,0,0,9,0,0,0,8,0,0,0, + 67,0,0,0,115,8,1,0,0,124,1,100,1,117,0,114, + 56,100,2,125,1,116,0,124,2,100,3,131,2,114,66,122, + 14,124,2,160,1,124,0,161,1,125,1,87,0,110,28,4, + 0,116,2,121,54,1,0,1,0,1,0,89,0,110,12,48, + 0,116,3,160,4,124,1,161,1,125,1,116,5,106,6,124, + 0,124,2,124,1,100,4,141,3,125,4,100,5,124,4,95, + 7,124,2,100,1,117,0,114,148,116,8,131,0,68,0,93, + 40,92,2,125,5,125,6,124,1,160,9,116,10,124,6,131, + 1,161,1,114,102,124,5,124,0,124,1,131,2,125,2,124, + 2,124,4,95,11,1,0,113,148,100,1,83,0,124,3,116, + 12,117,0,114,212,116,0,124,2,100,6,131,2,114,218,122, + 14,124,2,160,13,124,0,161,1,125,7,87,0,110,18,4, + 0,116,2,121,198,1,0,1,0,1,0,89,0,110,20,48, + 0,124,7,114,218,103,0,124,4,95,14,110,6,124,3,124, + 4,95,14,124,4,106,14,103,0,107,2,144,1,114,4,124, + 1,144,1,114,4,116,15,124,1,131,1,100,7,25,0,125, + 8,124,4,106,14,160,16,124,8,161,1,1,0,124,4,83, + 0,41,8,97,61,1,0,0,82,101,116,117,114,110,32,97, + 32,109,111,100,117,108,101,32,115,112,101,99,32,98,97,115, + 101,100,32,111,110,32,97,32,102,105,108,101,32,108,111,99, + 97,116,105,111,110,46,10,10,32,32,32,32,84,111,32,105, + 110,100,105,99,97,116,101,32,116,104,97,116,32,116,104,101, + 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, + 107,97,103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105, + 115,116,32,111,102,32,100,105,114,101,99,116,111,114,121,32, + 112,97,116,104,115,46,32,32,65,110,10,32,32,32,32,101, + 109,112,116,121,32,108,105,115,116,32,105,115,32,115,117,102, + 102,105,99,105,101,110,116,44,32,116,104,111,117,103,104,32, + 105,116,115,32,110,111,116,32,111,116,104,101,114,119,105,115, + 101,32,117,115,101,102,117,108,32,116,111,32,116,104,101,10, + 32,32,32,32,105,109,112,111,114,116,32,115,121,115,116,101, + 109,46,10,10,32,32,32,32,84,104,101,32,108,111,97,100, + 101,114,32,109,117,115,116,32,116,97,107,101,32,97,32,115, + 112,101,99,32,97,115,32,105,116,115,32,111,110,108,121,32, + 95,95,105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0, + 0,0,114,183,0,0,0,114,122,0,0,0,114,18,0,0, + 0,114,85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0, + 0,0,218,9,95,80,79,80,85,76,65,84,69,114,186,0, + 0,0,114,182,0,0,0,114,55,0,0,0,218,6,97,112, + 112,101,110,100,41,9,114,121,0,0,0,90,8,108,111,99, + 97,116,105,111,110,114,144,0,0,0,114,182,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,186,0, + 0,0,90,7,100,105,114,110,97,109,101,114,7,0,0,0, + 114,7,0,0,0,114,8,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,166,2,0,0,115,64,0,0,0,8,12,4,4, + 10,1,2,2,14,1,12,1,6,1,10,2,16,8,6,1, + 8,3,14,1,14,1,10,1,6,1,4,1,4,2,8,3, + 10,2,2,1,14,1,12,1,6,1,4,2,8,1,6,2, + 12,1,6,1,12,1,12,1,4,2,255,128,114,194,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,64,0,0,0,115,88,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,100, + 3,90,5,101,6,111,30,100,4,101,7,118,0,90,8,101, + 9,100,5,100,6,132,0,131,1,90,10,101,11,100,7,100, + 8,132,0,131,1,90,12,101,11,100,14,100,10,100,11,132, + 1,131,1,90,13,101,11,100,15,100,12,100,13,132,1,131, + 1,90,14,100,9,83,0,41,16,218,21,87,105,110,100,111, + 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, + 122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,100, + 101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,100, + 101,99,108,97,114,101,100,32,105,110,32,116,104,101,32,87, + 105,110,100,111,119,115,32,114,101,103,105,115,116,114,121,46, + 122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,111, + 110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,121, + 115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,108, + 101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,83, + 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, + 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, + 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, + 123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,103, + 122,6,95,100,46,112,121,100,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, + 0,115,50,0,0,0,122,16,116,0,160,1,116,0,106,2, + 124,0,161,2,87,0,83,0,4,0,116,3,121,48,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, + 6,0,89,0,83,0,48,0,114,114,0,0,0,41,5,218, + 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, + 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, + 83,69,82,114,58,0,0,0,90,18,72,75,69,89,95,76, + 79,67,65,76,95,77,65,67,72,73,78,69,114,19,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, + 246,2,0,0,115,10,0,0,0,2,2,16,1,12,1,20, + 1,255,128,122,36,87,105,110,100,111,119,115,82,101,103,105, + 115,116,114,121,70,105,110,100,101,114,46,95,111,112,101,110, + 95,114,101,103,105,115,116,114,121,99,2,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0, + 0,0,115,130,0,0,0,124,0,106,0,114,14,124,0,106, + 1,125,2,110,6,124,0,106,2,125,2,124,2,106,3,124, + 1,100,1,116,4,106,5,100,0,100,2,133,2,25,0,22, + 0,100,3,141,2,125,3,122,60,124,0,160,6,124,3,161, + 1,143,28,125,4,116,7,160,8,124,4,100,4,161,2,125, + 5,87,0,100,0,4,0,4,0,131,3,1,0,110,16,49, + 0,115,94,48,0,1,0,1,0,1,0,89,0,1,0,87, + 0,124,5,83,0,4,0,116,9,121,128,1,0,1,0,1, + 0,89,0,100,0,83,0,48,0,41,5,78,122,5,37,100, + 46,37,100,114,39,0,0,0,41,2,114,143,0,0,0,90, + 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,70,0,0,0,114,15,0,0,0,218,12,118,101, + 114,115,105,111,110,95,105,110,102,111,114,197,0,0,0,114, + 196,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, + 114,58,0,0,0,41,6,218,3,99,108,115,114,143,0,0, + 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, + 20,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, + 112,97,116,104,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,253,2,0,0,115,26,0,0,0,6,2, + 8,1,6,2,6,1,16,1,6,255,2,2,12,1,44,1, + 4,3,12,254,8,1,255,128,122,38,87,105,110,100,111,119, + 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,46, + 95,115,101,97,114,99,104,95,114,101,103,105,115,116,114,121, + 78,99,4,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,8,0,0,0,67,0,0,0,115,118,0,0,0,124, + 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, + 22,100,0,83,0,122,12,116,1,124,4,131,1,1,0,87, + 0,110,20,4,0,116,2,121,54,1,0,1,0,1,0,89, + 0,100,0,83,0,48,0,116,3,131,0,68,0,93,50,92, + 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, + 1,114,62,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,100,0,83,0,41,2,78,114,184,0,0,0,41,8,114, + 204,0,0,0,114,57,0,0,0,114,58,0,0,0,114,188, + 0,0,0,114,115,0,0,0,114,116,0,0,0,114,139,0, + 0,0,218,16,115,112,101,99,95,102,114,111,109,95,108,111, + 97,100,101,114,41,8,114,202,0,0,0,114,143,0,0,0, + 114,52,0,0,0,218,6,116,97,114,103,101,116,114,203,0, + 0,0,114,144,0,0,0,114,193,0,0,0,114,191,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,9,102,105,110,100,95,115,112,101,99,12,3,0,0,115, + 32,0,0,0,10,2,8,1,4,1,2,1,12,1,12,1, + 8,1,14,1,14,1,6,1,8,1,2,1,6,254,8,3, + 4,251,255,128,122,31,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,115,112,101,99,99,3,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, + 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, + 3,100,1,117,1,114,26,124,3,106,1,83,0,100,1,83, + 0,41,2,122,108,70,105,110,100,32,109,111,100,117,108,101, + 32,110,97,109,101,100,32,105,110,32,116,104,101,32,114,101, + 103,105,115,116,114,121,46,10,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,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,78,169,2,114,207,0,0,0,114,144,0,0,0,169,4, + 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, + 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, + 28,3,0,0,115,10,0,0,0,12,7,8,1,6,1,4, + 2,255,128,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,2,78,78,41,1,78,41,15,114, + 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, + 0,0,0,114,200,0,0,0,114,199,0,0,0,218,11,95, + 77,83,95,87,73,78,68,79,87,83,218,18,69,88,84,69, + 78,83,73,79,78,95,83,85,70,70,73,88,69,83,114,198, + 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111, + 100,114,197,0,0,0,218,11,99,108,97,115,115,109,101,116, + 104,111,100,114,204,0,0,0,114,207,0,0,0,114,210,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,195,0,0,0,234,2,0,0,115, + 32,0,0,0,8,0,4,2,2,3,2,255,2,4,2,255, + 12,3,2,2,10,1,2,6,10,1,2,14,12,1,2,15, + 16,1,255,128,114,195,0,0,0,99,0,0,0,0,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,4,100,5,132, + 0,90,5,100,6,100,7,132,0,90,6,100,8,100,9,132, + 0,90,7,100,10,83,0,41,11,218,13,95,76,111,97,100, + 101,114,66,97,115,105,99,115,122,83,66,97,115,101,32,99, + 108,97,115,115,32,111,102,32,99,111,109,109,111,110,32,99, + 111,100,101,32,110,101,101,100,101,100,32,98,121,32,98,111, + 116,104,32,83,111,117,114,99,101,76,111,97,100,101,114,32, + 97,110,100,10,32,32,32,32,83,111,117,114,99,101,108,101, + 115,115,70,105,108,101,76,111,97,100,101,114,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0, + 0,0,67,0,0,0,115,64,0,0,0,116,0,124,0,160, + 1,124,1,161,1,131,1,100,1,25,0,125,2,124,2,160, + 2,100,2,100,1,161,2,100,3,25,0,125,3,124,1,160, + 3,100,2,161,1,100,4,25,0,125,4,124,3,100,5,107, + 2,111,62,124,4,100,5,107,3,83,0,41,7,122,141,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, + 116,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97, + 103,101,32,98,121,32,99,104,101,99,107,105,110,103,32,105, + 102,10,32,32,32,32,32,32,32,32,116,104,101,32,112,97, + 116,104,32,114,101,116,117,114,110,101,100,32,98,121,32,103, + 101,116,95,102,105,108,101,110,97,109,101,32,104,97,115,32, + 97,32,102,105,108,101,110,97,109,101,32,111,102,32,39,95, + 95,105,110,105,116,95,95,46,112,121,39,46,114,3,0,0, + 0,114,79,0,0,0,114,0,0,0,0,114,39,0,0,0, + 218,8,95,95,105,110,105,116,95,95,78,41,4,114,55,0, + 0,0,114,183,0,0,0,114,51,0,0,0,114,49,0,0, + 0,41,5,114,123,0,0,0,114,143,0,0,0,114,101,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,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,186,0,0,0, + 47,3,0,0,115,10,0,0,0,18,3,16,1,14,1,16, + 1,255,128,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,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,169, + 2,122,42,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,7, + 0,0,0,169,2,114,123,0,0,0,114,191,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,13, + 99,114,101,97,116,101,95,109,111,100,117,108,101,55,3,0, + 0,115,4,0,0,0,4,0,255,128,122,27,95,76,111,97, + 100,101,114,66,97,115,105,99,115,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, + 115,56,0,0,0,124,0,160,0,124,1,106,1,161,1,125, + 2,124,2,100,1,117,0,114,36,116,2,100,2,160,3,124, + 1,106,1,161,1,131,1,130,1,116,4,160,5,116,6,124, + 2,124,1,106,7,161,3,1,0,100,1,83,0,41,3,122, + 19,69,120,101,99,117,116,101,32,116,104,101,32,109,111,100, + 117,108,101,46,78,122,52,99,97,110,110,111,116,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,130,0,0,0,114,122,0,0, + 0,114,70,0,0,0,114,139,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,136,0,0, + 0,41,3,114,123,0,0,0,218,6,109,111,100,117,108,101, + 114,168,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108, + 101,58,3,0,0,115,14,0,0,0,12,2,8,1,6,1, + 4,1,6,255,20,2,255,128,122,25,95,76,111,97,100,101, + 114,66,97,115,105,99,115,46,101,120,101,99,95,109,111,100, + 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,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,2,122, + 26,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,46,78,41,2,114,139, + 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,123,0,0,0,114,143,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,108,111,97,100,95,109,111,100,117,108,101,66,3, + 0,0,115,4,0,0,0,12,3,255,128,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,130,0,0,0,114,129, + 0,0,0,114,131,0,0,0,114,132,0,0,0,114,186,0, + 0,0,114,219,0,0,0,114,224,0,0,0,114,227,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,215,0,0,0,42,3,0,0,115,14, + 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,255, + 128,114,215,0,0,0,99,0,0,0,0,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,100,6, + 132,0,90,5,100,7,100,8,132,0,90,6,100,9,100,10, + 132,0,90,7,100,11,100,12,156,1,100,13,100,14,132,2, + 90,8,100,15,100,16,132,0,90,9,100,17,83,0,41,18, + 218,12,83,111,117,114,99,101,76,111,97,100,101,114,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,4,0,0,0,116,0,130,1, + 41,2,122,165,79,112,116,105,111,110,97,108,32,109,101,116, + 104,111,100,32,116,104,97,116,32,114,101,116,117,114,110,115, + 32,116,104,101,32,109,111,100,105,102,105,99,97,116,105,111, + 110,32,116,105,109,101,32,40,97,110,32,105,110,116,41,32, + 102,111,114,32,116,104,101,10,32,32,32,32,32,32,32,32, + 115,112,101,99,105,102,105,101,100,32,112,97,116,104,32,40, + 97,32,115,116,114,41,46,10,10,32,32,32,32,32,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,78,41,1,114,58,0,0, + 0,169,2,114,123,0,0,0,114,52,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,10,112,97, + 116,104,95,109,116,105,109,101,74,3,0,0,115,4,0,0, + 0,4,6,255,128,122,23,83,111,117,114,99,101,76,111,97, + 100,101,114,46,112,97,116,104,95,109,116,105,109,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,67,0,0,0,115,14,0,0,0,100,1,124,0, + 160,0,124,1,161,1,105,1,83,0,41,3,97,158,1,0, + 0,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100, + 32,114,101,116,117,114,110,105,110,103,32,97,32,109,101,116, + 97,100,97,116,97,32,100,105,99,116,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,10,32,32,32, + 32,32,32,32,32,112,97,116,104,32,40,97,32,115,116,114, + 41,46,10,10,32,32,32,32,32,32,32,32,80,111,115,115, + 105,98,108,101,32,107,101,121,115,58,10,32,32,32,32,32, + 32,32,32,45,32,39,109,116,105,109,101,39,32,40,109,97, + 110,100,97,116,111,114,121,41,32,105,115,32,116,104,101,32, + 110,117,109,101,114,105,99,32,116,105,109,101,115,116,97,109, + 112,32,111,102,32,108,97,115,116,32,115,111,117,114,99,101, + 10,32,32,32,32,32,32,32,32,32,32,99,111,100,101,32, + 109,111,100,105,102,105,99,97,116,105,111,110,59,10,32,32, + 32,32,32,32,32,32,45,32,39,115,105,122,101,39,32,40, + 111,112,116,105,111,110,97,108,41,32,105,115,32,116,104,101, + 32,115,105,122,101,32,105,110,32,98,121,116,101,115,32,111, + 102,32,116,104,101,32,115,111,117,114,99,101,32,99,111,100, + 101,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108, + 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101, + 116,104,111,100,32,97,108,108,111,119,115,32,116,104,101,32, + 108,111,97,100,101,114,32,116,111,32,114,101,97,100,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,32, + 32,32,32,32,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, + 173,0,0,0,78,41,1,114,230,0,0,0,114,229,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,10,112,97,116,104,95,115,116,97,116,115,82,3,0,0, + 115,4,0,0,0,14,12,255,128,122,23,83,111,117,114,99, + 101,76,111,97,100,101,114,46,112,97,116,104,95,115,116,97, + 116,115,99,4,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,4,0,0,0,67,0,0,0,115,12,0,0,0, + 124,0,160,0,124,2,124,3,161,2,83,0,41,2,122,228, + 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, + 119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116, + 97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102, + 105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41, + 46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101, + 109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116, + 104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116, + 104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121, + 116,101,99,111,100,101,32,102,105,108,101,115,46,10,10,32, + 32,32,32,32,32,32,32,84,104,101,32,115,111,117,114,99, + 101,32,112,97,116,104,32,105,115,32,110,101,101,100,101,100, + 32,105,110,32,111,114,100,101,114,32,116,111,32,99,111,114, + 114,101,99,116,108,121,32,116,114,97,110,115,102,101,114,32, + 112,101,114,109,105,115,115,105,111,110,115,10,32,32,32,32, + 32,32,32,32,78,41,1,218,8,115,101,116,95,100,97,116, + 97,41,4,114,123,0,0,0,114,112,0,0,0,90,10,99, + 97,99,104,101,95,112,97,116,104,114,37,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,15,95, + 99,97,99,104,101,95,98,121,116,101,99,111,100,101,96,3, + 0,0,115,4,0,0,0,12,8,255,128,122,28,83,111,117, + 114,99,101,76,111,97,100,101,114,46,95,99,97,99,104,101, + 95,98,121,116,101,99,111,100,101,99,3,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,1,83,0,41,2,122,150,79, + 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,119, + 104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,97, + 32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,105, + 108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,46, 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, - 111,100,32,97,108,108,111,119,115,32,116,104,101,32,108,111, - 97,100,101,114,32,116,111,32,114,101,97,100,32,98,121,116, + 111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,104, + 101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,116, 101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,32, - 32,32,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,173,0, - 0,0,78,41,1,114,230,0,0,0,114,229,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, - 112,97,116,104,95,115,116,97,116,115,82,3,0,0,115,4, - 0,0,0,14,12,255,128,122,23,83,111,117,114,99,101,76, - 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, - 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,4,0,0,0,67,0,0,0,115,12,0,0,0,124,0, - 160,0,124,2,124,3,161,2,83,0,41,2,122,228,79,112, - 116,105,111,110,97,108,32,109,101,116,104,111,100,32,119,104, - 105,99,104,32,119,114,105,116,101,115,32,100,97,116,97,32, - 40,98,121,116,101,115,41,32,116,111,32,97,32,102,105,108, - 101,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, - 10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,101, - 110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,111, - 100,32,97,108,108,111,119,115,32,102,111,114,32,116,104,101, - 32,119,114,105,116,105,110,103,32,111,102,32,98,121,116,101, - 99,111,100,101,32,102,105,108,101,115,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,115,111,117,114,99,101,32, - 112,97,116,104,32,105,115,32,110,101,101,100,101,100,32,105, - 110,32,111,114,100,101,114,32,116,111,32,99,111,114,114,101, - 99,116,108,121,32,116,114,97,110,115,102,101,114,32,112,101, - 114,109,105,115,115,105,111,110,115,10,32,32,32,32,32,32, - 32,32,78,41,1,218,8,115,101,116,95,100,97,116,97,41, - 4,114,123,0,0,0,114,112,0,0,0,90,10,99,97,99, - 104,101,95,112,97,116,104,114,37,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,96,3,0,0, - 115,4,0,0,0,12,8,255,128,122,28,83,111,117,114,99, - 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98, - 121,116,101,99,111,100,101,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,150,79,112,116, - 105,111,110,97,108,32,109,101,116,104,111,100,32,119,104,105, - 99,104,32,119,114,105,116,101,115,32,100,97,116,97,32,40, - 98,121,116,101,115,41,32,116,111,32,97,32,102,105,108,101, - 32,112,97,116,104,32,40,97,32,115,116,114,41,46,10,10, - 32,32,32,32,32,32,32,32,73,109,112,108,101,109,101,110, - 116,105,110,103,32,116,104,105,115,32,109,101,116,104,111,100, - 32,97,108,108,111,119,115,32,102,111,114,32,116,104,101,32, - 119,114,105,116,105,110,103,32,111,102,32,98,121,116,101,99, - 111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32, - 32,32,32,78,114,7,0,0,0,41,3,114,123,0,0,0, - 114,52,0,0,0,114,37,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,232,0,0,0,106,3, - 0,0,115,4,0,0,0,4,0,255,128,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,0,0,0,0,5, - 0,0,0,10,0,0,0,67,0,0,0,115,70,0,0,0, - 124,0,160,0,124,1,161,1,125,2,122,20,124,0,160,1, - 124,2,161,1,125,3,87,0,116,4,124,3,131,1,83,0, - 4,0,116,2,121,68,1,0,125,4,1,0,122,14,116,3, - 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, - 126,4,48,0,48,0,41,4,122,52,67,111,110,99,114,101, - 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, - 110,32,111,102,32,73,110,115,112,101,99,116,76,111,97,100, - 101,114,46,103,101,116,95,115,111,117,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,120,0,0,0,78,41,5,114, - 183,0,0,0,218,8,103,101,116,95,100,97,116,97,114,58, - 0,0,0,114,122,0,0,0,114,180,0,0,0,41,5,114, - 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,178, - 0,0,0,218,3,101,120,99,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,113,3,0,0,115,26,0,0,0,10,2,2,1, - 12,1,8,4,14,253,4,1,2,1,4,255,2,1,2,255, - 8,128,2,255,255,128,122,23,83,111,117,114,99,101,76,111, - 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,114, - 109,0,0,0,41,1,218,9,95,111,112,116,105,109,105,122, - 101,99,3,0,0,0,0,0,0,0,1,0,0,0,4,0, - 0,0,8,0,0,0,67,0,0,0,115,22,0,0,0,116, - 0,106,1,116,2,124,1,124,2,100,1,100,2,124,3,100, - 3,141,6,83,0,41,5,122,130,82,101,116,117,114,110,32, - 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, - 99,111,109,112,105,108,101,100,32,102,114,111,109,32,115,111, - 117,114,99,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,39,100,97,116,97,39,32,97,114,103,117,109,101, - 110,116,32,99,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,222,0,0,0, - 84,41,2,218,12,100,111,110,116,95,105,110,104,101,114,105, - 116,114,89,0,0,0,78,41,3,114,139,0,0,0,114,221, - 0,0,0,218,7,99,111,109,112,105,108,101,41,4,114,123, - 0,0,0,114,37,0,0,0,114,52,0,0,0,114,237,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,14,115,111,117,114,99,101,95,116,111,95,99,111,100, - 101,123,3,0,0,115,8,0,0,0,12,5,4,1,6,255, - 255,128,122,27,83,111,117,114,99,101,76,111,97,100,101,114, - 46,115,111,117,114,99,101,95,116,111,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0, - 9,0,0,0,67,0,0,0,115,28,2,0,0,124,0,160, - 0,124,1,161,1,125,2,100,1,125,3,100,1,125,4,100, - 1,125,5,100,2,125,6,100,3,125,7,122,12,116,1,124, - 2,131,1,125,8,87,0,110,24,4,0,116,2,121,66,1, - 0,1,0,1,0,100,1,125,8,89,0,144,1,110,42,48, - 0,122,14,124,0,160,3,124,2,161,1,125,9,87,0,110, - 20,4,0,116,4,121,102,1,0,1,0,1,0,89,0,144, - 1,110,6,48,0,116,5,124,9,100,4,25,0,131,1,125, - 3,122,14,124,0,160,6,124,8,161,1,125,10,87,0,110, - 18,4,0,116,4,121,148,1,0,1,0,1,0,89,0,110, - 216,48,0,124,1,124,8,100,5,156,2,125,11,122,148,116, - 7,124,10,124,1,124,11,131,3,125,12,116,8,124,10,131, - 1,100,6,100,1,133,2,25,0,125,13,124,12,100,7,64, - 0,100,8,107,3,125,6,124,6,144,1,114,30,124,12,100, - 9,64,0,100,8,107,3,125,7,116,9,106,10,100,10,107, - 3,144,1,114,50,124,7,115,248,116,9,106,10,100,11,107, - 2,144,1,114,50,124,0,160,6,124,2,161,1,125,4,116, - 9,160,11,116,12,124,4,161,2,125,5,116,13,124,10,124, - 5,124,1,124,11,131,4,1,0,110,20,116,14,124,10,124, - 3,124,9,100,12,25,0,124,1,124,11,131,5,1,0,87, - 0,110,24,4,0,116,15,116,16,102,2,144,1,121,76,1, - 0,1,0,1,0,89,0,110,32,48,0,116,17,160,18,100, - 13,124,8,124,2,161,3,1,0,116,19,124,13,124,1,124, - 8,124,2,100,14,141,4,83,0,124,4,100,1,117,0,144, - 1,114,128,124,0,160,6,124,2,161,1,125,4,124,0,160, - 20,124,4,124,2,161,2,125,14,116,17,160,18,100,15,124, - 2,161,2,1,0,116,21,106,22,144,2,115,24,124,8,100, - 1,117,1,144,2,114,24,124,3,100,1,117,1,144,2,114, - 24,124,6,144,1,114,220,124,5,100,1,117,0,144,1,114, - 206,116,9,160,11,124,4,161,1,125,5,116,23,124,14,124, - 5,124,7,131,3,125,10,110,16,116,24,124,14,124,3,116, - 25,124,4,131,1,131,3,125,10,122,20,124,0,160,26,124, - 2,124,8,124,10,161,3,1,0,87,0,124,14,83,0,4, - 0,116,2,144,2,121,22,1,0,1,0,1,0,89,0,124, - 14,83,0,48,0,124,14,83,0,41,16,122,190,67,111,110, - 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, - 111,97,100,101,114,46,103,101,116,95,99,111,100,101,46,10, - 10,32,32,32,32,32,32,32,32,82,101,97,100,105,110,103, - 32,111,102,32,98,121,116,101,99,111,100,101,32,114,101,113, - 117,105,114,101,115,32,112,97,116,104,95,115,116,97,116,115, - 32,116,111,32,98,101,32,105,109,112,108,101,109,101,110,116, - 101,100,46,32,84,111,32,119,114,105,116,101,10,32,32,32, - 32,32,32,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,173, - 0,0,0,114,163,0,0,0,114,149,0,0,0,114,3,0, - 0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112,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,183,0,0,0,114,102,0, - 0,0,114,88,0,0,0,114,231,0,0,0,114,58,0,0, - 0,114,30,0,0,0,114,234,0,0,0,114,156,0,0,0, - 218,10,109,101,109,111,114,121,118,105,101,119,114,167,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,161,0,0,0,218,17,95, - 82,65,87,95,77,65,71,73,67,95,78,85,77,66,69,82, - 114,162,0,0,0,114,160,0,0,0,114,122,0,0,0,114, - 154,0,0,0,114,139,0,0,0,114,153,0,0,0,114,169, - 0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4,0,0, - 0,114,233,0,0,0,41,15,114,123,0,0,0,114,143,0, - 0,0,114,112,0,0,0,114,158,0,0,0,114,178,0,0, - 0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0,114,155, - 0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,220,0,0,0,131,3,0,0,115,160,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,12,1,12,1, - 12,1,2,2,14,1,12,1,8,1,12,2,2,1,14,1, - 12,1,6,1,2,3,2,1,6,254,2,4,12,1,16,1, - 12,1,6,1,12,1,12,1,2,1,2,255,8,2,4,254, - 10,3,4,1,2,1,2,1,4,254,8,4,2,1,6,255, - 2,3,2,1,2,1,6,1,2,1,2,1,8,251,18,7, - 6,1,8,2,2,1,4,255,6,2,2,1,2,1,6,254, - 10,3,10,1,12,1,12,1,18,1,6,1,4,255,6,2, - 10,1,10,1,14,1,6,2,6,1,4,255,2,2,16,1, - 4,3,14,254,2,1,4,1,2,255,4,1,255,128,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,130,0,0,0,114,129,0, - 0,0,114,131,0,0,0,114,230,0,0,0,114,231,0,0, - 0,114,233,0,0,0,114,232,0,0,0,114,236,0,0,0, - 114,240,0,0,0,114,220,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,228, - 0,0,0,72,3,0,0,115,18,0,0,0,8,0,8,2, - 8,8,8,14,8,10,8,7,14,10,12,8,255,128,114,228, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100, - 7,132,0,90,6,101,7,135,0,102,1,100,8,100,9,132, - 8,131,1,90,8,101,7,100,10,100,11,132,0,131,1,90, - 9,100,12,100,13,132,0,90,10,101,7,100,14,100,15,132, - 0,131,1,90,11,135,0,4,0,90,12,83,0,41,16,218, - 10,70,105,108,101,76,111,97,100,101,114,122,103,66,97,115, - 101,32,102,105,108,101,32,108,111,97,100,101,114,32,99,108, - 97,115,115,32,119,104,105,99,104,32,105,109,112,108,101,109, - 101,110,116,115,32,116,104,101,32,108,111,97,100,101,114,32, - 112,114,111,116,111,99,111,108,32,109,101,116,104,111,100,115, - 32,116,104,97,116,10,32,32,32,32,114,101,113,117,105,114, - 101,32,102,105,108,101,32,115,121,115,116,101,109,32,117,115, - 97,103,101,46,99,3,0,0,0,0,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,1, - 83,0,41,2,122,75,67,97,99,104,101,32,116,104,101,32, - 109,111,100,117,108,101,32,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,163,0,0,0,41,3,114,123,0,0,0,114,143, - 0,0,0,114,52,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,216,0,0,0,221,3,0,0, - 115,6,0,0,0,6,3,10,1,255,128,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,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,114,0,0,0,169,2,218,9,95, - 95,99,108,97,115,115,95,95,114,136,0,0,0,169,2,114, - 123,0,0,0,90,5,111,116,104,101,114,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,6,95,95,101,113, - 95,95,227,3,0,0,115,8,0,0,0,12,1,10,1,2, - 255,255,128,122,17,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,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,114,0,0,0,169,3,218, - 4,104,97,115,104,114,121,0,0,0,114,52,0,0,0,169, - 1,114,123,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,95,104,97,115,104,95,95,231, - 3,0,0,115,4,0,0,0,20,1,255,128,122,19,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,0,0,0,0,2,0, - 0,0,3,0,0,0,3,0,0,0,115,16,0,0,0,116, - 0,116,1,124,0,131,2,160,2,124,1,161,1,83,0,41, - 2,122,100,76,111,97,100,32,97,32,109,111,100,117,108,101, - 32,102,114,111,109,32,97,32,102,105,108,101,46,10,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,3,218,5,115,117,112,101, - 114,114,246,0,0,0,114,227,0,0,0,114,226,0,0,0, - 169,1,114,248,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,227,0,0,0,234,3,0,0,115,4,0,0,0,16, - 10,255,128,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,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,169, - 2,122,58,82,101,116,117,114,110,32,116,104,101,32,112,97, - 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,78,114,56, - 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,183,0,0,0,246,3,0,0, - 115,4,0,0,0,6,3,255,128,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,0,0,0,0,3, - 0,0,0,8,0,0,0,67,0,0,0,115,128,0,0,0, - 116,0,124,0,116,1,116,2,102,2,131,2,114,72,116,3, - 160,4,116,5,124,1,131,1,161,1,143,24,125,2,124,2, - 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,49,0,115,58,48,0,1,0,1,0,1,0, - 89,0,1,0,100,1,83,0,116,3,160,7,124,1,100,2, - 161,2,143,24,125,2,124,2,160,6,161,0,87,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,114, - 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, - 41,3,122,39,82,101,116,117,114,110,32,116,104,101,32,100, - 97,116,97,32,102,114,111,109,32,112,97,116,104,32,97,115, - 32,114,97,119,32,98,121,116,101,115,46,78,218,1,114,41, - 8,114,165,0,0,0,114,228,0,0,0,218,19,69,120,116, - 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, - 114,72,0,0,0,90,9,111,112,101,110,95,99,111,100,101, - 114,90,0,0,0,90,4,114,101,97,100,114,73,0,0,0, - 41,3,114,123,0,0,0,114,52,0,0,0,114,76,0,0, + 32,32,32,32,32,78,114,7,0,0,0,41,3,114,123,0, + 0,0,114,52,0,0,0,114,37,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,232,0,0,0, + 106,3,0,0,115,4,0,0,0,4,0,255,128,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,0,0,0, + 0,5,0,0,0,10,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,122,20,124,0, + 160,1,124,2,161,1,125,3,87,0,116,4,124,3,131,1, + 83,0,4,0,116,2,121,68,1,0,125,4,1,0,122,14, + 116,3,100,1,124,1,100,2,141,2,124,4,130,2,100,3, + 125,4,126,4,48,0,48,0,41,4,122,52,67,111,110,99, + 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, + 97,100,101,114,46,103,101,116,95,115,111,117,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,120,0,0,0,78,41, + 5,114,183,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,58,0,0,0,114,122,0,0,0,114,180,0,0,0,41, + 5,114,123,0,0,0,114,143,0,0,0,114,52,0,0,0, + 114,178,0,0,0,218,3,101,120,99,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,10,103,101,116,95,115, + 111,117,114,99,101,113,3,0,0,115,26,0,0,0,10,2, + 2,1,12,1,8,4,14,253,4,1,2,1,4,255,2,1, + 2,255,8,128,2,255,255,128,122,23,83,111,117,114,99,101, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,114,109,0,0,0,41,1,218,9,95,111,112,116,105,109, + 105,122,101,99,3,0,0,0,0,0,0,0,1,0,0,0, + 4,0,0,0,8,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,106,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,141,6,83,0,41,5,122,130,82,101,116,117,114, + 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, + 116,32,99,111,109,112,105,108,101,100,32,102,114,111,109,32, + 115,111,117,114,99,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,39,100,97,116,97,39,32,97,114,103,117, + 109,101,110,116,32,99,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,222,0, + 0,0,84,41,2,218,12,100,111,110,116,95,105,110,104,101, + 114,105,116,114,89,0,0,0,78,41,3,114,139,0,0,0, + 114,221,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,123,0,0,0,114,37,0,0,0,114,52,0,0,0,114, + 237,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,14,115,111,117,114,99,101,95,116,111,95,99, + 111,100,101,123,3,0,0,115,8,0,0,0,12,5,4,1, + 6,255,255,128,122,27,83,111,117,114,99,101,76,111,97,100, + 101,114,46,115,111,117,114,99,101,95,116,111,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,15,0, + 0,0,9,0,0,0,67,0,0,0,115,28,2,0,0,124, + 0,160,0,124,1,161,1,125,2,100,1,125,3,100,1,125, + 4,100,1,125,5,100,2,125,6,100,3,125,7,122,12,116, + 1,124,2,131,1,125,8,87,0,110,24,4,0,116,2,121, + 66,1,0,1,0,1,0,100,1,125,8,89,0,144,1,110, + 42,48,0,122,14,124,0,160,3,124,2,161,1,125,9,87, + 0,110,20,4,0,116,4,121,102,1,0,1,0,1,0,89, + 0,144,1,110,6,48,0,116,5,124,9,100,4,25,0,131, + 1,125,3,122,14,124,0,160,6,124,8,161,1,125,10,87, + 0,110,18,4,0,116,4,121,148,1,0,1,0,1,0,89, + 0,110,216,48,0,124,1,124,8,100,5,156,2,125,11,122, + 148,116,7,124,10,124,1,124,11,131,3,125,12,116,8,124, + 10,131,1,100,6,100,1,133,2,25,0,125,13,124,12,100, + 7,64,0,100,8,107,3,125,6,124,6,144,1,114,30,124, + 12,100,9,64,0,100,8,107,3,125,7,116,9,106,10,100, + 10,107,3,144,1,114,50,124,7,115,248,116,9,106,10,100, + 11,107,2,144,1,114,50,124,0,160,6,124,2,161,1,125, + 4,116,9,160,11,116,12,124,4,161,2,125,5,116,13,124, + 10,124,5,124,1,124,11,131,4,1,0,110,20,116,14,124, + 10,124,3,124,9,100,12,25,0,124,1,124,11,131,5,1, + 0,87,0,110,24,4,0,116,15,116,16,102,2,144,1,121, + 76,1,0,1,0,1,0,89,0,110,32,48,0,116,17,160, + 18,100,13,124,8,124,2,161,3,1,0,116,19,124,13,124, + 1,124,8,124,2,100,14,141,4,83,0,124,4,100,1,117, + 0,144,1,114,128,124,0,160,6,124,2,161,1,125,4,124, + 0,160,20,124,4,124,2,161,2,125,14,116,17,160,18,100, + 15,124,2,161,2,1,0,116,21,106,22,144,2,115,24,124, + 8,100,1,117,1,144,2,114,24,124,3,100,1,117,1,144, + 2,114,24,124,6,144,1,114,220,124,5,100,1,117,0,144, + 1,114,206,116,9,160,11,124,4,161,1,125,5,116,23,124, + 14,124,5,124,7,131,3,125,10,110,16,116,24,124,14,124, + 3,116,25,124,4,131,1,131,3,125,10,122,20,124,0,160, + 26,124,2,124,8,124,10,161,3,1,0,87,0,124,14,83, + 0,4,0,116,2,144,2,121,22,1,0,1,0,1,0,89, + 0,124,14,83,0,48,0,124,14,83,0,41,16,122,190,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, + 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, + 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, + 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, + 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, + 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, + 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, + 32,32,32,32,32,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,173,0,0,0,114,163,0,0,0,114,149,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112, + 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,183,0,0,0,114, + 102,0,0,0,114,88,0,0,0,114,231,0,0,0,114,58, + 0,0,0,114,30,0,0,0,114,234,0,0,0,114,156,0, + 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,167, + 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,161,0,0,0,218, + 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, + 69,82,114,162,0,0,0,114,160,0,0,0,114,122,0,0, + 0,114,154,0,0,0,114,139,0,0,0,114,153,0,0,0, + 114,169,0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4, + 0,0,0,114,233,0,0,0,41,15,114,123,0,0,0,114, + 143,0,0,0,114,112,0,0,0,114,158,0,0,0,114,178, + 0,0,0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0, + 114,155,0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,220,0,0,0,131,3,0,0,115,160,0,0,0, + 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, + 12,1,12,1,2,2,14,1,12,1,8,1,12,2,2,1, + 14,1,12,1,6,1,2,3,2,1,6,254,2,4,12,1, + 16,1,12,1,6,1,12,1,12,1,2,1,2,255,8,2, + 4,254,10,3,4,1,2,1,2,1,4,254,8,4,2,1, + 6,255,2,3,2,1,2,1,6,1,2,1,2,1,8,251, + 18,7,6,1,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,10,3,10,1,12,1,12,1,18,1,6,1,4,255, + 6,2,10,1,10,1,14,1,6,2,6,1,4,255,2,2, + 16,1,4,3,14,254,2,1,4,1,2,255,4,1,255,128, + 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,130,0,0,0,114, + 129,0,0,0,114,131,0,0,0,114,230,0,0,0,114,231, + 0,0,0,114,233,0,0,0,114,232,0,0,0,114,236,0, + 0,0,114,240,0,0,0,114,220,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,234,0,0,0,251,3,0,0,115,14,0,0,0,14,2, - 16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0,3,0, - 0,0,2,0,0,0,67,0,0,0,115,20,0,0,0,100, - 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, - 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, - 105,108,101,82,101,97,100,101,114,41,2,90,17,105,109,112, - 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,4, - 1,0,0,41,3,114,123,0,0,0,114,223,0,0,0,114, - 4,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,19,103,101,116,95,114,101,115,111,117,114,99, - 101,95,114,101,97,100,101,114,4,4,0,0,115,6,0,0, - 0,12,2,8,1,255,128,122,30,70,105,108,101,76,111,97, - 100,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, - 95,114,101,97,100,101,114,41,13,114,130,0,0,0,114,129, - 0,0,0,114,131,0,0,0,114,132,0,0,0,114,216,0, - 0,0,114,250,0,0,0,114,254,0,0,0,114,140,0,0, - 0,114,227,0,0,0,114,183,0,0,0,114,234,0,0,0, - 114,5,1,0,0,90,13,95,95,99,108,97,115,115,99,101, - 108,108,95,95,114,7,0,0,0,114,7,0,0,0,114,0, - 1,0,0,114,8,0,0,0,114,246,0,0,0,216,3,0, - 0,115,26,0,0,0,8,0,4,2,8,3,8,6,8,4, - 2,3,14,1,2,11,10,1,8,4,2,9,18,1,255,128, - 114,246,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,46, + 114,228,0,0,0,72,3,0,0,115,18,0,0,0,8,0, + 8,2,8,8,8,14,8,10,8,7,14,10,12,8,255,128, + 114,228,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,0,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,4,100,5,132,0,90,5,100, - 6,100,7,156,1,100,8,100,9,132,2,90,6,100,10,83, - 0,41,11,218,16,83,111,117,114,99,101,70,105,108,101,76, - 111,97,100,101,114,122,62,67,111,110,99,114,101,116,101,32, - 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, - 102,32,83,111,117,114,99,101,76,111,97,100,101,114,32,117, - 115,105,110,103,32,116,104,101,32,102,105,108,101,32,115,121, - 115,116,101,109,46,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,22, - 0,0,0,116,0,124,1,131,1,125,2,124,2,106,1,124, - 2,106,2,100,1,156,2,83,0,41,3,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,173,0,0,0,114,241,0,0,0,78,41,3,114,57,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,123,0,0,0,114,52,0,0, - 0,114,245,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,231,0,0,0,14,4,0,0,115,6, - 0,0,0,8,2,14,1,255,128,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,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,5,0,0,0,67,0,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,119,0,0,0,114, - 232,0,0,0,41,5,114,123,0,0,0,114,112,0,0,0, - 114,111,0,0,0,114,37,0,0,0,114,60,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,233, - 0,0,0,19,4,0,0,115,6,0,0,0,8,2,16,1, - 255,128,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,68,0,0,0,114,8,1,0,0,99,3, - 0,0,0,0,0,0,0,1,0,0,0,9,0,0,0,11, - 0,0,0,67,0,0,0,115,248,0,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,4,131,1,115,52,116,0,124,4,131,1,92,2, - 125,4,125,7,124,6,160,2,124,7,161,1,1,0,113,16, - 116,3,124,6,131,1,68,0,93,96,125,7,116,4,124,4, - 124,7,131,2,125,4,122,14,116,5,160,6,124,4,161,1, - 1,0,87,0,113,60,4,0,116,7,121,106,1,0,1,0, - 1,0,89,0,113,60,4,0,116,8,121,246,1,0,125,8, - 1,0,122,30,116,9,160,10,100,1,124,4,124,8,161,3, - 1,0,87,0,89,0,100,2,125,8,126,8,1,0,100,2, - 83,0,100,2,125,8,126,8,48,0,122,30,116,11,124,1, - 124,2,124,3,131,3,1,0,116,9,160,10,100,3,124,1, - 161,2,1,0,87,0,100,2,83,0,4,0,116,8,121,240, - 1,0,125,8,1,0,122,28,116,9,160,10,100,1,124,1, - 124,8,161,3,1,0,87,0,89,0,100,2,125,8,126,8, - 100,2,83,0,100,2,125,8,126,8,48,0,48,0,100,2, - 83,0,48,0,41,4,122,27,87,114,105,116,101,32,98,121, - 116,101,115,32,100,97,116,97,32,116,111,32,97,32,102,105, - 108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0,0,0, - 114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139,0,0, - 0,114,153,0,0,0,114,77,0,0,0,41,9,114,123,0, - 0,0,114,52,0,0,0,114,37,0,0,0,114,9,1,0, - 0,218,6,112,97,114,101,110,116,114,101,0,0,0,114,47, - 0,0,0,114,43,0,0,0,114,235,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,232,0,0, - 0,24,4,0,0,115,58,0,0,0,12,2,4,1,12,2, - 12,1,12,1,12,2,10,1,2,1,14,1,12,1,4,2, - 14,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, - 18,1,14,1,8,2,2,1,18,255,8,128,2,254,4,255, - 2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0, - 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, - 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,6,1,0,0,10,4, - 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, - 5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, - 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, - 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, - 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, - 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,124, - 1,161,1,125,2,124,0,160,1,124,2,161,1,125,3,124, - 1,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,163,0,0,0,114,149,0,0,0,41,2,114,121, - 0,0,0,114,111,0,0,0,41,5,114,183,0,0,0,114, - 234,0,0,0,114,156,0,0,0,114,169,0,0,0,114,242, - 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, - 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, - 0,0,59,4,0,0,115,24,0,0,0,10,1,10,1,2, - 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, - 253,255,128,122,29,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,99,111, - 100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,236,0,0,0,75,4, - 0,0,115,4,0,0,0,4,2,255,128,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, - 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,12,1,0,0,55,4,0,0,115,10,0,0,0,8, - 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, - 0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, - 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, - 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, - 100,16,100,17,132,0,90,11,101,12,100,18,100,19,132,0, - 131,1,90,13,100,20,83,0,41,21,114,3,1,0,0,122, - 93,76,111,97,100,101,114,32,102,111,114,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,115,46,10,10, - 32,32,32,32,84,104,101,32,99,111,110,115,116,114,117,99, - 116,111,114,32,105,115,32,100,101,115,105,103,110,101,100,32, - 116,111,32,119,111,114,107,32,119,105,116,104,32,70,105,108, - 101,70,105,110,100,101,114,46,10,10,32,32,32,32,99,3, - 0,0,0,0,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,114,0,0, - 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, - 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,216,0,0,0,88,4,0,0,115, - 6,0,0,0,6,1,10,1,255,128,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,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,114, - 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, - 0,92,4,0,0,115,8,0,0,0,12,1,10,1,2,255, - 255,128,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,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,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, - 0,0,0,96,4,0,0,115,4,0,0,0,20,1,255,128, - 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,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, - 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, - 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, - 41,3,122,38,67,114,101,97,116,101,32,97,110,32,117,110, - 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,122,38,101,120,116,101, + 6,100,7,132,0,90,6,101,7,135,0,102,1,100,8,100, + 9,132,8,131,1,90,8,101,7,100,10,100,11,132,0,131, + 1,90,9,100,12,100,13,132,0,90,10,101,7,100,14,100, + 15,132,0,131,1,90,11,135,0,4,0,90,12,83,0,41, + 16,218,10,70,105,108,101,76,111,97,100,101,114,122,103,66, + 97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,32, + 99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,108, + 101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,101, + 114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,111, + 100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,117, + 105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,32, + 117,115,97,103,101,46,99,3,0,0,0,0,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,1,83,0,41,2,122,75,67,97,99,104,101,32,116,104, + 101,32,109,111,100,117,108,101,32,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,163,0,0,0,41,3,114,123,0,0,0, + 114,143,0,0,0,114,52,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,216,0,0,0,221,3, + 0,0,115,6,0,0,0,6,3,10,1,255,128,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,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,114,0,0,0,169,2,218, + 9,95,95,99,108,97,115,115,95,95,114,136,0,0,0,169, + 2,114,123,0,0,0,90,5,111,116,104,101,114,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,6,95,95, + 101,113,95,95,227,3,0,0,115,8,0,0,0,12,1,10, + 1,2,255,255,128,122,17,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,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,114,0,0,0,169, + 3,218,4,104,97,115,104,114,121,0,0,0,114,52,0,0, + 0,169,1,114,123,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,8,95,95,104,97,115,104,95, + 95,231,3,0,0,115,4,0,0,0,20,1,255,128,122,19, + 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,0,0,0,0, + 2,0,0,0,3,0,0,0,3,0,0,0,115,16,0,0, + 0,116,0,116,1,124,0,131,2,160,2,124,1,161,1,83, + 0,41,2,122,100,76,111,97,100,32,97,32,109,111,100,117, + 108,101,32,102,114,111,109,32,97,32,102,105,108,101,46,10, + 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,3,218,5,115,117, + 112,101,114,114,246,0,0,0,114,227,0,0,0,114,226,0, + 0,0,169,1,114,248,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,227,0,0,0,234,3,0,0,115,4,0,0, + 0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114,110,32,116,104,101,32, + 112,97,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,78, + 114,56,0,0,0,114,226,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,183,0,0,0,246,3, + 0,0,115,4,0,0,0,6,3,255,128,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,0,0,0, + 0,3,0,0,0,8,0,0,0,67,0,0,0,115,128,0, + 0,0,116,0,124,0,116,1,116,2,102,2,131,2,114,72, + 116,3,160,4,116,5,124,1,131,1,161,1,143,24,125,2, + 124,2,160,6,161,0,87,0,2,0,100,1,4,0,4,0, + 131,3,1,0,83,0,49,0,115,58,48,0,1,0,1,0, + 1,0,89,0,1,0,100,1,83,0,116,3,160,7,124,1, + 100,2,161,2,143,24,125,2,124,2,160,6,161,0,87,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, + 115,114,48,0,1,0,1,0,1,0,89,0,1,0,100,1, + 83,0,41,3,122,39,82,101,116,117,114,110,32,116,104,101, + 32,100,97,116,97,32,102,114,111,109,32,112,97,116,104,32, + 97,115,32,114,97,119,32,98,121,116,101,115,46,78,218,1, + 114,41,8,114,165,0,0,0,114,228,0,0,0,218,19,69, + 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, + 101,114,114,72,0,0,0,90,9,111,112,101,110,95,99,111, + 100,101,114,90,0,0,0,90,4,114,101,97,100,114,73,0, + 0,0,41,3,114,123,0,0,0,114,52,0,0,0,114,76, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,234,0,0,0,251,3,0,0,115,14,0,0,0, + 14,2,16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0, + 3,0,0,0,2,0,0,0,67,0,0,0,115,20,0,0, + 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, + 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, + 10,70,105,108,101,82,101,97,100,101,114,41,2,90,17,105, + 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, + 114,4,1,0,0,41,3,114,123,0,0,0,114,223,0,0, + 0,114,4,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,4,4,0,0,115,6, + 0,0,0,12,2,8,1,255,128,122,30,70,105,108,101,76, + 111,97,100,101,114,46,103,101,116,95,114,101,115,111,117,114, + 99,101,95,114,101,97,100,101,114,41,13,114,130,0,0,0, + 114,129,0,0,0,114,131,0,0,0,114,132,0,0,0,114, + 216,0,0,0,114,250,0,0,0,114,254,0,0,0,114,140, + 0,0,0,114,227,0,0,0,114,183,0,0,0,114,234,0, + 0,0,114,5,1,0,0,90,13,95,95,99,108,97,115,115, + 99,101,108,108,95,95,114,7,0,0,0,114,7,0,0,0, + 114,0,1,0,0,114,8,0,0,0,114,246,0,0,0,216, + 3,0,0,115,26,0,0,0,8,0,4,2,8,3,8,6, + 8,4,2,3,14,1,2,11,10,1,8,4,2,9,18,1, + 255,128,114,246,0,0,0,99,0,0,0,0,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,7,156,1,100,8,100,9,132,2,90,6,100, + 10,83,0,41,11,218,16,83,111,117,114,99,101,70,105,108, + 101,76,111,97,100,101,114,122,62,67,111,110,99,114,101,116, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,83,111,117,114,99,101,76,111,97,100,101,114, + 32,117,115,105,110,103,32,116,104,101,32,102,105,108,101,32, + 115,121,115,116,101,109,46,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, + 115,22,0,0,0,116,0,124,1,131,1,125,2,124,2,106, + 1,124,2,106,2,100,1,156,2,83,0,41,3,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,173,0,0,0,114,241,0,0,0,78,41,3,114, + 57,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,123,0,0,0,114,52, + 0,0,0,114,245,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,231,0,0,0,14,4,0,0, + 115,6,0,0,0,8,2,14,1,255,128,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,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,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,119,0,0, + 0,114,232,0,0,0,41,5,114,123,0,0,0,114,112,0, + 0,0,114,111,0,0,0,114,37,0,0,0,114,60,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,233,0,0,0,19,4,0,0,115,6,0,0,0,8,2, + 16,1,255,128,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,68,0,0,0,114,8,1,0,0, + 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, + 0,11,0,0,0,67,0,0,0,115,248,0,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,4,131,1,115,52,116,0,124,4,131,1, + 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, + 113,16,116,3,124,6,131,1,68,0,93,96,125,7,116,4, + 124,4,124,7,131,2,125,4,122,14,116,5,160,6,124,4, + 161,1,1,0,87,0,113,60,4,0,116,7,121,106,1,0, + 1,0,1,0,89,0,113,60,4,0,116,8,121,246,1,0, + 125,8,1,0,122,30,116,9,160,10,100,1,124,4,124,8, + 161,3,1,0,87,0,89,0,100,2,125,8,126,8,1,0, + 100,2,83,0,100,2,125,8,126,8,48,0,122,30,116,11, + 124,1,124,2,124,3,131,3,1,0,116,9,160,10,100,3, + 124,1,161,2,1,0,87,0,100,2,83,0,4,0,116,8, + 121,240,1,0,125,8,1,0,122,28,116,9,160,10,100,1, + 124,1,124,8,161,3,1,0,87,0,89,0,100,2,125,8, + 126,8,100,2,83,0,100,2,125,8,126,8,48,0,48,0, + 100,2,83,0,48,0,41,4,122,27,87,114,105,116,101,32, + 98,121,116,101,115,32,100,97,116,97,32,116,111,32,97,32, + 102,105,108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0, + 0,0,114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139, + 0,0,0,114,153,0,0,0,114,77,0,0,0,41,9,114, + 123,0,0,0,114,52,0,0,0,114,37,0,0,0,114,9, + 1,0,0,218,6,112,97,114,101,110,116,114,101,0,0,0, + 114,47,0,0,0,114,43,0,0,0,114,235,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,232, + 0,0,0,24,4,0,0,115,58,0,0,0,12,2,4,1, + 12,2,12,1,12,1,12,2,10,1,2,1,14,1,12,1, + 4,2,14,1,6,3,4,1,4,255,16,2,8,128,2,1, + 12,1,18,1,14,1,8,2,2,1,18,255,8,128,2,254, + 4,255,2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131, + 0,0,0,114,132,0,0,0,114,231,0,0,0,114,233,0, + 0,0,114,232,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,6,1,0,0, + 10,4,0,0,115,12,0,0,0,8,0,4,2,8,2,8, + 5,18,5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114, + 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, + 122,45,76,111,97,100,101,114,32,119,104,105,99,104,32,104, + 97,110,100,108,101,115,32,115,111,117,114,99,101,108,101,115, + 115,32,102,105,108,101,32,105,109,112,111,114,116,115,46,99, + 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 5,0,0,0,67,0,0,0,115,68,0,0,0,124,0,160, + 0,124,1,161,1,125,2,124,0,160,1,124,2,161,1,125, + 3,124,1,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,163,0,0,0,114,149,0,0,0,41,2, + 114,121,0,0,0,114,111,0,0,0,41,5,114,183,0,0, + 0,114,234,0,0,0,114,156,0,0,0,114,169,0,0,0, + 114,242,0,0,0,41,5,114,123,0,0,0,114,143,0,0, + 0,114,52,0,0,0,114,37,0,0,0,114,155,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 220,0,0,0,59,4,0,0,115,24,0,0,0,10,1,10, + 1,2,4,2,1,6,254,12,4,2,1,14,1,2,1,2, + 1,6,253,255,128,122,29,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, + 99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,236,0,0,0, + 75,4,0,0,115,4,0,0,0,4,2,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0, + 114,132,0,0,0,114,220,0,0,0,114,236,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,12,1,0,0,55,4,0,0,115,10,0,0, + 0,8,0,4,2,8,2,12,16,255,128,114,12,1,0,0, + 99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0, + 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, + 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, + 90,10,100,16,100,17,132,0,90,11,101,12,100,18,100,19, + 132,0,131,1,90,13,100,20,83,0,41,21,114,3,1,0, + 0,122,93,76,111,97,100,101,114,32,102,111,114,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,115,46, + 10,10,32,32,32,32,84,104,101,32,99,111,110,115,116,114, + 117,99,116,111,114,32,105,115,32,100,101,115,105,103,110,101, + 100,32,116,111,32,119,111,114,107,32,119,105,116,104,32,70, + 105,108,101,70,105,110,100,101,114,46,10,10,32,32,32,32, + 99,3,0,0,0,0,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,114, + 0,0,0,114,163,0,0,0,41,3,114,123,0,0,0,114, + 121,0,0,0,114,52,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,216,0,0,0,88,4,0, + 0,115,6,0,0,0,6,1,10,1,255,128,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,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,114,0,0,0,114,247,0,0,0,114,249,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,250, + 0,0,0,92,4,0,0,115,8,0,0,0,12,1,10,1, + 2,255,255,128,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,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,114,0,0,0,114,251,0,0,0,114,253,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,254,0,0,0,96,4,0,0,115,4,0,0,0,20,1, + 255,128,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,0,0,0,0,3,0,0, + 0,5,0,0,0,67,0,0,0,115,36,0,0,0,116,0, + 160,1,116,2,106,3,124,1,161,2,125,2,116,0,160,4, + 100,1,124,1,106,5,124,0,106,6,161,3,1,0,124,2, + 83,0,41,3,122,38,67,114,101,97,116,101,32,97,110,32, + 117,110,105,116,105,97,108,105,122,101,100,32,101,120,116,101, + 110,115,105,111,110,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,78,41,7,114,139,0,0,0,114,221,0,0, + 0,114,167,0,0,0,90,14,99,114,101,97,116,101,95,100, + 121,110,97,109,105,99,114,153,0,0,0,114,121,0,0,0, + 114,52,0,0,0,41,3,114,123,0,0,0,114,191,0,0, + 0,114,223,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,219,0,0,0,99,4,0,0,115,16, + 0,0,0,4,2,6,1,4,255,6,2,8,1,4,255,4, + 2,255,128,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,108,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,5,0,0,0,67,0,0,0,115, + 36,0,0,0,116,0,160,1,116,2,106,3,124,1,161,2, + 1,0,116,0,160,4,100,1,124,0,106,5,124,0,106,6, + 161,3,1,0,100,2,83,0,41,3,122,30,73,110,105,116, + 105,97,108,105,122,101,32,97,110,32,101,120,116,101,110,115, + 105,111,110,32,109,111,100,117,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,108,111,97,100,101,100,32,102,114,111,109,32,123,33, - 114,125,78,41,7,114,139,0,0,0,114,221,0,0,0,114, - 167,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, + 125,32,101,120,101,99,117,116,101,100,32,102,114,111,109,32, + 123,33,114,125,78,41,7,114,139,0,0,0,114,221,0,0, + 0,114,167,0,0,0,90,12,101,120,101,99,95,100,121,110, 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, - 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, - 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,219,0,0,0,99,4,0,0,115,16,0,0, - 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, - 128,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,108,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, - 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, - 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, - 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, - 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, - 110,32,109,111,100,117,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,139,0,0,0,114,221,0,0,0,114, - 167,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, - 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, - 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, - 0,107,4,0,0,115,10,0,0,0,14,2,6,1,8,1, - 8,255,255,128,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,0,0,0, - 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,36, - 0,0,0,116,0,124,0,106,1,131,1,100,1,25,0,137, - 0,116,2,135,0,102,1,100,2,100,3,132,8,116,3,68, - 0,131,1,131,1,83,0,41,5,122,49,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,105, - 115,32,97,32,112,97,99,107,97,103,101,46,114,3,0,0, - 0,99,1,0,0,0,0,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,216,0,0,0, - 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, - 0,116,4,0,0,115,8,0,0,0,4,0,2,1,20,255, - 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, - 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, - 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, - 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, - 114,186,0,0,0,113,4,0,0,115,10,0,0,0,14,2, - 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,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,122,63,82,101, - 116,117,114,110,32,78,111,110,101,32,97,115,32,97,110,32, + 0,0,0,169,2,114,123,0,0,0,114,223,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,224, + 0,0,0,107,4,0,0,115,10,0,0,0,14,2,6,1, + 8,1,8,255,255,128,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,0, + 0,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0, + 115,36,0,0,0,116,0,124,0,106,1,131,1,100,1,25, + 0,137,0,116,2,135,0,102,1,100,2,100,3,132,8,116, + 3,68,0,131,1,131,1,83,0,41,5,122,49,82,101,116, + 117,114,110,32,84,114,117,101,32,105,102,32,116,104,101,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,7, - 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,220,0,0,0,119,4,0,0, - 115,4,0,0,0,4,2,255,128,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,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,122,53,82,101,116, - 117,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,7,0,0,0,114,226,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, - 0,123,4,0,0,115,4,0,0,0,4,2,255,128,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,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,1,1,0,0,114,56,0,0,0,114,226,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,183,0,0,0,127,4,0,0,115,4,0,0,0,6,3, - 255,128,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,130,0,0,0,114,129,0,0, - 0,114,131,0,0,0,114,132,0,0,0,114,216,0,0,0, - 114,250,0,0,0,114,254,0,0,0,114,219,0,0,0,114, - 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, - 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,3,1,0,0,80,4,0,0,115,26,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,64,0,0,0,115,104,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,90,6, - 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, - 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, - 100,16,100,17,132,0,90,11,100,18,100,19,132,0,90,12, - 100,20,100,21,132,0,90,13,100,22,100,23,132,0,90,14, - 100,24,83,0,41,25,218,14,95,78,97,109,101,115,112,97, - 99,101,80,97,116,104,97,38,1,0,0,82,101,112,114,101, - 115,101,110,116,115,32,97,32,110,97,109,101,115,112,97,99, - 101,32,112,97,99,107,97,103,101,39,115,32,112,97,116,104, - 46,32,32,73,116,32,117,115,101,115,32,116,104,101,32,109, - 111,100,117,108,101,32,110,97,109,101,10,32,32,32,32,116, - 111,32,102,105,110,100,32,105,116,115,32,112,97,114,101,110, - 116,32,109,111,100,117,108,101,44,32,97,110,100,32,102,114, - 111,109,32,116,104,101,114,101,32,105,116,32,108,111,111,107, - 115,32,117,112,32,116,104,101,32,112,97,114,101,110,116,39, - 115,10,32,32,32,32,95,95,112,97,116,104,95,95,46,32, - 32,87,104,101,110,32,116,104,105,115,32,99,104,97,110,103, - 101,115,44,32,116,104,101,32,109,111,100,117,108,101,39,115, - 32,111,119,110,32,112,97,116,104,32,105,115,32,114,101,99, - 111,109,112,117,116,101,100,44,10,32,32,32,32,117,115,105, - 110,103,32,112,97,116,104,95,102,105,110,100,101,114,46,32, - 32,70,111,114,32,116,111,112,45,108,101,118,101,108,32,109, - 111,100,117,108,101,115,44,32,116,104,101,32,112,97,114,101, - 110,116,32,109,111,100,117,108,101,39,115,32,112,97,116,104, - 10,32,32,32,32,105,115,32,115,121,115,46,112,97,116,104, - 46,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124, - 1,124,0,95,0,124,2,124,0,95,1,116,2,124,0,160, - 3,161,0,131,1,124,0,95,4,124,3,124,0,95,5,100, - 0,83,0,114,114,0,0,0,41,6,218,5,95,110,97,109, - 101,218,5,95,112,97,116,104,114,116,0,0,0,218,16,95, - 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,218, - 17,95,108,97,115,116,95,112,97,114,101,110,116,95,112,97, - 116,104,218,12,95,112,97,116,104,95,102,105,110,100,101,114, - 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, - 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,140,4,0,0,115,10,0,0,0,6,1,6,1,14, - 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,124,0,106,0, - 160,1,100,1,161,1,92,3,125,1,125,2,125,3,124,2, - 100,2,107,2,114,30,100,3,83,0,124,1,100,4,102,2, - 83,0,41,6,122,62,82,101,116,117,114,110,115,32,97,32, - 116,117,112,108,101,32,111,102,32,40,112,97,114,101,110,116, - 45,109,111,100,117,108,101,45,110,97,109,101,44,32,112,97, - 114,101,110,116,45,112,97,116,104,45,97,116,116,114,45,110, - 97,109,101,41,114,79,0,0,0,114,10,0,0,0,41,2, - 114,15,0,0,0,114,52,0,0,0,90,8,95,95,112,97, - 116,104,95,95,78,41,2,114,19,1,0,0,114,49,0,0, - 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, - 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, - 114,8,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,146,4, - 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, - 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, - 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0,0,114, - 135,0,0,0,114,15,0,0,0,218,7,109,111,100,117,108, - 101,115,41,3,114,123,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,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, - 0,156,4,0,0,115,6,0,0,0,12,1,16,1,255,128, - 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,0,0,0,0,3,0, - 0,0,4,0,0,0,67,0,0,0,115,80,0,0,0,116, - 0,124,0,160,1,161,0,131,1,125,1,124,1,124,0,106, - 2,107,3,114,74,124,0,160,3,124,0,106,4,124,1,161, - 2,125,2,124,2,100,0,117,1,114,68,124,2,106,5,100, - 0,117,0,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, - 114,0,0,0,41,8,114,116,0,0,0,114,21,1,0,0, - 114,22,1,0,0,114,23,1,0,0,114,19,1,0,0,114, - 144,0,0,0,114,182,0,0,0,114,20,1,0,0,41,3, - 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, - 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, - 108,97,116,101,160,4,0,0,115,18,0,0,0,12,2,10, - 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, - 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, - 0,0,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,114,0,0,0,41,2,218,4,105, - 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, - 105,116,101,114,95,95,173,4,0,0,115,4,0,0,0,12, - 1,255,128,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,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, - 0,67,0,0,0,115,12,0,0,0,124,0,160,0,161,0, - 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, - 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,103,101,116,105,116,101,109,95,95,176,4,0,0, - 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, - 116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41,3,114, - 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 95,115,101,116,105,116,101,109,95,95,179,4,0,0,115,4, - 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, - 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, - 109,95,95,99,1,0,0,0,0,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,114,0, - 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, + 32,105,115,32,97,32,112,97,99,107,97,103,101,46,114,3, + 0,0,0,99,1,0,0,0,0,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,216,0, + 0,0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9, + 0,0,0,116,4,0,0,115,8,0,0,0,4,0,2,1, + 20,255,255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103, + 101,110,101,120,112,114,62,78,41,4,114,55,0,0,0,114, + 52,0,0,0,218,3,97,110,121,114,212,0,0,0,114,226, + 0,0,0,114,7,0,0,0,114,16,1,0,0,114,8,0, + 0,0,114,186,0,0,0,113,4,0,0,115,10,0,0,0, + 14,2,12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0, + 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,122,63, + 82,101,116,117,114,110,32,78,111,110,101,32,97,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,220,0,0,0,119,4, + 0,0,115,4,0,0,0,4,2,255,128,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,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,122,53,82, + 101,116,117,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,7,0,0,0,114,226,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,236, + 0,0,0,123,4,0,0,115,4,0,0,0,4,2,255,128, + 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,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,1,1,0,0,114,56,0,0,0,114,226, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,7,95,95,108,101,110,95,95,182,4,0,0,115, - 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, - 99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0,0,114, - 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,114,101,112,114,95,95,185,4,0, - 0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114,114,0, - 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, - 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,188,4,0,0,115,4,0,0,0,12,1,255,128,122,27, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, - 0,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,114,0,0,0,41,2, - 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, - 0,0,0,191,4,0,0,115,4,0,0,0,16,1,255,128, - 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,15,114,130,0,0,0,114, - 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, - 0,0,0,114,26,1,0,0,114,21,1,0,0,114,28,1, - 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, - 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, - 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,18,1,0,0,133,4, - 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0,131,1, - 90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, - 90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, - 90,9,100,13,100,14,132,0,90,10,100,15,100,16,132,0, - 90,11,100,17,83,0,41,18,218,16,95,78,97,109,101,115, - 112,97,99,101,76,111,97,100,101,114,99,4,0,0,0,0, - 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,114,0,0,0,41, - 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, + 0,0,114,183,0,0,0,127,4,0,0,115,4,0,0,0, + 6,3,255,128,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,130,0,0,0,114,129, + 0,0,0,114,131,0,0,0,114,132,0,0,0,114,216,0, + 0,0,114,250,0,0,0,114,254,0,0,0,114,219,0,0, + 0,114,224,0,0,0,114,186,0,0,0,114,220,0,0,0, + 114,236,0,0,0,114,140,0,0,0,114,183,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,3,1,0,0,80,4,0,0,115,26,0,0, + 0,8,0,4,2,8,6,8,4,8,4,8,3,8,8,8, + 6,8,6,8,4,2,4,14,1,255,128,114,3,1,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,64,0,0,0,115,104,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, + 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, + 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, + 90,10,100,16,100,17,132,0,90,11,100,18,100,19,132,0, + 90,12,100,20,100,21,132,0,90,13,100,22,100,23,132,0, + 90,14,100,24,83,0,41,25,218,14,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,97,38,1,0,0,82,101,112, + 114,101,115,101,110,116,115,32,97,32,110,97,109,101,115,112, + 97,99,101,32,112,97,99,107,97,103,101,39,115,32,112,97, + 116,104,46,32,32,73,116,32,117,115,101,115,32,116,104,101, + 32,109,111,100,117,108,101,32,110,97,109,101,10,32,32,32, + 32,116,111,32,102,105,110,100,32,105,116,115,32,112,97,114, + 101,110,116,32,109,111,100,117,108,101,44,32,97,110,100,32, + 102,114,111,109,32,116,104,101,114,101,32,105,116,32,108,111, + 111,107,115,32,117,112,32,116,104,101,32,112,97,114,101,110, + 116,39,115,10,32,32,32,32,95,95,112,97,116,104,95,95, + 46,32,32,87,104,101,110,32,116,104,105,115,32,99,104,97, + 110,103,101,115,44,32,116,104,101,32,109,111,100,117,108,101, + 39,115,32,111,119,110,32,112,97,116,104,32,105,115,32,114, + 101,99,111,109,112,117,116,101,100,44,10,32,32,32,32,117, + 115,105,110,103,32,112,97,116,104,95,102,105,110,100,101,114, + 46,32,32,70,111,114,32,116,111,112,45,108,101,118,101,108, + 32,109,111,100,117,108,101,115,44,32,116,104,101,32,112,97, + 114,101,110,116,32,109,111,100,117,108,101,39,115,32,112,97, + 116,104,10,32,32,32,32,105,115,32,115,121,115,46,112,97, + 116,104,46,99,4,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,67,0,0,0,115,36,0,0, + 0,124,1,124,0,95,0,124,2,124,0,95,1,116,2,124, + 0,160,3,161,0,131,1,124,0,95,4,124,3,124,0,95, + 5,100,0,83,0,114,114,0,0,0,41,6,218,5,95,110, + 97,109,101,218,5,95,112,97,116,104,114,116,0,0,0,218, + 16,95,103,101,116,95,112,97,114,101,110,116,95,112,97,116, + 104,218,17,95,108,97,115,116,95,112,97,114,101,110,116,95, + 112,97,116,104,218,12,95,112,97,116,104,95,102,105,110,100, + 101,114,169,4,114,123,0,0,0,114,121,0,0,0,114,52, + 0,0,0,90,11,112,97,116,104,95,102,105,110,100,101,114, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 216,0,0,0,197,4,0,0,115,4,0,0,0,18,1,255, - 128,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,1,0,0, - 0,0,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,3,122,115,82,101,116,117,114,110, - 32,114,101,112,114,32,102,111,114,32,116,104,101,32,109,111, - 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,109,101,116,104,111,100,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,46,32,32,84,104,101,32,105,109, - 112,111,114,116,32,109,97,99,104,105,110,101,114,121,32,100, - 111,101,115,32,116,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,78,41,2,114,70,0,0,0, - 114,130,0,0,0,41,1,114,223,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,200,4,0,0,115,4,0,0, - 0,12,7,255,128,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,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,7,0,0,0,114,226, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,186,0,0,0,209,4,0,0,115,4,0,0,0, - 4,1,255,128,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,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,10,0,0,0,114,7,0,0,0, + 216,0,0,0,140,4,0,0,115,10,0,0,0,6,1,6, + 1,14,1,10,1,255,128,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,0,0,0,0,4,0,0, + 0,3,0,0,0,67,0,0,0,115,38,0,0,0,124,0, + 106,0,160,1,100,1,161,1,92,3,125,1,125,2,125,3, + 124,2,100,2,107,2,114,30,100,3,83,0,124,1,100,4, + 102,2,83,0,41,6,122,62,82,101,116,117,114,110,115,32, + 97,32,116,117,112,108,101,32,111,102,32,40,112,97,114,101, + 110,116,45,109,111,100,117,108,101,45,110,97,109,101,44,32, + 112,97,114,101,110,116,45,112,97,116,104,45,97,116,116,114, + 45,110,97,109,101,41,114,79,0,0,0,114,10,0,0,0, + 41,2,114,15,0,0,0,114,52,0,0,0,90,8,95,95, + 112,97,116,104,95,95,78,41,2,114,19,1,0,0,114,49, + 0,0,0,41,4,114,123,0,0,0,114,11,1,0,0,218, + 3,100,111,116,90,2,109,101,114,7,0,0,0,114,7,0, + 0,0,114,8,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, + 146,4,0,0,115,10,0,0,0,18,2,8,1,4,2,8, + 3,255,128,122,38,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,102,105,110,100,95,112,97,114,101,110,116, + 95,112,97,116,104,95,110,97,109,101,115,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0, + 0,114,135,0,0,0,114,15,0,0,0,218,7,109,111,100, + 117,108,101,115,41,3,114,123,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, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,21, + 1,0,0,156,4,0,0,115,6,0,0,0,12,1,16,1, + 255,128,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,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,80,0,0, + 0,116,0,124,0,160,1,161,0,131,1,125,1,124,1,124, + 0,106,2,107,3,114,74,124,0,160,3,124,0,106,4,124, + 1,161,2,125,2,124,2,100,0,117,1,114,68,124,2,106, + 5,100,0,117,0,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,114,0,0,0,41,8,114,116,0,0,0,114,21,1, + 0,0,114,22,1,0,0,114,23,1,0,0,114,19,1,0, + 0,114,144,0,0,0,114,182,0,0,0,114,20,1,0,0, + 41,3,114,123,0,0,0,90,11,112,97,114,101,110,116,95, + 112,97,116,104,114,191,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,12,95,114,101,99,97,108, + 99,117,108,97,116,101,160,4,0,0,115,18,0,0,0,12, + 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,255, + 128,122,27,95,78,97,109,101,115,112,97,99,101,80,97,116, + 104,46,95,114,101,99,97,108,99,117,108,97,116,101,99,1, + 0,0,0,0,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,114,0,0,0,41,2,218, + 4,105,116,101,114,114,28,1,0,0,114,253,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,8, + 95,95,105,116,101,114,95,95,173,4,0,0,115,4,0,0, + 0,12,1,255,128,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,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,12,0,0,0,124,0,160,0, + 161,0,124,1,25,0,83,0,114,114,0,0,0,169,1,114, + 28,1,0,0,41,2,114,123,0,0,0,218,5,105,110,100, + 101,120,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,95,95,103,101,116,105,116,101,109,95,95,176,4, + 0,0,115,4,0,0,0,12,1,255,128,122,26,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,95,103,101, + 116,105,116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41, + 3,114,123,0,0,0,114,32,1,0,0,114,52,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,95,95,115,101,116,105,116,101,109,95,95,179,4,0,0, + 115,4,0,0,0,14,1,255,128,122,26,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,115,101,116,105, + 116,101,109,95,95,99,1,0,0,0,0,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, + 114,0,0,0,41,2,114,4,0,0,0,114,28,1,0,0, + 114,253,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,7,95,95,108,101,110,95,95,182,4,0, + 0,115,4,0,0,0,12,1,255,128,122,22,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110, + 95,95,99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0, + 0,114,253,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,8,95,95,114,101,112,114,95,95,185, + 4,0,0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114, + 114,0,0,0,114,31,1,0,0,169,2,114,123,0,0,0, + 218,4,105,116,101,109,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,12,95,95,99,111,110,116,97,105,110, + 115,95,95,188,4,0,0,115,4,0,0,0,12,1,255,128, + 122,27,95,78,97,109,101,115,112,97,99,101,80,97,116,104, + 46,95,95,99,111,110,116,97,105,110,115,95,95,99,2,0, + 0,0,0,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,114,0,0,0, + 41,2,114,20,1,0,0,114,190,0,0,0,114,37,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,190,0,0,0,191,4,0,0,115,4,0,0,0,16,1, + 255,128,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,15,114,130,0,0, + 0,114,129,0,0,0,114,131,0,0,0,114,132,0,0,0, + 114,216,0,0,0,114,26,1,0,0,114,21,1,0,0,114, + 28,1,0,0,114,30,1,0,0,114,33,1,0,0,114,34, + 1,0,0,114,35,1,0,0,114,36,1,0,0,114,39,1, + 0,0,114,190,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,18,1,0,0, + 133,4,0,0,115,28,0,0,0,8,0,4,1,8,6,8, + 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, + 3,12,3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0, + 131,1,90,5,100,5,100,6,132,0,90,6,100,7,100,8, + 132,0,90,7,100,9,100,10,132,0,90,8,100,11,100,12, + 132,0,90,9,100,13,100,14,132,0,90,10,100,15,100,16, + 132,0,90,11,100,17,83,0,41,18,218,16,95,78,97,109, + 101,115,112,97,99,101,76,111,97,100,101,114,99,4,0,0, + 0,0,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,114,0,0, + 0,41,2,114,18,1,0,0,114,20,1,0,0,114,24,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,216,0,0,0,197,4,0,0,115,4,0,0,0,18, + 1,255,128,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,1, + 0,0,0,0,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,3,122,115,82,101,116,117, + 114,110,32,114,101,112,114,32,102,111,114,32,116,104,101,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,109,101,116,104,111,100,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,46,32,32,84,104,101,32, + 105,109,112,111,114,116,32,109,97,99,104,105,110,101,114,121, + 32,100,111,101,115,32,116,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,78,41,2,114,70,0, + 0,0,114,130,0,0,0,41,1,114,223,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,109, + 111,100,117,108,101,95,114,101,112,114,200,4,0,0,115,4, + 0,0,0,12,7,255,128,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,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,7,0,0,0, 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,236,0,0,0,212,4,0,0,115,4,0, + 8,0,0,0,114,186,0,0,0,209,4,0,0,115,4,0, 0,0,4,1,255,128,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,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,10,0,0,0,122,8,60,115,116,114,105, - 110,103,62,114,222,0,0,0,84,41,1,114,238,0,0,0, - 41,1,114,239,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, - 215,4,0,0,115,4,0,0,0,16,1,255,128,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,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,217,0,0,0,114, - 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,219,0,0,0,218,4,0, - 0,115,4,0,0,0,4,0,255,128,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, + 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,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,10,0,0,0,114,7,0, + 0,0,114,226,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,236,0,0,0,212,4,0,0,115, + 4,0,0,0,4,1,255,128,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,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,10,0,0,0,122,8,60,115,116, + 114,105,110,103,62,114,222,0,0,0,84,41,1,114,238,0, + 0,0,41,1,114,239,0,0,0,114,226,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, + 0,0,215,4,0,0,115,4,0,0,0,16,1,255,128,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,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,114,0,0, - 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,221, - 4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, - 0,0,0,115,26,0,0,0,116,0,160,1,100,1,124,0, - 106,2,161,2,1,0,116,0,160,3,124,0,124,1,161,2, - 83,0,41,3,122,98,76,111,97,100,32,97,32,110,97,109, - 101,115,112,97,99,101,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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, - 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, - 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, - 224,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, - 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131, - 0,0,0,114,216,0,0,0,114,213,0,0,0,114,41,1, - 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, - 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,40,1,0,0,196,4,0,0,115,22,0, - 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, - 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90,6,101, - 7,100,6,100,7,132,0,131,1,90,8,101,7,100,8,100, - 9,132,0,131,1,90,9,101,7,100,19,100,11,100,12,132, - 1,131,1,90,10,101,7,100,20,100,13,100,14,132,1,131, - 1,90,11,101,7,100,21,100,15,100,16,132,1,131,1,90, - 12,101,4,100,17,100,18,132,0,131,1,90,13,100,10,83, - 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, - 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, - 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, - 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, - 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, - 1,106,2,160,3,161,0,131,1,68,0,93,44,92,2,125, - 0,125,1,124,1,100,1,117,0,114,40,116,1,106,2,124, - 0,61,0,113,14,116,4,124,1,100,2,131,2,114,14,124, - 1,160,5,161,0,1,0,113,14,100,1,83,0,41,3,122, - 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, - 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, - 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, - 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, - 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, - 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, - 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, - 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,15,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,133,0,0,0, - 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, - 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,43,1,0,0,243,4,0,0,115,14,0,0, - 0,22,4,8,1,10,1,10,1,10,1,4,252,255,128,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,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,9,0, - 0,0,67,0,0,0,115,76,0,0,0,116,0,106,1,100, - 1,117,1,114,28,116,0,106,1,115,28,116,2,160,3,100, - 2,116,4,161,2,1,0,116,0,106,1,68,0,93,36,125, - 1,122,14,124,1,124,0,131,1,87,0,2,0,1,0,83, - 0,4,0,116,5,121,70,1,0,1,0,1,0,89,0,113, - 34,48,0,100,1,83,0,41,3,122,46,83,101,97,114,99, - 104,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115, - 32,102,111,114,32,97,32,102,105,110,100,101,114,32,102,111, - 114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10,112,97,116,104, - 95,104,111,111,107,115,114,81,0,0,0,114,82,0,0,0, - 114,142,0,0,0,114,122,0,0,0,41,2,114,52,0,0, - 0,90,4,104,111,111,107,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,11,95,112,97,116,104,95,104,111, - 111,107,115,253,4,0,0,115,18,0,0,0,16,3,12,1, - 10,1,2,1,14,1,12,1,6,1,4,2,255,128,122,22, - 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, - 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 100,0,0,0,124,1,100,1,107,2,114,42,122,12,116,0, - 160,1,161,0,125,1,87,0,110,20,4,0,116,2,121,40, - 1,0,1,0,1,0,89,0,100,2,83,0,48,0,122,16, - 116,3,106,4,124,1,25,0,125,2,87,0,124,2,83,0, - 4,0,116,5,121,98,1,0,1,0,1,0,124,0,160,6, - 124,1,161,1,125,2,124,2,116,3,106,4,124,1,60,0, - 89,0,124,2,83,0,48,0,41,3,122,210,71,101,116,32, - 116,104,101,32,102,105,110,100,101,114,32,102,111,114,32,116, - 104,101,32,112,97,116,104,32,101,110,116,114,121,32,102,114, - 111,109,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,10,32,32,32, - 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104, - 32,101,110,116,114,121,32,105,115,32,110,111,116,32,105,110, - 32,116,104,101,32,99,97,99,104,101,44,32,102,105,110,100, - 32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,101, - 32,102,105,110,100,101,114,10,32,32,32,32,32,32,32,32, - 97,110,100,32,99,97,99,104,101,32,105,116,46,32,73,102, - 32,110,111,32,102,105,110,100,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,10, - 0,0,0,78,41,7,114,18,0,0,0,114,63,0,0,0, - 218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,114, - 114,111,114,114,15,0,0,0,114,45,1,0,0,218,8,75, - 101,121,69,114,114,111,114,114,49,1,0,0,41,3,114,202, - 0,0,0,114,52,0,0,0,114,47,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,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,10,5,0,0,115,28,0,0,0,8,8,2,1,12, - 1,12,1,8,3,2,1,12,1,4,4,12,253,10,1,12, - 1,4,1,2,255,255,128,122,31,80,97,116,104,70,105,110, - 100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,99,3,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, - 0,115,82,0,0,0,116,0,124,2,100,1,131,2,114,26, - 124,2,160,1,124,1,161,1,92,2,125,3,125,4,110,14, - 124,2,160,2,124,1,161,1,125,3,103,0,125,4,124,3, - 100,0,117,1,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,141,0,0,0, - 41,7,114,133,0,0,0,114,141,0,0,0,114,210,0,0, - 0,114,139,0,0,0,114,205,0,0,0,114,187,0,0,0, - 114,182,0,0,0,41,6,114,202,0,0,0,114,143,0,0, - 0,114,47,1,0,0,114,144,0,0,0,114,145,0,0,0, - 114,191,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, - 116,95,115,112,101,99,32,5,0,0,115,20,0,0,0,10, - 4,16,1,10,2,4,1,8,1,12,1,12,1,6,1,4, - 1,255,128,122,27,80,97,116,104,70,105,110,100,101,114,46, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 78,99,4,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,5,0,0,0,67,0,0,0,115,166,0,0,0,103, - 0,125,4,124,2,68,0,93,134,125,5,116,0,124,5,116, - 1,116,2,102,2,131,2,115,28,113,8,124,0,160,3,124, - 5,161,1,125,6,124,6,100,1,117,1,114,8,116,4,124, - 6,100,2,131,2,114,70,124,6,160,5,124,1,124,3,161, - 2,125,7,110,12,124,0,160,6,124,1,124,6,161,2,125, - 7,124,7,100,1,117,0,114,92,113,8,124,7,106,7,100, - 1,117,1,114,110,124,7,2,0,1,0,83,0,124,7,106, - 8,125,8,124,8,100,1,117,0,114,132,116,9,100,3,131, - 1,130,1,124,4,160,10,124,8,161,1,1,0,113,8,116, - 11,160,12,124,1,100,1,161,2,125,7,124,4,124,7,95, - 8,124,7,83,0,41,4,122,63,70,105,110,100,32,116,104, - 101,32,108,111,97,100,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,207,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,165,0,0,0,114,90,0,0,0,218, - 5,98,121,116,101,115,114,52,1,0,0,114,133,0,0,0, - 114,207,0,0,0,114,53,1,0,0,114,144,0,0,0,114, - 182,0,0,0,114,122,0,0,0,114,171,0,0,0,114,139, - 0,0,0,114,187,0,0,0,41,9,114,202,0,0,0,114, - 143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0,0,114, - 145,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,9,95,103,101,116,95,115,112,101,99,47,5, - 0,0,115,42,0,0,0,4,5,8,1,14,1,2,1,10, - 1,8,1,10,1,14,1,12,2,8,1,2,1,10,1,8, - 1,6,1,8,1,8,1,12,5,12,2,6,1,4,1,255, - 128,122,20,80,97,116,104,70,105,110,100,101,114,46,95,103, - 101,116,95,115,112,101,99,99,4,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,5,0,0,0,67,0,0,0, - 115,94,0,0,0,124,2,100,1,117,0,114,14,116,0,106, - 1,125,2,124,0,160,2,124,1,124,2,124,3,161,3,125, - 4,124,4,100,1,117,0,114,40,100,1,83,0,124,4,106, - 3,100,1,117,0,114,90,124,4,106,4,125,5,124,5,114, - 86,100,1,124,4,95,5,116,6,124,1,124,5,124,0,106, - 2,131,3,124,4,95,4,124,4,83,0,100,1,83,0,124, - 4,83,0,41,2,122,141,84,114,121,32,116,111,32,102,105, - 110,100,32,97,32,115,112,101,99,32,102,111,114,32,39,102, - 117,108,108,110,97,109,101,39,32,111,110,32,115,121,115,46, - 112,97,116,104,32,111,114,32,39,112,97,116,104,39,46,10, - 10,32,32,32,32,32,32,32,32,84,104,101,32,115,101,97, - 114,99,104,32,105,115,32,98,97,115,101,100,32,111,110,32, - 115,121,115,46,112,97,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,15,0,0,0,114,52,0,0, - 0,114,56,1,0,0,114,144,0,0,0,114,182,0,0,0, - 114,185,0,0,0,114,18,1,0,0,41,6,114,202,0,0, - 0,114,143,0,0,0,114,52,0,0,0,114,206,0,0,0, - 114,191,0,0,0,114,55,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,207,0,0,0,79,5, - 0,0,115,28,0,0,0,8,6,6,1,14,1,8,1,4, - 1,10,1,6,1,4,1,6,3,16,1,4,1,4,2,4, - 2,255,128,122,20,80,97,116,104,70,105,110,100,101,114,46, - 102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, - 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, - 2,125,3,124,3,100,1,117,0,114,24,100,1,83,0,124, - 3,106,1,83,0,41,2,122,170,102,105,110,100,32,116,104, - 101,32,109,111,100,117,108,101,32,111,110,32,115,121,115,46, - 112,97,116,104,32,111,114,32,39,112,97,116,104,39,32,98, - 97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,104, - 95,104,111,111,107,115,32,97,110,100,10,32,32,32,32,32, - 32,32,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,10,32,32,32, + 0,0,0,115,4,0,0,0,100,1,83,0,114,217,0,0, + 0,114,7,0,0,0,114,218,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,219,0,0,0,218, + 4,0,0,115,4,0,0,0,4,0,255,128,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,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,114, + 0,0,0,114,7,0,0,0,114,13,1,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, + 0,221,4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1, + 124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1, + 161,2,83,0,41,3,122,98,76,111,97,100,32,97,32,110, + 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,78,41,4,114,139,0,0,0,114,153,0,0,0,114, + 20,1,0,0,114,225,0,0,0,114,226,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, + 0,0,224,4,0,0,115,10,0,0,0,6,7,4,1,4, + 255,12,3,255,128,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,130,0,0,0,114,129,0,0,0, + 114,131,0,0,0,114,216,0,0,0,114,213,0,0,0,114, + 41,1,0,0,114,186,0,0,0,114,236,0,0,0,114,220, + 0,0,0,114,219,0,0,0,114,224,0,0,0,114,227,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,40,1,0,0,196,4,0,0,115, + 22,0,0,0,8,0,8,1,2,3,10,1,8,8,8,3, + 8,3,8,3,8,3,12,3,255,128,114,40,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90, + 6,101,7,100,6,100,7,132,0,131,1,90,8,101,7,100, + 8,100,9,132,0,131,1,90,9,101,7,100,19,100,11,100, + 12,132,1,131,1,90,10,101,7,100,20,100,13,100,14,132, + 1,131,1,90,11,101,7,100,21,100,15,100,16,132,1,131, + 1,90,12,101,4,100,17,100,18,132,0,131,1,90,13,100, + 10,83,0,41,22,218,10,80,97,116,104,70,105,110,100,101, + 114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110, + 100,101,114,32,102,111,114,32,115,121,115,46,112,97,116,104, + 32,97,110,100,32,112,97,99,107,97,103,101,32,95,95,112, + 97,116,104,95,95,32,97,116,116,114,105,98,117,116,101,115, + 46,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116, + 0,116,1,106,2,160,3,161,0,131,1,68,0,93,44,92, + 2,125,0,125,1,124,1,100,1,117,0,114,40,116,1,106, + 2,124,0,61,0,113,14,116,4,124,1,100,2,131,2,114, + 14,124,1,160,5,161,0,1,0,113,14,100,1,83,0,41, + 3,122,125,67,97,108,108,32,116,104,101,32,105,110,118,97, + 108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,32, + 109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,97, + 116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,115, + 10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,32, + 105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,111, + 114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,101, + 114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,46, + 78,218,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,15,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,133,0, + 0,0,114,43,1,0,0,41,2,114,121,0,0,0,218,6, + 102,105,110,100,101,114,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,43,1,0,0,243,4,0,0,115,16, + 0,0,0,22,4,8,1,10,1,10,1,8,1,2,128,4, + 252,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,9,0,0,0,67,0,0,0,115,76,0,0,0,116, + 0,106,1,100,1,117,1,114,28,116,0,106,1,115,28,116, + 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, + 0,93,36,125,1,122,14,124,1,124,0,131,1,87,0,2, + 0,1,0,83,0,4,0,116,5,121,70,1,0,1,0,1, + 0,89,0,113,34,48,0,100,1,83,0,41,3,122,46,83, + 101,97,114,99,104,32,115,121,115,46,112,97,116,104,95,104, + 111,111,107,115,32,102,111,114,32,97,32,102,105,110,100,101, + 114,32,102,111,114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10, + 112,97,116,104,95,104,111,111,107,115,114,81,0,0,0,114, + 82,0,0,0,114,142,0,0,0,114,122,0,0,0,41,2, + 114,52,0,0,0,90,4,104,111,111,107,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,11,95,112,97,116, + 104,95,104,111,111,107,115,253,4,0,0,115,18,0,0,0, + 16,3,12,1,10,1,2,1,14,1,12,1,6,1,4,2, + 255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,95, + 112,97,116,104,95,104,111,111,107,115,99,2,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,100,0,0,0,124,1,100,1,107,2,114,42, + 122,12,116,0,160,1,161,0,125,1,87,0,110,20,4,0, + 116,2,121,40,1,0,1,0,1,0,89,0,100,2,83,0, + 48,0,122,16,116,3,106,4,124,1,25,0,125,2,87,0, + 124,2,83,0,4,0,116,5,121,98,1,0,1,0,1,0, + 124,0,160,6,124,1,161,1,125,2,124,2,116,3,106,4, + 124,1,60,0,89,0,124,2,83,0,48,0,41,3,122,210, + 71,101,116,32,116,104,101,32,102,105,110,100,101,114,32,102, + 111,114,32,116,104,101,32,112,97,116,104,32,101,110,116,114, + 121,32,102,114,111,109,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, + 10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32, + 112,97,116,104,32,101,110,116,114,121,32,105,115,32,110,111, + 116,32,105,110,32,116,104,101,32,99,97,99,104,101,44,32, + 102,105,110,100,32,116,104,101,32,97,112,112,114,111,112,114, + 105,97,116,101,32,102,105,110,100,101,114,10,32,32,32,32, + 32,32,32,32,97,110,100,32,99,97,99,104,101,32,105,116, + 46,32,73,102,32,110,111,32,102,105,110,100,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,10,0,0,0,78,41,7,114,18,0,0,0,114, + 63,0,0,0,218,17,70,105,108,101,78,111,116,70,111,117, + 110,100,69,114,114,111,114,114,15,0,0,0,114,45,1,0, + 0,218,8,75,101,121,69,114,114,111,114,114,49,1,0,0, + 41,3,114,202,0,0,0,114,52,0,0,0,114,47,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,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,10,5,0,0,115,28,0,0,0,8, + 8,2,1,12,1,12,1,8,3,2,1,12,1,4,4,12, + 253,10,1,12,1,4,1,2,255,255,128,122,31,80,97,116, + 104,70,105,110,100,101,114,46,95,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,99,3,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, + 0,67,0,0,0,115,82,0,0,0,116,0,124,2,100,1, + 131,2,114,26,124,2,160,1,124,1,161,1,92,2,125,3, + 125,4,110,14,124,2,160,2,124,1,161,1,125,3,103,0, + 125,4,124,3,100,0,117,1,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, + 141,0,0,0,41,7,114,133,0,0,0,114,141,0,0,0, + 114,210,0,0,0,114,139,0,0,0,114,205,0,0,0,114, + 187,0,0,0,114,182,0,0,0,41,6,114,202,0,0,0, + 114,143,0,0,0,114,47,1,0,0,114,144,0,0,0,114, + 145,0,0,0,114,191,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,16,95,108,101,103,97,99, + 121,95,103,101,116,95,115,112,101,99,32,5,0,0,115,20, + 0,0,0,10,4,16,1,10,2,4,1,8,1,12,1,12, + 1,6,1,4,1,255,128,122,27,80,97,116,104,70,105,110, + 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95, + 115,112,101,99,78,99,4,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,166, + 0,0,0,103,0,125,4,124,2,68,0,93,134,125,5,116, + 0,124,5,116,1,116,2,102,2,131,2,115,28,113,8,124, + 0,160,3,124,5,161,1,125,6,124,6,100,1,117,1,114, + 8,116,4,124,6,100,2,131,2,114,70,124,6,160,5,124, + 1,124,3,161,2,125,7,110,12,124,0,160,6,124,1,124, + 6,161,2,125,7,124,7,100,1,117,0,114,92,113,8,124, + 7,106,7,100,1,117,1,114,110,124,7,2,0,1,0,83, + 0,124,7,106,8,125,8,124,8,100,1,117,0,114,132,116, + 9,100,3,131,1,130,1,124,4,160,10,124,8,161,1,1, + 0,113,8,116,11,160,12,124,1,100,1,161,2,125,7,124, + 4,124,7,95,8,124,7,83,0,41,4,122,63,70,105,110, + 100,32,116,104,101,32,108,111,97,100,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,207,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,165,0,0,0,114,90, + 0,0,0,218,5,98,121,116,101,115,114,52,1,0,0,114, + 133,0,0,0,114,207,0,0,0,114,53,1,0,0,114,144, + 0,0,0,114,182,0,0,0,114,122,0,0,0,114,171,0, + 0,0,114,139,0,0,0,114,187,0,0,0,41,9,114,202, + 0,0,0,114,143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191, + 0,0,0,114,145,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,9,95,103,101,116,95,115,112, + 101,99,47,5,0,0,115,44,0,0,0,4,5,8,1,14, + 1,2,1,10,1,8,1,10,1,14,1,12,2,8,1,2, + 1,10,1,8,1,6,1,8,1,8,1,10,5,2,128,12, + 2,6,1,4,1,255,128,122,20,80,97,116,104,70,105,110, + 100,101,114,46,95,103,101,116,95,115,112,101,99,99,4,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0, + 0,0,67,0,0,0,115,94,0,0,0,124,2,100,1,117, + 0,114,14,116,0,106,1,125,2,124,0,160,2,124,1,124, + 2,124,3,161,3,125,4,124,4,100,1,117,0,114,40,100, + 1,83,0,124,4,106,3,100,1,117,0,114,90,124,4,106, + 4,125,5,124,5,114,86,100,1,124,4,95,5,116,6,124, + 1,124,5,124,0,106,2,131,3,124,4,95,4,124,4,83, + 0,100,1,83,0,124,4,83,0,41,2,122,141,84,114,121, + 32,116,111,32,102,105,110,100,32,97,32,115,112,101,99,32, + 102,111,114,32,39,102,117,108,108,110,97,109,101,39,32,111, + 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, + 97,116,104,39,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,115,101,97,114,99,104,32,105,115,32,98,97,115, + 101,100,32,111,110,32,115,121,115,46,112,97,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,15,0, + 0,0,114,52,0,0,0,114,56,1,0,0,114,144,0,0, + 0,114,182,0,0,0,114,185,0,0,0,114,18,1,0,0, + 41,6,114,202,0,0,0,114,143,0,0,0,114,52,0,0, + 0,114,206,0,0,0,114,191,0,0,0,114,55,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 207,0,0,0,79,5,0,0,115,28,0,0,0,8,6,6, + 1,14,1,8,1,4,1,10,1,6,1,4,1,6,3,16, + 1,4,1,4,2,4,2,255,128,122,20,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,67,0,0,0,115,30,0,0,0,124,0,160, + 0,124,1,124,2,161,2,125,3,124,3,100,1,117,0,114, + 24,100,1,83,0,124,3,106,1,83,0,41,2,122,170,102, + 105,110,100,32,116,104,101,32,109,111,100,117,108,101,32,111, + 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, + 97,116,104,39,32,98,97,115,101,100,32,111,110,32,115,121, + 115,46,112,97,116,104,95,104,111,111,107,115,32,97,110,100, + 10,32,32,32,32,32,32,32,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,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 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,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,208,0,0,0,114, + 209,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,210,0,0,0,103,5,0,0,115,10,0,0, + 0,12,8,8,1,4,1,6,1,255,128,122,22,80,97,116, + 104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, + 117,108,101,99,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,79,0,0,0,115,28,0,0, + 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,106, + 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,97, + 32,1,0,0,10,32,32,32,32,32,32,32,32,70,105,110, + 100,32,100,105,115,116,114,105,98,117,116,105,111,110,115,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 32,97,110,32,105,116,101,114,97,98,108,101,32,111,102,32, + 97,108,108,32,68,105,115,116,114,105,98,117,116,105,111,110, + 32,105,110,115,116,97,110,99,101,115,32,99,97,112,97,98, + 108,101,32,111,102,10,32,32,32,32,32,32,32,32,108,111, + 97,100,105,110,103,32,116,104,101,32,109,101,116,97,100,97, + 116,97,32,102,111,114,32,112,97,99,107,97,103,101,115,32, + 109,97,116,99,104,105,110,103,32,96,96,99,111,110,116,101, + 120,116,46,110,97,109,101,96,96,10,32,32,32,32,32,32, + 32,32,40,111,114,32,97,108,108,32,110,97,109,101,115,32, + 105,102,32,96,96,78,111,110,101,96,96,32,105,110,100,105, + 99,97,116,101,100,41,32,97,108,111,110,103,32,116,104,101, + 32,112,97,116,104,115,32,105,110,32,116,104,101,32,108,105, + 115,116,10,32,32,32,32,32,32,32,32,111,102,32,100,105, + 114,101,99,116,111,114,105,101,115,32,96,96,99,111,110,116, + 101,120,116,46,112,97,116,104,96,96,46,10,32,32,32,32, + 32,32,32,32,114,0,0,0,0,41,1,218,18,77,101,116, + 97,100,97,116,97,80,97,116,104,70,105,110,100,101,114,78, + 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, + 116,97,100,97,116,97,114,57,1,0,0,218,18,102,105,110, + 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, + 3,114,124,0,0,0,114,125,0,0,0,114,57,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 58,1,0,0,116,5,0,0,115,6,0,0,0,12,10,16, + 1,255,128,122,29,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111, + 110,115,41,1,78,41,2,78,78,41,1,78,41,14,114,130, + 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, + 0,0,114,213,0,0,0,114,43,1,0,0,114,49,1,0, + 0,114,214,0,0,0,114,52,1,0,0,114,53,1,0,0, + 114,56,1,0,0,114,207,0,0,0,114,210,0,0,0,114, + 58,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,42,1,0,0,239,4,0, + 0,115,38,0,0,0,8,0,4,2,2,2,10,1,2,9, + 10,1,2,12,10,1,2,21,10,1,2,14,12,1,2,31, + 12,1,2,23,12,1,2,12,14,1,255,128,114,42,1,0, + 0,99,0,0,0,0,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,90,5,101,6,90,7,100, + 6,100,7,132,0,90,8,100,8,100,9,132,0,90,9,100, + 19,100,11,100,12,132,1,90,10,100,13,100,14,132,0,90, + 11,101,12,100,15,100,16,132,0,131,1,90,13,100,17,100, + 18,132,0,90,14,100,10,83,0,41,20,218,10,70,105,108, + 101,70,105,110,100,101,114,122,172,70,105,108,101,45,98,97, + 115,101,100,32,102,105,110,100,101,114,46,10,10,32,32,32, + 32,73,110,116,101,114,97,99,116,105,111,110,115,32,119,105, + 116,104,32,116,104,101,32,102,105,108,101,32,115,121,115,116, + 101,109,32,97,114,101,32,99,97,99,104,101,100,32,102,111, + 114,32,112,101,114,102,111,114,109,97,110,99,101,44,32,98, + 101,105,110,103,10,32,32,32,32,114,101,102,114,101,115,104, + 101,100,32,119,104,101,110,32,116,104,101,32,100,105,114,101, + 99,116,111,114,121,32,116,104,101,32,102,105,110,100,101,114, + 32,105,115,32,104,97,110,100,108,105,110,103,32,104,97,115, + 32,98,101,101,110,32,109,111,100,105,102,105,101,100,46,10, + 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,6,0,0,0,7,0,0,0,115,84, + 0,0,0,103,0,125,3,124,2,68,0,93,32,92,2,137, + 0,125,4,124,3,160,0,135,0,102,1,100,1,100,2,132, + 8,124,4,68,0,131,1,161,1,1,0,113,8,124,3,124, + 0,95,1,124,1,112,54,100,3,124,0,95,2,100,4,124, + 0,95,3,116,4,131,0,124,0,95,5,116,4,131,0,124, + 0,95,6,100,5,83,0,41,6,122,154,73,110,105,116,105, + 97,108,105,122,101,32,119,105,116,104,32,116,104,101,32,112, + 97,116,104,32,116,111,32,115,101,97,114,99,104,32,111,110, + 32,97,110,100,32,97,32,118,97,114,105,97,98,108,101,32, + 110,117,109,98,101,114,32,111,102,10,32,32,32,32,32,32, + 32,32,50,45,116,117,112,108,101,115,32,99,111,110,116,97, + 105,110,105,110,103,32,116,104,101,32,108,111,97,100,101,114, + 32,97,110,100,32,116,104,101,32,102,105,108,101,32,115,117, + 102,102,105,120,101,115,32,116,104,101,32,108,111,97,100,101, + 114,10,32,32,32,32,32,32,32,32,114,101,99,111,103,110, + 105,122,101,115,46,99,1,0,0,0,0,0,0,0,0,0, + 0,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,114,0,0,0,114,7, + 0,0,0,114,14,1,0,0,169,1,114,144,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,9,0,0,0,145,5, + 0,0,115,4,0,0,0,22,0,255,128,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,79,0,0,0,114,109,0,0,0,78,41,7, + 114,171,0,0,0,218,8,95,108,111,97,100,101,114,115,114, + 52,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,123,0,0,0,114, + 52,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,193,0, + 0,0,114,7,0,0,0,114,60,1,0,0,114,8,0,0, + 0,114,216,0,0,0,139,5,0,0,115,18,0,0,0,4, + 4,12,1,26,1,6,1,10,2,6,1,8,1,12,1,255, + 128,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,0, + 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, + 10,0,0,0,100,1,124,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,109,0,0,0,78,41,1,114,62,1,0,0,114,253, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,43,1,0,0,153,5,0,0,115,4,0,0,0, + 10,2,255,128,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,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,67,0,0,0,115,42,0,0,0, + 124,0,160,0,124,1,161,1,125,2,124,2,100,1,117,0, + 114,26,100,1,103,0,102,2,83,0,124,2,106,1,124,2, + 106,2,112,38,103,0,102,2,83,0,41,2,122,197,84,114, + 121,32,116,111,32,102,105,110,100,32,97,32,108,111,97,100, + 101,114,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,44,32,111,114,32, + 116,104,101,32,110,97,109,101,115,112,97,99,101,10,32,32, + 32,32,32,32,32,32,112,97,99,107,97,103,101,32,112,111, + 114,116,105,111,110,115,46,32,82,101,116,117,114,110,115,32, + 40,108,111,97,100,101,114,44,32,108,105,115,116,45,111,102, + 45,112,111,114,116,105,111,110,115,41,46,10,10,32,32,32, 32,32,32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,210,0, - 0,0,103,5,0,0,115,10,0,0,0,12,8,8,1,4, - 1,6,1,255,128,122,22,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,0,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,79,0,0,0,115,28,0,0,0,100,1,100,2,108, - 0,109,1,125,2,1,0,124,2,106,2,124,0,105,0,124, - 1,164,1,142,1,83,0,41,4,97,32,1,0,0,10,32, - 32,32,32,32,32,32,32,70,105,110,100,32,100,105,115,116, - 114,105,98,117,116,105,111,110,115,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,97,110,32,105,116, - 101,114,97,98,108,101,32,111,102,32,97,108,108,32,68,105, - 115,116,114,105,98,117,116,105,111,110,32,105,110,115,116,97, - 110,99,101,115,32,99,97,112,97,98,108,101,32,111,102,10, - 32,32,32,32,32,32,32,32,108,111,97,100,105,110,103,32, - 116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,114, - 32,112,97,99,107,97,103,101,115,32,109,97,116,99,104,105, - 110,103,32,96,96,99,111,110,116,101,120,116,46,110,97,109, - 101,96,96,10,32,32,32,32,32,32,32,32,40,111,114,32, - 97,108,108,32,110,97,109,101,115,32,105,102,32,96,96,78, - 111,110,101,96,96,32,105,110,100,105,99,97,116,101,100,41, - 32,97,108,111,110,103,32,116,104,101,32,112,97,116,104,115, - 32,105,110,32,116,104,101,32,108,105,115,116,10,32,32,32, - 32,32,32,32,32,111,102,32,100,105,114,101,99,116,111,114, - 105,101,115,32,96,96,99,111,110,116,101,120,116,46,112,97, - 116,104,96,96,46,10,32,32,32,32,32,32,32,32,114,0, - 0,0,0,41,1,218,18,77,101,116,97,100,97,116,97,80, - 97,116,104,70,105,110,100,101,114,78,41,3,90,18,105,109, - 112,111,114,116,108,105,98,46,109,101,116,97,100,97,116,97, - 114,57,1,0,0,218,18,102,105,110,100,95,100,105,115,116, - 114,105,98,117,116,105,111,110,115,41,3,114,124,0,0,0, - 114,125,0,0,0,114,57,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,58,1,0,0,116,5, - 0,0,115,6,0,0,0,12,10,16,1,255,128,122,29,80, - 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,100, - 105,115,116,114,105,98,117,116,105,111,110,115,41,1,78,41, - 2,78,78,41,1,78,41,14,114,130,0,0,0,114,129,0, - 0,0,114,131,0,0,0,114,132,0,0,0,114,213,0,0, - 0,114,43,1,0,0,114,49,1,0,0,114,214,0,0,0, - 114,52,1,0,0,114,53,1,0,0,114,56,1,0,0,114, - 207,0,0,0,114,210,0,0,0,114,58,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,42,1,0,0,239,4,0,0,115,38,0,0,0, - 8,0,4,2,2,2,10,1,2,9,10,1,2,12,10,1, - 2,21,10,1,2,14,12,1,2,31,12,1,2,23,12,1, - 2,12,14,1,255,128,114,42,1,0,0,99,0,0,0,0, - 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,90,5,101,6,90,7,100,6,100,7,132,0,90, - 8,100,8,100,9,132,0,90,9,100,19,100,11,100,12,132, - 1,90,10,100,13,100,14,132,0,90,11,101,12,100,15,100, - 16,132,0,131,1,90,13,100,17,100,18,132,0,90,14,100, - 10,83,0,41,20,218,10,70,105,108,101,70,105,110,100,101, - 114,122,172,70,105,108,101,45,98,97,115,101,100,32,102,105, - 110,100,101,114,46,10,10,32,32,32,32,73,110,116,101,114, - 97,99,116,105,111,110,115,32,119,105,116,104,32,116,104,101, - 32,102,105,108,101,32,115,121,115,116,101,109,32,97,114,101, - 32,99,97,99,104,101,100,32,102,111,114,32,112,101,114,102, - 111,114,109,97,110,99,101,44,32,98,101,105,110,103,10,32, - 32,32,32,114,101,102,114,101,115,104,101,100,32,119,104,101, - 110,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, - 116,104,101,32,102,105,110,100,101,114,32,105,115,32,104,97, - 110,100,108,105,110,103,32,104,97,115,32,98,101,101,110,32, - 109,111,100,105,102,105,101,100,46,10,10,32,32,32,32,99, - 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 6,0,0,0,7,0,0,0,115,84,0,0,0,103,0,125, - 3,124,2,68,0,93,32,92,2,137,0,125,4,124,3,160, - 0,135,0,102,1,100,1,100,2,132,8,124,4,68,0,131, - 1,161,1,1,0,113,8,124,3,124,0,95,1,124,1,112, - 54,100,3,124,0,95,2,100,4,124,0,95,3,116,4,131, - 0,124,0,95,5,116,4,131,0,124,0,95,6,100,5,83, - 0,41,6,122,154,73,110,105,116,105,97,108,105,122,101,32, - 119,105,116,104,32,116,104,101,32,112,97,116,104,32,116,111, - 32,115,101,97,114,99,104,32,111,110,32,97,110,100,32,97, - 32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114, - 32,111,102,10,32,32,32,32,32,32,32,32,50,45,116,117, - 112,108,101,115,32,99,111,110,116,97,105,110,105,110,103,32, - 116,104,101,32,108,111,97,100,101,114,32,97,110,100,32,116, - 104,101,32,102,105,108,101,32,115,117,102,102,105,120,101,115, - 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32, - 32,32,32,32,114,101,99,111,103,110,105,122,101,115,46,99, - 1,0,0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0,0,114,14,1, - 0,0,169,1,114,144,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,9,0,0,0,145,5,0,0,115,4,0,0, - 0,22,0,255,128,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,79,0, - 0,0,114,109,0,0,0,78,41,7,114,171,0,0,0,218, - 8,95,108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0,114,7,0,0, - 0,114,60,1,0,0,114,8,0,0,0,114,216,0,0,0, - 139,5,0,0,115,18,0,0,0,4,4,12,1,26,1,6, - 1,10,2,6,1,8,1,12,1,255,128,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,0,0,0,0,1,0,0, - 0,2,0,0,0,67,0,0,0,115,10,0,0,0,100,1, - 124,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,109,0,0,0, - 78,41,1,114,62,1,0,0,114,253,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,43,1,0, - 0,153,5,0,0,115,4,0,0,0,10,2,255,128,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,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,42,0,0,0,124,0,160,0,124,1, - 161,1,125,2,124,2,100,1,117,0,114,26,100,1,103,0, - 102,2,83,0,124,2,106,1,124,2,106,2,112,38,103,0, - 102,2,83,0,41,2,122,197,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, - 111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,97, - 109,101,115,112,97,99,101,10,32,32,32,32,32,32,32,32, - 112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,115, - 46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,101, - 114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,105, - 111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,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,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,207,0,0,0,114,144,0,0,0,114,182,0,0,0,41, - 3,114,123,0,0,0,114,143,0,0,0,114,191,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 141,0,0,0,159,5,0,0,115,10,0,0,0,10,7,8, - 1,8,1,16,1,255,128,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,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,181,0,0,0,41, - 1,114,194,0,0,0,41,7,114,123,0,0,0,114,192,0, - 0,0,114,143,0,0,0,114,52,0,0,0,90,4,115,109, - 115,108,114,206,0,0,0,114,144,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,56,1,0,0, - 171,5,0,0,115,10,0,0,0,10,1,8,1,2,1,6, - 255,255,128,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,0, - 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, - 0,0,0,115,92,1,0,0,100,1,125,3,124,1,160,0, - 100,2,161,1,100,3,25,0,125,4,122,24,116,1,124,0, - 106,2,112,34,116,3,160,4,161,0,131,1,106,5,125,5, - 87,0,110,22,4,0,116,6,121,64,1,0,1,0,1,0, - 100,4,125,5,89,0,110,2,48,0,124,5,124,0,106,7, - 107,3,114,90,124,0,160,8,161,0,1,0,124,5,124,0, - 95,7,116,9,131,0,114,112,124,0,106,10,125,6,124,4, - 160,11,161,0,125,7,110,10,124,0,106,12,125,6,124,4, - 125,7,124,7,124,6,118,0,114,214,116,13,124,0,106,2, - 124,4,131,2,125,8,124,0,106,14,68,0,93,56,92,2, - 125,9,125,10,100,5,124,9,23,0,125,11,116,13,124,8, - 124,11,131,2,125,12,116,15,124,12,131,1,114,148,124,0, - 160,16,124,10,124,1,124,12,124,8,103,1,124,2,161,5, - 2,0,1,0,83,0,116,17,124,8,131,1,125,3,124,0, - 106,14,68,0,93,80,92,2,125,9,125,10,116,13,124,0, - 106,2,124,4,124,9,23,0,131,2,125,12,116,18,106,19, - 100,6,124,12,100,3,100,7,141,3,1,0,124,7,124,9, - 23,0,124,6,118,0,114,220,116,15,124,12,131,1,114,220, - 124,0,160,16,124,10,124,1,124,12,100,8,124,2,161,5, - 2,0,1,0,83,0,124,3,144,1,114,88,116,18,160,19, - 100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,8, - 161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,0, - 100,8,83,0,41,10,122,111,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,115,32,116,104,101,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,79,0,0,0,114,39,0, - 0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0,0,0,114,52,0,0, - 0,114,18,0,0,0,114,63,0,0,0,114,7,1,0,0, - 114,58,0,0,0,114,62,1,0,0,218,11,95,102,105,108, - 108,95,99,97,99,104,101,114,21,0,0,0,114,65,1,0, - 0,114,110,0,0,0,114,64,1,0,0,114,48,0,0,0, - 114,61,1,0,0,114,62,0,0,0,114,56,1,0,0,114, - 64,0,0,0,114,139,0,0,0,114,153,0,0,0,114,187, - 0,0,0,114,182,0,0,0,41,14,114,123,0,0,0,114, - 143,0,0,0,114,206,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,173,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,15,1,0,0,114,192, - 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,191,0, + 32,32,32,78,41,3,114,207,0,0,0,114,144,0,0,0, + 114,182,0,0,0,41,3,114,123,0,0,0,114,143,0,0, + 0,114,191,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,141,0,0,0,159,5,0,0,115,10, + 0,0,0,10,7,8,1,8,1,16,1,255,128,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,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,181,0,0,0,41,1,114,194,0,0,0,41,7,114,123, + 0,0,0,114,192,0,0,0,114,143,0,0,0,114,52,0, + 0,0,90,4,115,109,115,108,114,206,0,0,0,114,144,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,207,0,0,0,176,5,0,0,115,74,0,0,0,4, - 5,14,1,2,1,24,1,12,1,10,1,10,1,8,1,6, - 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, - 1,8,1,10,1,8,1,24,1,8,4,14,2,16,1,16, - 1,12,1,8,1,10,1,4,1,8,255,6,2,12,1,12, - 1,8,1,4,1,4,1,255,128,122,20,70,105,108,101,70, - 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, - 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 10,0,0,0,67,0,0,0,115,192,0,0,0,124,0,106, - 0,125,1,122,22,116,1,160,2,124,1,112,22,116,1,160, - 3,161,0,161,1,125,2,87,0,110,28,4,0,116,4,116, - 5,116,6,102,3,121,56,1,0,1,0,1,0,103,0,125, - 2,89,0,110,2,48,0,116,7,106,8,160,9,100,1,161, - 1,115,82,116,10,124,2,131,1,124,0,95,11,110,74,116, - 10,131,0,125,3,124,2,68,0,93,56,125,4,124,4,160, - 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, - 134,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, - 8,110,4,124,5,125,8,124,3,160,15,124,8,161,1,1, - 0,113,92,124,3,124,0,95,11,116,7,106,8,160,9,116, - 16,161,1,114,188,100,4,100,5,132,0,124,2,68,0,131, - 1,124,0,95,17,100,6,83,0,100,6,83,0,41,7,122, - 68,70,105,108,108,32,116,104,101,32,99,97,99,104,101,32, - 111,102,32,112,111,116,101,110,116,105,97,108,32,109,111,100, - 117,108,101,115,32,97,110,100,32,112,97,99,107,97,103,101, - 115,32,102,111,114,32,116,104,105,115,32,100,105,114,101,99, - 116,111,114,121,46,114,14,0,0,0,114,79,0,0,0,114, - 69,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,4,0,0,0,83,0,0,0,115,20,0, - 0,0,104,0,124,0,93,12,125,1,124,1,160,0,161,0, - 146,2,113,4,83,0,114,7,0,0,0,41,1,114,110,0, - 0,0,41,2,114,5,0,0,0,90,2,102,110,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,13,0,0, - 0,253,5,0,0,115,4,0,0,0,20,0,255,128,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,52,0,0, - 0,114,18,0,0,0,90,7,108,105,115,116,100,105,114,114, - 63,0,0,0,114,50,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,15, - 0,0,0,114,22,0,0,0,114,23,0,0,0,114,63,1, - 0,0,114,64,1,0,0,114,105,0,0,0,114,70,0,0, - 0,114,110,0,0,0,218,3,97,100,100,114,24,0,0,0, - 114,65,1,0,0,41,9,114,123,0,0,0,114,52,0,0, - 0,90,8,99,111,110,116,101,110,116,115,90,21,108,111,119, - 101,114,95,115,117,102,102,105,120,95,99,111,110,116,101,110, - 116,115,114,38,1,0,0,114,121,0,0,0,114,25,1,0, - 0,114,15,1,0,0,90,8,110,101,119,95,110,97,109,101, + 0,114,56,1,0,0,171,5,0,0,115,10,0,0,0,10, + 1,8,1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14,0,0, + 0,8,0,0,0,67,0,0,0,115,92,1,0,0,100,1, + 125,3,124,1,160,0,100,2,161,1,100,3,25,0,125,4, + 122,24,116,1,124,0,106,2,112,34,116,3,160,4,161,0, + 131,1,106,5,125,5,87,0,110,22,4,0,116,6,121,64, + 1,0,1,0,1,0,100,4,125,5,89,0,110,2,48,0, + 124,5,124,0,106,7,107,3,114,90,124,0,160,8,161,0, + 1,0,124,5,124,0,95,7,116,9,131,0,114,112,124,0, + 106,10,125,6,124,4,160,11,161,0,125,7,110,10,124,0, + 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,214, + 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, + 68,0,93,56,92,2,125,9,125,10,100,5,124,9,23,0, + 125,11,116,13,124,8,124,11,131,2,125,12,116,15,124,12, + 131,1,114,148,124,0,160,16,124,10,124,1,124,12,124,8, + 103,1,124,2,161,5,2,0,1,0,83,0,116,17,124,8, + 131,1,125,3,124,0,106,14,68,0,93,80,92,2,125,9, + 125,10,116,13,124,0,106,2,124,4,124,9,23,0,131,2, + 125,12,116,18,106,19,100,6,124,12,100,3,100,7,141,3, + 1,0,124,7,124,9,23,0,124,6,118,0,114,220,116,15, + 124,12,131,1,114,220,124,0,160,16,124,10,124,1,124,12, + 100,8,124,2,161,5,2,0,1,0,83,0,124,3,144,1, + 114,88,116,18,160,19,100,9,124,8,161,2,1,0,116,18, + 160,20,124,1,100,8,161,2,125,13,124,8,103,1,124,13, + 95,21,124,13,83,0,100,8,83,0,41,10,122,111,84,114, + 121,32,116,111,32,102,105,110,100,32,97,32,115,112,101,99, + 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, + 101,100,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,115,32,116,104,101,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,79, + 0,0,0,114,39,0,0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0, + 0,0,114,52,0,0,0,114,18,0,0,0,114,63,0,0, + 0,114,7,1,0,0,114,58,0,0,0,114,62,1,0,0, + 218,11,95,102,105,108,108,95,99,97,99,104,101,114,21,0, + 0,0,114,65,1,0,0,114,110,0,0,0,114,64,1,0, + 0,114,48,0,0,0,114,61,1,0,0,114,62,0,0,0, + 114,56,1,0,0,114,64,0,0,0,114,139,0,0,0,114, + 153,0,0,0,114,187,0,0,0,114,182,0,0,0,41,14, + 114,123,0,0,0,114,143,0,0,0,114,206,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,173,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, + 15,1,0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,207,0,0,0,176,5,0,0, + 115,74,0,0,0,4,5,14,1,2,1,24,1,12,1,10, + 1,10,1,8,1,6,1,6,2,6,1,10,1,6,2,4, + 1,8,2,12,1,14,1,8,1,10,1,8,1,24,1,8, + 4,14,2,16,1,16,1,12,1,8,1,10,1,4,1,8, + 255,6,2,12,1,12,1,8,1,4,1,4,1,255,128,122, + 20,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, + 95,115,112,101,99,99,1,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,10,0,0,0,67,0,0,0,115,192, + 0,0,0,124,0,106,0,125,1,122,22,116,1,160,2,124, + 1,112,22,116,1,160,3,161,0,161,1,125,2,87,0,110, + 28,4,0,116,4,116,5,116,6,102,3,121,56,1,0,1, + 0,1,0,103,0,125,2,89,0,110,2,48,0,116,7,106, + 8,160,9,100,1,161,1,115,82,116,10,124,2,131,1,124, + 0,95,11,110,74,116,10,131,0,125,3,124,2,68,0,93, + 56,125,4,124,4,160,12,100,2,161,1,92,3,125,5,125, + 6,125,7,124,6,114,134,100,3,160,13,124,5,124,7,160, + 14,161,0,161,2,125,8,110,4,124,5,125,8,124,3,160, + 15,124,8,161,1,1,0,113,92,124,3,124,0,95,11,116, + 7,106,8,160,9,116,16,161,1,114,188,100,4,100,5,132, + 0,124,2,68,0,131,1,124,0,95,17,100,6,83,0,100, + 6,83,0,41,7,122,68,70,105,108,108,32,116,104,101,32, + 99,97,99,104,101,32,111,102,32,112,111,116,101,110,116,105, + 97,108,32,109,111,100,117,108,101,115,32,97,110,100,32,112, + 97,99,107,97,103,101,115,32,102,111,114,32,116,104,105,115, + 32,100,105,114,101,99,116,111,114,121,46,114,14,0,0,0, + 114,79,0,0,0,114,69,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,83, + 0,0,0,115,20,0,0,0,104,0,124,0,93,12,125,1, + 124,1,160,0,161,0,146,2,113,4,83,0,114,7,0,0, + 0,41,1,114,110,0,0,0,41,2,114,5,0,0,0,90, + 2,102,110,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,13,0,0,0,253,5,0,0,115,4,0,0,0, + 20,0,255,128,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,52,0,0,0,114,18,0,0,0,90,7,108,105, + 115,116,100,105,114,114,63,0,0,0,114,50,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,15,0,0,0,114,22,0,0,0,114,23, + 0,0,0,114,63,1,0,0,114,64,1,0,0,114,105,0, + 0,0,114,70,0,0,0,114,110,0,0,0,218,3,97,100, + 100,114,24,0,0,0,114,65,1,0,0,41,9,114,123,0, + 0,0,114,52,0,0,0,90,8,99,111,110,116,101,110,116, + 115,90,21,108,111,119,101,114,95,115,117,102,102,105,120,95, + 99,111,110,116,101,110,116,115,114,38,1,0,0,114,121,0, + 0,0,114,25,1,0,0,114,15,1,0,0,90,8,110,101, + 119,95,110,97,109,101,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,67,1,0,0,224,5,0,0,115,38, + 0,0,0,6,2,2,1,22,1,18,1,10,3,12,3,12, + 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, + 1,12,1,20,1,4,255,255,128,122,22,70,105,108,101,70, + 105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,7,0,0,0,115,18,0,0,0,135, + 0,135,1,102,2,100,1,100,2,132,8,125,2,124,2,83, + 0,41,4,97,20,1,0,0,65,32,99,108,97,115,115,32, + 109,101,116,104,111,100,32,119,104,105,99,104,32,114,101,116, + 117,114,110,115,32,97,32,99,108,111,115,117,114,101,32,116, + 111,32,117,115,101,32,111,110,32,115,121,115,46,112,97,116, + 104,95,104,111,111,107,10,32,32,32,32,32,32,32,32,119, + 104,105,99,104,32,119,105,108,108,32,114,101,116,117,114,110, + 32,97,110,32,105,110,115,116,97,110,99,101,32,117,115,105, + 110,103,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,108,111,97,100,101,114,115,32,97,110,100,32,116,104,101, + 32,112,97,116,104,10,32,32,32,32,32,32,32,32,99,97, + 108,108,101,100,32,111,110,32,116,104,101,32,99,108,111,115, + 117,114,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,116,104,101,32,112,97,116,104,32,99,97,108,108,101,100, + 32,111,110,32,116,104,101,32,99,108,111,115,117,114,101,32, + 105,115,32,110,111,116,32,97,32,100,105,114,101,99,116,111, + 114,121,44,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,115,10,32,32,32,32,32,32,32,32,114,97,105,115,101, + 100,46,10,10,32,32,32,32,32,32,32,32,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, + 0,19,0,0,0,115,36,0,0,0,116,0,124,0,131,1, + 115,20,116,1,100,1,124,0,100,2,141,2,130,1,136,0, + 124,0,103,1,136,1,162,1,82,0,142,0,83,0,41,4, + 122,45,80,97,116,104,32,104,111,111,107,32,102,111,114,32, + 105,109,112,111,114,116,108,105,98,46,109,97,99,104,105,110, + 101,114,121,46,70,105,108,101,70,105,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, + 56,0,0,0,78,41,2,114,64,0,0,0,114,122,0,0, + 0,114,56,0,0,0,169,2,114,202,0,0,0,114,66,1, + 0,0,114,7,0,0,0,114,8,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,9,6,0,0,115,8,0,0,0,8, + 2,12,1,16,1,255,128,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,78, + 114,7,0,0,0,41,3,114,202,0,0,0,114,66,1,0, + 0,114,72,1,0,0,114,7,0,0,0,114,71,1,0,0, + 114,8,0,0,0,218,9,112,97,116,104,95,104,111,111,107, + 255,5,0,0,115,6,0,0,0,14,10,4,6,255,128,122, + 20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, + 95,104,111,111,107,99,1,0,0,0,0,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,78,122,16,70,105,108,101,70,105,110,100,101,114,40,123, + 33,114,125,41,41,2,114,70,0,0,0,114,52,0,0,0, + 114,253,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,36,1,0,0,17,6,0,0,115,4,0, + 0,0,12,1,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0,114, + 132,0,0,0,114,216,0,0,0,114,43,1,0,0,114,147, + 0,0,0,114,210,0,0,0,114,141,0,0,0,114,56,1, + 0,0,114,207,0,0,0,114,67,1,0,0,114,214,0,0, + 0,114,73,1,0,0,114,36,1,0,0,114,7,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 67,1,0,0,224,5,0,0,115,38,0,0,0,6,2,2, - 1,22,1,18,1,10,3,12,3,12,1,6,7,8,1,16, - 1,4,1,18,1,4,2,12,1,6,1,12,1,20,1,4, - 255,255,128,122,22,70,105,108,101,70,105,110,100,101,114,46, - 95,102,105,108,108,95,99,97,99,104,101,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 7,0,0,0,115,18,0,0,0,135,0,135,1,102,2,100, - 1,100,2,132,8,125,2,124,2,83,0,41,4,97,20,1, - 0,0,65,32,99,108,97,115,115,32,109,101,116,104,111,100, - 32,119,104,105,99,104,32,114,101,116,117,114,110,115,32,97, - 32,99,108,111,115,117,114,101,32,116,111,32,117,115,101,32, - 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107, - 10,32,32,32,32,32,32,32,32,119,104,105,99,104,32,119, - 105,108,108,32,114,101,116,117,114,110,32,97,110,32,105,110, - 115,116,97,110,99,101,32,117,115,105,110,103,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,32,108,111,97,100,101, - 114,115,32,97,110,100,32,116,104,101,32,112,97,116,104,10, - 32,32,32,32,32,32,32,32,99,97,108,108,101,100,32,111, - 110,32,116,104,101,32,99,108,111,115,117,114,101,46,10,10, - 32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,112, - 97,116,104,32,99,97,108,108,101,100,32,111,110,32,116,104, - 101,32,99,108,111,115,117,114,101,32,105,115,32,110,111,116, - 32,97,32,100,105,114,101,99,116,111,114,121,44,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,115,10,32,32,32, - 32,32,32,32,32,114,97,105,115,101,100,46,10,10,32,32, - 32,32,32,32,32,32,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,19,0,0,0,115, - 36,0,0,0,116,0,124,0,131,1,115,20,116,1,100,1, - 124,0,100,2,141,2,130,1,136,0,124,0,103,1,136,1, - 162,1,82,0,142,0,83,0,41,4,122,45,80,97,116,104, - 32,104,111,111,107,32,102,111,114,32,105,109,112,111,114,116, - 108,105,98,46,109,97,99,104,105,110,101,114,121,46,70,105, - 108,101,70,105,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,56,0,0,0,78,41, - 2,114,64,0,0,0,114,122,0,0,0,114,56,0,0,0, - 169,2,114,202,0,0,0,114,66,1,0,0,114,7,0,0, - 0,114,8,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, - 9,6,0,0,115,8,0,0,0,8,2,12,1,16,1,255, - 128,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,78,114,7,0,0,0,41, - 3,114,202,0,0,0,114,66,1,0,0,114,72,1,0,0, - 114,7,0,0,0,114,71,1,0,0,114,8,0,0,0,218, - 9,112,97,116,104,95,104,111,111,107,255,5,0,0,115,6, - 0,0,0,14,10,4,6,255,128,122,20,70,105,108,101,70, - 105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,99, - 1,0,0,0,0,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,78,122,16,70,105, - 108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2, - 114,70,0,0,0,114,52,0,0,0,114,253,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,36, - 1,0,0,17,6,0,0,115,4,0,0,0,12,1,255,128, - 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,130,0,0,0,114, - 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, - 0,0,0,114,43,1,0,0,114,147,0,0,0,114,210,0, - 0,0,114,141,0,0,0,114,56,1,0,0,114,207,0,0, - 0,114,67,1,0,0,114,214,0,0,0,114,73,1,0,0, - 114,36,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,59,1,0,0,130,5, - 0,0,115,26,0,0,0,8,0,4,2,8,7,8,14,4, - 4,8,2,8,12,10,5,8,48,2,31,10,1,12,17,255, - 128,114,59,1,0,0,99,4,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, - 144,0,0,0,124,0,160,0,100,1,161,1,125,4,124,0, - 160,0,100,2,161,1,125,5,124,4,115,66,124,5,114,36, - 124,5,106,1,125,4,110,30,124,2,124,3,107,2,114,56, - 116,2,124,1,124,2,131,2,125,4,110,10,116,3,124,1, - 124,2,131,2,125,4,124,5,115,84,116,4,124,1,124,2, - 124,4,100,3,141,3,125,5,122,38,124,5,124,0,100,2, - 60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,4, - 60,0,124,3,124,0,100,5,60,0,87,0,100,0,83,0, - 4,0,116,5,121,142,1,0,1,0,1,0,89,0,100,0, - 83,0,48,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,60,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, - 144,0,0,0,114,12,1,0,0,114,6,1,0,0,114,194, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6, - 90,2,110,115,114,121,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,144, - 0,0,0,114,191,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,14,95,102,105,120,95,117,112, - 95,109,111,100,117,108,101,23,6,0,0,115,36,0,0,0, - 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, - 4,1,14,1,2,1,8,1,8,1,8,1,14,1,12,1, - 8,2,255,128,114,78,1,0,0,99,0,0,0,0,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,5,116,6,102, - 2,125,2,124,0,124,1,124,2,103,3,83,0,41,2,122, - 95,82,101,116,117,114,110,115,32,97,32,108,105,115,116,32, - 111,102,32,102,105,108,101,45,98,97,115,101,100,32,109,111, - 100,117,108,101,32,108,111,97,100,101,114,115,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, - 78,41,7,114,3,1,0,0,114,167,0,0,0,218,18,101, - 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101, - 115,114,6,1,0,0,114,106,0,0,0,114,12,1,0,0, - 114,94,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,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,188,0,0,0,46,6,0,0,115,10,0, - 0,0,12,5,8,1,8,1,10,1,255,128,114,188,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,1,0,0,0,67,0,0,0,115,8,0,0,0,124, - 0,97,0,100,0,83,0,114,114,0,0,0,41,1,114,139, - 0,0,0,41,1,218,17,95,98,111,111,116,115,116,114,97, - 112,95,109,111,100,117,108,101,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,21,95,115,101,116,95,98,111, - 111,116,115,116,114,97,112,95,109,111,100,117,108,101,57,6, - 0,0,115,4,0,0,0,8,2,255,128,114,81,1,0,0, - 99,1,0,0,0,0,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,1,161,1,1,0, - 116,2,106,7,160,8,116,9,161,1,1,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,81,1,0,0,114,188,0,0,0,114,15,0,0,0,114, - 48,1,0,0,114,171,0,0,0,114,59,1,0,0,114,73, - 1,0,0,218,9,109,101,116,97,95,112,97,116,104,114,190, - 0,0,0,114,42,1,0,0,41,2,114,80,1,0,0,90, - 17,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, - 114,115,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,8,95,105,110,115,116,97,108,108,62,6,0,0,115, - 10,0,0,0,8,2,6,1,20,1,16,1,255,128,114,83, - 1,0,0,41,1,114,68,0,0,0,41,1,78,41,3,78, - 78,78,41,2,114,0,0,0,0,114,0,0,0,0,41,1, - 84,41,1,78,41,1,78,41,83,114,132,0,0,0,114,139, - 0,0,0,114,167,0,0,0,114,72,0,0,0,114,15,0, - 0,0,114,81,0,0,0,114,164,0,0,0,114,22,0,0, - 0,114,211,0,0,0,90,2,110,116,114,18,0,0,0,114, - 196,0,0,0,90,5,112,111,115,105,120,114,42,0,0,0, - 218,3,97,108,108,114,45,0,0,0,114,46,0,0,0,114, - 66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0,114,21,0,0,0,114, - 33,0,0,0,114,38,0,0,0,114,40,0,0,0,114,48, - 0,0,0,114,55,0,0,0,114,57,0,0,0,114,61,0, - 0,0,114,62,0,0,0,114,64,0,0,0,114,67,0,0, - 0,114,77,0,0,0,218,4,116,121,112,101,218,8,95,95, - 99,111,100,101,95,95,114,166,0,0,0,114,31,0,0,0, - 114,152,0,0,0,114,30,0,0,0,114,35,0,0,0,114, - 243,0,0,0,114,97,0,0,0,114,93,0,0,0,114,106, - 0,0,0,114,190,0,0,0,114,79,1,0,0,114,212,0, - 0,0,114,94,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,102,0, - 0,0,114,107,0,0,0,114,113,0,0,0,114,117,0,0, - 0,114,119,0,0,0,114,140,0,0,0,114,147,0,0,0, - 114,156,0,0,0,114,160,0,0,0,114,162,0,0,0,114, - 169,0,0,0,114,174,0,0,0,114,175,0,0,0,114,180, - 0,0,0,218,6,111,98,106,101,99,116,114,189,0,0,0, - 114,194,0,0,0,114,195,0,0,0,114,215,0,0,0,114, - 228,0,0,0,114,246,0,0,0,114,6,1,0,0,114,12, - 1,0,0,114,3,1,0,0,114,18,1,0,0,114,40,1, - 0,0,114,42,1,0,0,114,59,1,0,0,114,78,1,0, - 0,114,188,0,0,0,114,81,1,0,0,114,83,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,172,0,0,0,4,0,4,22,8,3,8,1,8, - 1,8,1,8,1,10,3,4,1,8,1,10,1,8,2,4, - 3,10,1,6,2,22,2,8,1,10,1,14,1,4,4,4, - 1,2,1,2,1,4,255,8,4,6,16,8,3,8,5,8, - 5,8,6,8,6,8,12,8,10,8,9,8,5,8,7,10, - 9,10,22,0,127,16,23,12,1,4,2,4,1,6,2,6, - 1,10,1,8,2,6,2,8,2,16,2,8,71,8,40,8, - 19,8,12,8,12,8,31,8,17,8,33,8,28,10,24,10, - 13,10,10,8,11,6,14,4,3,2,1,12,255,14,68,14, - 64,16,30,0,127,14,17,18,50,18,45,18,25,14,53,14, - 63,14,43,0,127,14,20,0,127,10,22,8,23,8,11,12, - 5,255,128, + 59,1,0,0,130,5,0,0,115,26,0,0,0,8,0,4, + 2,8,7,8,14,4,4,8,2,8,12,10,5,8,48,2, + 31,10,1,12,17,255,128,114,59,1,0,0,99,4,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, + 0,67,0,0,0,115,144,0,0,0,124,0,160,0,100,1, + 161,1,125,4,124,0,160,0,100,2,161,1,125,5,124,4, + 115,66,124,5,114,36,124,5,106,1,125,4,110,30,124,2, + 124,3,107,2,114,56,116,2,124,1,124,2,131,2,125,4, + 110,10,116,3,124,1,124,2,131,2,125,4,124,5,115,84, + 116,4,124,1,124,2,124,4,100,3,141,3,125,5,122,38, + 124,5,124,0,100,2,60,0,124,4,124,0,100,1,60,0, + 124,2,124,0,100,4,60,0,124,3,124,0,100,5,60,0, + 87,0,100,0,83,0,4,0,116,5,121,142,1,0,1,0, + 1,0,89,0,100,0,83,0,48,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,60,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,144,0,0,0,114,12,1,0,0,114, + 6,1,0,0,114,194,0,0,0,218,9,69,120,99,101,112, + 116,105,111,110,41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,23,6,0, + 0,115,36,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,14,1,12,1,8,2,255,128,114,78,1,0,0,99, + 0,0,0,0,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,5,116,6,102,2,125,2,124,0,124,1,124,2,103, + 3,83,0,41,2,122,95,82,101,116,117,114,110,115,32,97, + 32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,97, + 115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,101, + 114,115,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,78,41,7,114,3,1,0,0,114,167, + 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, + 117,102,102,105,120,101,115,114,6,1,0,0,114,106,0,0, + 0,114,12,1,0,0,114,94,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,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,188,0,0,0,46, + 6,0,0,115,10,0,0,0,12,5,8,1,8,1,10,1, + 255,128,114,188,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, + 115,8,0,0,0,124,0,97,0,100,0,83,0,114,114,0, + 0,0,41,1,114,139,0,0,0,41,1,218,17,95,98,111, + 111,116,115,116,114,97,112,95,109,111,100,117,108,101,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,21,95, + 115,101,116,95,98,111,111,116,115,116,114,97,112,95,109,111, + 100,117,108,101,57,6,0,0,115,4,0,0,0,8,2,255, + 128,114,81,1,0,0,99,1,0,0,0,0,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,1,161,1,1,0,116,2,106,7,160,8,116,9,161,1, + 1,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,81,1,0,0,114,188,0,0,0, + 114,15,0,0,0,114,48,1,0,0,114,171,0,0,0,114, + 59,1,0,0,114,73,1,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,190,0,0,0,114,42,1,0,0,41,2, + 114,80,1,0,0,90,17,115,117,112,112,111,114,116,101,100, + 95,108,111,97,100,101,114,115,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,8,95,105,110,115,116,97,108, + 108,62,6,0,0,115,10,0,0,0,8,2,6,1,20,1, + 16,1,255,128,114,83,1,0,0,41,1,114,68,0,0,0, + 41,1,78,41,3,78,78,78,41,2,114,0,0,0,0,114, + 0,0,0,0,41,1,84,41,1,78,41,1,78,41,83,114, + 132,0,0,0,114,139,0,0,0,114,167,0,0,0,114,72, + 0,0,0,114,15,0,0,0,114,81,0,0,0,114,164,0, + 0,0,114,22,0,0,0,114,211,0,0,0,90,2,110,116, + 114,18,0,0,0,114,196,0,0,0,90,5,112,111,115,105, + 120,114,42,0,0,0,218,3,97,108,108,114,45,0,0,0, + 114,46,0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0, + 114,21,0,0,0,114,33,0,0,0,114,38,0,0,0,114, + 40,0,0,0,114,48,0,0,0,114,55,0,0,0,114,57, + 0,0,0,114,61,0,0,0,114,62,0,0,0,114,64,0, + 0,0,114,67,0,0,0,114,77,0,0,0,218,4,116,121, + 112,101,218,8,95,95,99,111,100,101,95,95,114,166,0,0, + 0,114,31,0,0,0,114,152,0,0,0,114,30,0,0,0, + 114,35,0,0,0,114,243,0,0,0,114,97,0,0,0,114, + 93,0,0,0,114,106,0,0,0,114,190,0,0,0,114,79, + 1,0,0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0, + 0,0,114,117,0,0,0,114,119,0,0,0,114,140,0,0, + 0,114,147,0,0,0,114,156,0,0,0,114,160,0,0,0, + 114,162,0,0,0,114,169,0,0,0,114,174,0,0,0,114, + 175,0,0,0,114,180,0,0,0,218,6,111,98,106,101,99, + 116,114,189,0,0,0,114,194,0,0,0,114,195,0,0,0, + 114,215,0,0,0,114,228,0,0,0,114,246,0,0,0,114, + 6,1,0,0,114,12,1,0,0,114,3,1,0,0,114,18, + 1,0,0,114,40,1,0,0,114,42,1,0,0,114,59,1, + 0,0,114,78,1,0,0,114,188,0,0,0,114,81,1,0, + 0,114,83,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,8,60,109,111,100, + 117,108,101,62,1,0,0,0,115,172,0,0,0,4,0,4, + 22,8,3,8,1,8,1,8,1,8,1,10,3,4,1,8, + 1,10,1,8,2,4,3,10,1,6,2,22,2,8,1,10, + 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, + 16,8,3,8,5,8,5,8,6,8,6,8,12,8,10,8, + 9,8,5,8,7,10,9,10,22,0,127,16,23,12,1,4, + 2,4,1,6,2,6,1,10,1,8,2,6,2,8,2,16, + 2,8,71,8,40,8,19,8,12,8,12,8,31,8,17,8, + 33,8,28,10,24,10,13,10,10,8,11,6,14,4,3,2, + 1,12,255,14,68,14,64,16,30,0,127,14,17,18,50,18, + 45,18,25,14,53,14,63,14,43,0,127,14,20,0,127,10, + 22,8,23,8,11,12,5,255,128, }; From webhook-mailer at python.org Mon Dec 14 11:31:02 2020 From: webhook-mailer at python.org (gvanrossum) Date: Mon, 14 Dec 2020 16:31:02 -0000 Subject: [Python-checkins] [3.9] bpo-42195: Ensure consistency of Callable's __args__ in collections.abc and typing (GH-23765) Message-ID: https://github.com/python/cpython/commit/33b3fedd43e10e5a227ec8b7d251496e7cad4717 commit: 33b3fedd43e10e5a227ec8b7d251496e7cad4717 branch: 3.9 author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2020-12-14T08:30:45-08:00 summary: [3.9] bpo-42195: Ensure consistency of Callable's __args__ in collections.abc and typing (GH-23765) Backport of GH-23060. files: A Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst M Lib/_collections_abc.py M Lib/collections/abc.py M Lib/test/test_genericalias.py M Lib/test/test_typing.py M Lib/typing.py M Objects/genericaliasobject.c diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index 36cd993000347..cec19ec47349b 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -10,6 +10,10 @@ import sys GenericAlias = type(list[int]) +EllipsisType = type(...) +def _f(): pass +FunctionType = type(_f) +del _f __all__ = ["Awaitable", "Coroutine", "AsyncIterable", "AsyncIterator", "AsyncGenerator", @@ -409,6 +413,76 @@ def __subclasshook__(cls, C): return NotImplemented +class _CallableGenericAlias(GenericAlias): + """ Represent `Callable[argtypes, resulttype]`. + + This sets ``__args__`` to a tuple containing the flattened``argtypes`` + followed by ``resulttype``. + + Example: ``Callable[[int, str], float]`` sets ``__args__`` to + ``(int, str, float)``. + """ + + __slots__ = () + + def __new__(cls, origin, args): + try: + return cls.__create_ga(origin, args) + except TypeError as exc: + import warnings + warnings.warn(f'{str(exc)} ' + f'(This will raise a TypeError in Python 3.10.)', + DeprecationWarning) + return GenericAlias(origin, args) + + @classmethod + def __create_ga(cls, origin, args): + if not isinstance(args, tuple) or len(args) != 2: + raise TypeError( + "Callable must be used as Callable[[arg, ...], result].") + t_args, t_result = args + if isinstance(t_args, list): + ga_args = tuple(t_args) + (t_result,) + # This relaxes what t_args can be on purpose to allow things like + # PEP 612 ParamSpec. Responsibility for whether a user is using + # Callable[...] properly is deferred to static type checkers. + else: + ga_args = args + return super().__new__(cls, origin, ga_args) + + def __repr__(self): + if len(self.__args__) == 2 and self.__args__[0] is Ellipsis: + return super().__repr__() + return (f'collections.abc.Callable' + f'[[{", ".join([_type_repr(a) for a in self.__args__[:-1]])}], ' + f'{_type_repr(self.__args__[-1])}]') + + def __reduce__(self): + args = self.__args__ + if not (len(args) == 2 and args[0] is Ellipsis): + args = list(args[:-1]), args[-1] + return _CallableGenericAlias, (Callable, args) + + +def _type_repr(obj): + """Return the repr() of an object, special-casing types (internal helper). + + Copied from :mod:`typing` since collections.abc + shouldn't depend on that module. + """ + if isinstance(obj, GenericAlias): + return repr(obj) + if isinstance(obj, type): + if obj.__module__ == 'builtins': + return obj.__qualname__ + return f'{obj.__module__}.{obj.__qualname__}' + if obj is Ellipsis: + return '...' + if isinstance(obj, FunctionType): + return obj.__name__ + return repr(obj) + + class Callable(metaclass=ABCMeta): __slots__ = () @@ -423,7 +497,7 @@ def __subclasshook__(cls, C): return _check_methods(C, "__call__") return NotImplemented - __class_getitem__ = classmethod(GenericAlias) + __class_getitem__ = classmethod(_CallableGenericAlias) ### SETS ### diff --git a/Lib/collections/abc.py b/Lib/collections/abc.py index 891600d16bee9..86ca8b8a8414b 100644 --- a/Lib/collections/abc.py +++ b/Lib/collections/abc.py @@ -1,2 +1,3 @@ from _collections_abc import * from _collections_abc import __all__ +from _collections_abc import _CallableGenericAlias diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index c113e538248e9..5de13fe6d2f68 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -62,7 +62,6 @@ class BaseTest(unittest.TestCase): Iterable, Iterator, Reversible, Container, Collection, - Callable, Mailbox, _PartialFile, ContextVar, Token, Field, @@ -307,6 +306,63 @@ def test_no_kwargs(self): with self.assertRaises(TypeError): GenericAlias(bad=float) + def test_subclassing_types_genericalias(self): + class SubClass(GenericAlias): ... + alias = SubClass(list, int) + class Bad(GenericAlias): + def __new__(cls, *args, **kwargs): + super().__new__(cls, *args, **kwargs) + + self.assertEqual(alias, list[int]) + with self.assertRaises(TypeError): + Bad(list, int, bad=int) + + def test_abc_callable(self): + # A separate test is needed for Callable since it uses a subclass of + # GenericAlias. + alias = Callable[[int, str], float] + with self.subTest("Testing subscription"): + self.assertIs(alias.__origin__, Callable) + self.assertEqual(alias.__args__, (int, str, float)) + self.assertEqual(alias.__parameters__, ()) + + with self.subTest("Testing instance checks"): + self.assertIsInstance(alias, GenericAlias) + + with self.subTest("Testing weakref"): + self.assertEqual(ref(alias)(), alias) + + with self.subTest("Testing pickling"): + s = pickle.dumps(alias) + loaded = pickle.loads(s) + self.assertEqual(alias.__origin__, loaded.__origin__) + self.assertEqual(alias.__args__, loaded.__args__) + self.assertEqual(alias.__parameters__, loaded.__parameters__) + + with self.subTest("Testing TypeVar substitution"): + C1 = Callable[[int, T], T] + C2 = Callable[[K, T], V] + C3 = Callable[..., T] + self.assertEqual(C1[str], Callable[[int, str], str]) + self.assertEqual(C2[int, float, str], Callable[[int, float], str]) + self.assertEqual(C3[int], Callable[..., int]) + + with self.subTest("Testing type erasure"): + class C1(Callable): + def __call__(self): + return None + a = C1[[int], T] + self.assertIs(a().__class__, C1) + self.assertEqual(a().__orig_class__, C1[[int], T]) + + # bpo-42195 + with self.subTest("Testing collections.abc.Callable's consistency " + "with typing.Callable"): + c1 = typing.Callable[[int, str], dict] + c2 = Callable[[int, str], dict] + self.assertEqual(c1.__args__, c2.__args__) + self.assertEqual(hash(c1.__args__), hash(c2.__args__)) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 13cf20eee09ab..04dd6df6a9cc4 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -450,14 +450,6 @@ def test_cannot_instantiate(self): type(c)() def test_callable_wrong_forms(self): - with self.assertRaises(TypeError): - Callable[[...], int] - with self.assertRaises(TypeError): - Callable[(), int] - with self.assertRaises(TypeError): - Callable[[()], int] - with self.assertRaises(TypeError): - Callable[[int, 1], 2] with self.assertRaises(TypeError): Callable[int] diff --git a/Lib/typing.py b/Lib/typing.py index f5316ab8a5f53..1d6584db5afb2 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -118,6 +118,15 @@ # legitimate imports of those modules. +def _type_convert(arg): + """For converting None to type(None), and strings to ForwardRef.""" + if arg is None: + return type(None) + if isinstance(arg, str): + return ForwardRef(arg) + return arg + + def _type_check(arg, msg, is_argument=True): """Check that the argument is a type, and return it (internal helper). @@ -134,10 +143,7 @@ def _type_check(arg, msg, is_argument=True): if is_argument: invalid_generic_forms = invalid_generic_forms + (ClassVar, Final) - if arg is None: - return type(None) - if isinstance(arg, str): - return ForwardRef(arg) + arg = _type_convert(arg) if (isinstance(arg, _GenericAlias) and arg.__origin__ in invalid_generic_forms): raise TypeError(f"{arg} is not valid as type argument") @@ -859,13 +865,13 @@ def __getitem__(self, params): raise TypeError("Callable must be used as " "Callable[[arg, ...], result].") args, result = params - if args is Ellipsis: - params = (Ellipsis, result) - else: - if not isinstance(args, list): - raise TypeError(f"Callable[args, result]: args must be a list." - f" Got {args}") + # This relaxes what args can be on purpose to allow things like + # PEP 612 ParamSpec. Responsibility for whether a user is using + # Callable[...] properly is deferred to static type checkers. + if isinstance(args, list): params = (tuple(args), result) + else: + params = (args, result) return self.__getitem_inner__(params) @_tp_cache @@ -875,8 +881,9 @@ def __getitem_inner__(self, params): result = _type_check(result, msg) if args is Ellipsis: return self.copy_with((_TypingEllipsis, result)) - msg = "Callable[[arg, ...], result]: each arg must be a type." - args = tuple(_type_check(arg, msg) for arg in args) + if not isinstance(args, tuple): + args = (args,) + args = tuple(_type_convert(arg) for arg in args) params = args + (result,) return self.copy_with(params) diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst new file mode 100644 index 0000000000000..636d4165a6389 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst @@ -0,0 +1,11 @@ +The ``__args__`` of the parameterized generics for :data:`typing.Callable` +and :class:`collections.abc.Callable` are now consistent. The ``__args__`` +for :class:`collections.abc.Callable` are now flattened while +:data:`typing.Callable`'s have not changed. To allow this change, +:class:`types.GenericAlias` can now be subclassed and +``collections.abc.Callable``'s ``__class_getitem__`` will now return a subclass +of ``types.GenericAlias``. Tests for typing were also updated to not subclass +things like ``Callable[..., T]`` as that is not a valid base class. Finally, +both types no longer validate their ``argtypes``, in +``Callable[[argtypes], resulttype]`` to prepare for :pep:`612`. Patch by Ken Jin. + diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index c5a81a5c1aab2..945d20593c7c9 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -428,8 +428,8 @@ ga_getattro(PyObject *self, PyObject *name) static PyObject * ga_richcompare(PyObject *a, PyObject *b, int op) { - if (!Py_IS_TYPE(a, &Py_GenericAliasType) || - !Py_IS_TYPE(b, &Py_GenericAliasType) || + if (!PyObject_TypeCheck(a, &Py_GenericAliasType) || + !PyObject_TypeCheck(b, &Py_GenericAliasType) || (op != Py_EQ && op != Py_NE)) { Py_RETURN_NOTIMPLEMENTED; @@ -563,6 +563,29 @@ static PyGetSetDef ga_properties[] = { {0} }; +/* A helper function to create GenericAlias' args tuple and set its attributes. + * Returns 1 on success, 0 on failure. + */ +static inline int +setup_ga(gaobject *alias, PyObject *origin, PyObject *args) { + if (!PyTuple_Check(args)) { + args = PyTuple_Pack(1, args); + if (args == NULL) { + return 0; + } + } + else { + Py_INCREF(args); + } + + Py_INCREF(origin); + alias->origin = origin; + alias->args = args; + alias->parameters = NULL; + alias->weakreflist = NULL; + return 1; +} + static PyObject * ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { @@ -574,7 +597,15 @@ ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } PyObject *origin = PyTuple_GET_ITEM(args, 0); PyObject *arguments = PyTuple_GET_ITEM(args, 1); - return Py_GenericAlias(origin, arguments); + gaobject *self = (gaobject *)type->tp_alloc(type, 0); + if (self == NULL) { + return NULL; + } + if (!setup_ga(self, origin, arguments)) { + type->tp_free((PyObject *)self); + return NULL; + } + return (PyObject *)self; } // TODO: @@ -594,7 +625,7 @@ PyTypeObject Py_GenericAliasType = { .tp_hash = ga_hash, .tp_call = ga_call, .tp_getattro = ga_getattro, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, .tp_traverse = ga_traverse, .tp_richcompare = ga_richcompare, .tp_weaklistoffset = offsetof(gaobject, weakreflist), @@ -609,27 +640,14 @@ PyTypeObject Py_GenericAliasType = { PyObject * Py_GenericAlias(PyObject *origin, PyObject *args) { - if (!PyTuple_Check(args)) { - args = PyTuple_Pack(1, args); - if (args == NULL) { - return NULL; - } - } - else { - Py_INCREF(args); - } - gaobject *alias = PyObject_GC_New(gaobject, &Py_GenericAliasType); if (alias == NULL) { - Py_DECREF(args); return NULL; } - - Py_INCREF(origin); - alias->origin = origin; - alias->args = args; - alias->parameters = NULL; - alias->weakreflist = NULL; + if (!setup_ga(alias, origin, args)) { + PyObject_GC_Del((PyObject *)alias); + return NULL; + } _PyObject_GC_TRACK(alias); return (PyObject *)alias; } From webhook-mailer at python.org Mon Dec 14 12:05:10 2020 From: webhook-mailer at python.org (ned-deily) Date: Mon, 14 Dec 2020 17:05:10 -0000 Subject: [Python-checkins] bpo-40791: Make compare_digest more constant-time. (GH-23438) (GH-23767) Message-ID: https://github.com/python/cpython/commit/8bef9ebb1b88cfa4b2a38b93fe4ea22015d8254a commit: 8bef9ebb1b88cfa4b2a38b93fe4ea22015d8254a branch: 3.6 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-14T12:04:57-05:00 summary: bpo-40791: Make compare_digest more constant-time. (GH-23438) (GH-23767) The existing volatile `left`/`right` pointers guarantee that the reads will all occur, but does not guarantee that they will be _used_. So a compiler can still short-circuit the loop, saving e.g. the overhead of doing the xors and especially the overhead of the data dependency between `result` and the reads. That would change performance depending on where the first unequal byte occurs. This change removes that optimization. (This is change GH-1 from https://bugs.python.org/issue40791 .) (cherry picked from commit 31729366e2bc09632e78f3896dbce0ae64914f28) Co-authored-by: Devin Jeanpierre files: A Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst M Modules/_operator.c diff --git a/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst b/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst new file mode 100644 index 0000000000000..69b9de1beae0d --- /dev/null +++ b/Misc/NEWS.d/next/Security/2020-05-28-06-06-47.bpo-40791.QGZClX.rst @@ -0,0 +1 @@ +Add ``volatile`` to the accumulator variable in ``hmac.compare_digest``, making constant-time-defeating optimizations less likely. \ No newline at end of file diff --git a/Modules/_operator.c b/Modules/_operator.c index af05f1c296bdb..25654440d2a75 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -184,7 +184,7 @@ _tscmp(const unsigned char *a, const unsigned char *b, volatile const unsigned char *left; volatile const unsigned char *right; Py_ssize_t i; - unsigned char result; + volatile unsigned char result; /* loop count depends on length of b */ length = len_b; From webhook-mailer at python.org Mon Dec 14 12:10:22 2020 From: webhook-mailer at python.org (gpshead) Date: Mon, 14 Dec 2020 17:10:22 -0000 Subject: [Python-checkins] bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Message-ID: https://github.com/python/cpython/commit/42c9f0fd0a5e67d4ae0022bfd7370cb9725a5b01 commit: 42c9f0fd0a5e67d4ae0022bfd7370cb9725a5b01 branch: master author: Gregory P. Smith committer: gpshead date: 2020-12-14T09:10:10-08:00 summary: bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Add positional only args support to lib2to3 pgen2. This adds 3.8's PEP-570 support to lib2to3's pgen2. lib2to3, while being deprecated is still used by things to parse all versions of Python code today. We need it to support parsing modern 3.8 and 3.9 constructs. Also add tests for complex *expr and **expr's. files: A Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst M Lib/lib2to3/Grammar.txt M Lib/lib2to3/tests/test_parser.py diff --git a/Lib/lib2to3/Grammar.txt b/Lib/lib2to3/Grammar.txt index e007dc188af50..fa7b15061d941 100644 --- a/Lib/lib2to3/Grammar.txt +++ b/Lib/lib2to3/Grammar.txt @@ -18,15 +18,55 @@ decorated: decorators (classdef | funcdef | async_funcdef) async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite parameters: '(' [typedargslist] ')' -typedargslist: ((tfpdef ['=' test] ',')* - ('*' [tname] (',' tname ['=' test])* [',' ['**' tname [',']]] | '**' tname [',']) - | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + +# The following definition for typedarglist is equivalent to this set of rules: +# +# arguments = argument (',' argument)* +# argument = tfpdef ['=' test] +# kwargs = '**' tname [','] +# args = '*' [tname] +# kwonly_kwargs = (',' argument)* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# typedargslist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# typedarglist = arguments ',' '/' [',' [typedargslist_no_posonly]])|(typedargslist_no_posonly)" +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +typedargslist: tfpdef ['=' test] (',' tfpdef ['=' test])* ',' '/' [ + ',' [((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])] + ] | ((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + tname: NAME [':' test] tfpdef: tname | '(' tfplist ')' tfplist: tfpdef (',' tfpdef)* [','] -varargslist: ((vfpdef ['=' test] ',')* - ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]] | '**' vname [',']) - | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + +# The following definition for varargslist is equivalent to this set of rules: +# +# arguments = argument (',' argument )* +# argument = vfpdef ['=' test] +# kwargs = '**' vname [','] +# args = '*' [vname] +# kwonly_kwargs = (',' argument )* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# vararglist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# varargslist = arguments ',' '/' [','[(vararglist_no_posonly)]] | (vararglist_no_posonly) +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +varargslist: vfpdef ['=' test ](',' vfpdef ['=' test])* ',' '/' [',' [ + ((vfpdef ['=' test] ',')* ('*' [vname] (',' vname ['=' test])* + [',' ['**' vname [',']]] | '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + ]] | ((vfpdef ['=' test] ',')* + ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]]| '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + vname: NAME vfpdef: vname | '(' vfplist ')' vfplist: vfpdef (',' vfpdef)* [','] diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index ba2bb787332ed..d5db66b9b1e7b 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -272,6 +272,12 @@ def test_dict_display_1(self): def test_dict_display_2(self): self.validate("""{**{}, 3:4, **{5:6, 7:8}}""") + def test_complex_star_expression(self): + self.validate("func(* [] or [1])") + + def test_complex_double_star_expression(self): + self.validate("func(**{1: 3} if False else {x: x for x in range(3)})") + def test_argument_unpacking_1(self): self.validate("""f(a, *b, *c, d)""") @@ -630,6 +636,7 @@ def test_multiline_str_literals(self): class TestNamedAssignments(GrammarTest): + """Also known as the walrus operator.""" def test_named_assignment_if(self): driver.parse_string("if f := x(): pass\n") @@ -644,6 +651,30 @@ def test_named_assignment_listcomp(self): driver.parse_string("[(lastNum := num) == 1 for num in [1, 2, 3]]\n") +class TestPositionalOnlyArgs(GrammarTest): + + def test_one_pos_only_arg(self): + driver.parse_string("def one_pos_only_arg(a, /): pass\n") + + def test_all_markers(self): + driver.parse_string( + "def all_markers(a, b=2, /, c, d=4, *, e=5, f): pass\n") + + def test_all_with_args_and_kwargs(self): + driver.parse_string( + """def all_markers_with_args_and_kwargs( + aa, b, /, _cc, d, *args, e, f_f, **kwargs, + ): + pass\n""") + + def test_lambda_soup(self): + driver.parse_string( + "lambda a, b, /, c, d, *args, e, f, **kw: kw\n") + + def test_only_positional_or_keyword(self): + driver.parse_string("def func(a,b,/,*,g,e=3): pass\n") + + class TestPickleableException(unittest.TestCase): def test_ParseError(self): err = ParseError('msg', 2, None, (1, 'context')) diff --git a/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst new file mode 100644 index 0000000000000..5678d8c595ca0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst @@ -0,0 +1,2 @@ +Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only argument +syntax. From webhook-mailer at python.org Mon Dec 14 12:30:15 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Dec 2020 17:30:15 -0000 Subject: [Python-checkins] bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Message-ID: https://github.com/python/cpython/commit/06bfd033e847bedb6e123d131dcf46393a4555df commit: 06bfd033e847bedb6e123d131dcf46393a4555df branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-14T09:29:57-08:00 summary: bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Add positional only args support to lib2to3 pgen2. This adds 3.8's PEP-570 support to lib2to3's pgen2. lib2to3, while being deprecated is still used by things to parse all versions of Python code today. We need it to support parsing modern 3.8 and 3.9 constructs. Also add tests for complex *expr and **expr's. (cherry picked from commit 42c9f0fd0a5e67d4ae0022bfd7370cb9725a5b01) Co-authored-by: Gregory P. Smith files: A Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst M Lib/lib2to3/Grammar.txt M Lib/lib2to3/tests/test_parser.py diff --git a/Lib/lib2to3/Grammar.txt b/Lib/lib2to3/Grammar.txt index 8ce7fd8a89da6..f6c2fc5b1f323 100644 --- a/Lib/lib2to3/Grammar.txt +++ b/Lib/lib2to3/Grammar.txt @@ -18,15 +18,55 @@ decorated: decorators (classdef | funcdef | async_funcdef) async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite parameters: '(' [typedargslist] ')' -typedargslist: ((tfpdef ['=' test] ',')* - ('*' [tname] (',' tname ['=' test])* [',' ['**' tname [',']]] | '**' tname [',']) - | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + +# The following definition for typedarglist is equivalent to this set of rules: +# +# arguments = argument (',' argument)* +# argument = tfpdef ['=' test] +# kwargs = '**' tname [','] +# args = '*' [tname] +# kwonly_kwargs = (',' argument)* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# typedargslist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# typedarglist = arguments ',' '/' [',' [typedargslist_no_posonly]])|(typedargslist_no_posonly)" +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +typedargslist: tfpdef ['=' test] (',' tfpdef ['=' test])* ',' '/' [ + ',' [((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])] + ] | ((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + tname: NAME [':' test] tfpdef: tname | '(' tfplist ')' tfplist: tfpdef (',' tfpdef)* [','] -varargslist: ((vfpdef ['=' test] ',')* - ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]] | '**' vname [',']) - | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + +# The following definition for varargslist is equivalent to this set of rules: +# +# arguments = argument (',' argument )* +# argument = vfpdef ['=' test] +# kwargs = '**' vname [','] +# args = '*' [vname] +# kwonly_kwargs = (',' argument )* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# vararglist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# varargslist = arguments ',' '/' [','[(vararglist_no_posonly)]] | (vararglist_no_posonly) +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +varargslist: vfpdef ['=' test ](',' vfpdef ['=' test])* ',' '/' [',' [ + ((vfpdef ['=' test] ',')* ('*' [vname] (',' vname ['=' test])* + [',' ['**' vname [',']]] | '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + ]] | ((vfpdef ['=' test] ',')* + ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]]| '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + vname: NAME vfpdef: vname | '(' vfplist ')' vfplist: vfpdef (',' vfpdef)* [','] diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index 3a0e7f435e6d7..aafa09c3069ae 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -272,6 +272,12 @@ def test_dict_display_1(self): def test_dict_display_2(self): self.validate("""{**{}, 3:4, **{5:6, 7:8}}""") + def test_complex_star_expression(self): + self.validate("func(* [] or [1])") + + def test_complex_double_star_expression(self): + self.validate("func(**{1: 3} if False else {x: x for x in range(3)})") + def test_argument_unpacking_1(self): self.validate("""f(a, *b, *c, d)""") @@ -630,6 +636,7 @@ def test_multiline_str_literals(self): class TestNamedAssignments(GrammarTest): + """Also known as the walrus operator.""" def test_named_assignment_if(self): driver.parse_string("if f := x(): pass\n") @@ -644,6 +651,30 @@ def test_named_assignment_listcomp(self): driver.parse_string("[(lastNum := num) == 1 for num in [1, 2, 3]]\n") +class TestPositionalOnlyArgs(GrammarTest): + + def test_one_pos_only_arg(self): + driver.parse_string("def one_pos_only_arg(a, /): pass\n") + + def test_all_markers(self): + driver.parse_string( + "def all_markers(a, b=2, /, c, d=4, *, e=5, f): pass\n") + + def test_all_with_args_and_kwargs(self): + driver.parse_string( + """def all_markers_with_args_and_kwargs( + aa, b, /, _cc, d, *args, e, f_f, **kwargs, + ): + pass\n""") + + def test_lambda_soup(self): + driver.parse_string( + "lambda a, b, /, c, d, *args, e, f, **kw: kw\n") + + def test_only_positional_or_keyword(self): + driver.parse_string("def func(a,b,/,*,g,e=3): pass\n") + + class TestPickleableException(unittest.TestCase): def test_ParseError(self): err = ParseError('msg', 2, None, (1, 'context')) diff --git a/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst new file mode 100644 index 0000000000000..5678d8c595ca0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst @@ -0,0 +1,2 @@ +Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only argument +syntax. From webhook-mailer at python.org Mon Dec 14 12:38:26 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Dec 2020 17:38:26 -0000 Subject: [Python-checkins] bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Message-ID: https://github.com/python/cpython/commit/20bc40ef44b820733848d5838e803b5fe4350b93 commit: 20bc40ef44b820733848d5838e803b5fe4350b93 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-14T09:38:03-08:00 summary: bpo-36541: Add lib2to3 grammar PEP-570 pos-only arg parsing (GH-23759) Add positional only args support to lib2to3 pgen2. This adds 3.8's PEP-570 support to lib2to3's pgen2. lib2to3, while being deprecated is still used by things to parse all versions of Python code today. We need it to support parsing modern 3.8 and 3.9 constructs. Also add tests for complex *expr and **expr's. (cherry picked from commit 42c9f0fd0a5e67d4ae0022bfd7370cb9725a5b01) Co-authored-by: Gregory P. Smith files: A Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst M Lib/lib2to3/Grammar.txt M Lib/lib2to3/tests/test_parser.py diff --git a/Lib/lib2to3/Grammar.txt b/Lib/lib2to3/Grammar.txt index e007dc188af50..fa7b15061d941 100644 --- a/Lib/lib2to3/Grammar.txt +++ b/Lib/lib2to3/Grammar.txt @@ -18,15 +18,55 @@ decorated: decorators (classdef | funcdef | async_funcdef) async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite parameters: '(' [typedargslist] ')' -typedargslist: ((tfpdef ['=' test] ',')* - ('*' [tname] (',' tname ['=' test])* [',' ['**' tname [',']]] | '**' tname [',']) - | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + +# The following definition for typedarglist is equivalent to this set of rules: +# +# arguments = argument (',' argument)* +# argument = tfpdef ['=' test] +# kwargs = '**' tname [','] +# args = '*' [tname] +# kwonly_kwargs = (',' argument)* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# typedargslist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# typedarglist = arguments ',' '/' [',' [typedargslist_no_posonly]])|(typedargslist_no_posonly)" +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +typedargslist: tfpdef ['=' test] (',' tfpdef ['=' test])* ',' '/' [ + ',' [((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])] + ] | ((tfpdef ['=' test] ',')* ('*' [tname] (',' tname ['=' test])* + [',' ['**' tname [',']]] | '**' tname [',']) + | tfpdef ['=' test] (',' tfpdef ['=' test])* [',']) + tname: NAME [':' test] tfpdef: tname | '(' tfplist ')' tfplist: tfpdef (',' tfpdef)* [','] -varargslist: ((vfpdef ['=' test] ',')* - ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]] | '**' vname [',']) - | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + +# The following definition for varargslist is equivalent to this set of rules: +# +# arguments = argument (',' argument )* +# argument = vfpdef ['=' test] +# kwargs = '**' vname [','] +# args = '*' [vname] +# kwonly_kwargs = (',' argument )* [',' [kwargs]] +# args_kwonly_kwargs = args kwonly_kwargs | kwargs +# poskeyword_args_kwonly_kwargs = arguments [',' [args_kwonly_kwargs]] +# vararglist_no_posonly = poskeyword_args_kwonly_kwargs | args_kwonly_kwargs +# varargslist = arguments ',' '/' [','[(vararglist_no_posonly)]] | (vararglist_no_posonly) +# +# It needs to be fully expanded to allow our LL(1) parser to work on it. + +varargslist: vfpdef ['=' test ](',' vfpdef ['=' test])* ',' '/' [',' [ + ((vfpdef ['=' test] ',')* ('*' [vname] (',' vname ['=' test])* + [',' ['**' vname [',']]] | '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + ]] | ((vfpdef ['=' test] ',')* + ('*' [vname] (',' vname ['=' test])* [',' ['**' vname [',']]]| '**' vname [',']) + | vfpdef ['=' test] (',' vfpdef ['=' test])* [',']) + vname: NAME vfpdef: vname | '(' vfplist ')' vfplist: vfpdef (',' vfpdef)* [','] diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index ba2bb787332ed..d5db66b9b1e7b 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -272,6 +272,12 @@ def test_dict_display_1(self): def test_dict_display_2(self): self.validate("""{**{}, 3:4, **{5:6, 7:8}}""") + def test_complex_star_expression(self): + self.validate("func(* [] or [1])") + + def test_complex_double_star_expression(self): + self.validate("func(**{1: 3} if False else {x: x for x in range(3)})") + def test_argument_unpacking_1(self): self.validate("""f(a, *b, *c, d)""") @@ -630,6 +636,7 @@ def test_multiline_str_literals(self): class TestNamedAssignments(GrammarTest): + """Also known as the walrus operator.""" def test_named_assignment_if(self): driver.parse_string("if f := x(): pass\n") @@ -644,6 +651,30 @@ def test_named_assignment_listcomp(self): driver.parse_string("[(lastNum := num) == 1 for num in [1, 2, 3]]\n") +class TestPositionalOnlyArgs(GrammarTest): + + def test_one_pos_only_arg(self): + driver.parse_string("def one_pos_only_arg(a, /): pass\n") + + def test_all_markers(self): + driver.parse_string( + "def all_markers(a, b=2, /, c, d=4, *, e=5, f): pass\n") + + def test_all_with_args_and_kwargs(self): + driver.parse_string( + """def all_markers_with_args_and_kwargs( + aa, b, /, _cc, d, *args, e, f_f, **kwargs, + ): + pass\n""") + + def test_lambda_soup(self): + driver.parse_string( + "lambda a, b, /, c, d, *args, e, f, **kw: kw\n") + + def test_only_positional_or_keyword(self): + driver.parse_string("def func(a,b,/,*,g,e=3): pass\n") + + class TestPickleableException(unittest.TestCase): def test_ParseError(self): err = ParseError('msg', 2, None, (1, 'context')) diff --git a/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst new file mode 100644 index 0000000000000..5678d8c595ca0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst @@ -0,0 +1,2 @@ +Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only argument +syntax. From webhook-mailer at python.org Mon Dec 14 13:30:17 2020 From: webhook-mailer at python.org (gpshead) Date: Mon, 14 Dec 2020 18:30:17 -0000 Subject: [Python-checkins] bpo-41877: Check for misspelled speccing arguments (GH-23737) Message-ID: https://github.com/python/cpython/commit/fdb9efce6ac211f973088eef508740c3fa2bd182 commit: fdb9efce6ac211f973088eef508740c3fa2bd182 branch: master author: vabr-g committer: gpshead date: 2020-12-14T10:30:09-08:00 summary: bpo-41877: Check for misspelled speccing arguments (GH-23737) patch, patch.object and create_autospec silently ignore misspelled arguments such as autospect, auto_spec and set_spec. This can lead to tests failing to check what they are supposed to check. This change adds a check causing a RuntimeError if the above functions get any of the above misspellings as arguments. It also adds a new argument, "unsafe", which can be set to True to disable this check. Also add "!r" to format specifiers in added error messages. files: A Misc/NEWS.d/next/Library/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst M Lib/unittest/mock.py M Lib/unittest/test/testmock/testmock.py diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index d43ea9e23c899..720f682efbb54 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -633,8 +633,8 @@ def __getattr__(self, name): if not self._mock_unsafe: if name.startswith(('assert', 'assret', 'asert', 'aseert', 'assrt')): raise AttributeError( - f"{name} is not a valid assertion. Use a spec " - f"for the mock if {name} is meant to be an attribute.") + f"{name!r} is not a valid assertion. Use a spec " + f"for the mock if {name!r} is meant to be an attribute.") result = self._mock_children.get(name) if result is _deleted: @@ -1242,6 +1242,17 @@ def _importer(target): return thing +# _check_spec_arg_typos takes kwargs from commands like patch and checks that +# they don't contain common misspellings of arguments related to autospeccing. +def _check_spec_arg_typos(kwargs_to_check): + typos = ("autospect", "auto_spec", "set_spec") + for typo in typos: + if typo in kwargs_to_check: + raise RuntimeError( + f"{typo!r} might be a typo; use unsafe=True if this is intended" + ) + + class _patch(object): attribute_name = None @@ -1249,7 +1260,7 @@ class _patch(object): def __init__( self, getter, attribute, new, spec, create, - spec_set, autospec, new_callable, kwargs + spec_set, autospec, new_callable, kwargs, *, unsafe=False ): if new_callable is not None: if new is not DEFAULT: @@ -1260,6 +1271,8 @@ def __init__( raise ValueError( "Cannot use 'autospec' and 'new_callable' together" ) + if not unsafe: + _check_spec_arg_typos(kwargs) self.getter = getter self.attribute = attribute @@ -1569,7 +1582,7 @@ def _get_target(target): def _patch_object( target, attribute, new=DEFAULT, spec=None, create=False, spec_set=None, autospec=None, - new_callable=None, **kwargs + new_callable=None, *, unsafe=False, **kwargs ): """ patch the named member (`attribute`) on an object (`target`) with a mock @@ -1591,7 +1604,7 @@ def _patch_object( getter = lambda: target return _patch( getter, attribute, new, spec, create, - spec_set, autospec, new_callable, kwargs + spec_set, autospec, new_callable, kwargs, unsafe=unsafe ) @@ -1646,7 +1659,7 @@ def _patch_multiple(target, spec=None, create=False, spec_set=None, def patch( target, new=DEFAULT, spec=None, create=False, - spec_set=None, autospec=None, new_callable=None, **kwargs + spec_set=None, autospec=None, new_callable=None, *, unsafe=False, **kwargs ): """ `patch` acts as a function decorator, class decorator or a context @@ -1708,6 +1721,10 @@ def patch( use "as" then the patched object will be bound to the name after the "as"; very useful if `patch` is creating a mock object for you. + Patch will raise a `RuntimeError` if passed some common misspellings of + the arguments autospec and spec_set. Pass the argument `unsafe` with the + value True to disable that check. + `patch` takes arbitrary keyword arguments. These will be passed to `AsyncMock` if the patched object is asynchronous, to `MagicMock` otherwise or to `new_callable` if specified. @@ -1718,7 +1735,7 @@ def patch( getter, attribute = _get_target(target) return _patch( getter, attribute, new, spec, create, - spec_set, autospec, new_callable, kwargs + spec_set, autospec, new_callable, kwargs, unsafe=unsafe ) @@ -2568,7 +2585,7 @@ def call_list(self): def create_autospec(spec, spec_set=False, instance=False, _parent=None, - _name=None, **kwargs): + _name=None, *, unsafe=False, **kwargs): """Create a mock object using another object as a spec. Attributes on the mock will use the corresponding attribute on the `spec` object as their spec. @@ -2584,6 +2601,10 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None, spec for an instance object by passing `instance=True`. The returned mock will only be callable if instances of the mock are callable. + `create_autospec` will raise a `RuntimeError` if passed some common + misspellings of the arguments autospec and spec_set. Pass the argument + `unsafe` with the value True to disable that check. + `create_autospec` also takes arbitrary keyword arguments that are passed to the constructor of the created mock.""" if _is_list(spec): @@ -2601,6 +2622,8 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None, _kwargs = {} if _kwargs and instance: _kwargs['_spec_as_instance'] = True + if not unsafe: + _check_spec_arg_typos(kwargs) _kwargs.update(kwargs) diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index 016905c3b90e5..e38f41e1d2152 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -38,6 +38,12 @@ def cmeth(cls, a, b, c, d=None): pass def smeth(a, b, c, d=None): pass +class Typos(): + autospect = None + auto_spec = None + set_spec = None + + def something(a): pass @@ -2175,6 +2181,52 @@ def __init__(self): self.assertEqual(obj.obj_with_bool_func.__bool__.call_count, 0) + def test_misspelled_arguments(self): + class Foo(): + one = 'one' + # patch, patch.object and create_autospec need to check for misspelled + # arguments explicitly and throw a RuntimError if found. + with self.assertRaises(RuntimeError): + with patch(f'{__name__}.Something.meth', autospect=True): pass + with self.assertRaises(RuntimeError): + with patch.object(Foo, 'one', autospect=True): pass + with self.assertRaises(RuntimeError): + with patch(f'{__name__}.Something.meth', auto_spec=True): pass + with self.assertRaises(RuntimeError): + with patch.object(Foo, 'one', auto_spec=True): pass + with self.assertRaises(RuntimeError): + with patch(f'{__name__}.Something.meth', set_spec=True): pass + with self.assertRaises(RuntimeError): + with patch.object(Foo, 'one', set_spec=True): pass + with self.assertRaises(RuntimeError): + m = create_autospec(Foo, set_spec=True) + # patch.multiple, on the other hand, should flag misspelled arguments + # through an AttributeError, when trying to find the keys from kwargs + # as attributes on the target. + with self.assertRaises(AttributeError): + with patch.multiple( + f'{__name__}.Something', meth=DEFAULT, autospect=True): pass + with self.assertRaises(AttributeError): + with patch.multiple( + f'{__name__}.Something', meth=DEFAULT, auto_spec=True): pass + with self.assertRaises(AttributeError): + with patch.multiple( + f'{__name__}.Something', meth=DEFAULT, set_spec=True): pass + + with patch(f'{__name__}.Something.meth', unsafe=True, autospect=True): + pass + with patch.object(Foo, 'one', unsafe=True, autospect=True): pass + with patch(f'{__name__}.Something.meth', unsafe=True, auto_spec=True): + pass + with patch.object(Foo, 'one', unsafe=True, auto_spec=True): pass + with patch(f'{__name__}.Something.meth', unsafe=True, set_spec=True): + pass + with patch.object(Foo, 'one', unsafe=True, set_spec=True): pass + m = create_autospec(Foo, set_spec=True, unsafe=True) + with patch.multiple( + f'{__name__}.Typos', autospect=True, set_spec=True, auto_spec=True): + pass + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst b/Misc/NEWS.d/next/Library/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst new file mode 100644 index 0000000000000..d42200ecd03de --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-10-19-49-52.bpo-41877.wiVlPc.rst @@ -0,0 +1 @@ +A check is added against misspellings of autospect, auto_spec and set_spec being passed as arguments to patch, patch.object and create_autospec. \ No newline at end of file From webhook-mailer at python.org Mon Dec 14 16:40:49 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 14 Dec 2020 21:40:49 -0000 Subject: [Python-checkins] bpo-42639: Cleanup atexitmodule.c (GH-23770) Message-ID: https://github.com/python/cpython/commit/83d52044ae4def1e8611a4b1b9263b850ca5c458 commit: 83d52044ae4def1e8611a4b1b9263b850ca5c458 branch: master author: Victor Stinner committer: vstinner date: 2020-12-14T22:40:40+01:00 summary: bpo-42639: Cleanup atexitmodule.c (GH-23770) * Rename "atexitmodule_state" to "struct atexit_state". * Rename "modstate" to "state". * Rename "self" parameter to "module". * test_atexit uses textwrap.dedent(). * Remove _Py_PyAtExit() function: inline it into atexit_exec(). * PyInterpreterState: rename pyexitfunc to atexit_func, rename pyexitmodule to atexit_module. files: M Include/cpython/pylifecycle.h M Include/internal/pycore_interp.h M Lib/test/test_atexit.py M Modules/atexitmodule.c M Python/pylifecycle.c diff --git a/Include/cpython/pylifecycle.h b/Include/cpython/pylifecycle.h index b4e2c8a8427c8..13f7a26ba12d0 100644 --- a/Include/cpython/pylifecycle.h +++ b/Include/cpython/pylifecycle.h @@ -35,11 +35,6 @@ PyAPI_FUNC(int) Py_RunMain(void); PyAPI_FUNC(void) _Py_NO_RETURN Py_ExitStatusException(PyStatus err); -/* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level - * exit functions. - */ -PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *); - /* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */ PyAPI_FUNC(void) _Py_RestoreSignals(void); diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h index 184878ce14603..2515234708b3f 100644 --- a/Include/internal/pycore_interp.h +++ b/Include/internal/pycore_interp.h @@ -234,8 +234,8 @@ struct _is { PyObject *after_forkers_child; #endif /* AtExit module */ - void (*pyexitfunc)(PyObject *); - PyObject *pyexitmodule; + void (*atexit_func)(PyObject *); + PyObject *atexit_module; uint64_t tstate_next_unique_id; diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py index 3105f6c378193..906f96dc31af0 100644 --- a/Lib/test/test_atexit.py +++ b/Lib/test/test_atexit.py @@ -1,8 +1,9 @@ -import sys -import unittest -import io import atexit +import io import os +import sys +import textwrap +import unittest from test import support from test.support import script_helper @@ -156,7 +157,7 @@ def test_bound_methods(self): def test_shutdown(self): # Actually test the shutdown mechanism in a subprocess - code = """if 1: + code = textwrap.dedent(""" import atexit def f(msg): @@ -164,7 +165,7 @@ def f(msg): atexit.register(f, "one") atexit.register(f, "two") - """ + """) res = script_helper.assert_python_ok("-c", code) self.assertEqual(res.out.decode().splitlines(), ["two", "one"]) self.assertFalse(res.err) @@ -178,13 +179,13 @@ def test_callbacks_leak(self): # take care to free callbacks in its per-subinterpreter module # state. n = atexit._ncallbacks() - code = r"""if 1: + code = textwrap.dedent(r""" import atexit def f(): pass atexit.register(f) del atexit - """ + """) ret = support.run_in_subinterp(code) self.assertEqual(ret, 0) self.assertEqual(atexit._ncallbacks(), n) @@ -193,13 +194,13 @@ def test_callbacks_leak_refcycle(self): # Similar to the above, but with a refcycle through the atexit # module. n = atexit._ncallbacks() - code = r"""if 1: + code = textwrap.dedent(r""" import atexit def f(): pass atexit.register(f) atexit.__atexit = atexit - """ + """) ret = support.run_in_subinterp(code) self.assertEqual(ret, 0) self.assertEqual(atexit._ncallbacks(), n) @@ -210,13 +211,13 @@ def test_callback_on_subinterpreter_teardown(self): expected = b"The test has passed!" r, w = os.pipe() - code = r"""if 1: + code = textwrap.dedent(r""" import os import atexit def callback(): os.write({:d}, b"The test has passed!") atexit.register(callback) - """.format(w) + """.format(w)) ret = support.run_in_subinterp(code) os.close(w) self.assertEqual(os.read(r, len(expected)), expected) diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c index fd47ddd7731c5..f1fc871cf7fa9 100644 --- a/Modules/atexitmodule.c +++ b/Modules/atexitmodule.c @@ -7,11 +7,8 @@ */ #include "Python.h" - -/* Forward declaration (for atexit_cleanup) */ -static PyObject *atexit_clear(PyObject*, PyObject*); -/* Forward declaration of module object */ -static struct PyModuleDef atexitmodule; +#include "pycore_interp.h" // PyInterpreterState.atexit_func +#include "pycore_pystate.h" // _PyInterpreterState_GET /* ===================================================================== */ /* Callback machinery. */ @@ -22,48 +19,47 @@ typedef struct { PyObject *kwargs; } atexit_callback; -typedef struct { +struct atexit_state { atexit_callback **atexit_callbacks; int ncallbacks; int callback_len; -} atexitmodule_state; +}; -static inline atexitmodule_state* +static inline struct atexit_state* get_atexit_state(PyObject *module) { void *state = PyModule_GetState(module); assert(state != NULL); - return (atexitmodule_state *)state; + return (struct atexit_state *)state; } static void -atexit_delete_cb(atexitmodule_state *modstate, int i) +atexit_delete_cb(struct atexit_state *state, int i) { - atexit_callback *cb; + atexit_callback *cb = state->atexit_callbacks[i]; + state->atexit_callbacks[i] = NULL; - cb = modstate->atexit_callbacks[i]; - modstate->atexit_callbacks[i] = NULL; Py_DECREF(cb->func); Py_DECREF(cb->args); Py_XDECREF(cb->kwargs); PyMem_Free(cb); } + /* Clear all callbacks without calling them */ static void -atexit_cleanup(atexitmodule_state *modstate) +atexit_cleanup(struct atexit_state *state) { atexit_callback *cb; - int i; - for (i = 0; i < modstate->ncallbacks; i++) { - cb = modstate->atexit_callbacks[i]; + for (int i = 0; i < state->ncallbacks; i++) { + cb = state->atexit_callbacks[i]; if (cb == NULL) continue; - atexit_delete_cb(modstate, i); + atexit_delete_cb(state, i); } - modstate->ncallbacks = 0; + state->ncallbacks = 0; } /* Installed into pylifecycle.c's atexit mechanism */ @@ -71,28 +67,26 @@ atexit_cleanup(atexitmodule_state *modstate) static void atexit_callfuncs(PyObject *module) { - PyObject *exc_type = NULL, *exc_value, *exc_tb, *r; - atexit_callback *cb; - atexitmodule_state *modstate; - int i; + assert(!PyErr_Occurred()); - if (module == NULL) + if (module == NULL) { return; - modstate = get_atexit_state(module); + } - if (modstate->ncallbacks == 0) + struct atexit_state *state = get_atexit_state(module); + if (state->ncallbacks == 0) { return; + } - - for (i = modstate->ncallbacks - 1; i >= 0; i--) - { - cb = modstate->atexit_callbacks[i]; - if (cb == NULL) + PyObject *exc_type = NULL, *exc_value, *exc_tb; + for (int i = state->ncallbacks - 1; i >= 0; i--) { + atexit_callback *cb = state->atexit_callbacks[i]; + if (cb == NULL) { continue; + } - r = PyObject_Call(cb->func, cb->args, cb->kwargs); - Py_XDECREF(r); - if (r == NULL) { + PyObject *res = PyObject_Call(cb->func, cb->args, cb->kwargs); + if (res == NULL) { /* Maintain the last exception, but don't leak if there are multiple exceptions. */ if (exc_type) { @@ -107,12 +101,16 @@ atexit_callfuncs(PyObject *module) PyErr_Display(exc_type, exc_value, exc_tb); } } + else { + Py_DECREF(res); + } } - atexit_cleanup(modstate); + atexit_cleanup(state); - if (exc_type) + if (exc_type) { PyErr_Restore(exc_type, exc_value, exc_tb); + } } /* ===================================================================== */ @@ -130,55 +128,48 @@ Register a function to be executed upon normal program termination\n\ func is returned to facilitate usage as a decorator."); static PyObject * -atexit_register(PyObject *self, PyObject *args, PyObject *kwargs) +atexit_register(PyObject *module, PyObject *args, PyObject *kwargs) { - atexitmodule_state *modstate; - atexit_callback *new_callback; - PyObject *func = NULL; - - modstate = get_atexit_state(self); - - if (modstate->ncallbacks >= modstate->callback_len) { - atexit_callback **r; - modstate->callback_len += 16; - r = (atexit_callback**)PyMem_Realloc(modstate->atexit_callbacks, - sizeof(atexit_callback*) * modstate->callback_len); - if (r == NULL) - return PyErr_NoMemory(); - modstate->atexit_callbacks = r; - } - if (PyTuple_GET_SIZE(args) == 0) { PyErr_SetString(PyExc_TypeError, "register() takes at least 1 argument (0 given)"); return NULL; } - func = PyTuple_GET_ITEM(args, 0); + PyObject *func = PyTuple_GET_ITEM(args, 0); if (!PyCallable_Check(func)) { PyErr_SetString(PyExc_TypeError, "the first argument must be callable"); return NULL; } - new_callback = PyMem_Malloc(sizeof(atexit_callback)); - if (new_callback == NULL) + struct atexit_state *state = get_atexit_state(module); + if (state->ncallbacks >= state->callback_len) { + atexit_callback **r; + state->callback_len += 16; + r = (atexit_callback**)PyMem_Realloc(state->atexit_callbacks, + sizeof(atexit_callback*) * state->callback_len); + if (r == NULL) + return PyErr_NoMemory(); + state->atexit_callbacks = r; + } + + atexit_callback *callback = PyMem_Malloc(sizeof(atexit_callback)); + if (callback == NULL) { return PyErr_NoMemory(); + } - new_callback->args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); - if (new_callback->args == NULL) { - PyMem_Free(new_callback); + callback->args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); + if (callback->args == NULL) { + PyMem_Free(callback); return NULL; } - new_callback->func = func; - new_callback->kwargs = kwargs; - Py_INCREF(func); - Py_XINCREF(kwargs); + callback->func = Py_NewRef(func); + callback->kwargs = Py_XNewRef(kwargs); - modstate->atexit_callbacks[modstate->ncallbacks++] = new_callback; + state->atexit_callbacks[state->ncallbacks++] = callback; - Py_INCREF(func); - return func; + return Py_NewRef(func); } PyDoc_STRVAR(atexit_run_exitfuncs__doc__, @@ -187,11 +178,12 @@ PyDoc_STRVAR(atexit_run_exitfuncs__doc__, Run all registered exit functions."); static PyObject * -atexit_run_exitfuncs(PyObject *self, PyObject *unused) +atexit_run_exitfuncs(PyObject *module, PyObject *unused) { - atexit_callfuncs(self); - if (PyErr_Occurred()) + atexit_callfuncs(module); + if (PyErr_Occurred()) { return NULL; + } Py_RETURN_NONE; } @@ -201,9 +193,9 @@ PyDoc_STRVAR(atexit_clear__doc__, Clear the list of previously registered exit functions."); static PyObject * -atexit_clear(PyObject *self, PyObject *unused) +atexit_clear(PyObject *module, PyObject *unused) { - atexit_cleanup(get_atexit_state(self)); + atexit_cleanup(get_atexit_state(module)); Py_RETURN_NONE; } @@ -213,25 +205,18 @@ PyDoc_STRVAR(atexit_ncallbacks__doc__, Return the number of registered exit functions."); static PyObject * -atexit_ncallbacks(PyObject *self, PyObject *unused) +atexit_ncallbacks(PyObject *module, PyObject *unused) { - atexitmodule_state *modstate; - - modstate = get_atexit_state(self); - - return PyLong_FromSsize_t(modstate->ncallbacks); + struct atexit_state *state = get_atexit_state(module); + return PyLong_FromSsize_t(state->ncallbacks); } static int -atexit_m_traverse(PyObject *self, visitproc visit, void *arg) +atexit_m_traverse(PyObject *module, visitproc visit, void *arg) { - int i; - atexitmodule_state *modstate; - - modstate = (atexitmodule_state *)PyModule_GetState(self); - - for (i = 0; i < modstate->ncallbacks; i++) { - atexit_callback *cb = modstate->atexit_callbacks[i]; + struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); + for (int i = 0; i < state->ncallbacks; i++) { + atexit_callback *cb = state->atexit_callbacks[i]; if (cb == NULL) continue; Py_VISIT(cb->func); @@ -242,21 +227,19 @@ atexit_m_traverse(PyObject *self, visitproc visit, void *arg) } static int -atexit_m_clear(PyObject *self) +atexit_m_clear(PyObject *module) { - atexitmodule_state *modstate; - modstate = (atexitmodule_state *)PyModule_GetState(self); - atexit_cleanup(modstate); + struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); + atexit_cleanup(state); return 0; } static void -atexit_free(PyObject *m) +atexit_free(PyObject *module) { - atexitmodule_state *modstate; - modstate = (atexitmodule_state *)PyModule_GetState(m); - atexit_cleanup(modstate); - PyMem_Free(modstate->atexit_callbacks); + struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); + atexit_cleanup(state); + PyMem_Free(state->atexit_callbacks); } PyDoc_STRVAR(atexit_unregister__doc__, @@ -268,29 +251,28 @@ atexit.register\n\ func - function to be unregistered"); static PyObject * -atexit_unregister(PyObject *self, PyObject *func) +atexit_unregister(PyObject *module, PyObject *func) { - atexitmodule_state *modstate; - atexit_callback *cb; - int i, eq; - - modstate = get_atexit_state(self); - - for (i = 0; i < modstate->ncallbacks; i++) + struct atexit_state *state = get_atexit_state(module); + for (int i = 0; i < state->ncallbacks; i++) { - cb = modstate->atexit_callbacks[i]; - if (cb == NULL) + atexit_callback *cb = state->atexit_callbacks[i]; + if (cb == NULL) { continue; + } - eq = PyObject_RichCompareBool(cb->func, func, Py_EQ); - if (eq < 0) + int eq = PyObject_RichCompareBool(cb->func, func, Py_EQ); + if (eq < 0) { return NULL; - if (eq) - atexit_delete_cb(modstate, i); + } + if (eq) { + atexit_delete_cb(state, i); + } } Py_RETURN_NONE; } + static PyMethodDef atexit_methods[] = { {"register", (PyCFunction)(void(*)(void)) atexit_register, METH_VARARGS|METH_KEYWORDS, atexit_register__doc__}, @@ -316,18 +298,19 @@ Two public functions, register and unregister, are defined.\n\ "); static int -atexit_exec(PyObject *m) { - atexitmodule_state *modstate; - - modstate = get_atexit_state(m); - modstate->callback_len = 32; - modstate->ncallbacks = 0; - modstate->atexit_callbacks = PyMem_New(atexit_callback*, - modstate->callback_len); - if (modstate->atexit_callbacks == NULL) +atexit_exec(PyObject *module) +{ + struct atexit_state *state = get_atexit_state(module); + state->callback_len = 32; + state->ncallbacks = 0; + state->atexit_callbacks = PyMem_New(atexit_callback*, state->callback_len); + if (state->atexit_callbacks == NULL) { return -1; + } - _Py_PyAtExit(atexit_callfuncs, m); + PyInterpreterState *is = _PyInterpreterState_GET(); + is->atexit_func = atexit_callfuncs; + is->atexit_module = module; return 0; } @@ -338,14 +321,14 @@ static PyModuleDef_Slot atexit_slots[] = { static struct PyModuleDef atexitmodule = { PyModuleDef_HEAD_INIT, - "atexit", - atexit__doc__, - sizeof(atexitmodule_state), - atexit_methods, - atexit_slots, - atexit_m_traverse, - atexit_m_clear, - (freefunc)atexit_free + .m_name = "atexit", + .m_doc = atexit__doc__, + .m_size = sizeof(struct atexit_state), + .m_methods = atexit_methods, + .m_slots = atexit_slots, + .m_traverse = atexit_m_traverse, + .m_clear = atexit_m_clear, + .m_free = (freefunc)atexit_free }; PyMODINIT_FUNC diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 6a705b4d2b4b9..54a35a27eccc2 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2634,26 +2634,14 @@ Py_ExitStatusException(PyStatus status) /* Clean up and exit */ -/* For the atexit module. */ -void _Py_PyAtExit(void (*func)(PyObject *), PyObject *module) -{ - PyInterpreterState *is = _PyInterpreterState_GET(); - - /* Guard against API misuse (see bpo-17852) */ - assert(is->pyexitfunc == NULL || is->pyexitfunc == func); - - is->pyexitfunc = func; - is->pyexitmodule = module; -} - static void call_py_exitfuncs(PyThreadState *tstate) { PyInterpreterState *interp = tstate->interp; - if (interp->pyexitfunc == NULL) + if (interp->atexit_func == NULL) return; - (*interp->pyexitfunc)(interp->pyexitmodule); + interp->atexit_func(interp->atexit_module); _PyErr_Clear(tstate); } From webhook-mailer at python.org Mon Dec 14 17:08:21 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 14 Dec 2020 22:08:21 -0000 Subject: [Python-checkins] bpo-42639: atexit now logs callbacks exceptions (GH-23771) Message-ID: https://github.com/python/cpython/commit/357704c9f2375f29ed5b3a93adac086fa714538d commit: 357704c9f2375f29ed5b3a93adac086fa714538d branch: master author: Victor Stinner committer: vstinner date: 2020-12-14T23:07:54+01:00 summary: bpo-42639: atexit now logs callbacks exceptions (GH-23771) At Python exit, if a callback registered with atexit.register() fails, its exception is now logged. Previously, only some exceptions were logged, and the last exception was always silently ignored. Add _PyAtExit_Call() function and remove PyInterpreterState.atexit_func member. call_py_exitfuncs() now calls directly _PyAtExit_Call(). The atexit module must now always be built as a built-in module. files: A Misc/NEWS.d/next/Library/2020-12-14-22-31-22.bpo-42639.5Z3iWX.rst M Doc/whatsnew/3.10.rst M Include/internal/pycore_interp.h M Include/internal/pycore_pylifecycle.h M Lib/test/test_threading.py M Modules/atexitmodule.c M Python/pylifecycle.c M setup.py diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 23e28aa4fd8fc..b690f8d2d7cd7 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -501,6 +501,13 @@ Changes in the Python API have been renamed to *exc*. (Contributed by Zackery Spytz and Matthias Bussonnier in :issue:`26389`.) +* :mod:`atexit`: At Python exit, if a callback registered with + :func:`atexit.register` fails, its exception is now logged. Previously, only + some exceptions were logged, and the last exception was always silently + ignored. + (Contributed by Victor Stinner in :issue:`42639`.) + + CPython bytecode changes ======================== @@ -519,6 +526,8 @@ Build Changes * :mod:`sqlite3` requires SQLite 3.7.3 or higher. (Contributed by Sergey Fedoseev and Erlend E. Aasland :issue:`40744`.) +* The :mod:`atexit` module must now always be built as a built-in module. + (Contributed by Victor Stinner in :issue:`42639`.) C API Changes diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h index 2515234708b3f..12416c2e94d43 100644 --- a/Include/internal/pycore_interp.h +++ b/Include/internal/pycore_interp.h @@ -233,8 +233,8 @@ struct _is { PyObject *after_forkers_parent; PyObject *after_forkers_child; #endif + /* AtExit module */ - void (*atexit_func)(PyObject *); PyObject *atexit_module; uint64_t tstate_next_unique_id; diff --git a/Include/internal/pycore_pylifecycle.h b/Include/internal/pycore_pylifecycle.h index b691e6325780e..e6e4187cd5ab0 100644 --- a/Include/internal/pycore_pylifecycle.h +++ b/Include/internal/pycore_pylifecycle.h @@ -109,6 +109,8 @@ PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception, PyAPI_FUNC(void) _PyThreadState_DeleteCurrent(PyThreadState *tstate); +extern void _PyAtExit_Call(PyObject *module); + #ifdef __cplusplus } #endif diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 864cea313aea5..0a4372ec2df39 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -487,7 +487,6 @@ def exit_handler(): if not pid: print("child process ok", file=sys.stderr, flush=True) # child process - sys.exit() else: wait_process(pid, exitcode=0) diff --git a/Misc/NEWS.d/next/Library/2020-12-14-22-31-22.bpo-42639.5Z3iWX.rst b/Misc/NEWS.d/next/Library/2020-12-14-22-31-22.bpo-42639.5Z3iWX.rst new file mode 100644 index 0000000000000..bdb2edd7adc2f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-14-22-31-22.bpo-42639.5Z3iWX.rst @@ -0,0 +1,3 @@ +At Python exit, if a callback registered with :func:`atexit.register` fails, +its exception is now logged. Previously, only some exceptions were logged, and +the last exception was always silently ignored. diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c index f1fc871cf7fa9..90ed7d50cad49 100644 --- a/Modules/atexitmodule.c +++ b/Modules/atexitmodule.c @@ -65,7 +65,7 @@ atexit_cleanup(struct atexit_state *state) /* Installed into pylifecycle.c's atexit mechanism */ static void -atexit_callfuncs(PyObject *module) +atexit_callfuncs(PyObject *module, int ignore_exc) { assert(!PyErr_Occurred()); @@ -87,18 +87,23 @@ atexit_callfuncs(PyObject *module) PyObject *res = PyObject_Call(cb->func, cb->args, cb->kwargs); if (res == NULL) { - /* Maintain the last exception, but don't leak if there are - multiple exceptions. */ - if (exc_type) { - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); + if (ignore_exc) { + _PyErr_WriteUnraisableMsg("in atexit callback", cb->func); } - PyErr_Fetch(&exc_type, &exc_value, &exc_tb); - if (!PyErr_GivenExceptionMatches(exc_type, PyExc_SystemExit)) { - PySys_WriteStderr("Error in atexit._run_exitfuncs:\n"); - PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb); - PyErr_Display(exc_type, exc_value, exc_tb); + else { + /* Maintain the last exception, but don't leak if there are + multiple exceptions. */ + if (exc_type) { + Py_DECREF(exc_type); + Py_XDECREF(exc_value); + Py_XDECREF(exc_tb); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_tb); + if (!PyErr_GivenExceptionMatches(exc_type, PyExc_SystemExit)) { + PySys_WriteStderr("Error in atexit._run_exitfuncs:\n"); + PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb); + PyErr_Display(exc_type, exc_value, exc_tb); + } } } else { @@ -108,11 +113,24 @@ atexit_callfuncs(PyObject *module) atexit_cleanup(state); - if (exc_type) { - PyErr_Restore(exc_type, exc_value, exc_tb); + if (ignore_exc) { + assert(!PyErr_Occurred()); + } + else { + if (exc_type) { + PyErr_Restore(exc_type, exc_value, exc_tb); + } } } + +void +_PyAtExit_Call(PyObject *module) +{ + atexit_callfuncs(module, 1); +} + + /* ===================================================================== */ /* Module methods. */ @@ -180,7 +198,7 @@ Run all registered exit functions."); static PyObject * atexit_run_exitfuncs(PyObject *module, PyObject *unused) { - atexit_callfuncs(module); + atexit_callfuncs(module, 0); if (PyErr_Occurred()) { return NULL; } @@ -308,9 +326,8 @@ atexit_exec(PyObject *module) return -1; } - PyInterpreterState *is = _PyInterpreterState_GET(); - is->atexit_func = atexit_callfuncs; - is->atexit_module = module; + PyInterpreterState *interp = _PyInterpreterState_GET(); + interp->atexit_module = module; return 0; } diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 54a35a27eccc2..7b80d01a375e5 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2632,19 +2632,16 @@ Py_ExitStatusException(PyStatus status) } } + /* Clean up and exit */ static void call_py_exitfuncs(PyThreadState *tstate) { - PyInterpreterState *interp = tstate->interp; - if (interp->atexit_func == NULL) - return; - - interp->atexit_func(interp->atexit_module); - _PyErr_Clear(tstate); + _PyAtExit_Call(tstate->interp->atexit_module); } + /* Wait until threading._shutdown completes, provided the threading module was imported in the first place. The shutdown routine will wait until all non-daemon diff --git a/setup.py b/setup.py index ca5a04d2ae0d7..e055e44b0f175 100644 --- a/setup.py +++ b/setup.py @@ -854,8 +854,6 @@ def detect_simple_extensions(self): # C-optimized pickle replacement self.add(Extension("_pickle", ["_pickle.c"], extra_compile_args=['-DPy_BUILD_CORE_MODULE'])) - # atexit - self.add(Extension("atexit", ["atexitmodule.c"])) # _json speedups self.add(Extension("_json", ["_json.c"], extra_compile_args=['-DPy_BUILD_CORE_MODULE'])) From webhook-mailer at python.org Mon Dec 14 17:14:52 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 14 Dec 2020 22:14:52 -0000 Subject: [Python-checkins] bpo-31904: Enable libpython3.so shared library for VxWorks (GH-23741) Message-ID: https://github.com/python/cpython/commit/c117426bf8e7dd7a25e7d15bfbc88253b6ed42de commit: c117426bf8e7dd7a25e7d15bfbc88253b6ed42de branch: master author: pxinwr committer: vstinner date: 2020-12-14T23:14:43+01:00 summary: bpo-31904: Enable libpython3.so shared library for VxWorks (GH-23741) files: A Misc/NEWS.d/next/Build/2020-12-11-18-04-38.bpo-31904.j3j6d8.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-11-18-04-38.bpo-31904.j3j6d8.rst b/Misc/NEWS.d/next/Build/2020-12-11-18-04-38.bpo-31904.j3j6d8.rst new file mode 100644 index 0000000000000..d2da711448ada --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-11-18-04-38.bpo-31904.j3j6d8.rst @@ -0,0 +1 @@ +Enable libpython3.so for VxWorks. diff --git a/configure b/configure index 0c0aee96d507d..d9e610ea4d0cb 100755 --- a/configure +++ b/configure @@ -5937,7 +5937,7 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>confdefs.h PY3LIBRARY=libpython3.so fi ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*) + Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} @@ -9721,7 +9721,7 @@ then # when running test_compile.py. LINKFORSHARED='-Wl,-E -N 2048K';; VxWorks*) - LINKFORSHARED='--export-dynamic';; + LINKFORSHARED='-Wl,-export-dynamic';; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5 diff --git a/configure.ac b/configure.ac index 31e39ec4f7d4c..445dae1358748 100644 --- a/configure.ac +++ b/configure.ac @@ -1133,7 +1133,7 @@ if test $enable_shared = "yes"; then PY3LIBRARY=libpython3.so fi ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*) + Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} @@ -2798,7 +2798,7 @@ then # when running test_compile.py. LINKFORSHARED='-Wl,-E -N 2048K';; VxWorks*) - LINKFORSHARED='--export-dynamic';; + LINKFORSHARED='-Wl,-export-dynamic';; esac fi AC_MSG_RESULT($LINKFORSHARED) From webhook-mailer at python.org Mon Dec 14 17:33:38 2020 From: webhook-mailer at python.org (brandtbucher) Date: Mon, 14 Dec 2020 22:33:38 -0000 Subject: [Python-checkins] bpo-42059: Fix required/optional keys for TypedDict(..., total=False) (GH-22736) (GH-23747) Message-ID: https://github.com/python/cpython/commit/dbb00062dc3afb12c41c87564e6faefe60766b01 commit: dbb00062dc3afb12c41c87564e6faefe60766b01 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: brandtbucher date: 2020-12-14T14:33:27-08:00 summary: bpo-42059: Fix required/optional keys for TypedDict(..., total=False) (GH-22736) (GH-23747) (cherry picked from commit 67b769f5157c9dad1c7dd6b24e067b9fdab5b35d) Co-authored-by: Alex Gr?nholm files: A Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst M Lib/test/test_typing.py M Lib/typing.py diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 04dd6df6a9cc4..3b3aa29de7221 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -3891,10 +3891,14 @@ def test_total(self): self.assertEqual(D(), {}) self.assertEqual(D(x=1), {'x': 1}) self.assertEqual(D.__total__, False) + self.assertEqual(D.__required_keys__, frozenset()) + self.assertEqual(D.__optional_keys__, {'x'}) self.assertEqual(Options(), {}) self.assertEqual(Options(log_level=2), {'log_level': 2}) self.assertEqual(Options.__total__, False) + self.assertEqual(Options.__required_keys__, frozenset()) + self.assertEqual(Options.__optional_keys__, {'log_level', 'log_path'}) def test_optional_keys(self): class Point2Dor3D(Point2D, total=False): diff --git a/Lib/typing.py b/Lib/typing.py index 1d6584db5afb2..81e4a2fa403b9 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -1987,14 +1987,14 @@ class body be required. raise TypeError("TypedDict takes either a dict or keyword arguments," " but not both") - ns = {'__annotations__': dict(fields), '__total__': total} + ns = {'__annotations__': dict(fields)} try: # Setting correct module is necessary to make typed dict classes pickleable. ns['__module__'] = sys._getframe(1).f_globals.get('__name__', '__main__') except (AttributeError, ValueError): pass - return _TypedDictMeta(typename, (), ns) + return _TypedDictMeta(typename, (), ns, total=total) _TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {}) TypedDict.__mro_entries__ = lambda bases: (_TypedDict,) diff --git a/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst b/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst new file mode 100644 index 0000000000000..3f18824fe6598 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-17-12-42-08.bpo-42059.ZGMZ3D.rst @@ -0,0 +1 @@ +:class:`typing.TypedDict` types created using the alternative call-style syntax now correctly respect the ``total`` keyword argument when setting their ``__required_keys__`` and ``__optional_keys__`` class attributes. From webhook-mailer at python.org Mon Dec 14 17:43:58 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 14 Dec 2020 22:43:58 -0000 Subject: [Python-checkins] bpo-40084: Enum - dir() includes member attributes (GH-19219) Message-ID: https://github.com/python/cpython/commit/33cbb04986d0dabb9c542edc52bb4ea6106d3a81 commit: 33cbb04986d0dabb9c542edc52bb4ea6106d3a81 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-14T14:43:43-08:00 summary: bpo-40084: Enum - dir() includes member attributes (GH-19219) (cherry picked from commit 68526fe258da8c01196fd7cf48e8e5f1280bf8fd) Co-authored-by: Angelin BOOZ <9497359+lem2clide at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst M Lib/enum.py M Lib/test/test_enum.py M Lib/test/test_httplib.py M Misc/ACKS diff --git a/Lib/enum.py b/Lib/enum.py index b14da088f33bf..35210c993325d 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -699,7 +699,7 @@ def __dir__(self): for cls in self.__class__.mro() for m in cls.__dict__ if m[0] != '_' and m not in self._member_map_ - ] + ] + [m for m in self.__dict__ if m[0] != '_'] return (['__class__', '__doc__', '__module__'] + added_behavior) def __format__(self, format_spec): diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index ccc2cbe1ec14b..dca668a9046f3 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -215,6 +215,18 @@ class SubEnum(SuperEnum): set(['__class__', '__doc__', '__module__', 'name', 'value', 'invisible']), ) + def test_dir_on_sub_with_behavior_including_instance_dict_on_super(self): + # see issue40084 + class SuperEnum(IntEnum): + def __new__(cls, value, description=""): + obj = int.__new__(cls, value) + obj._value_ = value + obj.description = description + return obj + class SubEnum(SuperEnum): + sample = 5 + self.assertTrue({'description'} <= set(dir(SubEnum.sample))) + def test_enum_in_enum_out(self): Season = self.Season self.assertIs(Season(Season.WINTER), Season.WINTER) diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index ed125893d6d07..28943f02564fb 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -1,5 +1,5 @@ import errno -from http import client +from http import client, HTTPStatus import io import itertools import os @@ -516,6 +516,10 @@ def _parse_chunked(self, data): class BasicTest(TestCase): + def test_dir_with_added_behavior_on_status(self): + # see issue40084 + self.assertTrue({'description', 'name', 'phrase', 'value'} <= set(dir(HTTPStatus(404)))) + def test_status_lines(self): # Test HTTP status lines diff --git a/Misc/ACKS b/Misc/ACKS index 12a5ac1410a77..ebf12c9a9f1dc 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -192,6 +192,7 @@ Gawain Bolton Carl Friedrich Bolz-Tereick Forest Bond Gregory Bond +Angelin Booz M?d?ric Boquien Matias Bordese Jonas Borgstr?m diff --git a/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst b/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst new file mode 100644 index 0000000000000..65ff4ce36e82e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst @@ -0,0 +1 @@ +Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes as well as methods. From webhook-mailer at python.org Mon Dec 14 18:32:07 2020 From: webhook-mailer at python.org (vstinner) Date: Mon, 14 Dec 2020 23:32:07 -0000 Subject: [Python-checkins] bpo-42591: Export missing Py_FrozenMain() symbol (GH-23730) (GH-23734) Message-ID: https://github.com/python/cpython/commit/6b2ed385094839c1920b934f07d946bf049a3770 commit: 6b2ed385094839c1920b934f07d946bf049a3770 branch: 3.9 author: Victor Stinner committer: vstinner date: 2020-12-15T00:31:54+01:00 summary: bpo-42591: Export missing Py_FrozenMain() symbol (GH-23730) (GH-23734) Export the Py_FrozenMain() function: fix a Python 3.9.0 regression. Python 3.9 uses -fvisibility=hidden and the function was not exported explicitly and so not exported. (cherry picked from commit b5c7b38f5ebbc84b5b80192db1743d3e1cdcf4c5) files: A Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst M Include/pylifecycle.h diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index c5368b3c5edaa..783fcb455eb52 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -32,6 +32,8 @@ PyAPI_FUNC(void) _Py_NO_RETURN Py_Exit(int); /* Bootstrap __main__ (defined in Modules/main.c) */ PyAPI_FUNC(int) Py_Main(int argc, wchar_t **argv); +PyAPI_FUNC(int) Py_FrozenMain(int argc, char **argv); + PyAPI_FUNC(int) Py_BytesMain(int argc, char **argv); /* In pathconfig.c */ diff --git a/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst b/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst new file mode 100644 index 0000000000000..3519859f7be89 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-12-10-10-43-03.bpo-42591.CXNY8G.rst @@ -0,0 +1,3 @@ +Export the :c:func:`Py_FrozenMain` function: fix a Python 3.9.0 regression. +Python 3.9 uses ``-fvisibility=hidden`` and the function was not exported +explicitly and so not exported. From webhook-mailer at python.org Mon Dec 14 18:57:12 2020 From: webhook-mailer at python.org (ethanfurman) Date: Mon, 14 Dec 2020 23:57:12 -0000 Subject: [Python-checkins] [3.9] bpo-42517: [Enum] deprecate private name members (GH-23722) (GH-23748) Message-ID: https://github.com/python/cpython/commit/aba12b67c18b17bb727a0d50dd0653e38cb64dc8 commit: aba12b67c18b17bb727a0d50dd0653e38cb64dc8 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ethanfurman date: 2020-12-14T15:56:58-08:00 summary: [3.9] bpo-42517: [Enum] deprecate private name members (GH-23722) (GH-23748) private names will raise a DeprecationWarning; in 3.10 they will become normal attributes files: A Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst M Doc/library/enum.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index a3c51655576ba..4ecca209d87b3 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -1121,6 +1121,15 @@ and raise an error if the two do not match:: In Python 2 code the :attr:`_order_` attribute is necessary as definition order is lost before it can be recorded. + +_Private__names +""""""""""""""" + +Private names will be normal attributes in Python 3.10 instead of either an error +or a member (depending on if the name ends with an underscore). Using these names +in 3.9 will issue a :exc:`DeprecationWarning`. + + ``Enum`` member type """""""""""""""""""" diff --git a/Lib/enum.py b/Lib/enum.py index 35210c993325d..46b5435b7c8e0 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -41,6 +41,19 @@ def _is_sunder(name): name[-2:-1] != '_' ) +def _is_private(cls_name, name): + # do not use `re` as `re` imports `enum` + pattern = '_%s__' % (cls_name, ) + if ( + len(name) >= 5 + and name.startswith(pattern) + and name[len(pattern)] != '_' + and (name[-1] != '_' or name[-2] != '_') + ): + return True + else: + return False + def _make_class_unpicklable(cls): """ Make the given class un-picklable. @@ -81,6 +94,14 @@ def __setitem__(self, key, value): Single underscore (sunder) names are reserved. """ + if _is_private(self._cls_name, key): + import warnings + warnings.warn( + "private variables, such as %r, will be normal attributes in 3.10" + % (key, ), + DeprecationWarning, + stacklevel=2, + ) if _is_sunder(key): if key not in ( '_order_', '_create_pseudo_member_', @@ -146,6 +167,7 @@ def __prepare__(metacls, cls, bases): metacls._check_for_existing_members(cls, bases) # create the namespace dict enum_dict = _EnumDict() + enum_dict._cls_name = cls # inherit previous flags and _generate_next_value_ function member_type, first_enum = metacls._get_mixins_(cls, bases) if first_enum is not None: diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index dca668a9046f3..f7f8522bda4f3 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1147,6 +1147,7 @@ def test_multiple_mixin_mro(self): class auto_enum(type(Enum)): def __new__(metacls, cls, bases, classdict): temp = type(classdict)() + temp._cls_name = cls names = set(classdict._member_names) i = 0 for k in classdict._member_names: @@ -2049,6 +2050,23 @@ def test_empty_globals(self): exec(code, global_ns, local_ls) + @unittest.skipUnless( + sys.version_info[:2] == (3, 9), + 'private variables are now normal attributes', + ) + def test_warning_for_private_variables(self): + with self.assertWarns(DeprecationWarning): + class Private(Enum): + __corporal = 'Radar' + self.assertEqual(Private._Private__corporal.value, 'Radar') + try: + with self.assertWarns(DeprecationWarning): + class Private(Enum): + __major_ = 'Hoolihan' + except ValueError: + pass + + class TestOrder(unittest.TestCase): def test_same_members(self): diff --git a/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst b/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst new file mode 100644 index 0000000000000..e99294d9430d1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-09-10-59-16.bpo-42517.FKEVcZ.rst @@ -0,0 +1,2 @@ +Enum: private names will raise a DeprecationWarning; in 3.10 they will +become normal attributes From webhook-mailer at python.org Mon Dec 14 21:41:46 2020 From: webhook-mailer at python.org (ethanfurman) Date: Tue, 15 Dec 2020 02:41:46 -0000 Subject: [Python-checkins] [3.9] bpo-42567: [Enum] call __init_subclass__ after members are added (GH-23714) (GH-23772) Message-ID: https://github.com/python/cpython/commit/9d1fff1fcd5332f0ba7f72d0e0f9f66b47ec4e8d commit: 9d1fff1fcd5332f0ba7f72d0e0f9f66b47ec4e8d branch: 3.9 author: Ethan Furman committer: ethanfurman date: 2020-12-14T18:41:34-08:00 summary: [3.9] bpo-42567: [Enum] call __init_subclass__ after members are added (GH-23714) (GH-23772) When creating an Enum, `type.__new__` calls `__init_subclass__`, but at that point the members have not been added. This patch suppresses the initial call, then manually calls the ancestor `__init_subclass__` before returning the new Enum class. (cherry picked from commit 6bd94de168b58ac9358277ed6f200490ab26c174) files: A Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst M Lib/enum.py M Lib/test/test_enum.py diff --git a/Lib/enum.py b/Lib/enum.py index 46b5435b7c8e0..88c951f4f12b4 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -9,6 +9,14 @@ ] +class _NoInitSubclass: + """ + temporary base class to suppress calling __init_subclass__ + """ + @classmethod + def __init_subclass__(cls, **kwds): + pass + def _is_descriptor(obj): """ Returns True if obj is a descriptor, False otherwise. @@ -176,7 +184,7 @@ def __prepare__(metacls, cls, bases): ) return enum_dict - def __new__(metacls, cls, bases, classdict): + def __new__(metacls, cls, bases, classdict, **kwds): # an Enum class is final once enumeration items have been defined; it # cannot be mixed with other types (int, float, etc.) if it has an # inherited __new__ unless a new __new__ is defined (or the resulting @@ -211,8 +219,22 @@ def __new__(metacls, cls, bases, classdict): if '__doc__' not in classdict: classdict['__doc__'] = 'An enumeration.' + # postpone calling __init_subclass__ + if '__init_subclass__' in classdict and classdict['__init_subclass__'] is None: + raise TypeError('%s.__init_subclass__ cannot be None') + # remove current __init_subclass__ so previous one can be found with getattr + new_init_subclass = classdict.pop('__init_subclass__', None) # create our new Enum type - enum_class = super().__new__(metacls, cls, bases, classdict) + if bases: + bases = (_NoInitSubclass, ) + bases + enum_class = type.__new__(metacls, cls, bases, classdict) + enum_class.__bases__ = enum_class.__bases__[1:] #or (object, ) + else: + enum_class = type.__new__(metacls, cls, bases, classdict) + old_init_subclass = getattr(enum_class, '__init_subclass__', None) + # and restore the new one (if there was one) + if new_init_subclass is not None: + enum_class.__init_subclass__ = classmethod(new_init_subclass) enum_class._member_names_ = [] # names in definition order enum_class._member_map_ = {} # name->value map enum_class._member_type_ = member_type @@ -324,6 +346,9 @@ def __new__(metacls, cls, bases, classdict): if _order_ != enum_class._member_names_: raise TypeError('member order does not match _order_') + # finally, call parents' __init_subclass__ + if Enum is not None and old_init_subclass is not None: + old_init_subclass(**kwds) return enum_class def __bool__(self): @@ -701,6 +726,9 @@ def _generate_next_value_(name, start, count, last_values): else: return start + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + @classmethod def _missing_(cls, value): return None diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index f7f8522bda4f3..0868c30347216 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2049,7 +2049,6 @@ def test_empty_globals(self): local_ls = {} exec(code, global_ns, local_ls) - @unittest.skipUnless( sys.version_info[:2] == (3, 9), 'private variables are now normal attributes', @@ -2066,6 +2065,42 @@ class Private(Enum): except ValueError: pass + def test_init_subclass(self): + class MyEnum(Enum): + def __init_subclass__(cls, **kwds): + super(MyEnum, cls).__init_subclass__(**kwds) + self.assertFalse(cls.__dict__.get('_test', False)) + cls._test1 = 'MyEnum' + # + class TheirEnum(MyEnum): + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + cls._test2 = 'TheirEnum' + class WhoseEnum(TheirEnum): + def __init_subclass__(cls, **kwds): + pass + class NoEnum(WhoseEnum): + ONE = 1 + self.assertEqual(TheirEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test2'], 'TheirEnum') + self.assertFalse(NoEnum.__dict__.get('_test1', False)) + self.assertFalse(NoEnum.__dict__.get('_test2', False)) + # + class OurEnum(MyEnum): + def __init_subclass__(cls, **kwds): + cls._test2 = 'OurEnum' + class WhereEnum(OurEnum): + def __init_subclass__(cls, **kwds): + pass + class NeverEnum(WhereEnum): + ONE = 'one' + self.assertEqual(OurEnum.__dict__['_test1'], 'MyEnum') + self.assertFalse(WhereEnum.__dict__.get('_test1', False)) + self.assertEqual(WhereEnum.__dict__['_test2'], 'OurEnum') + self.assertFalse(NeverEnum.__dict__.get('_test1', False)) + self.assertFalse(NeverEnum.__dict__.get('_test2', False)) + class TestOrder(unittest.TestCase): @@ -2516,6 +2551,42 @@ def cycle_enum(): 'at least one thread failed while creating composite members') self.assertEqual(256, len(seen), 'too many composite members created') + def test_init_subclass(self): + class MyEnum(Flag): + def __init_subclass__(cls, **kwds): + super().__init_subclass__(**kwds) + self.assertFalse(cls.__dict__.get('_test', False)) + cls._test1 = 'MyEnum' + # + class TheirEnum(MyEnum): + def __init_subclass__(cls, **kwds): + super(TheirEnum, cls).__init_subclass__(**kwds) + cls._test2 = 'TheirEnum' + class WhoseEnum(TheirEnum): + def __init_subclass__(cls, **kwds): + pass + class NoEnum(WhoseEnum): + ONE = 1 + self.assertEqual(TheirEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test1'], 'MyEnum') + self.assertEqual(WhoseEnum.__dict__['_test2'], 'TheirEnum') + self.assertFalse(NoEnum.__dict__.get('_test1', False)) + self.assertFalse(NoEnum.__dict__.get('_test2', False)) + # + class OurEnum(MyEnum): + def __init_subclass__(cls, **kwds): + cls._test2 = 'OurEnum' + class WhereEnum(OurEnum): + def __init_subclass__(cls, **kwds): + pass + class NeverEnum(WhereEnum): + ONE = 1 + self.assertEqual(OurEnum.__dict__['_test1'], 'MyEnum') + self.assertFalse(WhereEnum.__dict__.get('_test1', False)) + self.assertEqual(WhereEnum.__dict__['_test2'], 'OurEnum') + self.assertFalse(NeverEnum.__dict__.get('_test1', False)) + self.assertFalse(NeverEnum.__dict__.get('_test2', False)) + class TestIntFlag(unittest.TestCase): """Tests of the IntFlags.""" diff --git a/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst new file mode 100644 index 0000000000000..7c94cdf40dd4c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst @@ -0,0 +1 @@ +`Enum`: call `__init_subclass__` after members have been added From webhook-mailer at python.org Tue Dec 15 00:24:11 2020 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 15 Dec 2020 05:24:11 -0000 Subject: [Python-checkins] bpo-33610: Edit idlelib.codecontext (GH-23773) Message-ID: https://github.com/python/cpython/commit/6f79e60b66dacefca147bdaa80eb37f936a72991 commit: 6f79e60b66dacefca147bdaa80eb37f936a72991 branch: master author: Terry Jan Reedy committer: terryjreedy date: 2020-12-15T00:24:01-05:00 summary: bpo-33610: Edit idlelib.codecontext (GH-23773) Add sentence to module docstring and import tkinter items. files: M Lib/idlelib/codecontext.py diff --git a/Lib/idlelib/codecontext.py b/Lib/idlelib/codecontext.py index 989b30e599465..eb19773f56e34 100644 --- a/Lib/idlelib/codecontext.py +++ b/Lib/idlelib/codecontext.py @@ -7,11 +7,14 @@ enclosing block. The number of hint lines is determined by the maxlines variable in the codecontext section of config-extensions.def. Lines which do not open blocks are not shown in the context hints pane. + +For EditorWindows, <> is bound to CodeContext(self). +toggle_code_context_event. """ import re from sys import maxsize as INFINITY -import tkinter +from tkinter import Frame, Text, TclError from tkinter.constants import NSEW, SUNKEN from idlelib.config import idleConf @@ -83,7 +86,7 @@ def __del__(self): if self.t1 is not None: try: self.text.after_cancel(self.t1) - except tkinter.TclError: # pragma: no cover + except TclError: # pragma: no cover pass self.t1 = None @@ -111,7 +114,7 @@ def toggle_code_context_event(self, event=None): padx += widget.tk.getint(info['padx']) padx += widget.tk.getint(widget.cget('padx')) border += widget.tk.getint(widget.cget('border')) - context = self.context = tkinter.Text( + context = self.context = Text( self.editwin.text_frame, height=1, width=1, # Don't request more than we get. @@ -127,7 +130,7 @@ def toggle_code_context_event(self, event=None): line_number_colors = idleConf.GetHighlight(idleConf.CurrentTheme(), 'linenumber') - self.cell00 = tkinter.Frame(self.editwin.text_frame, + self.cell00 = Frame(self.editwin.text_frame, bg=line_number_colors['background']) self.cell00.grid(row=0, column=0, sticky=NSEW) menu_status = 'Hide' @@ -221,7 +224,7 @@ def jumptoline(self, event=None): """ try: self.context.index("sel.first") - except tkinter.TclError: + except TclError: lines = len(self.info) if lines == 1: # No context lines are showing. newtop = 1 From webhook-mailer at python.org Tue Dec 15 00:45:53 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Dec 2020 05:45:53 -0000 Subject: [Python-checkins] bpo-33610: Edit idlelib.codecontext (GH-23773) Message-ID: https://github.com/python/cpython/commit/925f9987866703b0e7cfde341d23f19b832603cb commit: 925f9987866703b0e7cfde341d23f19b832603cb branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-14T21:45:44-08:00 summary: bpo-33610: Edit idlelib.codecontext (GH-23773) Add sentence to module docstring and import tkinter items. (cherry picked from commit 6f79e60b66dacefca147bdaa80eb37f936a72991) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/codecontext.py diff --git a/Lib/idlelib/codecontext.py b/Lib/idlelib/codecontext.py index 989b30e599465..eb19773f56e34 100644 --- a/Lib/idlelib/codecontext.py +++ b/Lib/idlelib/codecontext.py @@ -7,11 +7,14 @@ enclosing block. The number of hint lines is determined by the maxlines variable in the codecontext section of config-extensions.def. Lines which do not open blocks are not shown in the context hints pane. + +For EditorWindows, <> is bound to CodeContext(self). +toggle_code_context_event. """ import re from sys import maxsize as INFINITY -import tkinter +from tkinter import Frame, Text, TclError from tkinter.constants import NSEW, SUNKEN from idlelib.config import idleConf @@ -83,7 +86,7 @@ def __del__(self): if self.t1 is not None: try: self.text.after_cancel(self.t1) - except tkinter.TclError: # pragma: no cover + except TclError: # pragma: no cover pass self.t1 = None @@ -111,7 +114,7 @@ def toggle_code_context_event(self, event=None): padx += widget.tk.getint(info['padx']) padx += widget.tk.getint(widget.cget('padx')) border += widget.tk.getint(widget.cget('border')) - context = self.context = tkinter.Text( + context = self.context = Text( self.editwin.text_frame, height=1, width=1, # Don't request more than we get. @@ -127,7 +130,7 @@ def toggle_code_context_event(self, event=None): line_number_colors = idleConf.GetHighlight(idleConf.CurrentTheme(), 'linenumber') - self.cell00 = tkinter.Frame(self.editwin.text_frame, + self.cell00 = Frame(self.editwin.text_frame, bg=line_number_colors['background']) self.cell00.grid(row=0, column=0, sticky=NSEW) menu_status = 'Hide' @@ -221,7 +224,7 @@ def jumptoline(self, event=None): """ try: self.context.index("sel.first") - except tkinter.TclError: + except TclError: lines = len(self.info) if lines == 1: # No context lines are showing. newtop = 1 From webhook-mailer at python.org Tue Dec 15 06:08:01 2020 From: webhook-mailer at python.org (markshannon) Date: Tue, 15 Dec 2020 11:08:01 -0000 Subject: [Python-checkins] bpo-42246: Remove DO_NOT_EMIT_BYTECODE macros, so that while loops and if statements conform to PEP 626. (GH-23743) Message-ID: https://github.com/python/cpython/commit/8473cf89bdbf2cb292b39c972db540504669b9cd commit: 8473cf89bdbf2cb292b39c972db540504669b9cd branch: master author: Mark Shannon committer: markshannon date: 2020-12-15T11:07:50Z summary: bpo-42246: Remove DO_NOT_EMIT_BYTECODE macros, so that while loops and if statements conform to PEP 626. (GH-23743) files: M Lib/test/test_compile.py M Lib/test/test_dis.py M Lib/test/test_peepholer.py M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 0d11ce940f81a..3a37b6cf30bfc 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -728,10 +728,10 @@ def unused_block_while_else(): for func in funcs: opcodes = list(dis.get_instructions(func)) - self.assertEqual(2, len(opcodes)) - self.assertEqual('LOAD_CONST', opcodes[0].opname) - self.assertEqual(None, opcodes[0].argval) - self.assertEqual('RETURN_VALUE', opcodes[1].opname) + self.assertLessEqual(len(opcodes), 3) + self.assertEqual('LOAD_CONST', opcodes[-2].opname) + self.assertEqual(None, opcodes[-2].argval) + self.assertEqual('RETURN_VALUE', opcodes[-1].opname) def test_false_while_loop(self): def break_in_while(): diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 56d877151838f..eb931703d51ed 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -269,11 +269,14 @@ def bug42562(): 1 0 LOAD_CONST 0 (0) 2 STORE_NAME 0 (x) - 3 >> 4 LOAD_NAME 0 (x) - 6 LOAD_CONST 1 (1) - 8 INPLACE_ADD - 10 STORE_NAME 0 (x) - 12 JUMP_ABSOLUTE 4 + 2 4 NOP + + 3 >> 6 LOAD_NAME 0 (x) + 8 LOAD_CONST 1 (1) + 10 INPLACE_ADD + 12 STORE_NAME 0 (x) + + 2 14 JUMP_ABSOLUTE 6 """ dis_traceback = """\ @@ -1036,8 +1039,8 @@ def jumpy(): Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=46, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=48, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=50, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=90, argval=90, argrepr='', offset=52, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=54, starts_line=12, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=94, argval=94, argrepr='', offset=52, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=54, starts_line=12, is_jump_target=True), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=56, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=58, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=60, starts_line=None, is_jump_target=False), @@ -1053,67 +1056,69 @@ def jumpy(): Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=80, starts_line=16, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=82, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=84, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=50, argval=50, argrepr='', offset=86, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=98, argval=98, argrepr='', offset=88, starts_line=17, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=90, starts_line=19, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=92, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=94, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=96, starts_line=None, is_jump_target=False), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=98, argval=198, argrepr='to 198', offset=98, starts_line=20, is_jump_target=True), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=114, argrepr='to 114', offset=100, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=102, starts_line=21, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=104, starts_line=None, is_jump_target=False), - Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=106, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=108, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=26, argval=140, argrepr='to 140', offset=112, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=114, starts_line=22, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=116, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=138, argval=138, argrepr='', offset=118, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=120, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=122, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=90, argval=90, argrepr='', offset=86, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=102, argval=102, argrepr='', offset=88, starts_line=17, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=90, starts_line=11, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=54, argval=54, argrepr='', offset=92, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=94, starts_line=19, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=96, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=98, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=100, starts_line=None, is_jump_target=False), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=98, argval=202, argrepr='to 202', offset=102, starts_line=20, is_jump_target=True), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=118, argrepr='to 118', offset=104, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=106, starts_line=21, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=108, starts_line=None, is_jump_target=False), + Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=26, argval=144, argrepr='to 144', offset=116, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=118, starts_line=22, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=120, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=142, argval=142, argrepr='', offset=122, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=126, starts_line=23, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=128, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=130, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=132, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=134, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=46, argval=184, argrepr='to 184', offset=136, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=140, starts_line=25, is_jump_target=True), - Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=168, argrepr='to 168', offset=142, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=144, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=146, starts_line=26, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=148, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=150, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=152, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=154, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=156, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=158, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=160, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=162, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=184, argrepr='to 184', offset=166, starts_line=None, is_jump_target=False), - Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=174, argval=174, argrepr='', offset=170, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=174, starts_line=None, is_jump_target=True), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=130, starts_line=23, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=132, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=134, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=46, argval=188, argrepr='to 188', offset=140, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=142, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), + Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=154, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=158, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=160, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=162, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=166, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), + Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=178, argval=178, argrepr='', offset=174, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=True), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=186, starts_line=28, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=188, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=190, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=192, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=194, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=196, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=198, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=200, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=202, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=204, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=206, starts_line=None, is_jump_target=False), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=190, starts_line=28, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=192, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=194, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=196, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=198, starts_line=None, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=200, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=202, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=204, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=206, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=208, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=210, starts_line=None, is_jump_target=False), ] # One last piece of inspect fodder to check the default line number handling diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py index 92a82cc54f268..4034154e4dcfb 100644 --- a/Lib/test/test_peepholer.py +++ b/Lib/test/test_peepholer.py @@ -409,21 +409,6 @@ def f(cond1, cond2): self.assertLessEqual(len(returns), 6) self.check_lnotab(f) - def test_elim_jump_after_return2(self): - # Eliminate dead code: jumps immediately after returns can't be reached - def f(cond1, cond2): - while 1: - if cond1: return 4 - self.assertNotInBytecode(f, 'JUMP_FORWARD') - # There should be one jump for the while loop. - jumps = [instr for instr in dis.get_instructions(f) - if 'JUMP' in instr.opname] - self.assertEqual(len(jumps), 1) - returns = [instr for instr in dis.get_instructions(f) - if instr.opname == 'RETURN_VALUE'] - self.assertLessEqual(len(returns), 2) - self.check_lnotab(f) - def test_make_function_doesnt_bail(self): def f(): def g()->1+1: diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 37013e51c94b1..a842139cd8e4c 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -53,9 +53,8 @@ def basic(): # following that clause? -# Some constructs like "while 0:", "if 0:" or "if 1:...else:..." are optimized -# away. No code # exists for them, so the line numbers skip directly from -# "del x" to "x = 1". +# Some constructs like "while 0:", "if 0:" or "if 1:...else:..." could be optimized +# away. Make sure that those lines aren't skipped. def arigo_example0(): x = 1 del x @@ -66,6 +65,7 @@ def arigo_example0(): arigo_example0.events = [(0, 'call'), (1, 'line'), (2, 'line'), + (3, 'line'), (5, 'line'), (5, 'return')] @@ -79,6 +79,7 @@ def arigo_example1(): arigo_example1.events = [(0, 'call'), (1, 'line'), (2, 'line'), + (3, 'line'), (5, 'line'), (5, 'return')] @@ -94,6 +95,7 @@ def arigo_example2(): arigo_example2.events = [(0, 'call'), (1, 'line'), (2, 'line'), + (3, 'line'), (4, 'line'), (7, 'line'), (7, 'return')] @@ -236,9 +238,13 @@ def tightloop_example(): (1, 'line'), (2, 'line'), (3, 'line'), + (4, 'line'), (5, 'line'), + (4, 'line'), (5, 'line'), + (4, 'line'), (5, 'line'), + (4, 'line'), (5, 'line'), (5, 'exception'), (6, 'line'), diff --git a/Python/compile.c b/Python/compile.c index c7a0ae402bf23..ae92869fc9565 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -228,7 +228,7 @@ static int compiler_slice(struct compiler *, expr_ty); static int inplace_binop(operator_ty); static int are_all_items_const(asdl_expr_seq *, Py_ssize_t, Py_ssize_t); -static int expr_constant(expr_ty); + static int compiler_with(struct compiler *, stmt_ty, int); static int compiler_async_with(struct compiler *, stmt_ty, int); @@ -1572,17 +1572,6 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b) } \ } -/* These macros allows to check only for errors and not emmit bytecode - * while visiting nodes. -*/ - -#define BEGIN_DO_NOT_EMIT_BYTECODE { \ - c->c_do_not_emit_bytecode++; - -#define END_DO_NOT_EMIT_BYTECODE \ - c->c_do_not_emit_bytecode--; \ -} - /* Search if variable annotations are present statically in a block. */ static int @@ -2704,48 +2693,28 @@ static int compiler_if(struct compiler *c, stmt_ty s) { basicblock *end, *next; - int constant; assert(s->kind == If_kind); end = compiler_new_block(c); - if (end == NULL) + if (end == NULL) { return 0; - - constant = expr_constant(s->v.If.test); - /* constant = 0: "if 0" - * constant = 1: "if 1", "if 2", ... - * constant = -1: rest */ - if (constant == 0) { - BEGIN_DO_NOT_EMIT_BYTECODE - VISIT_SEQ(c, stmt, s->v.If.body); - END_DO_NOT_EMIT_BYTECODE - if (s->v.If.orelse) { - VISIT_SEQ(c, stmt, s->v.If.orelse); - } - } else if (constant == 1) { - VISIT_SEQ(c, stmt, s->v.If.body); - if (s->v.If.orelse) { - BEGIN_DO_NOT_EMIT_BYTECODE - VISIT_SEQ(c, stmt, s->v.If.orelse); - END_DO_NOT_EMIT_BYTECODE - } - } else { - if (asdl_seq_LEN(s->v.If.orelse)) { - next = compiler_new_block(c); - if (next == NULL) - return 0; - } - else { - next = end; - } - if (!compiler_jump_if(c, s->v.If.test, next, 0)) { + } + if (asdl_seq_LEN(s->v.If.orelse)) { + next = compiler_new_block(c); + if (next == NULL) { return 0; } - VISIT_SEQ(c, stmt, s->v.If.body); - if (asdl_seq_LEN(s->v.If.orelse)) { - ADDOP_JUMP(c, JUMP_FORWARD, end); - compiler_use_next_block(c, next); - VISIT_SEQ(c, stmt, s->v.If.orelse); - } + } + else { + next = end; + } + if (!compiler_jump_if(c, s->v.If.test, next, 0)) { + return 0; + } + VISIT_SEQ(c, stmt, s->v.If.body); + if (asdl_seq_LEN(s->v.If.orelse)) { + ADDOP_JUMP(c, JUMP_FORWARD, end); + compiler_use_next_block(c, next); + VISIT_SEQ(c, stmt, s->v.If.orelse); } compiler_use_next_block(c, end); return 1; @@ -2842,25 +2811,6 @@ static int compiler_while(struct compiler *c, stmt_ty s) { basicblock *loop, *body, *end, *anchor = NULL; - int constant = expr_constant(s->v.While.test); - - if (constant == 0) { - BEGIN_DO_NOT_EMIT_BYTECODE - // Push a dummy block so the VISIT_SEQ knows that we are - // inside a while loop so it can correctly evaluate syntax - // errors. - if (!compiler_push_fblock(c, WHILE_LOOP, NULL, NULL, NULL)) { - return 0; - } - VISIT_SEQ(c, stmt, s->v.While.body); - // Remove the dummy block now that is not needed. - compiler_pop_fblock(c, WHILE_LOOP, NULL); - END_DO_NOT_EMIT_BYTECODE - if (s->v.While.orelse) { - VISIT_SEQ(c, stmt, s->v.While.orelse); - } - return 1; - } loop = compiler_new_block(c); body = compiler_new_block(c); anchor = compiler_new_block(c); @@ -2872,15 +2822,16 @@ compiler_while(struct compiler *c, stmt_ty s) if (!compiler_push_fblock(c, WHILE_LOOP, loop, end, NULL)) { return 0; } - if (constant == -1) { - if (!compiler_jump_if(c, s->v.While.test, anchor, 0)) { - return 0; - } + if (!compiler_jump_if(c, s->v.While.test, anchor, 0)) { + return 0; } compiler_use_next_block(c, body); VISIT_SEQ(c, stmt, s->v.While.body); - ADDOP_JUMP(c, JUMP_ABSOLUTE, loop); + SET_LOC(c, s); + if (!compiler_jump_if(c, s->v.While.test, body, 1)) { + return 0; + } compiler_pop_fblock(c, WHILE_LOOP, loop); @@ -4791,15 +4742,6 @@ compiler_visit_keyword(struct compiler *c, keyword_ty k) Return values: 1 for true, 0 for false, -1 for non-constant. */ -static int -expr_constant(expr_ty e) -{ - if (e->kind == Constant_kind) { - return PyObject_IsTrue(e->v.Constant.value); - } - return -1; -} - static int compiler_with_except_finish(struct compiler *c) { basicblock *exit; @@ -6304,7 +6246,7 @@ optimize_basic_block(basicblock *bb, PyObject *consts) case JUMP_FORWARD: if (inst->i_target != target->i_target) { inst->i_target = target->i_target; - --i; +// --i; } break; case JUMP_ABSOLUTE: @@ -6317,8 +6259,8 @@ optimize_basic_block(basicblock *bb, PyObject *consts) } if (inst->i_target->b_exit && inst->i_target->b_iused <= MAX_COPY_SIZE) { basicblock *to_copy = inst->i_target; - *inst = to_copy->b_instr[0]; - for (i = 1; i < to_copy->b_iused; i++) { + inst->i_opcode = NOP; + for (i = 0; i < to_copy->b_iused; i++) { int index = compiler_next_instr(bb); if (index < 0) { return -1; diff --git a/Python/importlib.h b/Python/importlib.h index fce7d863db7b7..e05c8ea391474 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -131,1724 +131,1725 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,1,10,1,255,128,122,20,95,77,111,100,117,108,101,76, 111,99,107,46,95,95,105,110,105,116,95,95,99,1,0,0, 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, - 0,67,0,0,0,115,84,0,0,0,116,0,160,1,161,0, - 125,1,124,0,106,2,125,2,116,3,131,0,125,3,116,4, - 160,5,124,2,161,1,125,4,124,4,100,0,117,0,114,42, - 100,1,83,0,124,4,106,2,125,2,124,2,124,1,107,2, - 114,60,100,2,83,0,124,2,124,3,118,0,114,72,100,1, - 83,0,124,3,160,6,124,2,161,1,1,0,113,20,41,3, - 78,70,84,41,7,114,26,0,0,0,218,9,103,101,116,95, - 105,100,101,110,116,114,29,0,0,0,218,3,115,101,116,218, - 12,95,98,108,111,99,107,105,110,103,95,111,110,218,3,103, - 101,116,218,3,97,100,100,41,5,114,33,0,0,0,90,2, - 109,101,218,3,116,105,100,90,4,115,101,101,110,114,27,0, + 0,67,0,0,0,115,86,0,0,0,116,0,160,1,161,0, + 125,1,124,0,106,2,125,2,116,3,131,0,125,3,9,0, + 116,4,160,5,124,2,161,1,125,4,124,4,100,0,117,0, + 114,44,100,2,83,0,124,4,106,2,125,2,124,2,124,1, + 107,2,114,62,100,1,83,0,124,2,124,3,118,0,114,74, + 100,2,83,0,124,3,160,6,124,2,161,1,1,0,113,22, + 41,3,78,84,70,41,7,114,26,0,0,0,218,9,103,101, + 116,95,105,100,101,110,116,114,29,0,0,0,218,3,115,101, + 116,218,12,95,98,108,111,99,107,105,110,103,95,111,110,218, + 3,103,101,116,218,3,97,100,100,41,5,114,33,0,0,0, + 90,2,109,101,218,3,116,105,100,90,4,115,101,101,110,114, + 27,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,12,104,97,115,95,100,101,97,100,108,111,99, + 107,79,0,0,0,115,30,0,0,0,8,2,6,1,6,1, + 2,1,10,1,8,1,4,1,6,1,8,1,4,1,8,1, + 4,6,10,1,2,242,255,128,122,24,95,77,111,100,117,108, + 101,76,111,99,107,46,104,97,115,95,100,101,97,100,108,111, + 99,107,99,1,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,8,0,0,0,67,0,0,0,115,198,0,0,0, + 116,0,160,1,161,0,125,1,124,0,116,2,124,1,60,0, + 122,172,9,0,124,0,106,3,143,126,1,0,124,0,106,4, + 100,2,107,2,115,48,124,0,106,5,124,1,107,2,114,92, + 124,1,124,0,95,5,124,0,4,0,106,4,100,3,55,0, + 2,0,95,4,87,0,100,4,4,0,4,0,131,3,1,0, + 87,0,116,2,124,1,61,0,100,1,83,0,124,0,160,6, + 161,0,114,112,116,7,100,5,124,0,22,0,131,1,130,1, + 124,0,106,8,160,9,100,6,161,1,114,138,124,0,4,0, + 106,10,100,3,55,0,2,0,95,10,87,0,100,4,4,0, + 4,0,131,3,1,0,110,16,49,0,115,158,48,0,1,0, + 1,0,1,0,89,0,1,0,124,0,106,8,160,9,161,0, + 1,0,124,0,106,8,160,11,161,0,1,0,113,20,116,2, + 124,1,61,0,48,0,41,7,122,185,10,32,32,32,32,32, + 32,32,32,65,99,113,117,105,114,101,32,116,104,101,32,109, + 111,100,117,108,101,32,108,111,99,107,46,32,32,73,102,32, + 97,32,112,111,116,101,110,116,105,97,108,32,100,101,97,100, + 108,111,99,107,32,105,115,32,100,101,116,101,99,116,101,100, + 44,10,32,32,32,32,32,32,32,32,97,32,95,68,101,97, + 100,108,111,99,107,69,114,114,111,114,32,105,115,32,114,97, + 105,115,101,100,46,10,32,32,32,32,32,32,32,32,79,116, + 104,101,114,119,105,115,101,44,32,116,104,101,32,108,111,99, + 107,32,105,115,32,97,108,119,97,121,115,32,97,99,113,117, + 105,114,101,100,32,97,110,100,32,84,114,117,101,32,105,115, + 32,114,101,116,117,114,110,101,100,46,10,32,32,32,32,32, + 32,32,32,84,114,25,0,0,0,233,1,0,0,0,78,122, + 23,100,101,97,100,108,111,99,107,32,100,101,116,101,99,116, + 101,100,32,98,121,32,37,114,70,41,12,114,26,0,0,0, + 114,35,0,0,0,114,37,0,0,0,114,27,0,0,0,114, + 30,0,0,0,114,29,0,0,0,114,41,0,0,0,114,22, + 0,0,0,114,28,0,0,0,218,7,97,99,113,117,105,114, + 101,114,31,0,0,0,218,7,114,101,108,101,97,115,101,169, + 2,114,33,0,0,0,114,40,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,43,0,0,0,100, + 0,0,0,115,40,0,0,0,8,6,8,1,2,1,2,1, + 8,1,20,1,6,1,14,1,14,1,6,9,4,247,8,1, + 12,1,12,1,44,1,10,2,10,1,2,244,8,14,255,128, + 122,19,95,77,111,100,117,108,101,76,111,99,107,46,97,99, + 113,117,105,114,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,144, + 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,143, + 110,1,0,124,0,106,3,124,1,107,3,114,34,116,4,100, + 1,131,1,130,1,124,0,106,5,100,2,107,4,115,48,74, + 0,130,1,124,0,4,0,106,5,100,3,56,0,2,0,95, + 5,124,0,106,5,100,2,107,2,114,108,100,0,124,0,95, + 3,124,0,106,6,114,108,124,0,4,0,106,6,100,3,56, + 0,2,0,95,6,124,0,106,7,160,8,161,0,1,0,87, + 0,100,0,4,0,4,0,131,3,1,0,100,0,83,0,49, + 0,115,130,48,0,1,0,1,0,1,0,89,0,1,0,100, + 0,83,0,41,4,78,250,31,99,97,110,110,111,116,32,114, + 101,108,101,97,115,101,32,117,110,45,97,99,113,117,105,114, + 101,100,32,108,111,99,107,114,25,0,0,0,114,42,0,0, + 0,41,9,114,26,0,0,0,114,35,0,0,0,114,27,0, + 0,0,114,29,0,0,0,218,12,82,117,110,116,105,109,101, + 69,114,114,111,114,114,30,0,0,0,114,31,0,0,0,114, + 28,0,0,0,114,44,0,0,0,114,45,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,44,0, + 0,0,125,0,0,0,115,24,0,0,0,8,1,8,1,10, + 1,8,1,14,1,14,1,10,1,6,1,6,1,14,1,46, + 1,255,128,122,19,95,77,111,100,117,108,101,76,111,99,107, + 46,114,101,108,101,97,115,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, + 0,115,18,0,0,0,100,1,160,0,124,0,106,1,116,2, + 124,0,131,1,161,2,83,0,41,2,78,122,23,95,77,111, + 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, + 116,32,123,125,169,3,218,6,102,111,114,109,97,116,114,20, + 0,0,0,218,2,105,100,169,1,114,33,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,8,95, + 95,114,101,112,114,95,95,138,0,0,0,115,4,0,0,0, + 18,1,255,128,122,20,95,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,34,0,0,0,114,41,0,0,0,114,43,0,0,0, + 114,44,0,0,0,114,52,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,23, + 0,0,0,65,0,0,0,115,16,0,0,0,8,0,4,1, + 8,5,8,8,8,21,8,25,12,13,255,128,114,23,0,0, + 0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132, + 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, + 11,218,16,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,122,86,65,32,115,105,109,112,108,101,32,95,77, + 111,100,117,108,101,76,111,99,107,32,101,113,117,105,118,97, + 108,101,110,116,32,102,111,114,32,80,121,116,104,111,110,32, + 98,117,105,108,100,115,32,119,105,116,104,111,117,116,10,32, + 32,32,32,109,117,108,116,105,45,116,104,114,101,97,100,105, + 110,103,32,115,117,112,112,111,114,116,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, + 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,100, + 1,124,0,95,1,100,0,83,0,114,24,0,0,0,41,2, + 114,20,0,0,0,114,30,0,0,0,114,32,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,34, + 0,0,0,146,0,0,0,115,6,0,0,0,6,1,10,1, + 255,128,122,25,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,95,95,105,110,105,116,95,95,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,18,0,0,0,124,0,4,0,106, + 0,100,1,55,0,2,0,95,0,100,2,83,0,41,3,78, + 114,42,0,0,0,84,41,1,114,30,0,0,0,114,51,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,12,104,97,115,95,100,101,97,100,108,111,99,107,79, - 0,0,0,115,26,0,0,0,8,2,6,1,6,1,10,2, - 8,1,4,1,6,1,8,1,4,1,8,1,4,6,12,1, - 255,128,122,24,95,77,111,100,117,108,101,76,111,99,107,46, - 104,97,115,95,100,101,97,100,108,111,99,107,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0, - 0,67,0,0,0,115,196,0,0,0,116,0,160,1,161,0, - 125,1,124,0,116,2,124,1,60,0,122,170,124,0,106,3, - 143,126,1,0,124,0,106,4,100,1,107,2,115,46,124,0, - 106,5,124,1,107,2,114,90,124,1,124,0,95,5,124,0, - 4,0,106,4,100,2,55,0,2,0,95,4,87,0,100,3, - 4,0,4,0,131,3,1,0,87,0,116,2,124,1,61,0, - 100,4,83,0,124,0,160,6,161,0,114,110,116,7,100,5, - 124,0,22,0,131,1,130,1,124,0,106,8,160,9,100,6, - 161,1,114,136,124,0,4,0,106,10,100,2,55,0,2,0, - 95,10,87,0,100,3,4,0,4,0,131,3,1,0,110,16, - 49,0,115,156,48,0,1,0,1,0,1,0,89,0,1,0, - 124,0,106,8,160,9,161,0,1,0,124,0,106,8,160,11, - 161,0,1,0,113,18,116,2,124,1,61,0,48,0,41,7, - 122,185,10,32,32,32,32,32,32,32,32,65,99,113,117,105, - 114,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, - 99,107,46,32,32,73,102,32,97,32,112,111,116,101,110,116, - 105,97,108,32,100,101,97,100,108,111,99,107,32,105,115,32, - 100,101,116,101,99,116,101,100,44,10,32,32,32,32,32,32, - 32,32,97,32,95,68,101,97,100,108,111,99,107,69,114,114, - 111,114,32,105,115,32,114,97,105,115,101,100,46,10,32,32, - 32,32,32,32,32,32,79,116,104,101,114,119,105,115,101,44, - 32,116,104,101,32,108,111,99,107,32,105,115,32,97,108,119, - 97,121,115,32,97,99,113,117,105,114,101,100,32,97,110,100, - 32,84,114,117,101,32,105,115,32,114,101,116,117,114,110,101, - 100,46,10,32,32,32,32,32,32,32,32,114,25,0,0,0, - 233,1,0,0,0,78,84,122,23,100,101,97,100,108,111,99, - 107,32,100,101,116,101,99,116,101,100,32,98,121,32,37,114, - 70,41,12,114,26,0,0,0,114,35,0,0,0,114,37,0, - 0,0,114,27,0,0,0,114,30,0,0,0,114,29,0,0, - 0,114,41,0,0,0,114,22,0,0,0,114,28,0,0,0, - 218,7,97,99,113,117,105,114,101,114,31,0,0,0,218,7, - 114,101,108,101,97,115,101,169,2,114,33,0,0,0,114,40, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,43,0,0,0,100,0,0,0,115,36,0,0,0, - 8,6,8,1,2,1,8,2,20,1,6,1,14,1,14,1, - 6,9,4,247,8,1,12,1,12,1,44,1,10,2,12,1, - 8,2,255,128,122,19,95,77,111,100,117,108,101,76,111,99, - 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, + 0,114,43,0,0,0,150,0,0,0,115,6,0,0,0,14, + 1,4,1,255,128,122,24,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,97,99,113,117,105,114,101,99, + 1,0,0,0,0,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,2,114,18,116,1,100,2,131,1,130,1,124, + 0,4,0,106,0,100,3,56,0,2,0,95,0,100,0,83, + 0,41,4,78,114,25,0,0,0,114,46,0,0,0,114,42, + 0,0,0,41,2,114,30,0,0,0,114,47,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,44,0,0,0,154,0,0,0,115,8,0,0, + 0,10,1,8,1,18,1,255,128,122,24,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, + 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,5,0,0,0,67,0,0,0,115,18,0,0, + 0,100,1,160,0,124,0,106,1,116,2,124,0,131,1,161, + 2,83,0,41,2,78,122,28,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, + 116,32,123,125,114,48,0,0,0,114,51,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,52,0, + 0,0,159,0,0,0,115,4,0,0,0,18,1,255,128,122, + 25,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,8,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,34,0,0,0,114,43,0,0,0,114,44,0,0,0, + 114,52,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,53,0,0,0,142,0, + 0,0,115,14,0,0,0,8,0,4,1,8,3,8,4,8, + 4,12,5,255,128,114,53,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64, + 0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0,41,8,218,18, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, + 124,1,124,0,95,0,100,0,124,0,95,1,100,0,83,0, + 114,0,0,0,0,41,2,218,5,95,110,97,109,101,218,5, + 95,108,111,99,107,114,32,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,34,0,0,0,165,0, + 0,0,115,6,0,0,0,6,1,10,1,255,128,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 0,0,0,115,26,0,0,0,116,0,124,0,106,1,131,1, + 124,0,95,2,124,0,106,2,160,3,161,0,1,0,100,0, + 83,0,114,0,0,0,0,41,4,218,16,95,103,101,116,95, + 109,111,100,117,108,101,95,108,111,99,107,114,55,0,0,0, + 114,56,0,0,0,114,43,0,0,0,114,51,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, + 95,95,101,110,116,101,114,95,95,169,0,0,0,115,6,0, + 0,0,12,1,14,1,255,128,122,28,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, + 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, + 0,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,0,0,0,0,41,2,114,56,0,0,0,114,44, + 0,0,0,41,3,114,33,0,0,0,218,4,97,114,103,115, + 90,6,107,119,97,114,103,115,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,8,95,95,101,120,105,116,95, + 95,173,0,0,0,115,4,0,0,0,14,1,255,128,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,9, + 0,0,0,114,8,0,0,0,114,1,0,0,0,114,34,0, + 0,0,114,58,0,0,0,114,60,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,54,0,0,0,163,0,0,0,115,10,0,0,0,8,0, + 8,2,8,4,12,4,255,128,114,54,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,8,0, + 0,0,67,0,0,0,115,134,0,0,0,116,0,160,1,161, + 0,1,0,122,114,122,14,116,2,124,0,25,0,131,0,125, + 1,87,0,110,22,4,0,116,3,121,46,1,0,1,0,1, + 0,100,1,125,1,89,0,110,2,48,0,124,1,100,1,117, + 0,114,110,116,4,100,1,117,0,114,74,116,5,124,0,131, + 1,125,1,110,8,116,6,124,0,131,1,125,1,124,0,102, + 1,100,2,100,3,132,1,125,2,116,7,160,8,124,1,124, + 2,161,2,116,2,124,0,60,0,87,0,116,0,160,9,161, + 0,1,0,124,1,83,0,116,0,160,9,161,0,1,0,48, + 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, + 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, + 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, + 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, + 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, + 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, + 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, + 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, + 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, + 78,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,83,0,0,0,115,54,0,0,0,116, + 0,160,1,161,0,1,0,122,34,116,2,160,3,124,1,161, + 1,124,0,117,0,114,30,116,2,124,1,61,0,87,0,116, + 0,160,4,161,0,1,0,100,0,83,0,116,0,160,4,161, + 0,1,0,48,0,114,0,0,0,0,41,5,218,4,95,105, + 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, + 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, + 38,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, + 99,107,41,2,218,3,114,101,102,114,20,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, + 98,198,0,0,0,115,14,0,0,0,8,1,2,1,14,4, + 6,1,2,128,22,2,255,128,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,61,0,0,0,114,62,0, + 0,0,114,63,0,0,0,218,8,75,101,121,69,114,114,111, + 114,114,26,0,0,0,114,53,0,0,0,114,23,0,0,0, + 218,8,95,119,101,97,107,114,101,102,114,65,0,0,0,114, + 64,0,0,0,41,3,114,20,0,0,0,114,27,0,0,0, + 114,66,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,57,0,0,0,179,0,0,0,115,34,0, + 0,0,8,6,2,1,2,1,14,1,12,1,10,1,8,2, + 8,1,10,1,8,2,12,2,16,11,2,128,8,2,4,2, + 10,254,255,128,114,57,0,0,0,99,1,0,0,0,0,0, 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, - 0,0,115,144,0,0,0,116,0,160,1,161,0,125,1,124, - 0,106,2,143,110,1,0,124,0,106,3,124,1,107,3,114, - 34,116,4,100,1,131,1,130,1,124,0,106,5,100,2,107, - 4,115,48,74,0,130,1,124,0,4,0,106,5,100,3,56, - 0,2,0,95,5,124,0,106,5,100,2,107,2,114,108,100, - 0,124,0,95,3,124,0,106,6,114,108,124,0,4,0,106, - 6,100,3,56,0,2,0,95,6,124,0,106,7,160,8,161, - 0,1,0,87,0,100,0,4,0,4,0,131,3,1,0,100, - 0,83,0,49,0,115,130,48,0,1,0,1,0,1,0,89, - 0,1,0,100,0,83,0,41,4,78,250,31,99,97,110,110, - 111,116,32,114,101,108,101,97,115,101,32,117,110,45,97,99, - 113,117,105,114,101,100,32,108,111,99,107,114,25,0,0,0, - 114,42,0,0,0,41,9,114,26,0,0,0,114,35,0,0, - 0,114,27,0,0,0,114,29,0,0,0,218,12,82,117,110, - 116,105,109,101,69,114,114,111,114,114,30,0,0,0,114,31, - 0,0,0,114,28,0,0,0,114,44,0,0,0,114,45,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,44,0,0,0,125,0,0,0,115,24,0,0,0,8, - 1,8,1,10,1,8,1,14,1,14,1,10,1,6,1,6, - 1,14,1,46,1,255,128,122,19,95,77,111,100,117,108,101, - 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, - 0,67,0,0,0,115,18,0,0,0,100,1,160,0,124,0, - 106,1,116,2,124,0,131,1,161,2,83,0,41,2,78,122, - 23,95,77,111,100,117,108,101,76,111,99,107,40,123,33,114, - 125,41,32,97,116,32,123,125,169,3,218,6,102,111,114,109, - 97,116,114,20,0,0,0,218,2,105,100,169,1,114,33,0, + 0,0,115,54,0,0,0,116,0,124,0,131,1,125,1,122, + 12,124,1,160,1,161,0,1,0,87,0,110,20,4,0,116, + 2,121,40,1,0,1,0,1,0,89,0,100,1,83,0,48, + 0,124,1,160,3,161,0,1,0,100,1,83,0,41,2,122, + 189,65,99,113,117,105,114,101,115,32,116,104,101,110,32,114, + 101,108,101,97,115,101,115,32,116,104,101,32,109,111,100,117, + 108,101,32,108,111,99,107,32,102,111,114,32,97,32,103,105, + 118,101,110,32,109,111,100,117,108,101,32,110,97,109,101,46, + 10,10,32,32,32,32,84,104,105,115,32,105,115,32,117,115, + 101,100,32,116,111,32,101,110,115,117,114,101,32,97,32,109, + 111,100,117,108,101,32,105,115,32,99,111,109,112,108,101,116, + 101,108,121,32,105,110,105,116,105,97,108,105,122,101,100,44, + 32,105,110,32,116,104,101,10,32,32,32,32,101,118,101,110, + 116,32,105,116,32,105,115,32,98,101,105,110,103,32,105,109, + 112,111,114,116,101,100,32,98,121,32,97,110,111,116,104,101, + 114,32,116,104,114,101,97,100,46,10,32,32,32,32,78,41, + 4,114,57,0,0,0,114,43,0,0,0,114,22,0,0,0, + 114,44,0,0,0,41,2,114,20,0,0,0,114,27,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,19,95,108,111,99,107,95,117,110,108,111,99,107,95,109, + 111,100,117,108,101,216,0,0,0,115,14,0,0,0,8,6, + 2,1,12,1,12,1,8,3,12,2,255,128,114,69,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,79,0,0,0,115,14,0,0,0,124, + 0,124,1,105,0,124,2,164,1,142,1,83,0,41,2,97, + 46,1,0,0,114,101,109,111,118,101,95,105,109,112,111,114, + 116,108,105,98,95,102,114,97,109,101,115,32,105,110,32,105, + 109,112,111,114,116,46,99,32,119,105,108,108,32,97,108,119, + 97,121,115,32,114,101,109,111,118,101,32,115,101,113,117,101, + 110,99,101,115,10,32,32,32,32,111,102,32,105,109,112,111, + 114,116,108,105,98,32,102,114,97,109,101,115,32,116,104,97, + 116,32,101,110,100,32,119,105,116,104,32,97,32,99,97,108, + 108,32,116,111,32,116,104,105,115,32,102,117,110,99,116,105, + 111,110,10,10,32,32,32,32,85,115,101,32,105,116,32,105, + 110,115,116,101,97,100,32,111,102,32,97,32,110,111,114,109, + 97,108,32,99,97,108,108,32,105,110,32,112,108,97,99,101, + 115,32,119,104,101,114,101,32,105,110,99,108,117,100,105,110, + 103,32,116,104,101,32,105,109,112,111,114,116,108,105,98,10, + 32,32,32,32,102,114,97,109,101,115,32,105,110,116,114,111, + 100,117,99,101,115,32,117,110,119,97,110,116,101,100,32,110, + 111,105,115,101,32,105,110,116,111,32,116,104,101,32,116,114, + 97,99,101,98,97,99,107,32,40,101,46,103,46,32,119,104, + 101,110,32,101,120,101,99,117,116,105,110,103,10,32,32,32, + 32,109,111,100,117,108,101,32,99,111,100,101,41,10,32,32, + 32,32,78,114,5,0,0,0,41,3,218,1,102,114,59,0, + 0,0,90,4,107,119,100,115,114,5,0,0,0,114,5,0, + 0,0,114,6,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,233,0,0,0,115,4,0,0,0,14,8,255,128,114, + 71,0,0,0,114,42,0,0,0,41,1,218,9,118,101,114, + 98,111,115,105,116,121,99,1,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,4,0,0,0,71,0,0,0,115, + 58,0,0,0,116,0,106,1,106,2,124,1,107,5,114,54, + 124,0,160,3,100,1,161,1,115,30,100,2,124,0,23,0, + 125,0,116,4,124,0,106,5,124,2,142,0,116,0,106,6, + 100,3,141,2,1,0,100,4,83,0,100,4,83,0,41,5, + 122,61,80,114,105,110,116,32,116,104,101,32,109,101,115,115, + 97,103,101,32,116,111,32,115,116,100,101,114,114,32,105,102, + 32,45,118,47,80,89,84,72,79,78,86,69,82,66,79,83, + 69,32,105,115,32,116,117,114,110,101,100,32,111,110,46,41, + 2,250,1,35,122,7,105,109,112,111,114,116,32,122,2,35, + 32,41,1,90,4,102,105,108,101,78,41,7,114,18,0,0, + 0,218,5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114, + 114,41,3,218,7,109,101,115,115,97,103,101,114,72,0,0, + 0,114,59,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,244,0,0,0,115,12,0,0,0, + 12,2,10,1,8,1,24,1,4,253,255,128,114,80,0,0, + 0,99,1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99, + 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, + 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, + 101,32,105,115,32,98,117,105,108,116,45,105,110,46,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,19,0,0,0,115,38,0,0,0,124,1,116,0, + 106,1,118,1,114,28,116,2,100,1,160,3,124,1,161,1, + 124,1,100,2,141,2,130,1,136,0,124,0,124,1,131,2, + 83,0,41,3,78,250,29,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,114,19,0,0,0,41,4,114,18,0,0,0, + 218,20,98,117,105,108,116,105,110,95,109,111,100,117,108,101, + 95,110,97,109,101,115,218,11,73,109,112,111,114,116,69,114, + 114,111,114,114,49,0,0,0,169,2,114,33,0,0,0,218, + 8,102,117,108,108,110,97,109,101,169,1,218,3,102,120,110, + 114,5,0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1, + 10,1,2,1,6,255,10,2,255,128,122,52,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,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, + 78,169,1,114,17,0,0,0,41,2,114,87,0,0,0,114, + 88,0,0,0,114,5,0,0,0,114,86,0,0,0,114,6, + 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,252,0,0,0,115,8,0,0,0,12, + 2,10,5,4,1,255,128,114,90,0,0,0,99,1,0,0, + 0,0,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,1,83,0,41,4,122,47,68,101,99,111,114,97,116,111, + 114,32,116,111,32,118,101,114,105,102,121,32,116,104,101,32, + 110,97,109,101,100,32,109,111,100,117,108,101,32,105,115,32, + 102,114,111,122,101,110,46,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,4,0,0,0,19,0,0,0, + 115,38,0,0,0,116,0,160,1,124,1,161,1,115,28,116, + 2,100,1,160,3,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,19,0,0,0, + 41,4,114,61,0,0,0,218,9,105,115,95,102,114,111,122, + 101,110,114,83,0,0,0,114,49,0,0,0,114,84,0,0, + 0,114,86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0,115,12, + 0,0,0,10,1,10,1,2,1,6,255,10,2,255,128,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,78,114,89,0,0,0,41,2,114,87,0,0,0, + 114,93,0,0,0,114,5,0,0,0,114,86,0,0,0,114, + 6,0,0,0,218,16,95,114,101,113,117,105,114,101,115,95, + 102,114,111,122,101,110,7,1,0,0,115,8,0,0,0,12, + 2,10,5,4,1,255,128,114,94,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0, + 0,67,0,0,0,115,74,0,0,0,100,1,125,2,116,0, + 160,1,124,2,116,2,161,2,1,0,116,3,124,1,124,0, + 131,2,125,3,124,1,116,4,106,5,118,0,114,66,116,4, + 106,5,124,1,25,0,125,4,116,6,124,3,124,4,131,2, + 1,0,116,4,106,5,124,1,25,0,83,0,116,7,124,3, + 131,1,83,0,41,3,122,128,76,111,97,100,32,116,104,101, + 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, + 101,32,105,110,116,111,32,115,121,115,46,109,111,100,117,108, + 101,115,32,97,110,100,32,114,101,116,117,114,110,32,105,116, + 46,10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120, + 101,99,95,109,111,100,117,108,101,32,105,110,115,116,101,97, + 100,46,10,10,32,32,32,32,122,103,116,104,101,32,108,111, + 97,100,95,109,111,100,117,108,101,40,41,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, + 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, + 110,32,51,46,49,50,59,32,117,115,101,32,101,120,101,99, + 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, + 100,78,41,8,218,9,95,119,97,114,110,105,110,103,115,218, + 4,119,97,114,110,218,18,68,101,112,114,101,99,97,116,105, + 111,110,87,97,114,110,105,110,103,218,16,115,112,101,99,95, + 102,114,111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85, + 0,0,0,218,3,109,115,103,218,4,115,112,101,99,218,6, + 109,111,100,117,108,101,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,17,95,108,111,97,100,95,109,111,100, + 117,108,101,95,115,104,105,109,19,1,0,0,115,18,0,0, + 0,4,6,12,2,10,1,10,1,10,1,10,1,10,1,8, + 2,255,128,114,105,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,8,0,0,0,67,0,0, + 0,115,210,0,0,0,116,0,124,0,100,1,100,0,131,3, + 125,1,116,1,124,1,100,2,131,2,114,54,122,12,124,1, + 160,2,124,0,161,1,87,0,83,0,4,0,116,3,121,52, + 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, + 106,4,125,2,87,0,110,18,4,0,116,5,121,82,1,0, + 1,0,1,0,89,0,110,18,48,0,124,2,100,0,117,1, + 114,100,116,6,124,2,131,1,83,0,122,10,124,0,106,7, + 125,3,87,0,110,22,4,0,116,5,121,132,1,0,1,0, + 1,0,100,3,125,3,89,0,110,2,48,0,122,10,124,0, + 106,8,125,4,87,0,110,52,4,0,116,5,121,196,1,0, + 1,0,1,0,124,1,100,0,117,0,114,180,100,4,160,9, + 124,3,161,1,6,0,89,0,83,0,100,5,160,9,124,3, + 124,1,161,2,6,0,89,0,83,0,48,0,100,6,160,9, + 124,3,124,4,161,2,83,0,41,7,78,218,10,95,95,108, + 111,97,100,101,114,95,95,218,11,109,111,100,117,108,101,95, + 114,101,112,114,250,1,63,250,13,60,109,111,100,117,108,101, + 32,123,33,114,125,62,250,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,13,0,0,0,114,11,0,0, + 0,114,107,0,0,0,218,9,69,120,99,101,112,116,105,111, + 110,218,8,95,95,115,112,101,99,95,95,114,2,0,0,0, + 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,9,0,0,0,218,8,95, + 95,102,105,108,101,95,95,114,49,0,0,0,41,5,114,104, + 0,0,0,218,6,108,111,97,100,101,114,114,103,0,0,0, + 114,20,0,0,0,218,8,102,105,108,101,110,97,109,101,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,12, + 95,109,111,100,117,108,101,95,114,101,112,114,38,1,0,0, + 115,48,0,0,0,12,2,10,1,2,4,12,1,12,1,6, + 1,2,1,10,1,12,1,6,1,8,2,8,1,2,4,10, + 1,12,1,10,1,2,1,10,1,12,1,8,1,14,1,18, + 2,12,2,255,128,114,118,0,0,0,99,0,0,0,0,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,132,2,90,4,100,6,100,7,132,0,90,5,100,8, + 100,9,132,0,90,6,101,7,100,10,100,11,132,0,131,1, + 90,8,101,8,106,9,100,12,100,11,132,0,131,1,90,8, + 101,7,100,13,100,14,132,0,131,1,90,10,101,7,100,15, + 100,16,132,0,131,1,90,11,101,11,106,9,100,17,100,16, + 132,0,131,1,90,11,100,2,83,0,41,18,218,10,77,111, + 100,117,108,101,83,112,101,99,97,208,5,0,0,84,104,101, + 32,115,112,101,99,105,102,105,99,97,116,105,111,110,32,102, + 111,114,32,97,32,109,111,100,117,108,101,44,32,117,115,101, + 100,32,102,111,114,32,108,111,97,100,105,110,103,46,10,10, + 32,32,32,32,65,32,109,111,100,117,108,101,39,115,32,115, + 112,101,99,32,105,115,32,116,104,101,32,115,111,117,114,99, + 101,32,102,111,114,32,105,110,102,111,114,109,97,116,105,111, + 110,32,97,98,111,117,116,32,116,104,101,32,109,111,100,117, + 108,101,46,32,32,70,111,114,10,32,32,32,32,100,97,116, + 97,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116, + 104,32,116,104,101,32,109,111,100,117,108,101,44,32,105,110, + 99,108,117,100,105,110,103,32,115,111,117,114,99,101,44,32, + 117,115,101,32,116,104,101,32,115,112,101,99,39,115,10,32, + 32,32,32,108,111,97,100,101,114,46,10,10,32,32,32,32, + 96,110,97,109,101,96,32,105,115,32,116,104,101,32,97,98, + 115,111,108,117,116,101,32,110,97,109,101,32,111,102,32,116, + 104,101,32,109,111,100,117,108,101,46,32,32,96,108,111,97, + 100,101,114,96,32,105,115,32,116,104,101,32,108,111,97,100, + 101,114,10,32,32,32,32,116,111,32,117,115,101,32,119,104, + 101,110,32,108,111,97,100,105,110,103,32,116,104,101,32,109, + 111,100,117,108,101,46,32,32,96,112,97,114,101,110,116,96, + 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, + 116,104,101,10,32,32,32,32,112,97,99,107,97,103,101,32, + 116,104,101,32,109,111,100,117,108,101,32,105,115,32,105,110, + 46,32,32,84,104,101,32,112,97,114,101,110,116,32,105,115, + 32,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104, + 101,32,110,97,109,101,46,10,10,32,32,32,32,96,105,115, + 95,112,97,99,107,97,103,101,96,32,100,101,116,101,114,109, + 105,110,101,115,32,105,102,32,116,104,101,32,109,111,100,117, + 108,101,32,105,115,32,99,111,110,115,105,100,101,114,101,100, + 32,97,32,112,97,99,107,97,103,101,32,111,114,10,32,32, + 32,32,110,111,116,46,32,32,79,110,32,109,111,100,117,108, + 101,115,32,116,104,105,115,32,105,115,32,114,101,102,108,101, + 99,116,101,100,32,98,121,32,116,104,101,32,96,95,95,112, + 97,116,104,95,95,96,32,97,116,116,114,105,98,117,116,101, + 46,10,10,32,32,32,32,96,111,114,105,103,105,110,96,32, + 105,115,32,116,104,101,32,115,112,101,99,105,102,105,99,32, + 108,111,99,97,116,105,111,110,32,117,115,101,100,32,98,121, + 32,116,104,101,32,108,111,97,100,101,114,32,102,114,111,109, + 32,119,104,105,99,104,32,116,111,10,32,32,32,32,108,111, + 97,100,32,116,104,101,32,109,111,100,117,108,101,44,32,105, + 102,32,116,104,97,116,32,105,110,102,111,114,109,97,116,105, + 111,110,32,105,115,32,97,118,97,105,108,97,98,108,101,46, + 32,32,87,104,101,110,32,102,105,108,101,110,97,109,101,32, + 105,115,10,32,32,32,32,115,101,116,44,32,111,114,105,103, + 105,110,32,119,105,108,108,32,109,97,116,99,104,46,10,10, + 32,32,32,32,96,104,97,115,95,108,111,99,97,116,105,111, + 110,96,32,105,110,100,105,99,97,116,101,115,32,116,104,97, + 116,32,97,32,115,112,101,99,39,115,32,34,111,114,105,103, + 105,110,34,32,114,101,102,108,101,99,116,115,32,97,32,108, + 111,99,97,116,105,111,110,46,10,32,32,32,32,87,104,101, + 110,32,116,104,105,115,32,105,115,32,84,114,117,101,44,32, + 96,95,95,102,105,108,101,95,95,96,32,97,116,116,114,105, + 98,117,116,101,32,111,102,32,116,104,101,32,109,111,100,117, + 108,101,32,105,115,32,115,101,116,46,10,10,32,32,32,32, + 96,99,97,99,104,101,100,96,32,105,115,32,116,104,101,32, + 108,111,99,97,116,105,111,110,32,111,102,32,116,104,101,32, + 99,97,99,104,101,100,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,44,32,105,102,32,97,110,121,46,32,32,73, + 116,10,32,32,32,32,99,111,114,114,101,115,112,111,110,100, + 115,32,116,111,32,116,104,101,32,96,95,95,99,97,99,104, + 101,100,95,95,96,32,97,116,116,114,105,98,117,116,101,46, + 10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113,117,101,110, + 99,101,32,111,102,32,112,97,116,104,32,101,110,116,114,105, + 101,115,32,116,111,10,32,32,32,32,115,101,97,114,99,104, + 32,119,104,101,110,32,105,109,112,111,114,116,105,110,103,32, + 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32, + 115,101,116,44,32,105,115,95,112,97,99,107,97,103,101,32, + 115,104,111,117,108,100,32,98,101,10,32,32,32,32,84,114, + 117,101,45,45,97,110,100,32,70,97,108,115,101,32,111,116, + 104,101,114,119,105,115,101,46,10,10,32,32,32,32,80,97, + 99,107,97,103,101,115,32,97,114,101,32,115,105,109,112,108, + 121,32,109,111,100,117,108,101,115,32,116,104,97,116,32,40, + 109,97,121,41,32,104,97,118,101,32,115,117,98,109,111,100, + 117,108,101,115,46,32,32,73,102,32,97,32,115,112,101,99, + 10,32,32,32,32,104,97,115,32,97,32,110,111,110,45,78, + 111,110,101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105, + 109,112,111,114,116,10,32,32,32,32,115,121,115,116,101,109, + 32,119,105,108,108,32,99,111,110,115,105,100,101,114,32,109, + 111,100,117,108,101,115,32,108,111,97,100,101,100,32,102,114, + 111,109,32,116,104,101,32,115,112,101,99,32,97,115,32,112, + 97,99,107,97,103,101,115,46,10,10,32,32,32,32,79,110, + 108,121,32,102,105,110,100,101,114,115,32,40,115,101,101,32, + 105,109,112,111,114,116,108,105,98,46,97,98,99,46,77,101, + 116,97,80,97,116,104,70,105,110,100,101,114,32,97,110,100, + 10,32,32,32,32,105,109,112,111,114,116,108,105,98,46,97, + 98,99,46,80,97,116,104,69,110,116,114,121,70,105,110,100, + 101,114,41,32,115,104,111,117,108,100,32,109,111,100,105,102, + 121,32,77,111,100,117,108,101,83,112,101,99,32,105,110,115, + 116,97,110,99,101,115,46,10,10,32,32,32,32,78,41,3, + 218,6,111,114,105,103,105,110,218,12,108,111,97,100,101,114, + 95,115,116,97,116,101,218,10,105,115,95,112,97,99,107,97, + 103,101,99,3,0,0,0,0,0,0,0,3,0,0,0,6, + 0,0,0,2,0,0,0,67,0,0,0,115,54,0,0,0, + 124,1,124,0,95,0,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,41,2,78,70,41,7,114,20,0,0, + 0,114,116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0,0,0, + 114,116,0,0,0,114,120,0,0,0,114,121,0,0,0,114, + 122,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,34,0,0,0,111,1,0,0,115,16,0,0, + 0,6,2,6,1,6,1,6,1,14,1,6,3,10,1,255, + 128,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, + 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,115, + 102,0,0,0,100,1,160,0,124,0,106,1,161,1,100,2, + 160,0,124,0,106,2,161,1,103,2,125,1,124,0,106,3, + 100,0,117,1,114,52,124,1,160,4,100,3,160,0,124,0, + 106,3,161,1,161,1,1,0,124,0,106,5,100,0,117,1, + 114,80,124,1,160,4,100,4,160,0,124,0,106,5,161,1, + 161,1,1,0,100,5,160,0,124,0,106,6,106,7,100,6, + 160,8,124,1,161,1,161,2,83,0,41,7,78,122,9,110, + 97,109,101,61,123,33,114,125,122,11,108,111,97,100,101,114, + 61,123,33,114,125,122,11,111,114,105,103,105,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, + 49,0,0,0,114,20,0,0,0,114,116,0,0,0,114,120, + 0,0,0,218,6,97,112,112,101,110,100,114,123,0,0,0, + 218,9,95,95,99,108,97,115,115,95,95,114,9,0,0,0, + 218,4,106,111,105,110,41,2,114,33,0,0,0,114,59,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,8,95,95,114,101,112,114,95,95,138,0,0,0,115, - 4,0,0,0,18,1,255,128,122,20,95,77,111,100,117,108, - 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, - 9,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,10,0,0,0,114,34,0,0,0,114,41,0,0,0,114, - 43,0,0,0,114,44,0,0,0,114,52,0,0,0,114,5, + 0,114,52,0,0,0,123,1,0,0,115,22,0,0,0,10, + 1,10,1,4,255,10,2,18,1,10,1,8,1,4,1,6, + 255,22,2,255,128,122,19,77,111,100,117,108,101,83,112,101, + 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,102,0,0,0,124,0,106,0,125,2,122,72, + 124,0,106,1,124,1,106,1,107,2,111,76,124,0,106,2, + 124,1,106,2,107,2,111,76,124,0,106,3,124,1,106,3, + 107,2,111,76,124,2,124,1,106,0,107,2,111,76,124,0, + 106,4,124,1,106,4,107,2,111,76,124,0,106,5,124,1, + 106,5,107,2,87,0,83,0,4,0,116,6,121,100,1,0, + 1,0,1,0,116,7,6,0,89,0,83,0,48,0,114,0, + 0,0,0,41,8,114,123,0,0,0,114,20,0,0,0,114, + 116,0,0,0,114,120,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, + 2,0,0,0,218,14,78,111,116,73,109,112,108,101,109,101, + 110,116,101,100,41,3,114,33,0,0,0,90,5,111,116,104, + 101,114,90,4,115,109,115,108,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,133, + 1,0,0,115,32,0,0,0,6,1,2,1,12,1,10,1, + 2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5, + 4,251,12,6,10,1,255,128,122,17,77,111,100,117,108,101, + 83,112,101,99,46,95,95,101,113,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,58,0,0,0,124,0,106,0,100,0,117, + 0,114,52,124,0,106,1,100,0,117,1,114,52,124,0,106, + 2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114, + 120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,129,0,0,0,145,1,0,0,115,14,0, + 0,0,10,2,16,1,8,1,4,1,14,1,6,1,255,128, + 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,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,0,0,0,0, + 41,1,114,125,0,0,0,41,2,114,33,0,0,0,114,129, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,23,0,0,0,65,0,0,0,115,16,0,0,0, - 8,0,4,1,8,5,8,8,8,21,8,25,12,13,255,128, - 114,23,0,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100, - 6,100,7,132,0,90,6,100,8,100,9,132,0,90,7,100, - 10,83,0,41,11,218,16,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,122,86,65,32,115,105,109,112,108, - 101,32,95,77,111,100,117,108,101,76,111,99,107,32,101,113, - 117,105,118,97,108,101,110,116,32,102,111,114,32,80,121,116, - 104,111,110,32,98,117,105,108,100,115,32,119,105,116,104,111, - 117,116,10,32,32,32,32,109,117,108,116,105,45,116,104,114, - 101,97,100,105,110,103,32,115,117,112,112,111,114,116,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,124, - 0,95,0,100,1,124,0,95,1,100,0,83,0,114,24,0, - 0,0,41,2,114,20,0,0,0,114,30,0,0,0,114,32, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,34,0,0,0,146,0,0,0,115,6,0,0,0, - 6,1,10,1,255,128,122,25,95,68,117,109,109,121,77,111, - 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, - 95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,124, - 0,4,0,106,0,100,1,55,0,2,0,95,0,100,2,83, - 0,41,3,78,114,42,0,0,0,84,41,1,114,30,0,0, - 0,114,51,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,43,0,0,0,150,0,0,0,115,6, - 0,0,0,14,1,4,1,255,128,122,24,95,68,117,109,109, - 121,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, - 105,114,101,99,1,0,0,0,0,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,2,114,18,116,1,100,2,131, - 1,130,1,124,0,4,0,106,0,100,3,56,0,2,0,95, - 0,100,0,83,0,41,4,78,114,25,0,0,0,114,46,0, - 0,0,114,42,0,0,0,41,2,114,30,0,0,0,114,47, - 0,0,0,114,51,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,44,0,0,0,154,0,0,0, - 115,8,0,0,0,10,1,8,1,18,1,255,128,122,24,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, - 114,101,108,101,97,115,101,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, - 115,18,0,0,0,100,1,160,0,124,0,106,1,116,2,124, - 0,131,1,161,2,83,0,41,2,78,122,28,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,40,123,33,114, - 125,41,32,97,116,32,123,125,114,48,0,0,0,114,51,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,52,0,0,0,159,0,0,0,115,4,0,0,0,18, - 1,255,128,122,25,95,68,117,109,109,121,77,111,100,117,108, - 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, - 8,114,9,0,0,0,114,8,0,0,0,114,1,0,0,0, - 114,10,0,0,0,114,34,0,0,0,114,43,0,0,0,114, - 44,0,0,0,114,52,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,53,0, - 0,0,142,0,0,0,115,14,0,0,0,8,0,4,1,8, - 3,8,4,8,4,12,5,255,128,114,53,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,64,0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0, - 41,8,218,18,95,77,111,100,117,108,101,76,111,99,107,77, - 97,110,97,103,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,114,129,0,0,0,154,1,0,0,115,4,0,0,0, + 10,2,255,128,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,32,0, + 0,0,124,0,106,0,100,1,117,0,114,26,124,0,106,1, + 160,2,100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41, + 3,114,123,0,0,0,114,20,0,0,0,218,10,114,112,97, + 114,116,105,116,105,111,110,114,51,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,6,112,97,114, + 101,110,116,158,1,0,0,115,8,0,0,0,10,3,16,1, + 6,2,255,128,122,17,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, + 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,0,0,0,0, + 41,1,114,124,0,0,0,114,51,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,130,0,0,0, + 166,1,0,0,115,4,0,0,0,6,2,255,128,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,0, 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,124,1,124,0,95,0,100,0,124,0,95,1, - 100,0,83,0,114,0,0,0,0,41,2,218,5,95,110,97, - 109,101,218,5,95,108,111,99,107,114,32,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,34,0, - 0,0,165,0,0,0,115,6,0,0,0,6,1,10,1,255, - 128,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, - 110,97,103,101,114,46,95,95,105,110,105,116,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,67,0,0,0,115,26,0,0,0,116,0,124,0, - 106,1,131,1,124,0,95,2,124,0,106,2,160,3,161,0, - 1,0,100,0,83,0,114,0,0,0,0,41,4,218,16,95, - 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,114, - 55,0,0,0,114,56,0,0,0,114,43,0,0,0,114,51, + 14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,0, + 83,0,114,0,0,0,0,41,2,218,4,98,111,111,108,114, + 124,0,0,0,41,2,114,33,0,0,0,218,5,118,97,108, + 117,101,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,130,0,0,0,170,1,0,0,115,4,0,0,0,14, + 2,255,128,41,12,114,9,0,0,0,114,8,0,0,0,114, + 1,0,0,0,114,10,0,0,0,114,34,0,0,0,114,52, + 0,0,0,114,132,0,0,0,218,8,112,114,111,112,101,114, + 116,121,114,129,0,0,0,218,6,115,101,116,116,101,114,114, + 137,0,0,0,114,130,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,119,0, + 0,0,74,1,0,0,115,36,0,0,0,8,0,4,1,4, + 36,2,1,12,255,8,12,8,10,2,12,10,1,4,8,10, + 1,2,3,10,1,2,7,10,1,4,3,14,1,255,128,114, + 119,0,0,0,169,2,114,120,0,0,0,114,122,0,0,0, + 99,2,0,0,0,0,0,0,0,2,0,0,0,6,0,0, + 0,8,0,0,0,67,0,0,0,115,150,0,0,0,116,0, + 124,1,100,1,131,2,114,74,116,1,100,2,117,0,114,22, + 116,2,130,1,116,1,106,3,125,4,124,3,100,2,117,0, + 114,48,124,4,124,0,124,1,100,3,141,2,83,0,124,3, + 114,56,103,0,110,2,100,2,125,5,124,4,124,0,124,1, + 124,5,100,4,141,3,83,0,124,3,100,2,117,0,114,134, + 116,0,124,1,100,5,131,2,114,130,122,14,124,1,160,4, + 124,0,161,1,125,3,87,0,110,26,4,0,116,5,121,128, + 1,0,1,0,1,0,100,2,125,3,89,0,110,6,48,0, + 100,6,125,3,116,6,124,0,124,1,124,2,124,3,100,7, + 141,4,83,0,41,8,122,53,82,101,116,117,114,110,32,97, + 32,109,111,100,117,108,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,116, + 0,0,0,41,2,114,116,0,0,0,114,123,0,0,0,114, + 122,0,0,0,70,114,142,0,0,0,41,7,114,11,0,0, + 0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119, + 0,0,0,41,6,114,20,0,0,0,114,116,0,0,0,114, + 120,0,0,0,114,122,0,0,0,114,143,0,0,0,90,6, + 115,101,97,114,99,104,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,98,0,0,0,175,1,0,0,115,38, + 0,0,0,10,2,8,1,4,1,6,1,8,2,12,1,12, + 1,6,1,2,1,6,255,8,3,10,1,2,1,14,1,12, + 1,10,1,4,3,16,2,255,128,114,98,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8, + 0,0,0,67,0,0,0,115,40,1,0,0,122,10,124,0, + 106,0,125,3,87,0,110,18,4,0,116,1,121,28,1,0, + 1,0,1,0,89,0,110,14,48,0,124,3,100,0,117,1, + 114,42,124,3,83,0,124,0,106,2,125,4,124,1,100,0, + 117,0,114,86,122,10,124,0,106,3,125,1,87,0,110,18, + 4,0,116,1,121,84,1,0,1,0,1,0,89,0,110,2, + 48,0,122,10,124,0,106,4,125,5,87,0,110,22,4,0, + 116,1,121,118,1,0,1,0,1,0,100,0,125,5,89,0, + 110,2,48,0,124,2,100,0,117,0,114,174,124,5,100,0, + 117,0,114,170,122,10,124,1,106,5,125,2,87,0,110,26, + 4,0,116,1,121,168,1,0,1,0,1,0,100,0,125,2, + 89,0,110,6,48,0,124,5,125,2,122,10,124,0,106,6, + 125,6,87,0,110,22,4,0,116,1,121,206,1,0,1,0, + 1,0,100,0,125,6,89,0,110,2,48,0,122,14,116,7, + 124,0,106,8,131,1,125,7,87,0,110,22,4,0,116,1, + 121,244,1,0,1,0,1,0,100,0,125,7,89,0,110,2, + 48,0,116,9,124,4,124,1,124,2,100,1,141,3,125,3, + 124,5,100,0,117,0,144,1,114,18,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,120,0,0,0,70,84, + 41,13,114,113,0,0,0,114,2,0,0,0,114,9,0,0, + 0,114,106,0,0,0,114,115,0,0,0,218,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,119,0,0,0,114,124,0,0,0,114,129,0,0,0,114, + 123,0,0,0,41,8,114,104,0,0,0,114,116,0,0,0, + 114,120,0,0,0,114,103,0,0,0,114,20,0,0,0,90, + 8,108,111,99,97,116,105,111,110,114,129,0,0,0,114,123, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,9,95,95,101,110,116,101,114,95,95,169,0,0, - 0,115,6,0,0,0,12,1,14,1,255,128,122,28,95,77, - 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, - 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,0,0,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,0,0,0,0,41,2,114,56,0, - 0,0,114,44,0,0,0,41,3,114,33,0,0,0,218,4, - 97,114,103,115,90,6,107,119,97,114,103,115,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,101, - 120,105,116,95,95,173,0,0,0,115,4,0,0,0,14,1, - 255,128,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,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,34,0,0,0,114,58,0,0,0,114,60,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,54,0,0,0,163,0,0,0,115,10,0, - 0,0,8,0,8,2,8,4,12,4,255,128,114,54,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,8,0,0,0,67,0,0,0,115,134,0,0,0,116, - 0,160,1,161,0,1,0,122,114,122,14,116,2,124,0,25, - 0,131,0,125,1,87,0,110,22,4,0,116,3,121,46,1, - 0,1,0,1,0,100,1,125,1,89,0,110,2,48,0,124, - 1,100,1,117,0,114,110,116,4,100,1,117,0,114,74,116, - 5,124,0,131,1,125,1,110,8,116,6,124,0,131,1,125, - 1,124,0,102,1,100,2,100,3,132,1,125,2,116,7,160, - 8,124,1,124,2,161,2,116,2,124,0,60,0,87,0,116, - 0,160,9,161,0,1,0,124,1,83,0,116,0,160,9,161, - 0,1,0,48,0,41,4,122,139,71,101,116,32,111,114,32, - 99,114,101,97,116,101,32,116,104,101,32,109,111,100,117,108, - 101,32,108,111,99,107,32,102,111,114,32,97,32,103,105,118, - 101,110,32,109,111,100,117,108,101,32,110,97,109,101,46,10, - 10,32,32,32,32,65,99,113,117,105,114,101,47,114,101,108, - 101,97,115,101,32,105,110,116,101,114,110,97,108,108,121,32, - 116,104,101,32,103,108,111,98,97,108,32,105,109,112,111,114, - 116,32,108,111,99,107,32,116,111,32,112,114,111,116,101,99, - 116,10,32,32,32,32,95,109,111,100,117,108,101,95,108,111, - 99,107,115,46,78,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,83,0,0,0,115,54, - 0,0,0,116,0,160,1,161,0,1,0,122,34,116,2,160, - 3,124,1,161,1,124,0,117,0,114,30,116,2,124,1,61, - 0,87,0,116,0,160,4,161,0,1,0,100,0,83,0,116, - 0,160,4,161,0,1,0,48,0,114,0,0,0,0,41,5, - 218,4,95,105,109,112,218,12,97,99,113,117,105,114,101,95, - 108,111,99,107,218,13,95,109,111,100,117,108,101,95,108,111, - 99,107,115,114,38,0,0,0,218,12,114,101,108,101,97,115, - 101,95,108,111,99,107,41,2,218,3,114,101,102,114,20,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,2,99,98,198,0,0,0,115,14,0,0,0,8,1, - 2,1,14,4,6,1,2,128,22,2,255,128,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,61,0,0, - 0,114,62,0,0,0,114,63,0,0,0,218,8,75,101,121, - 69,114,114,111,114,114,26,0,0,0,114,53,0,0,0,114, - 23,0,0,0,218,8,95,119,101,97,107,114,101,102,114,65, - 0,0,0,114,64,0,0,0,41,3,114,20,0,0,0,114, - 27,0,0,0,114,66,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,57,0,0,0,179,0,0, - 0,115,34,0,0,0,8,6,2,1,2,1,14,1,12,1, - 10,1,8,2,8,1,10,1,8,2,12,2,16,11,2,128, - 8,2,4,2,10,254,255,128,114,57,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,54,0,0,0,116,0,124,0,131, - 1,125,1,122,12,124,1,160,1,161,0,1,0,87,0,110, - 20,4,0,116,2,121,40,1,0,1,0,1,0,89,0,100, - 1,83,0,48,0,124,1,160,3,161,0,1,0,100,1,83, - 0,41,2,122,189,65,99,113,117,105,114,101,115,32,116,104, - 101,110,32,114,101,108,101,97,115,101,115,32,116,104,101,32, - 109,111,100,117,108,101,32,108,111,99,107,32,102,111,114,32, - 97,32,103,105,118,101,110,32,109,111,100,117,108,101,32,110, - 97,109,101,46,10,10,32,32,32,32,84,104,105,115,32,105, - 115,32,117,115,101,100,32,116,111,32,101,110,115,117,114,101, - 32,97,32,109,111,100,117,108,101,32,105,115,32,99,111,109, - 112,108,101,116,101,108,121,32,105,110,105,116,105,97,108,105, - 122,101,100,44,32,105,110,32,116,104,101,10,32,32,32,32, - 101,118,101,110,116,32,105,116,32,105,115,32,98,101,105,110, - 103,32,105,109,112,111,114,116,101,100,32,98,121,32,97,110, - 111,116,104,101,114,32,116,104,114,101,97,100,46,10,32,32, - 32,32,78,41,4,114,57,0,0,0,114,43,0,0,0,114, - 22,0,0,0,114,44,0,0,0,41,2,114,20,0,0,0, - 114,27,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,19,95,108,111,99,107,95,117,110,108,111, - 99,107,95,109,111,100,117,108,101,216,0,0,0,115,14,0, - 0,0,8,6,2,1,12,1,12,1,8,3,12,2,255,128, - 114,69,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,4,0,0,0,79,0,0,0,115,14, - 0,0,0,124,0,124,1,105,0,124,2,164,1,142,1,83, - 0,41,2,97,46,1,0,0,114,101,109,111,118,101,95,105, - 109,112,111,114,116,108,105,98,95,102,114,97,109,101,115,32, - 105,110,32,105,109,112,111,114,116,46,99,32,119,105,108,108, - 32,97,108,119,97,121,115,32,114,101,109,111,118,101,32,115, - 101,113,117,101,110,99,101,115,10,32,32,32,32,111,102,32, - 105,109,112,111,114,116,108,105,98,32,102,114,97,109,101,115, - 32,116,104,97,116,32,101,110,100,32,119,105,116,104,32,97, - 32,99,97,108,108,32,116,111,32,116,104,105,115,32,102,117, - 110,99,116,105,111,110,10,10,32,32,32,32,85,115,101,32, - 105,116,32,105,110,115,116,101,97,100,32,111,102,32,97,32, - 110,111,114,109,97,108,32,99,97,108,108,32,105,110,32,112, - 108,97,99,101,115,32,119,104,101,114,101,32,105,110,99,108, - 117,100,105,110,103,32,116,104,101,32,105,109,112,111,114,116, - 108,105,98,10,32,32,32,32,102,114,97,109,101,115,32,105, - 110,116,114,111,100,117,99,101,115,32,117,110,119,97,110,116, - 101,100,32,110,111,105,115,101,32,105,110,116,111,32,116,104, - 101,32,116,114,97,99,101,98,97,99,107,32,40,101,46,103, - 46,32,119,104,101,110,32,101,120,101,99,117,116,105,110,103, - 10,32,32,32,32,109,111,100,117,108,101,32,99,111,100,101, - 41,10,32,32,32,32,78,114,5,0,0,0,41,3,218,1, - 102,114,59,0,0,0,90,4,107,119,100,115,114,5,0,0, - 0,114,5,0,0,0,114,6,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,233,0,0,0,115,4,0,0,0,14, - 8,255,128,114,71,0,0,0,114,42,0,0,0,41,1,218, - 9,118,101,114,98,111,115,105,116,121,99,1,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,71, - 0,0,0,115,58,0,0,0,116,0,106,1,106,2,124,1, - 107,5,114,54,124,0,160,3,100,1,161,1,115,30,100,2, - 124,0,23,0,125,0,116,4,124,0,106,5,124,2,142,0, - 116,0,106,6,100,3,141,2,1,0,100,4,83,0,100,4, - 83,0,41,5,122,61,80,114,105,110,116,32,116,104,101,32, - 109,101,115,115,97,103,101,32,116,111,32,115,116,100,101,114, - 114,32,105,102,32,45,118,47,80,89,84,72,79,78,86,69, - 82,66,79,83,69,32,105,115,32,116,117,114,110,101,100,32, - 111,110,46,41,2,250,1,35,122,7,105,109,112,111,114,116, - 32,122,2,35,32,41,1,90,4,102,105,108,101,78,41,7, - 114,18,0,0,0,218,5,102,108,97,103,115,218,7,118,101, - 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,49,0,0,0,218,6,115, - 116,100,101,114,114,41,3,218,7,109,101,115,115,97,103,101, - 114,72,0,0,0,114,59,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,16,95,118,101,114,98, - 111,115,101,95,109,101,115,115,97,103,101,244,0,0,0,115, - 12,0,0,0,12,2,10,1,8,1,24,1,4,253,255,128, - 114,80,0,0,0,99,1,0,0,0,0,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,1,83,0,41,4,122, - 49,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, - 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, - 111,100,117,108,101,32,105,115,32,98,117,105,108,116,45,105, - 110,46,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,19,0,0,0,115,38,0,0,0, - 124,1,116,0,106,1,118,1,114,28,116,2,100,1,160,3, - 124,1,161,1,124,1,100,2,141,2,130,1,136,0,124,0, - 124,1,131,2,83,0,41,3,78,250,29,123,33,114,125,32, - 105,115,32,110,111,116,32,97,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,114,19,0,0,0,41,4,114, - 18,0,0,0,218,20,98,117,105,108,116,105,110,95,109,111, - 100,117,108,101,95,110,97,109,101,115,218,11,73,109,112,111, - 114,116,69,114,114,111,114,114,49,0,0,0,169,2,114,33, - 0,0,0,218,8,102,117,108,108,110,97,109,101,169,1,218, - 3,102,120,110,114,5,0,0,0,114,6,0,0,0,218,25, - 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,254,0,0,0,115,12,0, - 0,0,10,1,10,1,2,1,6,255,10,2,255,128,122,52, - 95,114,101,113,117,105,114,101,115,95,98,117,105,108,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,78,169,1,114,17,0,0,0,41,2,114,87, - 0,0,0,114,88,0,0,0,114,5,0,0,0,114,86,0, - 0,0,114,6,0,0,0,218,17,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,252,0,0,0,115,8, - 0,0,0,12,2,10,5,4,1,255,128,114,90,0,0,0, - 99,1,0,0,0,0,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,1,83,0,41,4,122,47,68,101,99,111, - 114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,32, - 116,104,101,32,110,97,109,101,100,32,109,111,100,117,108,101, - 32,105,115,32,102,114,111,122,101,110,46,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 19,0,0,0,115,38,0,0,0,116,0,160,1,124,1,161, - 1,115,28,116,2,100,1,160,3,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, - 19,0,0,0,41,4,114,61,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,83,0,0,0,114,49,0,0,0, - 114,84,0,0,0,114,86,0,0,0,114,5,0,0,0,114, - 6,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,9,1, - 0,0,115,12,0,0,0,10,1,10,1,2,1,6,255,10, - 2,255,128,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,78,114,89,0,0,0,41,2,114, - 87,0,0,0,114,93,0,0,0,114,5,0,0,0,114,86, - 0,0,0,114,6,0,0,0,218,16,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,7,1,0,0,115,8, - 0,0,0,12,2,10,5,4,1,255,128,114,94,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,4,0,0,0,67,0,0,0,115,74,0,0,0,100,1, - 125,2,116,0,160,1,124,2,116,2,161,2,1,0,116,3, - 124,1,124,0,131,2,125,3,124,1,116,4,106,5,118,0, - 114,66,116,4,106,5,124,1,25,0,125,4,116,6,124,3, - 124,4,131,2,1,0,116,4,106,5,124,1,25,0,83,0, - 116,7,124,3,131,1,83,0,41,3,122,128,76,111,97,100, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, - 111,100,117,108,101,32,105,110,116,111,32,115,121,115,46,109, - 111,100,117,108,101,115,32,97,110,100,32,114,101,116,117,114, - 110,32,105,116,46,10,10,32,32,32,32,84,104,105,115,32, - 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,108,111,97,100,101, - 114,46,101,120,101,99,95,109,111,100,117,108,101,32,105,110, - 115,116,101,97,100,46,10,10,32,32,32,32,122,103,116,104, - 101,32,108,111,97,100,95,109,111,100,117,108,101,40,41,32, - 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, - 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, - 121,116,104,111,110,32,51,46,49,50,59,32,117,115,101,32, - 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, - 115,116,101,97,100,78,41,8,218,9,95,119,97,114,110,105, - 110,103,115,218,4,119,97,114,110,218,18,68,101,112,114,101, - 99,97,116,105,111,110,87,97,114,110,105,110,103,218,16,115, - 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,114, - 18,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,5,114,33,0, - 0,0,114,85,0,0,0,218,3,109,115,103,218,4,115,112, - 101,99,218,6,109,111,100,117,108,101,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,17,95,108,111,97,100, - 95,109,111,100,117,108,101,95,115,104,105,109,19,1,0,0, - 115,18,0,0,0,4,6,12,2,10,1,10,1,10,1,10, - 1,10,1,8,2,255,128,114,105,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,8,0,0, - 0,67,0,0,0,115,210,0,0,0,116,0,124,0,100,1, - 100,0,131,3,125,1,116,1,124,1,100,2,131,2,114,54, - 122,12,124,1,160,2,124,0,161,1,87,0,83,0,4,0, - 116,3,121,52,1,0,1,0,1,0,89,0,110,2,48,0, - 122,10,124,0,106,4,125,2,87,0,110,18,4,0,116,5, - 121,82,1,0,1,0,1,0,89,0,110,18,48,0,124,2, - 100,0,117,1,114,100,116,6,124,2,131,1,83,0,122,10, - 124,0,106,7,125,3,87,0,110,22,4,0,116,5,121,132, - 1,0,1,0,1,0,100,3,125,3,89,0,110,2,48,0, - 122,10,124,0,106,8,125,4,87,0,110,52,4,0,116,5, - 121,196,1,0,1,0,1,0,124,1,100,0,117,0,114,180, - 100,4,160,9,124,3,161,1,6,0,89,0,83,0,100,5, - 160,9,124,3,124,1,161,2,6,0,89,0,83,0,48,0, - 100,6,160,9,124,3,124,4,161,2,83,0,41,7,78,218, - 10,95,95,108,111,97,100,101,114,95,95,218,11,109,111,100, - 117,108,101,95,114,101,112,114,250,1,63,250,13,60,109,111, - 100,117,108,101,32,123,33,114,125,62,250,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,13,0,0,0, - 114,11,0,0,0,114,107,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,218,8,95,95,115,112,101,99,95,95,114, - 2,0,0,0,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,9,0,0, - 0,218,8,95,95,102,105,108,101,95,95,114,49,0,0,0, - 41,5,114,104,0,0,0,218,6,108,111,97,100,101,114,114, - 103,0,0,0,114,20,0,0,0,218,8,102,105,108,101,110, - 97,109,101,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,12,95,109,111,100,117,108,101,95,114,101,112,114, - 38,1,0,0,115,48,0,0,0,12,2,10,1,2,4,12, - 1,12,1,6,1,2,1,10,1,12,1,6,1,8,2,8, - 1,2,4,10,1,12,1,10,1,2,1,10,1,12,1,8, - 1,14,1,18,2,12,2,255,128,114,118,0,0,0,99,0, - 0,0,0,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,132,2,90,4,100,6,100,7,132,0, - 90,5,100,8,100,9,132,0,90,6,101,7,100,10,100,11, - 132,0,131,1,90,8,101,8,106,9,100,12,100,11,132,0, - 131,1,90,8,101,7,100,13,100,14,132,0,131,1,90,10, - 101,7,100,15,100,16,132,0,131,1,90,11,101,11,106,9, - 100,17,100,16,132,0,131,1,90,11,100,2,83,0,41,18, - 218,10,77,111,100,117,108,101,83,112,101,99,97,208,5,0, - 0,84,104,101,32,115,112,101,99,105,102,105,99,97,116,105, - 111,110,32,102,111,114,32,97,32,109,111,100,117,108,101,44, - 32,117,115,101,100,32,102,111,114,32,108,111,97,100,105,110, - 103,46,10,10,32,32,32,32,65,32,109,111,100,117,108,101, - 39,115,32,115,112,101,99,32,105,115,32,116,104,101,32,115, - 111,117,114,99,101,32,102,111,114,32,105,110,102,111,114,109, - 97,116,105,111,110,32,97,98,111,117,116,32,116,104,101,32, - 109,111,100,117,108,101,46,32,32,70,111,114,10,32,32,32, - 32,100,97,116,97,32,97,115,115,111,99,105,97,116,101,100, - 32,119,105,116,104,32,116,104,101,32,109,111,100,117,108,101, - 44,32,105,110,99,108,117,100,105,110,103,32,115,111,117,114, - 99,101,44,32,117,115,101,32,116,104,101,32,115,112,101,99, - 39,115,10,32,32,32,32,108,111,97,100,101,114,46,10,10, - 32,32,32,32,96,110,97,109,101,96,32,105,115,32,116,104, - 101,32,97,98,115,111,108,117,116,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,46,32,32, - 96,108,111,97,100,101,114,96,32,105,115,32,116,104,101,32, - 108,111,97,100,101,114,10,32,32,32,32,116,111,32,117,115, - 101,32,119,104,101,110,32,108,111,97,100,105,110,103,32,116, - 104,101,32,109,111,100,117,108,101,46,32,32,96,112,97,114, - 101,110,116,96,32,105,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,116,104,101,10,32,32,32,32,112,97,99,107, - 97,103,101,32,116,104,101,32,109,111,100,117,108,101,32,105, - 115,32,105,110,46,32,32,84,104,101,32,112,97,114,101,110, - 116,32,105,115,32,100,101,114,105,118,101,100,32,102,114,111, - 109,32,116,104,101,32,110,97,109,101,46,10,10,32,32,32, - 32,96,105,115,95,112,97,99,107,97,103,101,96,32,100,101, - 116,101,114,109,105,110,101,115,32,105,102,32,116,104,101,32, - 109,111,100,117,108,101,32,105,115,32,99,111,110,115,105,100, - 101,114,101,100,32,97,32,112,97,99,107,97,103,101,32,111, - 114,10,32,32,32,32,110,111,116,46,32,32,79,110,32,109, - 111,100,117,108,101,115,32,116,104,105,115,32,105,115,32,114, - 101,102,108,101,99,116,101,100,32,98,121,32,116,104,101,32, - 96,95,95,112,97,116,104,95,95,96,32,97,116,116,114,105, - 98,117,116,101,46,10,10,32,32,32,32,96,111,114,105,103, - 105,110,96,32,105,115,32,116,104,101,32,115,112,101,99,105, - 102,105,99,32,108,111,99,97,116,105,111,110,32,117,115,101, - 100,32,98,121,32,116,104,101,32,108,111,97,100,101,114,32, - 102,114,111,109,32,119,104,105,99,104,32,116,111,10,32,32, - 32,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, - 101,44,32,105,102,32,116,104,97,116,32,105,110,102,111,114, - 109,97,116,105,111,110,32,105,115,32,97,118,97,105,108,97, - 98,108,101,46,32,32,87,104,101,110,32,102,105,108,101,110, - 97,109,101,32,105,115,10,32,32,32,32,115,101,116,44,32, - 111,114,105,103,105,110,32,119,105,108,108,32,109,97,116,99, - 104,46,10,10,32,32,32,32,96,104,97,115,95,108,111,99, - 97,116,105,111,110,96,32,105,110,100,105,99,97,116,101,115, - 32,116,104,97,116,32,97,32,115,112,101,99,39,115,32,34, - 111,114,105,103,105,110,34,32,114,101,102,108,101,99,116,115, - 32,97,32,108,111,99,97,116,105,111,110,46,10,32,32,32, - 32,87,104,101,110,32,116,104,105,115,32,105,115,32,84,114, - 117,101,44,32,96,95,95,102,105,108,101,95,95,96,32,97, - 116,116,114,105,98,117,116,101,32,111,102,32,116,104,101,32, - 109,111,100,117,108,101,32,105,115,32,115,101,116,46,10,10, - 32,32,32,32,96,99,97,99,104,101,100,96,32,105,115,32, - 116,104,101,32,108,111,99,97,116,105,111,110,32,111,102,32, - 116,104,101,32,99,97,99,104,101,100,32,98,121,116,101,99, - 111,100,101,32,102,105,108,101,44,32,105,102,32,97,110,121, - 46,32,32,73,116,10,32,32,32,32,99,111,114,114,101,115, - 112,111,110,100,115,32,116,111,32,116,104,101,32,96,95,95, - 99,97,99,104,101,100,95,95,96,32,97,116,116,114,105,98, - 117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101, - 113,117,101,110,99,101,32,111,102,32,112,97,116,104,32,101, - 110,116,114,105,101,115,32,116,111,10,32,32,32,32,115,101, - 97,114,99,104,32,119,104,101,110,32,105,109,112,111,114,116, - 105,110,103,32,115,117,98,109,111,100,117,108,101,115,46,32, - 32,73,102,32,115,101,116,44,32,105,115,95,112,97,99,107, - 97,103,101,32,115,104,111,117,108,100,32,98,101,10,32,32, - 32,32,84,114,117,101,45,45,97,110,100,32,70,97,108,115, - 101,32,111,116,104,101,114,119,105,115,101,46,10,10,32,32, - 32,32,80,97,99,107,97,103,101,115,32,97,114,101,32,115, - 105,109,112,108,121,32,109,111,100,117,108,101,115,32,116,104, - 97,116,32,40,109,97,121,41,32,104,97,118,101,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,97,32, - 115,112,101,99,10,32,32,32,32,104,97,115,32,97,32,110, - 111,110,45,78,111,110,101,32,118,97,108,117,101,32,105,110, - 32,96,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,96,44,32,116, - 104,101,32,105,109,112,111,114,116,10,32,32,32,32,115,121, - 115,116,101,109,32,119,105,108,108,32,99,111,110,115,105,100, - 101,114,32,109,111,100,117,108,101,115,32,108,111,97,100,101, - 100,32,102,114,111,109,32,116,104,101,32,115,112,101,99,32, - 97,115,32,112,97,99,107,97,103,101,115,46,10,10,32,32, - 32,32,79,110,108,121,32,102,105,110,100,101,114,115,32,40, - 115,101,101,32,105,109,112,111,114,116,108,105,98,46,97,98, - 99,46,77,101,116,97,80,97,116,104,70,105,110,100,101,114, - 32,97,110,100,10,32,32,32,32,105,109,112,111,114,116,108, - 105,98,46,97,98,99,46,80,97,116,104,69,110,116,114,121, - 70,105,110,100,101,114,41,32,115,104,111,117,108,100,32,109, - 111,100,105,102,121,32,77,111,100,117,108,101,83,112,101,99, - 32,105,110,115,116,97,110,99,101,115,46,10,10,32,32,32, - 32,78,41,3,218,6,111,114,105,103,105,110,218,12,108,111, - 97,100,101,114,95,115,116,97,116,101,218,10,105,115,95,112, - 97,99,107,97,103,101,99,3,0,0,0,0,0,0,0,3, - 0,0,0,6,0,0,0,2,0,0,0,67,0,0,0,115, - 54,0,0,0,124,1,124,0,95,0,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,41,2,78,70,41,7, - 114,20,0,0,0,114,116,0,0,0,114,120,0,0,0,114, - 121,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,33,0,0,0,114, - 20,0,0,0,114,116,0,0,0,114,120,0,0,0,114,121, - 0,0,0,114,122,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,34,0,0,0,111,1,0,0, - 115,16,0,0,0,6,2,6,1,6,1,6,1,14,1,6, - 3,10,1,255,128,122,19,77,111,100,117,108,101,83,112,101, - 99,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,67, - 0,0,0,115,102,0,0,0,100,1,160,0,124,0,106,1, - 161,1,100,2,160,0,124,0,106,2,161,1,103,2,125,1, - 124,0,106,3,100,0,117,1,114,52,124,1,160,4,100,3, - 160,0,124,0,106,3,161,1,161,1,1,0,124,0,106,5, - 100,0,117,1,114,80,124,1,160,4,100,4,160,0,124,0, - 106,5,161,1,161,1,1,0,100,5,160,0,124,0,106,6, - 106,7,100,6,160,8,124,1,161,1,161,2,83,0,41,7, - 78,122,9,110,97,109,101,61,123,33,114,125,122,11,108,111, - 97,100,101,114,61,123,33,114,125,122,11,111,114,105,103,105, - 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,49,0,0,0,114,20,0,0,0,114,116,0, - 0,0,114,120,0,0,0,218,6,97,112,112,101,110,100,114, - 123,0,0,0,218,9,95,95,99,108,97,115,115,95,95,114, - 9,0,0,0,218,4,106,111,105,110,41,2,114,33,0,0, - 0,114,59,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,52,0,0,0,123,1,0,0,115,22, - 0,0,0,10,1,10,1,4,255,10,2,18,1,10,1,8, - 1,4,1,6,255,22,2,255,128,122,19,77,111,100,117,108, - 101,83,112,101,99,46,95,95,114,101,112,114,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, - 0,0,0,67,0,0,0,115,102,0,0,0,124,0,106,0, - 125,2,122,72,124,0,106,1,124,1,106,1,107,2,111,76, - 124,0,106,2,124,1,106,2,107,2,111,76,124,0,106,3, - 124,1,106,3,107,2,111,76,124,2,124,1,106,0,107,2, - 111,76,124,0,106,4,124,1,106,4,107,2,111,76,124,0, - 106,5,124,1,106,5,107,2,87,0,83,0,4,0,116,6, - 121,100,1,0,1,0,1,0,116,7,6,0,89,0,83,0, - 48,0,114,0,0,0,0,41,8,114,123,0,0,0,114,20, - 0,0,0,114,116,0,0,0,114,120,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,2,0,0,0,218,14,78,111,116,73,109,112, - 108,101,109,101,110,116,101,100,41,3,114,33,0,0,0,90, - 5,111,116,104,101,114,90,4,115,109,115,108,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,6,95,95,101, - 113,95,95,133,1,0,0,115,32,0,0,0,6,1,2,1, - 12,1,10,1,2,255,10,2,2,254,8,3,2,253,10,4, - 2,252,10,5,4,251,12,6,10,1,255,128,122,17,77,111, - 100,117,108,101,83,112,101,99,46,95,95,101,113,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,67,0,0,0,115,58,0,0,0,124,0,106, - 0,100,0,117,0,114,52,124,0,106,1,100,0,117,1,114, - 52,124,0,106,2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125, - 0,0,0,114,120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,129,0,0,0,145,1,0, - 0,115,14,0,0,0,10,2,16,1,8,1,4,1,14,1, - 6,1,255,128,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, - 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, - 0,0,0,0,41,1,114,125,0,0,0,41,2,114,33,0, - 0,0,114,129,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,129,0,0,0,154,1,0,0,115, - 4,0,0,0,10,2,255,128,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,32,0,0,0,124,0,106,0,100,1,117,0,114,26, - 124,0,106,1,160,2,100,2,161,1,100,3,25,0,83,0, - 124,0,106,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,25, - 0,0,0,41,3,114,123,0,0,0,114,20,0,0,0,218, - 10,114,112,97,114,116,105,116,105,111,110,114,51,0,0,0, + 0,0,218,17,95,115,112,101,99,95,102,114,111,109,95,109, + 111,100,117,108,101,201,1,0,0,115,74,0,0,0,2,2, + 10,1,12,1,6,1,8,2,4,1,6,2,8,1,2,1, + 10,1,12,1,6,2,2,1,10,1,12,1,10,1,8,1, + 8,1,2,1,10,1,12,1,10,1,4,2,2,1,10,1, + 12,1,10,1,2,1,14,1,12,1,10,1,14,2,20,1, + 6,1,6,1,4,1,255,128,114,149,0,0,0,70,169,1, + 218,8,111,118,101,114,114,105,100,101,99,2,0,0,0,0, + 0,0,0,1,0,0,0,5,0,0,0,8,0,0,0,67, + 0,0,0,115,214,1,0,0,124,2,115,20,116,0,124,1, + 100,1,100,0,131,3,100,0,117,0,114,52,122,12,124,0, + 106,1,124,1,95,2,87,0,110,18,4,0,116,3,121,50, + 1,0,1,0,1,0,89,0,110,2,48,0,124,2,115,72, + 116,0,124,1,100,2,100,0,131,3,100,0,117,0,114,174, + 124,0,106,4,125,3,124,3,100,0,117,0,114,144,124,0, + 106,5,100,0,117,1,114,144,116,6,100,0,117,0,114,108, + 116,7,130,1,116,6,106,8,125,4,124,4,160,9,124,4, + 161,1,125,3,124,0,106,5,124,3,95,10,124,3,124,0, + 95,4,100,0,124,1,95,11,122,10,124,3,124,1,95,12, + 87,0,110,18,4,0,116,3,121,172,1,0,1,0,1,0, + 89,0,110,2,48,0,124,2,115,194,116,0,124,1,100,3, + 100,0,131,3,100,0,117,0,114,226,122,12,124,0,106,13, + 124,1,95,14,87,0,110,18,4,0,116,3,121,224,1,0, + 1,0,1,0,89,0,110,2,48,0,122,10,124,0,124,1, + 95,15,87,0,110,18,4,0,116,3,121,254,1,0,1,0, + 1,0,89,0,110,2,48,0,124,2,144,1,115,24,116,0, + 124,1,100,4,100,0,131,3,100,0,117,0,144,1,114,70, + 124,0,106,5,100,0,117,1,144,1,114,70,122,12,124,0, + 106,5,124,1,95,16,87,0,110,20,4,0,116,3,144,1, + 121,68,1,0,1,0,1,0,89,0,110,2,48,0,124,0, + 106,17,144,1,114,210,124,2,144,1,115,102,116,0,124,1, + 100,5,100,0,131,3,100,0,117,0,144,1,114,136,122,12, + 124,0,106,18,124,1,95,11,87,0,110,20,4,0,116,3, + 144,1,121,134,1,0,1,0,1,0,89,0,110,2,48,0, + 124,2,144,1,115,160,116,0,124,1,100,6,100,0,131,3, + 100,0,117,0,144,1,114,210,124,0,106,19,100,0,117,1, + 144,1,114,210,122,14,124,0,106,19,124,1,95,20,87,0, + 124,1,83,0,4,0,116,3,144,1,121,208,1,0,1,0, + 1,0,89,0,124,1,83,0,48,0,124,1,83,0,41,7, + 78,114,9,0,0,0,114,106,0,0,0,218,11,95,95,112, + 97,99,107,97,103,101,95,95,114,148,0,0,0,114,115,0, + 0,0,114,146,0,0,0,41,21,114,13,0,0,0,114,20, + 0,0,0,114,9,0,0,0,114,2,0,0,0,114,116,0, + 0,0,114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0, + 0,0,114,152,0,0,0,114,113,0,0,0,114,148,0,0, + 0,114,130,0,0,0,114,120,0,0,0,114,129,0,0,0, + 114,146,0,0,0,41,5,114,103,0,0,0,114,104,0,0, + 0,114,151,0,0,0,114,116,0,0,0,114,153,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 6,112,97,114,101,110,116,158,1,0,0,115,8,0,0,0, - 10,3,16,1,6,2,255,128,122,17,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,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, - 0,0,0,0,41,1,114,124,0,0,0,114,51,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 130,0,0,0,166,1,0,0,115,4,0,0,0,6,2,255, - 128,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,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,0,0,0,0,41,2,218,4,98, - 111,111,108,114,124,0,0,0,41,2,114,33,0,0,0,218, - 5,118,97,108,117,101,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,130,0,0,0,170,1,0,0,115,4, - 0,0,0,14,2,255,128,41,12,114,9,0,0,0,114,8, - 0,0,0,114,1,0,0,0,114,10,0,0,0,114,34,0, - 0,0,114,52,0,0,0,114,132,0,0,0,218,8,112,114, - 111,112,101,114,116,121,114,129,0,0,0,218,6,115,101,116, - 116,101,114,114,137,0,0,0,114,130,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,119,0,0,0,74,1,0,0,115,36,0,0,0,8, - 0,4,1,4,36,2,1,12,255,8,12,8,10,2,12,10, - 1,4,8,10,1,2,3,10,1,2,7,10,1,4,3,14, - 1,255,128,114,119,0,0,0,169,2,114,120,0,0,0,114, - 122,0,0,0,99,2,0,0,0,0,0,0,0,2,0,0, - 0,6,0,0,0,8,0,0,0,67,0,0,0,115,150,0, - 0,0,116,0,124,1,100,1,131,2,114,74,116,1,100,2, - 117,0,114,22,116,2,130,1,116,1,106,3,125,4,124,3, - 100,2,117,0,114,48,124,4,124,0,124,1,100,3,141,2, - 83,0,124,3,114,56,103,0,110,2,100,2,125,5,124,4, - 124,0,124,1,124,5,100,4,141,3,83,0,124,3,100,2, - 117,0,114,134,116,0,124,1,100,5,131,2,114,130,122,14, - 124,1,160,4,124,0,161,1,125,3,87,0,110,26,4,0, - 116,5,121,128,1,0,1,0,1,0,100,2,125,3,89,0, - 110,6,48,0,100,6,125,3,116,6,124,0,124,1,124,2, - 124,3,100,7,141,4,83,0,41,8,122,53,82,101,116,117, - 114,110,32,97,32,109,111,100,117,108,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,116,0,0,0,41,2,114,116,0,0,0,114,123, - 0,0,0,114,122,0,0,0,70,114,142,0,0,0,41,7, - 114,11,0,0,0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0, - 0,0,114,119,0,0,0,41,6,114,20,0,0,0,114,116, - 0,0,0,114,120,0,0,0,114,122,0,0,0,114,143,0, - 0,0,90,6,115,101,97,114,99,104,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,98,0,0,0,175,1, - 0,0,115,38,0,0,0,10,2,8,1,4,1,6,1,8, - 2,12,1,12,1,6,1,2,1,6,255,8,3,10,1,2, - 1,14,1,12,1,10,1,4,3,16,2,255,128,114,98,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,8,0,0,0,67,0,0,0,115,40,1,0,0, - 122,10,124,0,106,0,125,3,87,0,110,18,4,0,116,1, - 121,28,1,0,1,0,1,0,89,0,110,14,48,0,124,3, - 100,0,117,1,114,42,124,3,83,0,124,0,106,2,125,4, - 124,1,100,0,117,0,114,86,122,10,124,0,106,3,125,1, - 87,0,110,18,4,0,116,1,121,84,1,0,1,0,1,0, - 89,0,110,2,48,0,122,10,124,0,106,4,125,5,87,0, - 110,22,4,0,116,1,121,118,1,0,1,0,1,0,100,0, - 125,5,89,0,110,2,48,0,124,2,100,0,117,0,114,174, - 124,5,100,0,117,0,114,170,122,10,124,1,106,5,125,2, - 87,0,110,26,4,0,116,1,121,168,1,0,1,0,1,0, - 100,0,125,2,89,0,110,6,48,0,124,5,125,2,122,10, - 124,0,106,6,125,6,87,0,110,22,4,0,116,1,121,206, - 1,0,1,0,1,0,100,0,125,6,89,0,110,2,48,0, - 122,14,116,7,124,0,106,8,131,1,125,7,87,0,110,22, - 4,0,116,1,121,244,1,0,1,0,1,0,100,0,125,7, - 89,0,110,2,48,0,116,9,124,4,124,1,124,2,100,1, - 141,3,125,3,124,5,100,0,117,0,144,1,114,18,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,120,0, - 0,0,70,84,41,13,114,113,0,0,0,114,2,0,0,0, - 114,9,0,0,0,114,106,0,0,0,114,115,0,0,0,218, - 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,119,0,0,0,114,124,0,0,0,114,129, - 0,0,0,114,123,0,0,0,41,8,114,104,0,0,0,114, - 116,0,0,0,114,120,0,0,0,114,103,0,0,0,114,20, - 0,0,0,90,8,108,111,99,97,116,105,111,110,114,129,0, - 0,0,114,123,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,17,95,115,112,101,99,95,102,114, - 111,109,95,109,111,100,117,108,101,201,1,0,0,115,74,0, - 0,0,2,2,10,1,12,1,6,1,8,2,4,1,6,2, - 8,1,2,1,10,1,12,1,6,2,2,1,10,1,12,1, - 10,1,8,1,8,1,2,1,10,1,12,1,10,1,4,2, - 2,1,10,1,12,1,10,1,2,1,14,1,12,1,10,1, - 14,2,20,1,6,1,6,1,4,1,255,128,114,149,0,0, - 0,70,169,1,218,8,111,118,101,114,114,105,100,101,99,2, - 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,8, - 0,0,0,67,0,0,0,115,214,1,0,0,124,2,115,20, - 116,0,124,1,100,1,100,0,131,3,100,0,117,0,114,52, - 122,12,124,0,106,1,124,1,95,2,87,0,110,18,4,0, - 116,3,121,50,1,0,1,0,1,0,89,0,110,2,48,0, - 124,2,115,72,116,0,124,1,100,2,100,0,131,3,100,0, - 117,0,114,174,124,0,106,4,125,3,124,3,100,0,117,0, - 114,144,124,0,106,5,100,0,117,1,114,144,116,6,100,0, - 117,0,114,108,116,7,130,1,116,6,106,8,125,4,124,4, - 160,9,124,4,161,1,125,3,124,0,106,5,124,3,95,10, - 124,3,124,0,95,4,100,0,124,1,95,11,122,10,124,3, - 124,1,95,12,87,0,110,18,4,0,116,3,121,172,1,0, - 1,0,1,0,89,0,110,2,48,0,124,2,115,194,116,0, - 124,1,100,3,100,0,131,3,100,0,117,0,114,226,122,12, - 124,0,106,13,124,1,95,14,87,0,110,18,4,0,116,3, - 121,224,1,0,1,0,1,0,89,0,110,2,48,0,122,10, - 124,0,124,1,95,15,87,0,110,18,4,0,116,3,121,254, - 1,0,1,0,1,0,89,0,110,2,48,0,124,2,144,1, - 115,24,116,0,124,1,100,4,100,0,131,3,100,0,117,0, - 144,1,114,70,124,0,106,5,100,0,117,1,144,1,114,70, - 122,12,124,0,106,5,124,1,95,16,87,0,110,20,4,0, - 116,3,144,1,121,68,1,0,1,0,1,0,89,0,110,2, - 48,0,124,0,106,17,144,1,114,210,124,2,144,1,115,102, - 116,0,124,1,100,5,100,0,131,3,100,0,117,0,144,1, - 114,136,122,12,124,0,106,18,124,1,95,11,87,0,110,20, - 4,0,116,3,144,1,121,134,1,0,1,0,1,0,89,0, - 110,2,48,0,124,2,144,1,115,160,116,0,124,1,100,6, - 100,0,131,3,100,0,117,0,144,1,114,210,124,0,106,19, - 100,0,117,1,144,1,114,210,122,14,124,0,106,19,124,1, - 95,20,87,0,124,1,83,0,4,0,116,3,144,1,121,208, - 1,0,1,0,1,0,89,0,124,1,83,0,48,0,124,1, - 83,0,41,7,78,114,9,0,0,0,114,106,0,0,0,218, - 11,95,95,112,97,99,107,97,103,101,95,95,114,148,0,0, - 0,114,115,0,0,0,114,146,0,0,0,41,21,114,13,0, - 0,0,114,20,0,0,0,114,9,0,0,0,114,2,0,0, - 0,114,116,0,0,0,114,123,0,0,0,114,133,0,0,0, - 114,134,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,115,0,0,0,114,106,0,0, - 0,114,137,0,0,0,114,152,0,0,0,114,113,0,0,0, - 114,148,0,0,0,114,130,0,0,0,114,120,0,0,0,114, - 129,0,0,0,114,146,0,0,0,41,5,114,103,0,0,0, - 114,104,0,0,0,114,151,0,0,0,114,116,0,0,0,114, - 153,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,18,95,105,110,105,116,95,109,111,100,117,108, - 101,95,97,116,116,114,115,246,1,0,0,115,104,0,0,0, - 20,4,2,1,12,1,12,1,6,1,20,2,6,1,8,1, - 10,2,8,1,4,1,6,1,10,2,8,1,6,1,6,11, - 2,1,10,1,12,1,6,1,20,2,2,1,12,1,12,1, - 6,1,2,2,10,1,12,1,6,1,24,2,12,1,2,1, - 12,1,14,1,6,1,8,2,24,1,2,1,12,1,14,1, - 6,1,24,2,12,1,2,1,10,1,4,3,14,254,2,1, - 4,1,2,255,4,1,255,128,114,155,0,0,0,99,1,0, - 0,0,0,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,1,110,20,116,0,124,0,106,1,100, - 3,131,2,114,50,116,3,100,4,131,1,130,1,124,1,100, - 1,117,0,114,68,116,4,124,0,106,5,131,1,125,1,116, - 6,124,0,124,1,131,2,1,0,124,1,83,0,41,5,122, - 43,67,114,101,97,116,101,32,97,32,109,111,100,117,108,101, - 32,98,97,115,101,100,32,111,110,32,116,104,101,32,112,114, - 111,118,105,100,101,100,32,115,112,101,99,46,78,218,13,99, - 114,101,97,116,101,95,109,111,100,117,108,101,218,11,101,120, - 101,99,95,109,111,100,117,108,101,122,66,108,111,97,100,101, - 114,115,32,116,104,97,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, - 11,0,0,0,114,116,0,0,0,114,156,0,0,0,114,83, - 0,0,0,114,21,0,0,0,114,20,0,0,0,114,155,0, - 0,0,169,2,114,103,0,0,0,114,104,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,16,109, - 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,62, - 2,0,0,115,20,0,0,0,4,3,12,1,14,3,12,1, - 8,1,8,2,10,1,10,1,4,1,255,128,114,159,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,100,0,0,0,124, - 0,106,0,100,1,117,0,114,14,100,2,110,4,124,0,106, - 0,125,1,124,0,106,1,100,1,117,0,114,64,124,0,106, - 2,100,1,117,0,114,50,100,3,160,3,124,1,161,1,83, - 0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,124, - 0,106,4,114,84,100,5,160,3,124,1,124,0,106,1,161, - 2,83,0,100,6,160,3,124,0,106,0,124,0,106,1,161, - 2,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,108, - 0,0,0,114,109,0,0,0,114,110,0,0,0,114,111,0, - 0,0,250,18,60,109,111,100,117,108,101,32,123,33,114,125, - 32,40,123,125,41,62,41,5,114,20,0,0,0,114,120,0, - 0,0,114,116,0,0,0,114,49,0,0,0,114,130,0,0, - 0,41,2,114,103,0,0,0,114,20,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,114,0,0, - 0,79,2,0,0,115,18,0,0,0,20,3,10,1,10,1, - 10,1,14,2,6,2,14,1,16,2,255,128,114,114,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,10,0,0,0,67,0,0,0,115,26,1,0,0,124, - 0,106,0,125,2,116,1,124,2,131,1,143,246,1,0,116, - 2,106,3,160,4,124,2,161,1,124,1,117,1,114,54,100, - 1,160,5,124,2,161,1,125,3,116,6,124,3,124,2,100, - 2,141,2,130,1,122,160,124,0,106,7,100,3,117,0,114, - 106,124,0,106,8,100,3,117,0,114,90,116,6,100,4,124, - 0,106,0,100,2,141,2,130,1,116,9,124,0,124,1,100, - 5,100,6,141,3,1,0,110,80,116,9,124,0,124,1,100, - 5,100,6,141,3,1,0,116,10,124,0,106,7,100,7,131, - 2,115,174,116,11,124,0,106,7,131,1,155,0,100,8,157, - 2,125,3,116,12,160,13,124,3,116,14,161,2,1,0,124, - 0,106,7,160,15,124,2,161,1,1,0,110,12,124,0,106, - 7,160,16,124,1,161,1,1,0,87,0,116,2,106,3,160, - 17,124,0,106,0,161,1,125,1,124,1,116,2,106,3,124, - 0,106,0,60,0,110,28,116,2,106,3,160,17,124,0,106, + 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, + 116,114,115,246,1,0,0,115,104,0,0,0,20,4,2,1, + 12,1,12,1,6,1,20,2,6,1,8,1,10,2,8,1, + 4,1,6,1,10,2,8,1,6,1,6,11,2,1,10,1, + 12,1,6,1,20,2,2,1,12,1,12,1,6,1,2,2, + 10,1,12,1,6,1,24,2,12,1,2,1,12,1,14,1, + 6,1,8,2,24,1,2,1,12,1,14,1,6,1,24,2, + 12,1,2,1,10,1,4,3,14,254,2,1,4,1,2,255, + 4,1,255,128,114,155,0,0,0,99,1,0,0,0,0,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,1,110,20,116,0,124,0,106,1,100,3,131,2,114, + 50,116,3,100,4,131,1,130,1,124,1,100,1,117,0,114, + 68,116,4,124,0,106,5,131,1,125,1,116,6,124,0,124, + 1,131,2,1,0,124,1,83,0,41,5,122,43,67,114,101, + 97,116,101,32,97,32,109,111,100,117,108,101,32,98,97,115, + 101,100,32,111,110,32,116,104,101,32,112,114,111,118,105,100, + 101,100,32,115,112,101,99,46,78,218,13,99,114,101,97,116, + 101,95,109,111,100,117,108,101,218,11,101,120,101,99,95,109, + 111,100,117,108,101,122,66,108,111,97,100,101,114,115,32,116, + 104,97,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,11,0,0,0, + 114,116,0,0,0,114,156,0,0,0,114,83,0,0,0,114, + 21,0,0,0,114,20,0,0,0,114,155,0,0,0,169,2, + 114,103,0,0,0,114,104,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,16,109,111,100,117,108, + 101,95,102,114,111,109,95,115,112,101,99,62,2,0,0,115, + 20,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, + 10,1,10,1,4,1,255,128,114,159,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,100,0,0,0,124,0,106,0,100, + 1,117,0,114,14,100,2,110,4,124,0,106,0,125,1,124, + 0,106,1,100,1,117,0,114,64,124,0,106,2,100,1,117, + 0,114,50,100,3,160,3,124,1,161,1,83,0,100,4,160, + 3,124,1,124,0,106,2,161,2,83,0,124,0,106,4,114, + 84,100,5,160,3,124,1,124,0,106,1,161,2,83,0,100, + 6,160,3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114, + 109,0,0,0,114,110,0,0,0,114,111,0,0,0,250,18, + 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125, + 41,62,41,5,114,20,0,0,0,114,120,0,0,0,114,116, + 0,0,0,114,49,0,0,0,114,130,0,0,0,41,2,114, + 103,0,0,0,114,20,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,114,0,0,0,79,2,0, + 0,115,18,0,0,0,20,3,10,1,10,1,10,1,14,2, + 6,2,14,1,16,2,255,128,114,114,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,10,0, + 0,0,67,0,0,0,115,26,1,0,0,124,0,106,0,125, + 2,116,1,124,2,131,1,143,246,1,0,116,2,106,3,160, + 4,124,2,161,1,124,1,117,1,114,54,100,1,160,5,124, + 2,161,1,125,3,116,6,124,3,124,2,100,2,141,2,130, + 1,122,160,124,0,106,7,100,3,117,0,114,106,124,0,106, + 8,100,3,117,0,114,90,116,6,100,4,124,0,106,0,100, + 2,141,2,130,1,116,9,124,0,124,1,100,5,100,6,141, + 3,1,0,110,80,116,9,124,0,124,1,100,5,100,6,141, + 3,1,0,116,10,124,0,106,7,100,7,131,2,115,174,116, + 11,124,0,106,7,131,1,155,0,100,8,157,2,125,3,116, + 12,160,13,124,3,116,14,161,2,1,0,124,0,106,7,160, + 15,124,2,161,1,1,0,110,12,124,0,106,7,160,16,124, + 1,161,1,1,0,87,0,116,2,106,3,160,17,124,0,106, 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, - 0,48,0,87,0,100,3,4,0,4,0,131,3,1,0,124, - 1,83,0,49,0,144,1,115,12,48,0,1,0,1,0,1, - 0,89,0,1,0,124,1,83,0,41,9,122,70,69,120,101, - 99,117,116,101,32,116,104,101,32,115,112,101,99,39,115,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 32,105,110,32,97,110,32,101,120,105,115,116,105,110,103,32, - 109,111,100,117,108,101,39,115,32,110,97,109,101,115,112,97, - 99,101,46,122,30,109,111,100,117,108,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,19,0,0,0,78,250,14,109,105,115,115,105, - 110,103,32,108,111,97,100,101,114,84,114,150,0,0,0,114, - 157,0,0,0,250,55,46,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,110,111,116,32,102,111,117,110,100,59,32, - 102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32, - 108,111,97,100,95,109,111,100,117,108,101,40,41,41,18,114, - 20,0,0,0,114,54,0,0,0,114,18,0,0,0,114,99, - 0,0,0,114,38,0,0,0,114,49,0,0,0,114,83,0, - 0,0,114,116,0,0,0,114,123,0,0,0,114,155,0,0, - 0,114,11,0,0,0,114,7,0,0,0,114,95,0,0,0, - 114,96,0,0,0,218,13,73,109,112,111,114,116,87,97,114, - 110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,108, - 101,114,157,0,0,0,218,3,112,111,112,41,4,114,103,0, - 0,0,114,104,0,0,0,114,20,0,0,0,114,102,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,100,0,0,0,96,2,0,0,115,50,0,0,0,6,2, - 10,1,16,1,10,1,12,1,2,1,10,1,10,1,14,1, - 16,2,14,2,12,1,16,1,12,2,14,1,12,2,2,128, - 14,4,14,1,14,255,26,1,4,1,18,255,4,1,255,128, - 114,100,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,18, - 1,0,0,122,18,124,0,106,0,160,1,124,0,106,2,161, - 1,1,0,87,0,110,46,1,0,1,0,1,0,124,0,106, - 2,116,3,106,4,118,0,114,64,116,3,106,4,160,5,124, - 0,106,2,161,1,125,1,124,1,116,3,106,4,124,0,106, - 2,60,0,130,0,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,116, - 6,124,1,100,1,100,0,131,3,100,0,117,0,114,140,122, - 12,124,0,106,0,124,1,95,7,87,0,110,18,4,0,116, - 8,121,138,1,0,1,0,1,0,89,0,110,2,48,0,116, - 6,124,1,100,2,100,0,131,3,100,0,117,0,114,216,122, - 40,124,1,106,9,124,1,95,10,116,11,124,1,100,3,131, - 2,115,194,124,0,106,2,160,12,100,4,161,1,100,5,25, - 0,124,1,95,10,87,0,110,18,4,0,116,8,121,214,1, + 0,110,28,116,2,106,3,160,17,124,0,106,0,161,1,125, + 1,124,1,116,2,106,3,124,0,106,0,60,0,48,0,87, + 0,100,3,4,0,4,0,131,3,1,0,124,1,83,0,49, + 0,144,1,115,12,48,0,1,0,1,0,1,0,89,0,1, + 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, + 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, + 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, + 30,109,111,100,117,108,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, + 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,84,114,150,0,0,0,114,157,0,0,0, + 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, + 114,54,0,0,0,114,18,0,0,0,114,99,0,0,0,114, + 38,0,0,0,114,49,0,0,0,114,83,0,0,0,114,116, + 0,0,0,114,123,0,0,0,114,155,0,0,0,114,11,0, + 0,0,114,7,0,0,0,114,95,0,0,0,114,96,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 218,11,108,111,97,100,95,109,111,100,117,108,101,114,157,0, + 0,0,218,3,112,111,112,41,4,114,103,0,0,0,114,104, + 0,0,0,114,20,0,0,0,114,102,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,100,0,0, + 0,96,2,0,0,115,50,0,0,0,6,2,10,1,16,1, + 10,1,12,1,2,1,10,1,10,1,14,1,16,2,14,2, + 12,1,16,1,12,2,14,1,12,2,2,128,14,4,14,1, + 14,255,26,1,4,1,18,255,4,1,255,128,114,100,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,67,0,0,0,115,18,1,0,0,122, + 18,124,0,106,0,160,1,124,0,106,2,161,1,1,0,87, + 0,110,46,1,0,1,0,1,0,124,0,106,2,116,3,106, + 4,118,0,114,64,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, + 0,116,3,106,4,160,5,124,0,106,2,161,1,125,1,124, + 1,116,3,106,4,124,0,106,2,60,0,116,6,124,1,100, + 1,100,0,131,3,100,0,117,0,114,140,122,12,124,0,106, + 0,124,1,95,7,87,0,110,18,4,0,116,8,121,138,1, 0,1,0,1,0,89,0,110,2,48,0,116,6,124,1,100, - 6,100,0,131,3,100,0,117,0,144,1,114,14,122,12,124, - 0,124,1,95,13,87,0,124,1,83,0,4,0,116,8,144, - 1,121,12,1,0,1,0,1,0,89,0,124,1,83,0,48, - 0,124,1,83,0,41,7,78,114,106,0,0,0,114,152,0, - 0,0,114,148,0,0,0,114,135,0,0,0,114,25,0,0, - 0,114,113,0,0,0,41,14,114,116,0,0,0,114,164,0, - 0,0,114,20,0,0,0,114,18,0,0,0,114,99,0,0, - 0,114,165,0,0,0,114,13,0,0,0,114,106,0,0,0, - 114,2,0,0,0,114,9,0,0,0,114,152,0,0,0,114, - 11,0,0,0,114,136,0,0,0,114,113,0,0,0,114,158, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,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,126,2,0, - 0,115,62,0,0,0,2,3,18,1,6,1,12,1,14,1, - 12,1,2,1,14,3,12,1,16,1,2,1,12,1,12,1, - 6,1,16,1,2,1,8,4,10,1,22,1,12,1,6,1, - 18,1,2,1,8,1,4,3,14,254,2,1,4,1,2,255, - 4,1,255,128,114,166,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,11,0,0,0,67,0, - 0,0,115,240,0,0,0,124,0,106,0,100,0,117,1,114, - 58,116,1,124,0,106,0,100,1,131,2,115,58,116,2,124, - 0,106,0,131,1,155,0,100,2,157,2,125,1,116,3,160, - 4,124,1,116,5,161,2,1,0,116,6,124,0,131,1,83, - 0,116,7,124,0,131,1,125,2,100,3,124,0,95,8,122, - 158,124,2,116,9,106,10,124,0,106,11,60,0,122,50,124, - 0,106,0,100,0,117,0,114,122,124,0,106,12,100,0,117, - 0,114,134,116,13,100,4,124,0,106,11,100,5,141,2,130, - 1,124,0,106,0,160,14,124,2,161,1,1,0,87,0,110, - 40,1,0,1,0,1,0,122,14,116,9,106,10,124,0,106, - 11,61,0,87,0,130,0,4,0,116,15,121,176,1,0,1, - 0,1,0,89,0,130,0,48,0,116,9,106,10,160,16,124, - 0,106,11,161,1,125,2,124,2,116,9,106,10,124,0,106, - 11,60,0,116,17,100,6,124,0,106,11,124,0,106,0,131, - 3,1,0,87,0,100,7,124,0,95,8,124,2,83,0,100, - 7,124,0,95,8,48,0,41,8,78,114,157,0,0,0,114, - 162,0,0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0, - 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,114, - 163,0,0,0,114,166,0,0,0,114,159,0,0,0,90,13, - 95,105,110,105,116,105,97,108,105,122,105,110,103,114,18,0, - 0,0,114,99,0,0,0,114,20,0,0,0,114,123,0,0, - 0,114,83,0,0,0,114,157,0,0,0,114,67,0,0,0, - 114,165,0,0,0,114,80,0,0,0,41,3,114,103,0,0, - 0,114,102,0,0,0,114,104,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,14,95,108,111,97, - 100,95,117,110,108,111,99,107,101,100,162,2,0,0,115,58, - 0,0,0,10,2,12,2,16,1,12,2,8,1,8,2,6, - 5,2,1,12,1,2,1,10,1,10,1,14,1,16,3,6, - 1,2,1,12,1,2,3,12,254,2,1,2,1,2,255,14, - 6,12,1,18,1,6,2,4,2,8,254,255,128,114,167,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,8,0,0,0,67,0,0,0,115,54,0,0,0, - 116,0,124,0,106,1,131,1,143,24,1,0,116,2,124,0, - 131,1,87,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,49,0,115,40,48,0,1,0,1,0,1,0,89,0, - 1,0,100,1,83,0,41,2,122,191,82,101,116,117,114,110, - 32,97,32,110,101,119,32,109,111,100,117,108,101,32,111,98, - 106,101,99,116,44,32,108,111,97,100,101,100,32,98,121,32, - 116,104,101,32,115,112,101,99,39,115,32,108,111,97,100,101, - 114,46,10,10,32,32,32,32,84,104,101,32,109,111,100,117, - 108,101,32,105,115,32,110,111,116,32,97,100,100,101,100,32, - 116,111,32,105,116,115,32,112,97,114,101,110,116,46,10,10, - 32,32,32,32,73,102,32,97,32,109,111,100,117,108,101,32, - 105,115,32,97,108,114,101,97,100,121,32,105,110,32,115,121, - 115,46,109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0, - 0,114,20,0,0,0,114,167,0,0,0,169,1,114,103,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,101,0,0,0,207,2,0,0,115,6,0,0,0,12, - 9,42,1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0, - 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, - 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, - 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, - 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, - 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, - 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, - 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, - 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, - 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, - 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, - 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, - 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, - 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, - 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, - 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, - 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, - 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,5,0,0,0,67,0,0,0,115,22,0,0, - 0,100,1,124,0,106,0,155,2,100,2,116,1,106,2,155, - 0,100,3,157,5,83,0,41,5,250,115,82,101,116,117,114, - 110,32,114,101,112,114,32,102,111,114,32,116,104,101,32,109, + 2,100,0,131,3,100,0,117,0,114,216,122,40,124,1,106, + 9,124,1,95,10,116,11,124,1,100,3,131,2,115,194,124, + 0,106,2,160,12,100,4,161,1,100,5,25,0,124,1,95, + 10,87,0,110,18,4,0,116,8,121,214,1,0,1,0,1, + 0,89,0,110,2,48,0,116,6,124,1,100,6,100,0,131, + 3,100,0,117,0,144,1,114,14,122,12,124,0,124,1,95, + 13,87,0,124,1,83,0,4,0,116,8,144,1,121,12,1, + 0,1,0,1,0,89,0,124,1,83,0,48,0,124,1,83, + 0,41,7,78,114,106,0,0,0,114,152,0,0,0,114,148, + 0,0,0,114,135,0,0,0,114,25,0,0,0,114,113,0, + 0,0,41,14,114,116,0,0,0,114,164,0,0,0,114,20, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,165,0, + 0,0,114,13,0,0,0,114,106,0,0,0,114,2,0,0, + 0,114,9,0,0,0,114,152,0,0,0,114,11,0,0,0, + 114,136,0,0,0,114,113,0,0,0,114,158,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,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,126,2,0,0,115,62,0, + 0,0,2,3,18,1,6,1,12,1,14,1,12,1,2,1, + 14,3,12,1,16,1,2,1,12,1,12,1,6,1,16,1, + 2,1,8,4,10,1,22,1,12,1,6,1,18,1,2,1, + 8,1,4,3,14,254,2,1,4,1,2,255,4,1,255,128, + 114,166,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,240, + 0,0,0,124,0,106,0,100,0,117,1,114,58,116,1,124, + 0,106,0,100,1,131,2,115,58,116,2,124,0,106,0,131, + 1,155,0,100,2,157,2,125,1,116,3,160,4,124,1,116, + 5,161,2,1,0,116,6,124,0,131,1,83,0,116,7,124, + 0,131,1,125,2,100,3,124,0,95,8,122,158,124,2,116, + 9,106,10,124,0,106,11,60,0,122,50,124,0,106,0,100, + 0,117,0,114,122,124,0,106,12,100,0,117,0,114,134,116, + 13,100,4,124,0,106,11,100,5,141,2,130,1,124,0,106, + 0,160,14,124,2,161,1,1,0,87,0,110,40,1,0,1, + 0,1,0,122,14,116,9,106,10,124,0,106,11,61,0,87, + 0,130,0,4,0,116,15,121,176,1,0,1,0,1,0,89, + 0,130,0,48,0,116,9,106,10,160,16,124,0,106,11,161, + 1,125,2,124,2,116,9,106,10,124,0,106,11,60,0,116, + 17,100,6,124,0,106,11,124,0,106,0,131,3,1,0,87, + 0,100,7,124,0,95,8,124,2,83,0,100,7,124,0,95, + 8,48,0,41,8,78,114,157,0,0,0,114,162,0,0,0, + 84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7,0,0, + 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, + 114,166,0,0,0,114,159,0,0,0,90,13,95,105,110,105, + 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,99, + 0,0,0,114,20,0,0,0,114,123,0,0,0,114,83,0, + 0,0,114,157,0,0,0,114,67,0,0,0,114,165,0,0, + 0,114,80,0,0,0,41,3,114,103,0,0,0,114,102,0, + 0,0,114,104,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,14,95,108,111,97,100,95,117,110, + 108,111,99,107,101,100,162,2,0,0,115,58,0,0,0,10, + 2,12,2,16,1,12,2,8,1,8,2,6,5,2,1,12, + 1,2,1,10,1,10,1,14,1,16,3,6,1,2,1,12, + 1,2,3,12,254,2,1,2,1,2,255,14,6,12,1,18, + 1,6,2,4,2,8,254,255,128,114,167,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, + 0,0,0,67,0,0,0,115,54,0,0,0,116,0,124,0, + 106,1,131,1,143,24,1,0,116,2,124,0,131,1,87,0, + 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, + 115,40,48,0,1,0,1,0,1,0,89,0,1,0,100,1, + 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, + 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, + 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, + 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, + 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, + 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, + 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, + 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, + 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, + 100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114,20,0, + 0,0,114,167,0,0,0,169,1,114,103,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,101,0, + 0,0,207,2,0,0,115,6,0,0,0,12,9,42,1,255, + 128,114,101,0,0,0,99,0,0,0,0,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, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, + 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, + 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, + 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 5,0,0,0,67,0,0,0,115,22,0,0,0,100,1,124, + 0,106,0,155,2,100,2,116,1,106,2,155,0,100,3,157, + 5,83,0,41,5,250,115,82,101,116,117,114,110,32,114,101, + 112,114,32,102,111,114,32,116,104,101,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32, + 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,32,32,84,104,101,32,105,109,112,111,114, + 116,32,109,97,99,104,105,110,101,114,121,32,100,111,101,115, + 32,116,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,8,60,109,111,100, + 117,108,101,32,122,2,32,40,122,2,41,62,78,41,3,114, + 9,0,0,0,114,169,0,0,0,114,145,0,0,0,169,1, + 114,104,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,107,0,0,0,233,2,0,0,115,4,0, + 0,0,22,7,255,128,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,0,0,0,0, + 0,4,0,0,0,5,0,0,0,67,0,0,0,115,42,0, + 0,0,124,2,100,0,117,1,114,12,100,0,83,0,116,0, + 160,1,124,1,161,1,114,38,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, + 144,0,0,0,41,4,114,61,0,0,0,90,10,105,115,95, + 98,117,105,108,116,105,110,114,98,0,0,0,114,145,0,0, + 0,169,4,218,3,99,108,115,114,85,0,0,0,218,4,112, + 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, + 95,115,112,101,99,242,2,0,0,115,12,0,0,0,8,2, + 4,1,10,1,16,1,4,2,255,128,122,25,66,117,105,108, + 116,105,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,0,0,0, + 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, + 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, + 3,100,1,117,1,114,26,124,3,106,1,83,0,100,1,83, + 0,41,2,122,175,70,105,110,100,32,116,104,101,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,73,102,32,39,112,97,116,104, + 39,32,105,115,32,101,118,101,114,32,115,112,101,99,105,102, + 105,101,100,32,116,104,101,110,32,116,104,101,32,115,101,97, + 114,99,104,32,105,115,32,99,111,110,115,105,100,101,114,101, + 100,32,97,32,102,97,105,108,117,114,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0, + 0,41,4,114,174,0,0,0,114,85,0,0,0,114,175,0, + 0,0,114,103,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,251,2,0,0,115,6,0,0,0,12,9,18,1, + 255,128,122,27,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 4,0,0,0,67,0,0,0,115,46,0,0,0,124,0,106, + 0,116,1,106,2,118,1,114,34,116,3,100,1,160,4,124, + 0,106,0,161,1,124,0,106,0,100,2,141,2,130,1,116, + 5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0, + 0,78,41,8,114,20,0,0,0,114,18,0,0,0,114,82, + 0,0,0,114,83,0,0,0,114,49,0,0,0,114,71,0, + 0,0,114,61,0,0,0,90,14,99,114,101,97,116,101,95, + 98,117,105,108,116,105,110,114,168,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,156,0,0,0, + 7,3,0,0,115,12,0,0,0,12,3,12,1,4,1,6, + 255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,16,0, + 0,0,116,0,116,1,106,2,124,0,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, + 71,0,0,0,114,61,0,0,0,90,12,101,120,101,99,95, + 98,117,105,108,116,105,110,114,171,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,157,0,0,0, + 15,3,0,0,115,4,0,0,0,16,3,255,128,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, + 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,122,57, + 82,101,116,117,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,5,0,0,0,169, + 2,114,174,0,0,0,114,85,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,103,101,116,95, + 99,111,100,101,20,3,0,0,115,4,0,0,0,4,4,255, + 128,122,24,66,117,105,108,116,105,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,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,122, + 56,82,101,116,117,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,115,111,117, + 114,99,101,32,99,111,100,101,46,78,114,5,0,0,0,114, + 179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,26, + 3,0,0,115,4,0,0,0,4,4,255,128,122,26,66,117, + 105,108,116,105,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,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,3,122,52,82,101, + 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,78,114,5,0,0,0,114,179,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,122,0, + 0,0,32,3,0,0,115,4,0,0,0,4,4,255,128,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,18,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,145,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,107,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,177,0, + 0,0,114,178,0,0,0,114,156,0,0,0,114,157,0,0, + 0,114,90,0,0,0,114,180,0,0,0,114,181,0,0,0, + 114,122,0,0,0,114,105,0,0,0,114,164,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,169,0,0,0,222,2,0,0,115,48,0,0, + 0,8,0,4,2,4,7,2,2,10,1,2,8,12,1,2, + 8,12,1,2,11,10,1,2,7,10,1,2,4,2,1,12, + 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,255, + 128,114,169,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, + 144,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, + 101,7,100,22,100,6,100,7,132,1,131,1,90,8,101,7, + 100,23,100,8,100,9,132,1,131,1,90,9,101,5,100,10, + 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, + 131,1,90,11,101,7,100,14,100,15,132,0,131,1,90,12, + 101,7,101,13,100,16,100,17,132,0,131,1,131,1,90,14, + 101,7,101,13,100,18,100,19,132,0,131,1,131,1,90,15, + 101,7,101,13,100,20,100,21,132,0,131,1,131,1,90,16, + 100,5,83,0,41,24,218,14,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,122,142,77,101,116,97,32,112,97,116, + 104,32,105,109,112,111,114,116,32,102,111,114,32,102,114,111, + 122,101,110,32,109,111,100,117,108,101,115,46,10,10,32,32, + 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, + 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, + 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, + 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, + 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, + 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, + 10,10,32,32,32,32,90,6,102,114,111,122,101,110,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,67,0,0,0,115,16,0,0,0,100,1,160,0, + 124,0,106,1,116,2,106,3,161,2,83,0,41,3,114,170, + 0,0,0,114,160,0,0,0,78,41,4,114,49,0,0,0, + 114,9,0,0,0,114,184,0,0,0,114,145,0,0,0,41, + 1,218,1,109,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,107,0,0,0,52,3,0,0,115,4,0,0, + 0,16,7,255,128,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,0,0,0,0,0,0,0,0,4, + 0,0,0,5,0,0,0,67,0,0,0,115,30,0,0,0, + 116,0,160,1,124,1,161,1,114,26,116,2,124,1,124,0, + 124,0,106,3,100,1,141,3,83,0,100,0,83,0,114,172, + 0,0,0,41,4,114,61,0,0,0,114,92,0,0,0,114, + 98,0,0,0,114,145,0,0,0,114,173,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,177,0, + 0,0,61,3,0,0,115,8,0,0,0,10,2,16,1,4, + 2,255,128,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,0,0,0,0,0,3,0,0,0,3,0, + 0,0,67,0,0,0,115,18,0,0,0,116,0,160,1,124, + 1,161,1,114,14,124,0,83,0,100,1,83,0,41,2,122, + 93,70,105,110,100,32,97,32,102,114,111,122,101,110,32,109, 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,101,32,109,101,116,104,111,100,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,46,32,32,84,104,101,32,105, - 109,112,111,114,116,32,109,97,99,104,105,110,101,114,121,32, - 100,111,101,115,32,116,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,8, - 60,109,111,100,117,108,101,32,122,2,32,40,122,2,41,62, - 78,41,3,114,9,0,0,0,114,169,0,0,0,114,145,0, - 0,0,169,1,114,104,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,107,0,0,0,233,2,0, - 0,115,4,0,0,0,22,7,255,128,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, - 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, - 0,115,42,0,0,0,124,2,100,0,117,1,114,12,100,0, - 83,0,116,0,160,1,124,1,161,1,114,38,116,2,124,1, - 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, - 169,2,78,114,144,0,0,0,41,4,114,61,0,0,0,90, - 10,105,115,95,98,117,105,108,116,105,110,114,98,0,0,0, - 114,145,0,0,0,169,4,218,3,99,108,115,114,85,0,0, - 0,218,4,112,97,116,104,218,6,116,97,114,103,101,116,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,242,2,0,0,115,12,0, - 0,0,8,2,4,1,10,1,16,1,4,2,255,128,122,25, - 66,117,105,108,116,105,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,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, - 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, - 2,125,3,124,3,100,1,117,1,114,26,124,3,106,1,83, - 0,100,1,83,0,41,2,122,175,70,105,110,100,32,116,104, - 101,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, - 112,97,116,104,39,32,105,115,32,101,118,101,114,32,115,112, - 101,99,105,102,105,101,100,32,116,104,101,110,32,116,104,101, - 32,115,101,97,114,99,104,32,105,115,32,99,111,110,115,105, - 100,101,114,101,100,32,97,32,102,97,105,108,117,114,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0, - 114,116,0,0,0,41,4,114,174,0,0,0,114,85,0,0, - 0,114,175,0,0,0,114,103,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,11,102,105,110,100, - 95,109,111,100,117,108,101,251,2,0,0,115,6,0,0,0, - 12,9,18,1,255,128,122,27,66,117,105,108,116,105,110,73, - 109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,100, + 84,104,105,115,32,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, + 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,61,0,0,0,114,92,0,0,0,41,3,114,174,0, + 0,0,114,85,0,0,0,114,175,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,178,0,0,0, + 68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,1,0,0,0,67,0, + 0,0,115,4,0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114, + 168,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,156,0,0,0,77,3,0,0,115,4,0,0, + 0,4,0,255,128,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,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,67,0,0,0,115,46,0,0, - 0,124,0,106,0,116,1,106,2,118,1,114,34,116,3,100, - 1,160,4,124,0,106,0,161,1,124,0,106,0,100,2,141, - 2,130,1,116,5,116,6,106,7,124,0,131,2,83,0,41, - 4,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,81,0,0,0, - 114,19,0,0,0,78,41,8,114,20,0,0,0,114,18,0, - 0,0,114,82,0,0,0,114,83,0,0,0,114,49,0,0, - 0,114,71,0,0,0,114,61,0,0,0,90,14,99,114,101, - 97,116,101,95,98,117,105,108,116,105,110,114,168,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 156,0,0,0,7,3,0,0,115,12,0,0,0,12,3,12, - 1,4,1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101, - 120,101,99,95,98,117,105,108,116,105,110,114,171,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 157,0,0,0,15,3,0,0,115,4,0,0,0,16,3,255, - 128,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, + 3,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, + 0,124,0,106,0,106,1,125,1,116,2,160,3,124,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,91,0,0,0,41,10,114,113,0,0,0,114,20,0, + 0,0,114,61,0,0,0,114,92,0,0,0,114,83,0,0, + 0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0, + 114,20,0,0,0,218,4,99,111,100,101,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,157,0,0,0,81, + 3,0,0,115,16,0,0,0,8,2,10,1,10,1,2,1, + 6,255,12,2,16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,67,0,0,0,115,10,0, + 0,0,116,0,124,0,124,1,131,2,83,0,41,2,122,95, + 76,111,97,100,32,97,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,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,78, + 41,1,114,105,0,0,0,114,179,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,164,0,0,0, + 90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0,67,0, + 0,0,115,10,0,0,0,116,0,160,1,124,1,161,1,83, + 0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0,0,114, + 179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,180,0,0,0,100,3,0,0,115,4,0,0, + 0,10,4,255,128,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,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,122,57,82,101,116,117,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,5, - 0,0,0,169,2,114,174,0,0,0,114,85,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, - 103,101,116,95,99,111,100,101,20,3,0,0,115,4,0,0, - 0,4,4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, - 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, - 114,99,101,26,3,0,0,115,4,0,0,0,4,4,255,128, - 122,26,66,117,105,108,116,105,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,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,3, - 122,52,82,101,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,78,114,5,0,0,0,114,179,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,122,0,0,0,32,3,0,0,115,4,0,0,0,4, - 4,255,128,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,18,114,9,0,0,0,114,8,0, - 0,0,114,1,0,0,0,114,10,0,0,0,114,145,0,0, - 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, - 107,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, - 100,114,177,0,0,0,114,178,0,0,0,114,156,0,0,0, - 114,157,0,0,0,114,90,0,0,0,114,180,0,0,0,114, - 181,0,0,0,114,122,0,0,0,114,105,0,0,0,114,164, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,169,0,0,0,222,2,0,0, - 115,48,0,0,0,8,0,4,2,4,7,2,2,10,1,2, - 8,12,1,2,8,12,1,2,11,10,1,2,7,10,1,2, - 4,2,1,12,1,2,4,2,1,12,1,2,4,2,1,12, - 1,12,4,255,128,114,169,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, - 0,0,0,115,144,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, - 131,1,90,6,101,7,100,22,100,6,100,7,132,1,131,1, - 90,8,101,7,100,23,100,8,100,9,132,1,131,1,90,9, - 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, - 100,13,132,0,131,1,90,11,101,7,100,14,100,15,132,0, - 131,1,90,12,101,7,101,13,100,16,100,17,132,0,131,1, - 131,1,90,14,101,7,101,13,100,18,100,19,132,0,131,1, - 131,1,90,15,101,7,101,13,100,20,100,21,132,0,131,1, - 131,1,90,16,100,5,83,0,41,24,218,14,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,122,142,77,101,116,97, - 32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,114, - 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,46, - 10,10,32,32,32,32,65,108,108,32,109,101,116,104,111,100, - 115,32,97,114,101,32,101,105,116,104,101,114,32,99,108,97, - 115,115,32,111,114,32,115,116,97,116,105,99,32,109,101,116, - 104,111,100,115,32,116,111,32,97,118,111,105,100,32,116,104, - 101,32,110,101,101,100,32,116,111,10,32,32,32,32,105,110, - 115,116,97,110,116,105,97,116,101,32,116,104,101,32,99,108, - 97,115,115,46,10,10,32,32,32,32,90,6,102,114,111,122, - 101,110,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,0, - 100,1,160,0,124,0,106,1,116,2,106,3,161,2,83,0, - 41,3,114,170,0,0,0,114,160,0,0,0,78,41,4,114, - 49,0,0,0,114,9,0,0,0,114,184,0,0,0,114,145, - 0,0,0,41,1,218,1,109,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,107,0,0,0,52,3,0,0, - 115,4,0,0,0,16,7,255,128,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,0,0,0,0,0, - 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, - 30,0,0,0,116,0,160,1,124,1,161,1,114,26,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,114,172,0,0,0,41,4,114,61,0,0,0,114,92, - 0,0,0,114,98,0,0,0,114,145,0,0,0,114,173,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,177,0,0,0,61,3,0,0,115,8,0,0,0,10, - 2,16,1,4,2,255,128,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,0,0,0,0,0,3,0, - 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,116, - 0,160,1,124,1,161,1,114,14,124,0,83,0,100,1,83, - 0,41,2,122,93,70,105,110,100,32,97,32,102,114,111,122, - 101,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41, - 3,114,174,0,0,0,114,85,0,0,0,114,175,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 178,0,0,0,68,3,0,0,115,4,0,0,0,18,7,255, - 128,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,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, - 2,122,42,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,5, - 0,0,0,114,168,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,156,0,0,0,77,3,0,0, - 115,4,0,0,0,4,0,255,128,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,0,0, - 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, - 115,64,0,0,0,124,0,106,0,106,1,125,1,116,2,160, - 3,124,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,91,0,0,0,41,10,114,113,0,0, - 0,114,20,0,0,0,114,61,0,0,0,114,92,0,0,0, - 114,83,0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114, - 104,0,0,0,114,20,0,0,0,218,4,99,111,100,101,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,157, - 0,0,0,81,3,0,0,115,16,0,0,0,8,2,10,1, - 10,1,2,1,6,255,12,2,16,1,255,128,122,26,70,114, - 111,122,101,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,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, - 0,115,10,0,0,0,116,0,124,0,124,1,131,2,83,0, - 41,2,122,95,76,111,97,100,32,97,32,102,114,111,122,101, - 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0, + 41,2,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,5,0,0,0, + 114,179,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,181,0,0,0,106,3,0,0,115,4,0, + 0,0,4,4,255,128,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,0,0,0,0,2,0, + 0,0,3,0,0,0,67,0,0,0,115,10,0,0,0,116, + 0,160,1,124,1,161,1,83,0,41,2,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,78,41,2,114,61, + 0,0,0,90,17,105,115,95,102,114,111,122,101,110,95,112, + 97,99,107,97,103,101,114,179,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,122,0,0,0,112, + 3,0,0,115,4,0,0,0,10,4,255,128,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,17, + 114,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, + 10,0,0,0,114,145,0,0,0,114,182,0,0,0,114,107, + 0,0,0,114,183,0,0,0,114,177,0,0,0,114,178,0, + 0,0,114,156,0,0,0,114,157,0,0,0,114,164,0,0, + 0,114,94,0,0,0,114,180,0,0,0,114,181,0,0,0, + 114,122,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,184,0,0,0,41,3, + 0,0,115,50,0,0,0,8,0,4,2,4,7,2,2,10, + 1,2,8,12,1,2,6,12,1,2,8,10,1,2,3,10, + 1,2,8,10,1,2,9,2,1,12,1,2,4,2,1,12, + 1,2,4,2,1,16,1,255,128,114,184,0,0,0,99,0, + 0,0,0,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,83,0,41,7,218,18, + 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, + 120,116,122,36,67,111,110,116,101,120,116,32,109,97,110,97, + 103,101,114,32,102,111,114,32,116,104,101,32,105,109,112,111, + 114,116,32,108,111,99,107,46,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,67,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,61,0,0,0,114,62,0,0,0,114,51,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 164,0,0,0,90,3,0,0,115,4,0,0,0,10,8,255, - 128,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,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, - 1,161,1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186, - 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,180,0,0,0,100,3,0,0, - 115,4,0,0,0,10,4,255,128,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,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,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, - 5,0,0,0,114,179,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,181,0,0,0,106,3,0, - 0,115,4,0,0,0,4,4,255,128,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,0,0, - 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, - 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,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,78, - 41,2,114,61,0,0,0,90,17,105,115,95,102,114,111,122, - 101,110,95,112,97,99,107,97,103,101,114,179,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,122, - 0,0,0,112,3,0,0,115,4,0,0,0,10,4,255,128, - 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,17,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,145,0,0,0,114,182,0, - 0,0,114,107,0,0,0,114,183,0,0,0,114,177,0,0, - 0,114,178,0,0,0,114,156,0,0,0,114,157,0,0,0, - 114,164,0,0,0,114,94,0,0,0,114,180,0,0,0,114, - 181,0,0,0,114,122,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,184,0, - 0,0,41,3,0,0,115,50,0,0,0,8,0,4,2,4, - 7,2,2,10,1,2,8,12,1,2,6,12,1,2,8,10, - 1,2,3,10,1,2,8,10,1,2,9,2,1,12,1,2, - 4,2,1,12,1,2,4,2,1,16,1,255,128,114,184,0, - 0,0,99,0,0,0,0,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,83,0, - 41,7,218,18,95,73,109,112,111,114,116,76,111,99,107,67, - 111,110,116,101,120,116,122,36,67,111,110,116,101,120,116,32, - 109,97,110,97,103,101,114,32,102,111,114,32,116,104,101,32, - 105,109,112,111,114,116,32,108,111,99,107,46,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0, - 0,67,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,61,0,0,0,114,62,0,0,0,114, - 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,58,0,0,0,125,3,0,0,115,4,0,0, - 0,12,2,255,128,122,28,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,46,95,95,101,110,116,101, - 114,95,95,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, - 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, - 60,82,101,108,101,97,115,101,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,61,0,0,0,114,64,0,0,0,41,4,114,33,0,0, - 0,218,8,101,120,99,95,116,121,112,101,218,9,101,120,99, - 95,118,97,108,117,101,218,13,101,120,99,95,116,114,97,99, - 101,98,97,99,107,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,60,0,0,0,129,3,0,0,115,4,0, - 0,0,12,2,255,128,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,9,0,0,0,114,8,0,0,0, - 114,1,0,0,0,114,10,0,0,0,114,58,0,0,0,114, - 60,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,189,0,0,0,121,3,0, - 0,115,10,0,0,0,8,0,4,2,8,2,12,4,255,128, - 114,189,0,0,0,99,3,0,0,0,0,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,3,131,1,130,1,124,3,100,4,25,0,125,4,124, - 0,114,60,100,5,160,3,124,4,124,0,161,2,83,0,124, - 4,83,0,41,7,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,135,0,0,0,114,42, - 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,99,107,97,103,101,114,25,0,0,0,250,5,123,125, - 46,123,125,78,41,4,218,6,114,115,112,108,105,116,218,3, - 108,101,110,114,83,0,0,0,114,49,0,0,0,41,5,114, - 20,0,0,0,218,7,112,97,99,107,97,103,101,218,5,108, - 101,118,101,108,90,4,98,105,116,115,90,4,98,97,115,101, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 13,95,114,101,115,111,108,118,101,95,110,97,109,101,134,3, - 0,0,115,12,0,0,0,16,2,12,1,8,1,8,1,20, - 1,255,128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1, - 124,1,124,3,131,2,83,0,114,0,0,0,0,41,2,114, - 178,0,0,0,114,98,0,0,0,41,4,218,6,102,105,110, - 100,101,114,114,20,0,0,0,114,175,0,0,0,114,116,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,17,95,102,105,110,100,95,115,112,101,99,95,108,101, - 103,97,99,121,143,3,0,0,115,10,0,0,0,12,3,8, - 1,4,1,10,1,255,128,114,200,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,0, - 0,67,0,0,0,115,28,1,0,0,116,0,106,1,125,3, - 124,3,100,1,117,0,114,22,116,2,100,2,131,1,130,1, - 124,3,115,38,116,3,160,4,100,3,116,5,161,2,1,0, - 124,0,116,0,106,6,118,0,125,4,124,3,68,0,93,226, - 125,5,116,7,131,0,143,94,1,0,122,10,124,5,106,8, - 125,6,87,0,110,54,4,0,116,9,121,128,1,0,1,0, - 1,0,116,10,124,5,124,0,124,1,131,3,125,7,124,7, - 100,1,117,0,114,124,89,0,87,0,100,1,4,0,4,0, - 131,3,1,0,113,52,89,0,110,14,48,0,124,6,124,0, - 124,1,124,2,131,3,125,7,87,0,100,1,4,0,4,0, - 131,3,1,0,110,16,49,0,115,162,48,0,1,0,1,0, - 1,0,89,0,1,0,124,7,100,1,117,1,114,52,124,4, - 144,1,115,16,124,0,116,0,106,6,118,0,144,1,114,16, - 116,0,106,6,124,0,25,0,125,8,122,10,124,8,106,11, - 125,9,87,0,110,26,4,0,116,9,121,244,1,0,1,0, - 1,0,124,7,6,0,89,0,2,0,1,0,83,0,48,0, - 124,9,100,1,117,0,144,1,114,8,124,7,2,0,1,0, - 83,0,124,9,2,0,1,0,83,0,124,7,2,0,1,0, - 83,0,100,1,83,0,41,4,122,21,70,105,110,100,32,97, - 32,109,111,100,117,108,101,39,115,32,115,112,101,99,46,78, - 122,53,115,121,115,46,109,101,116,97,95,112,97,116,104,32, - 105,115,32,78,111,110,101,44,32,80,121,116,104,111,110,32, - 105,115,32,108,105,107,101,108,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,18,0,0,0,218,9,109,101,116,97,95,112,97,116, - 104,114,83,0,0,0,114,95,0,0,0,114,96,0,0,0, - 114,163,0,0,0,114,99,0,0,0,114,189,0,0,0,114, - 177,0,0,0,114,2,0,0,0,114,200,0,0,0,114,113, - 0,0,0,41,10,114,20,0,0,0,114,175,0,0,0,114, - 176,0,0,0,114,201,0,0,0,90,9,105,115,95,114,101, - 108,111,97,100,114,199,0,0,0,114,177,0,0,0,114,103, - 0,0,0,114,104,0,0,0,114,113,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,10,95,102, - 105,110,100,95,115,112,101,99,152,3,0,0,115,56,0,0, - 0,6,2,8,1,8,2,4,3,12,1,10,5,8,1,8, - 1,2,1,10,1,12,1,12,1,8,1,22,1,42,2,8, - 1,18,2,10,1,2,1,10,1,12,1,14,4,10,2,8, - 1,8,2,8,2,4,2,255,128,114,202,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,110,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,0,114,44, - 116,5,100,3,131,1,130,1,124,2,100,2,107,4,114,82, - 116,0,124,1,116,1,131,2,115,70,116,2,100,4,131,1, - 130,1,124,1,115,82,116,6,100,5,131,1,130,1,124,0, - 115,106,124,2,100,2,107,2,114,102,116,5,100,6,131,1, - 130,1,100,7,83,0,100,7,83,0,41,8,122,28,86,101, - 114,105,102,121,32,97,114,103,117,109,101,110,116,115,32,97, - 114,101,32,34,115,97,110,101,34,46,122,31,109,111,100,117, - 108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32, - 115,116,114,44,32,110,111,116,32,123,125,114,25,0,0,0, - 122,18,108,101,118,101,108,32,109,117,115,116,32,98,101,32, - 62,61,32,48,122,31,95,95,112,97,99,107,97,103,101,95, - 95,32,110,111,116,32,115,101,116,32,116,111,32,97,32,115, - 116,114,105,110,103,122,54,97,116,116,101,109,112,116,101,100, + 58,0,0,0,125,3,0,0,115,4,0,0,0,12,2,255, + 128,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, + 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, + 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 2,0,0,0,67,0,0,0,115,12,0,0,0,116,0,160, + 1,161,0,1,0,100,1,83,0,41,2,122,60,82,101,108, + 101,97,115,101,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,61,0,0, + 0,114,64,0,0,0,41,4,114,33,0,0,0,218,8,101, + 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, + 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, + 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,60,0,0,0,129,3,0,0,115,4,0,0,0,12,2, + 255,128,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,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,58,0,0,0,114,60,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,189,0,0,0,121,3,0,0,115,10,0, + 0,0,8,0,4,2,8,2,12,4,255,128,114,189,0,0, + 0,99,3,0,0,0,0,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,3,131, + 1,130,1,124,3,100,4,25,0,125,4,124,0,114,60,100, + 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, + 7,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,135,0,0,0,114,42,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,99,107, + 97,103,101,114,25,0,0,0,250,5,123,125,46,123,125,78, + 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, + 83,0,0,0,114,49,0,0,0,41,5,114,20,0,0,0, + 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, + 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, + 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,12, + 0,0,0,16,2,12,1,8,1,8,1,20,1,255,128,114, + 198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1,124,3, + 131,2,83,0,114,0,0,0,0,41,2,114,178,0,0,0, + 114,98,0,0,0,41,4,218,6,102,105,110,100,101,114,114, + 20,0,0,0,114,175,0,0,0,114,116,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, + 102,105,110,100,95,115,112,101,99,95,108,101,103,97,99,121, + 143,3,0,0,115,10,0,0,0,12,3,8,1,4,1,10, + 1,255,128,114,200,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,10,0,0,0,10,0,0,0,67,0,0, + 0,115,28,1,0,0,116,0,106,1,125,3,124,3,100,1, + 117,0,114,22,116,2,100,2,131,1,130,1,124,3,115,38, + 116,3,160,4,100,3,116,5,161,2,1,0,124,0,116,0, + 106,6,118,0,125,4,124,3,68,0,93,226,125,5,116,7, + 131,0,143,94,1,0,122,10,124,5,106,8,125,6,87,0, + 110,54,4,0,116,9,121,128,1,0,1,0,1,0,116,10, + 124,5,124,0,124,1,131,3,125,7,124,7,100,1,117,0, + 114,124,89,0,87,0,100,1,4,0,4,0,131,3,1,0, + 113,52,89,0,110,14,48,0,124,6,124,0,124,1,124,2, + 131,3,125,7,87,0,100,1,4,0,4,0,131,3,1,0, + 110,16,49,0,115,162,48,0,1,0,1,0,1,0,89,0, + 1,0,124,7,100,1,117,1,114,52,124,4,144,1,115,16, + 124,0,116,0,106,6,118,0,144,1,114,16,116,0,106,6, + 124,0,25,0,125,8,122,10,124,8,106,11,125,9,87,0, + 110,26,4,0,116,9,121,244,1,0,1,0,1,0,124,7, + 6,0,89,0,2,0,1,0,83,0,48,0,124,9,100,1, + 117,0,144,1,114,8,124,7,2,0,1,0,83,0,124,9, + 2,0,1,0,83,0,124,7,2,0,1,0,83,0,100,1, + 83,0,41,4,122,21,70,105,110,100,32,97,32,109,111,100, + 117,108,101,39,115,32,115,112,101,99,46,78,122,53,115,121, + 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,78, + 111,110,101,44,32,80,121,116,104,111,110,32,105,115,32,108, + 105,107,101,108,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,18,0, + 0,0,218,9,109,101,116,97,95,112,97,116,104,114,83,0, + 0,0,114,95,0,0,0,114,96,0,0,0,114,163,0,0, + 0,114,99,0,0,0,114,189,0,0,0,114,177,0,0,0, + 114,2,0,0,0,114,200,0,0,0,114,113,0,0,0,41, + 10,114,20,0,0,0,114,175,0,0,0,114,176,0,0,0, + 114,201,0,0,0,90,9,105,115,95,114,101,108,111,97,100, + 114,199,0,0,0,114,177,0,0,0,114,103,0,0,0,114, + 104,0,0,0,114,113,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,10,95,102,105,110,100,95, + 115,112,101,99,152,3,0,0,115,56,0,0,0,6,2,8, + 1,8,2,4,3,12,1,10,5,8,1,8,1,2,1,10, + 1,12,1,12,1,8,1,22,1,42,2,8,1,18,2,10, + 1,2,1,10,1,12,1,14,4,10,2,8,1,8,2,8, + 2,4,2,255,128,114,202,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,67, + 0,0,0,115,110,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,0,114,44,116,5,100,3, + 131,1,130,1,124,2,100,2,107,4,114,82,116,0,124,1, + 116,1,131,2,115,70,116,2,100,4,131,1,130,1,124,1, + 115,82,116,6,100,5,131,1,130,1,124,0,115,106,124,2, + 100,2,107,2,114,102,116,5,100,6,131,1,130,1,100,7, + 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, + 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, + 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, + 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, + 32,110,111,116,32,123,125,114,25,0,0,0,122,18,108,101, + 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, + 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, + 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, + 103,122,54,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,119,105,116, + 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, + 116,32,112,97,99,107,97,103,101,122,17,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,49,0,0,0, + 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, + 114,114,83,0,0,0,169,3,114,20,0,0,0,114,196,0, + 0,0,114,197,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, + 99,104,101,99,107,199,3,0,0,115,26,0,0,0,10,2, + 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, + 12,2,8,1,8,255,255,128,114,208,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,0,0, + 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,20, + 1,0,0,100,0,125,2,124,0,160,0,100,1,161,1,100, + 2,25,0,125,3,124,3,114,128,124,3,116,1,106,2,118, + 1,114,42,116,3,124,1,124,3,131,2,1,0,124,0,116, + 1,106,2,118,0,114,62,116,1,106,2,124,0,25,0,83, + 0,116,1,106,2,124,3,25,0,125,4,122,10,124,4,106, + 4,125,2,87,0,110,44,4,0,116,5,121,126,1,0,1, + 0,1,0,116,6,100,3,23,0,160,7,124,0,124,3,161, + 2,125,5,116,8,124,5,124,0,100,4,141,2,100,0,130, + 2,48,0,116,9,124,0,124,2,131,2,125,6,124,6,100, + 0,117,0,114,164,116,8,116,6,160,7,124,0,161,1,124, + 0,100,4,141,2,130,1,116,10,124,6,131,1,125,7,124, + 3,144,1,114,16,116,1,106,2,124,3,25,0,125,4,124, + 0,160,0,100,1,161,1,100,5,25,0,125,8,122,18,116, + 11,124,4,124,8,124,7,131,3,1,0,87,0,124,7,83, + 0,4,0,116,5,144,1,121,14,1,0,1,0,1,0,100, + 6,124,3,155,2,100,7,124,8,155,2,157,4,125,5,116, + 12,160,13,124,5,116,14,161,2,1,0,89,0,124,7,83, + 0,48,0,124,7,83,0,41,8,78,114,135,0,0,0,114, + 25,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,19,0, + 0,0,233,2,0,0,0,122,27,67,97,110,110,111,116,32, + 115,101,116,32,97,110,32,97,116,116,114,105,98,117,116,101, + 32,111,110,32,122,18,32,102,111,114,32,99,104,105,108,100, + 32,109,111,100,117,108,101,32,41,15,114,136,0,0,0,114, + 18,0,0,0,114,99,0,0,0,114,71,0,0,0,114,148, + 0,0,0,114,2,0,0,0,218,8,95,69,82,82,95,77, + 83,71,114,49,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,202,0,0, + 0,114,167,0,0,0,114,12,0,0,0,114,95,0,0,0, + 114,96,0,0,0,114,163,0,0,0,41,9,114,20,0,0, + 0,218,7,105,109,112,111,114,116,95,114,175,0,0,0,114, + 137,0,0,0,90,13,112,97,114,101,110,116,95,109,111,100, + 117,108,101,114,102,0,0,0,114,103,0,0,0,114,104,0, + 0,0,90,5,99,104,105,108,100,114,5,0,0,0,114,5, + 0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1,14,1,4,1, + 10,1,10,1,10,2,10,1,10,1,2,1,10,1,12,1, + 16,1,16,1,10,1,8,1,18,1,8,2,6,1,10,2, + 14,1,2,1,14,1,4,4,14,253,16,1,14,1,4,1, + 2,255,4,1,255,128,114,213,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0, + 67,0,0,0,115,128,0,0,0,116,0,124,0,131,1,143, + 62,1,0,116,1,106,2,160,3,124,0,116,4,161,2,125, + 2,124,2,116,4,117,0,114,56,116,5,124,0,124,1,131, + 2,87,0,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,87,0,100,1,4,0,4,0,131,3,1,0,110,16,49, + 0,115,76,48,0,1,0,1,0,1,0,89,0,1,0,124, + 2,100,1,117,0,114,116,100,2,160,6,124,0,161,1,125, + 3,116,7,124,3,124,0,100,3,141,2,130,1,116,8,124, + 0,131,1,1,0,124,2,83,0,41,4,122,25,70,105,110, + 100,32,97,110,100,32,108,111,97,100,32,116,104,101,32,109, + 111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0,0,114,18,0, + 0,0,114,99,0,0,0,114,38,0,0,0,218,14,95,78, + 69,69,68,83,95,76,79,65,68,73,78,71,114,213,0,0, + 0,114,49,0,0,0,114,211,0,0,0,114,69,0,0,0, + 41,4,114,20,0,0,0,114,212,0,0,0,114,104,0,0, + 0,114,79,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,14,95,102,105,110,100,95,97,110,100, + 95,108,111,97,100,253,3,0,0,115,24,0,0,0,10,2, + 14,1,8,1,54,1,8,2,4,1,2,1,4,255,12,2, + 8,2,4,1,255,128,114,215,0,0,0,114,25,0,0,0, + 99,3,0,0,0,0,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,3,125,0,116,2, + 124,0,116,3,131,2,83,0,41,3,97,50,1,0,0,73, + 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110, + 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101, + 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116, + 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99, + 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103, + 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32, + 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116, + 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32, + 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101, + 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116, + 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97, + 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97, + 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110, + 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97, + 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84, + 104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0,0,0,114,198, + 0,0,0,114,215,0,0,0,218,11,95,103,99,100,95,105, + 109,112,111,114,116,114,207,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,216,0,0,0,13,4, + 0,0,115,10,0,0,0,12,9,8,1,12,1,10,1,255, + 128,114,216,0,0,0,169,1,218,9,114,101,99,117,114,115, + 105,118,101,99,3,0,0,0,0,0,0,0,1,0,0,0, + 8,0,0,0,11,0,0,0,67,0,0,0,115,216,0,0, + 0,124,1,68,0,93,204,125,4,116,0,124,4,116,1,131, + 2,115,64,124,3,114,34,124,0,106,2,100,1,23,0,125, + 5,110,4,100,2,125,5,116,3,100,3,124,5,155,0,100, + 4,116,4,124,4,131,1,106,2,155,0,157,4,131,1,130, + 1,124,4,100,5,107,2,114,106,124,3,115,4,116,5,124, + 0,100,6,131,2,114,4,116,6,124,0,124,0,106,7,124, + 2,100,7,100,8,141,4,1,0,113,4,116,5,124,0,124, + 4,131,2,115,4,100,9,160,8,124,0,106,2,124,4,161, + 2,125,6,122,14,116,9,124,2,124,6,131,2,1,0,87, + 0,113,4,4,0,116,10,121,214,1,0,125,7,1,0,122, + 42,124,7,106,11,124,6,107,2,114,200,116,12,106,13,160, + 14,124,6,116,15,161,2,100,10,117,1,114,200,87,0,89, + 0,100,10,125,7,126,7,113,4,130,0,100,10,125,7,126, + 7,48,0,124,0,83,0,48,0,41,11,122,238,70,105,103, + 117,114,101,32,111,117,116,32,119,104,97,116,32,95,95,105, + 109,112,111,114,116,95,95,32,115,104,111,117,108,100,32,114, + 101,116,117,114,110,46,10,10,32,32,32,32,84,104,101,32, + 105,109,112,111,114,116,95,32,112,97,114,97,109,101,116,101, + 114,32,105,115,32,97,32,99,97,108,108,97,98,108,101,32, + 119,104,105,99,104,32,116,97,107,101,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,109,111,100,117,108,101,32,116, + 111,10,32,32,32,32,105,109,112,111,114,116,46,32,73,116, + 32,105,115,32,114,101,113,117,105,114,101,100,32,116,111,32, + 100,101,99,111,117,112,108,101,32,116,104,101,32,102,117,110, + 99,116,105,111,110,32,102,114,111,109,32,97,115,115,117,109, + 105,110,103,32,105,109,112,111,114,116,108,105,98,39,115,10, + 32,32,32,32,105,109,112,111,114,116,32,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,32,105,115,32,100,101,115, + 105,114,101,100,46,10,10,32,32,32,32,122,8,46,95,95, + 97,108,108,95,95,122,13,96,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, + 217,0,0,0,114,193,0,0,0,78,41,16,114,203,0,0, + 0,114,204,0,0,0,114,9,0,0,0,114,205,0,0,0, + 114,3,0,0,0,114,11,0,0,0,218,16,95,104,97,110, + 100,108,101,95,102,114,111,109,108,105,115,116,114,220,0,0, + 0,114,49,0,0,0,114,71,0,0,0,114,211,0,0,0, + 114,20,0,0,0,114,18,0,0,0,114,99,0,0,0,114, + 38,0,0,0,114,214,0,0,0,41,8,114,104,0,0,0, + 218,8,102,114,111,109,108,105,115,116,114,212,0,0,0,114, + 218,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,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,221,0, + 0,0,28,4,0,0,115,54,0,0,0,8,10,10,1,4, + 1,12,1,4,2,10,1,8,1,8,255,8,2,14,1,10, + 1,2,1,8,255,10,2,14,1,2,1,14,1,14,1,10, + 4,16,1,2,255,12,2,2,1,8,128,4,1,2,248,255, + 128,114,221,0,0,0,99,1,0,0,0,0,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,117,1,114,82, + 124,2,100,3,117,1,114,78,124,1,124,2,106,1,107,3, + 114,78,116,2,106,3,100,4,124,1,155,2,100,5,124,2, + 106,1,155,2,100,6,157,5,116,4,100,7,100,8,141,3, + 1,0,124,1,83,0,124,2,100,3,117,1,114,96,124,2, + 106,1,83,0,116,2,106,3,100,9,116,4,100,7,100,8, + 141,3,1,0,124,0,100,10,25,0,125,1,100,11,124,0, + 118,1,114,142,124,1,160,5,100,12,161,1,100,13,25,0, + 125,1,124,1,83,0,41,14,122,167,67,97,108,99,117,108, + 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, + 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, + 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, + 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, + 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, + 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, + 32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89,99,97,110,39, + 116,32,114,101,115,111,108,118,101,32,112,97,99,107,97,103, + 101,32,102,114,111,109,32,95,95,115,112,101,99,95,95,32, + 111,114,32,95,95,112,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,9,0,0,0,114,148,0,0,0,114, + 135,0,0,0,114,25,0,0,0,41,6,114,38,0,0,0, + 114,137,0,0,0,114,95,0,0,0,114,96,0,0,0,114, + 163,0,0,0,114,136,0,0,0,41,3,218,7,103,108,111, + 98,97,108,115,114,196,0,0,0,114,103,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, + 99,97,108,99,95,95,95,112,97,99,107,97,103,101,95,95, + 65,4,0,0,115,44,0,0,0,10,7,10,1,8,1,18, + 1,6,1,2,1,4,255,4,1,6,255,4,2,6,254,4, + 3,8,1,6,1,6,2,4,2,6,254,8,3,8,1,14, + 1,4,1,255,128,114,227,0,0,0,114,5,0,0,0,99, + 5,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 5,0,0,0,67,0,0,0,115,174,0,0,0,124,4,100, + 1,107,2,114,18,116,0,124,0,131,1,125,5,110,36,124, + 1,100,2,117,1,114,30,124,1,110,2,105,0,125,6,116, + 1,124,6,131,1,125,7,116,0,124,0,124,7,124,4,131, + 3,125,5,124,3,115,148,124,4,100,1,107,2,114,84,116, + 0,124,0,160,2,100,3,161,1,100,1,25,0,131,1,83, + 0,124,0,115,92,124,5,83,0,116,3,124,0,131,1,116, + 3,124,0,160,2,100,3,161,1,100,1,25,0,131,1,24, + 0,125,8,116,4,106,5,124,5,106,6,100,2,116,3,124, + 5,106,6,131,1,124,8,24,0,133,2,25,0,25,0,83, + 0,116,7,124,5,100,4,131,2,114,170,116,8,124,5,124, + 3,116,0,131,3,83,0,124,5,83,0,41,5,97,215,1, + 0,0,73,109,112,111,114,116,32,97,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,84,104,101,32,39,103,108,111, + 98,97,108,115,39,32,97,114,103,117,109,101,110,116,32,105, + 115,32,117,115,101,100,32,116,111,32,105,110,102,101,114,32, + 119,104,101,114,101,32,116,104,101,32,105,109,112,111,114,116, + 32,105,115,32,111,99,99,117,114,114,105,110,103,32,102,114, + 111,109,10,32,32,32,32,116,111,32,104,97,110,100,108,101, 32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,116, - 32,119,105,116,104,32,110,111,32,107,110,111,119,110,32,112, - 97,114,101,110,116,32,112,97,99,107,97,103,101,122,17,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, - 49,0,0,0,114,3,0,0,0,218,10,86,97,108,117,101, - 69,114,114,111,114,114,83,0,0,0,169,3,114,20,0,0, - 0,114,196,0,0,0,114,197,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,13,95,115,97,110, - 105,116,121,95,99,104,101,99,107,199,3,0,0,115,26,0, - 0,0,10,2,18,1,8,1,8,1,8,1,10,1,8,1, - 4,1,8,1,12,2,8,1,8,255,255,128,114,208,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,0,0,0,0,9,0,0,0,8,0,0,0,67,0, - 0,0,115,20,1,0,0,100,0,125,2,124,0,160,0,100, - 1,161,1,100,2,25,0,125,3,124,3,114,128,124,3,116, - 1,106,2,118,1,114,42,116,3,124,1,124,3,131,2,1, - 0,124,0,116,1,106,2,118,0,114,62,116,1,106,2,124, - 0,25,0,83,0,116,1,106,2,124,3,25,0,125,4,122, - 10,124,4,106,4,125,2,87,0,110,44,4,0,116,5,121, - 126,1,0,1,0,1,0,116,6,100,3,23,0,160,7,124, - 0,124,3,161,2,125,5,116,8,124,5,124,0,100,4,141, - 2,100,0,130,2,48,0,116,9,124,0,124,2,131,2,125, - 6,124,6,100,0,117,0,114,164,116,8,116,6,160,7,124, - 0,161,1,124,0,100,4,141,2,130,1,116,10,124,6,131, - 1,125,7,124,3,144,1,114,16,116,1,106,2,124,3,25, - 0,125,4,124,0,160,0,100,1,161,1,100,5,25,0,125, - 8,122,18,116,11,124,4,124,8,124,7,131,3,1,0,87, - 0,124,7,83,0,4,0,116,5,144,1,121,14,1,0,1, - 0,1,0,100,6,124,3,155,2,100,7,124,8,155,2,157, - 4,125,5,116,12,160,13,124,5,116,14,161,2,1,0,89, - 0,124,7,83,0,48,0,124,7,83,0,41,8,78,114,135, - 0,0,0,114,25,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,19,0,0,0,233,2,0,0,0,122,27,67,97,110, - 110,111,116,32,115,101,116,32,97,110,32,97,116,116,114,105, - 98,117,116,101,32,111,110,32,122,18,32,102,111,114,32,99, - 104,105,108,100,32,109,111,100,117,108,101,32,41,15,114,136, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,71,0, - 0,0,114,148,0,0,0,114,2,0,0,0,218,8,95,69, - 82,82,95,77,83,71,114,49,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,202,0,0,0,114,167,0,0,0,114,12,0,0,0,114, - 95,0,0,0,114,96,0,0,0,114,163,0,0,0,41,9, - 114,20,0,0,0,218,7,105,109,112,111,114,116,95,114,175, - 0,0,0,114,137,0,0,0,90,13,112,97,114,101,110,116, - 95,109,111,100,117,108,101,114,102,0,0,0,114,103,0,0, - 0,114,104,0,0,0,90,5,99,104,105,108,100,114,5,0, - 0,0,114,5,0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1, - 14,1,4,1,10,1,10,1,10,2,10,1,10,1,2,1, - 10,1,12,1,16,1,16,1,10,1,8,1,18,1,8,2, - 6,1,10,2,14,1,2,1,14,1,4,4,14,253,16,1, - 14,1,4,1,2,255,4,1,255,128,114,213,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, - 0,131,1,143,62,1,0,116,1,106,2,160,3,124,0,116, - 4,161,2,125,2,124,2,116,4,117,0,114,56,116,5,124, - 0,124,1,131,2,87,0,2,0,100,1,4,0,4,0,131, - 3,1,0,83,0,87,0,100,1,4,0,4,0,131,3,1, - 0,110,16,49,0,115,76,48,0,1,0,1,0,1,0,89, - 0,1,0,124,2,100,1,117,0,114,116,100,2,160,6,124, - 0,161,1,125,3,116,7,124,3,124,0,100,3,141,2,130, - 1,116,8,124,0,131,1,1,0,124,2,83,0,41,4,122, - 25,70,105,110,100,32,97,110,100,32,108,111,97,100,32,116, - 104,101,32,109,111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, - 218,14,95,78,69,69,68,83,95,76,79,65,68,73,78,71, - 114,213,0,0,0,114,49,0,0,0,114,211,0,0,0,114, - 69,0,0,0,41,4,114,20,0,0,0,114,212,0,0,0, - 114,104,0,0,0,114,79,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,14,95,102,105,110,100, - 95,97,110,100,95,108,111,97,100,253,3,0,0,115,24,0, - 0,0,10,2,14,1,8,1,54,1,8,2,4,1,2,1, - 4,255,12,2,8,2,4,1,255,128,114,215,0,0,0,114, - 25,0,0,0,99,3,0,0,0,0,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,3, - 125,0,116,2,124,0,116,3,131,2,83,0,41,3,97,50, - 1,0,0,73,109,112,111,114,116,32,97,110,100,32,114,101, - 116,117,114,110,32,116,104,101,32,109,111,100,117,108,101,32, - 98,97,115,101,100,32,111,110,32,105,116,115,32,110,97,109, - 101,44,32,116,104,101,32,112,97,99,107,97,103,101,32,116, - 104,101,32,99,97,108,108,32,105,115,10,32,32,32,32,98, - 101,105,110,103,32,109,97,100,101,32,102,114,111,109,44,32, - 97,110,100,32,116,104,101,32,108,101,118,101,108,32,97,100, - 106,117,115,116,109,101,110,116,46,10,10,32,32,32,32,84, - 104,105,115,32,102,117,110,99,116,105,111,110,32,114,101,112, - 114,101,115,101,110,116,115,32,116,104,101,32,103,114,101,97, - 116,101,115,116,32,99,111,109,109,111,110,32,100,101,110,111, - 109,105,110,97,116,111,114,32,111,102,32,102,117,110,99,116, - 105,111,110,97,108,105,116,121,10,32,32,32,32,98,101,116, - 119,101,101,110,32,105,109,112,111,114,116,95,109,111,100,117, - 108,101,32,97,110,100,32,95,95,105,109,112,111,114,116,95, - 95,46,32,84,104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0, - 0,0,114,198,0,0,0,114,215,0,0,0,218,11,95,103, - 99,100,95,105,109,112,111,114,116,114,207,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,216,0, - 0,0,13,4,0,0,115,10,0,0,0,12,9,8,1,12, - 1,10,1,255,128,114,216,0,0,0,169,1,218,9,114,101, - 99,117,114,115,105,118,101,99,3,0,0,0,0,0,0,0, - 1,0,0,0,8,0,0,0,11,0,0,0,67,0,0,0, - 115,216,0,0,0,124,1,68,0,93,204,125,4,116,0,124, - 4,116,1,131,2,115,64,124,3,114,34,124,0,106,2,100, - 1,23,0,125,5,110,4,100,2,125,5,116,3,100,3,124, - 5,155,0,100,4,116,4,124,4,131,1,106,2,155,0,157, - 4,131,1,130,1,124,4,100,5,107,2,114,106,124,3,115, - 4,116,5,124,0,100,6,131,2,114,4,116,6,124,0,124, - 0,106,7,124,2,100,7,100,8,141,4,1,0,113,4,116, - 5,124,0,124,4,131,2,115,4,100,9,160,8,124,0,106, - 2,124,4,161,2,125,6,122,14,116,9,124,2,124,6,131, - 2,1,0,87,0,113,4,4,0,116,10,121,214,1,0,125, - 7,1,0,122,42,124,7,106,11,124,6,107,2,114,200,116, - 12,106,13,160,14,124,6,116,15,161,2,100,10,117,1,114, - 200,87,0,89,0,100,10,125,7,126,7,113,4,130,0,100, - 10,125,7,126,7,48,0,124,0,83,0,48,0,41,11,122, - 238,70,105,103,117,114,101,32,111,117,116,32,119,104,97,116, - 32,95,95,105,109,112,111,114,116,95,95,32,115,104,111,117, - 108,100,32,114,101,116,117,114,110,46,10,10,32,32,32,32, - 84,104,101,32,105,109,112,111,114,116,95,32,112,97,114,97, - 109,101,116,101,114,32,105,115,32,97,32,99,97,108,108,97, - 98,108,101,32,119,104,105,99,104,32,116,97,107,101,115,32, - 116,104,101,32,110,97,109,101,32,111,102,32,109,111,100,117, - 108,101,32,116,111,10,32,32,32,32,105,109,112,111,114,116, - 46,32,73,116,32,105,115,32,114,101,113,117,105,114,101,100, - 32,116,111,32,100,101,99,111,117,112,108,101,32,116,104,101, - 32,102,117,110,99,116,105,111,110,32,102,114,111,109,32,97, - 115,115,117,109,105,110,103,32,105,109,112,111,114,116,108,105, - 98,39,115,10,32,32,32,32,105,109,112,111,114,116,32,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,32,105,115, - 32,100,101,115,105,114,101,100,46,10,10,32,32,32,32,122, - 8,46,95,95,97,108,108,95,95,122,13,96,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,217,0,0,0,114,193,0,0,0,78,41,16, - 114,203,0,0,0,114,204,0,0,0,114,9,0,0,0,114, - 205,0,0,0,114,3,0,0,0,114,11,0,0,0,218,16, - 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116, - 114,220,0,0,0,114,49,0,0,0,114,71,0,0,0,114, - 211,0,0,0,114,20,0,0,0,114,18,0,0,0,114,99, - 0,0,0,114,38,0,0,0,114,214,0,0,0,41,8,114, - 104,0,0,0,218,8,102,114,111,109,108,105,115,116,114,212, - 0,0,0,114,218,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,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,221,0,0,0,28,4,0,0,115,54,0,0,0,8, - 10,10,1,4,1,12,1,4,2,10,1,8,1,8,255,8, - 2,14,1,10,1,2,1,8,255,10,2,14,1,2,1,14, - 1,14,1,10,4,16,1,2,255,12,2,2,1,8,128,4, - 1,2,248,255,128,114,221,0,0,0,99,1,0,0,0,0, - 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, - 117,1,114,82,124,2,100,3,117,1,114,78,124,1,124,2, - 106,1,107,3,114,78,116,2,106,3,100,4,124,1,155,2, - 100,5,124,2,106,1,155,2,100,6,157,5,116,4,100,7, - 100,8,141,3,1,0,124,1,83,0,124,2,100,3,117,1, - 114,96,124,2,106,1,83,0,116,2,106,3,100,9,116,4, - 100,7,100,8,141,3,1,0,124,0,100,10,25,0,125,1, - 100,11,124,0,118,1,114,142,124,1,160,5,100,12,161,1, - 100,13,25,0,125,1,124,1,83,0,41,14,122,167,67,97, - 108,99,117,108,97,116,101,32,119,104,97,116,32,95,95,112, - 97,99,107,97,103,101,95,95,32,115,104,111,117,108,100,32, - 98,101,46,10,10,32,32,32,32,95,95,112,97,99,107,97, - 103,101,95,95,32,105,115,32,110,111,116,32,103,117,97,114, - 97,110,116,101,101,100,32,116,111,32,98,101,32,100,101,102, - 105,110,101,100,32,111,114,32,99,111,117,108,100,32,98,101, - 32,115,101,116,32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89, - 99,97,110,39,116,32,114,101,115,111,108,118,101,32,112,97, - 99,107,97,103,101,32,102,114,111,109,32,95,95,115,112,101, - 99,95,95,32,111,114,32,95,95,112,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,9,0,0,0,114,148, - 0,0,0,114,135,0,0,0,114,25,0,0,0,41,6,114, - 38,0,0,0,114,137,0,0,0,114,95,0,0,0,114,96, - 0,0,0,114,163,0,0,0,114,136,0,0,0,41,3,218, - 7,103,108,111,98,97,108,115,114,196,0,0,0,114,103,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,17,95,99,97,108,99,95,95,95,112,97,99,107,97, - 103,101,95,95,65,4,0,0,115,44,0,0,0,10,7,10, - 1,8,1,18,1,6,1,2,1,4,255,4,1,6,255,4, - 2,6,254,4,3,8,1,6,1,6,2,4,2,6,254,8, - 3,8,1,14,1,4,1,255,128,114,227,0,0,0,114,5, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,5,0,0,0,67,0,0,0,115,174,0,0, - 0,124,4,100,1,107,2,114,18,116,0,124,0,131,1,125, - 5,110,36,124,1,100,2,117,1,114,30,124,1,110,2,105, - 0,125,6,116,1,124,6,131,1,125,7,116,0,124,0,124, - 7,124,4,131,3,125,5,124,3,115,148,124,4,100,1,107, - 2,114,84,116,0,124,0,160,2,100,3,161,1,100,1,25, - 0,131,1,83,0,124,0,115,92,124,5,83,0,116,3,124, - 0,131,1,116,3,124,0,160,2,100,3,161,1,100,1,25, - 0,131,1,24,0,125,8,116,4,106,5,124,5,106,6,100, - 2,116,3,124,5,106,6,131,1,124,8,24,0,133,2,25, - 0,25,0,83,0,116,7,124,5,100,4,131,2,114,170,116, - 8,124,5,124,3,116,0,131,3,83,0,124,5,83,0,41, - 5,97,215,1,0,0,73,109,112,111,114,116,32,97,32,109, - 111,100,117,108,101,46,10,10,32,32,32,32,84,104,101,32, - 39,103,108,111,98,97,108,115,39,32,97,114,103,117,109,101, - 110,116,32,105,115,32,117,115,101,100,32,116,111,32,105,110, - 102,101,114,32,119,104,101,114,101,32,116,104,101,32,105,109, - 112,111,114,116,32,105,115,32,111,99,99,117,114,114,105,110, - 103,32,102,114,111,109,10,32,32,32,32,116,111,32,104,97, - 110,100,108,101,32,114,101,108,97,116,105,118,101,32,105,109, - 112,111,114,116,115,46,32,84,104,101,32,39,108,111,99,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 105,103,110,111,114,101,100,46,32,84,104,101,10,32,32,32, - 32,39,102,114,111,109,108,105,115,116,39,32,97,114,103,117, - 109,101,110,116,32,115,112,101,99,105,102,105,101,115,32,119, - 104,97,116,32,115,104,111,117,108,100,32,101,120,105,115,116, - 32,97,115,32,97,116,116,114,105,98,117,116,101,115,32,111, - 110,32,116,104,101,32,109,111,100,117,108,101,10,32,32,32, - 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,32, - 40,101,46,103,46,32,96,96,102,114,111,109,32,109,111,100, - 117,108,101,32,105,109,112,111,114,116,32,60,102,114,111,109, - 108,105,115,116,62,96,96,41,46,32,32,84,104,101,32,39, - 108,101,118,101,108,39,10,32,32,32,32,97,114,103,117,109, - 101,110,116,32,114,101,112,114,101,115,101,110,116,115,32,116, - 104,101,32,112,97,99,107,97,103,101,32,108,111,99,97,116, - 105,111,110,32,116,111,32,105,109,112,111,114,116,32,102,114, - 111,109,32,105,110,32,97,32,114,101,108,97,116,105,118,101, - 10,32,32,32,32,105,109,112,111,114,116,32,40,101,46,103, - 46,32,96,96,102,114,111,109,32,46,46,112,107,103,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,25,0, - 0,0,78,114,135,0,0,0,114,148,0,0,0,41,9,114, - 216,0,0,0,114,227,0,0,0,218,9,112,97,114,116,105, - 116,105,111,110,114,195,0,0,0,114,18,0,0,0,114,99, - 0,0,0,114,9,0,0,0,114,11,0,0,0,114,221,0, - 0,0,41,9,114,20,0,0,0,114,226,0,0,0,218,6, - 108,111,99,97,108,115,114,222,0,0,0,114,197,0,0,0, - 114,104,0,0,0,90,8,103,108,111,98,97,108,115,95,114, - 196,0,0,0,90,7,99,117,116,95,111,102,102,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,10,95,95, - 105,109,112,111,114,116,95,95,92,4,0,0,115,32,0,0, - 0,8,11,10,1,16,2,8,1,12,1,4,1,8,3,18, - 1,4,1,4,1,26,4,30,3,10,1,12,1,4,2,255, - 128,114,230,0,0,0,99,1,0,0,0,0,0,0,0,0, + 115,46,32,84,104,101,32,39,108,111,99,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, + 114,101,100,46,32,84,104,101,10,32,32,32,32,39,102,114, + 111,109,108,105,115,116,39,32,97,114,103,117,109,101,110,116, + 32,115,112,101,99,105,102,105,101,115,32,119,104,97,116,32, + 115,104,111,117,108,100,32,101,120,105,115,116,32,97,115,32, + 97,116,116,114,105,98,117,116,101,115,32,111,110,32,116,104, + 101,32,109,111,100,117,108,101,10,32,32,32,32,98,101,105, + 110,103,32,105,109,112,111,114,116,101,100,32,40,101,46,103, + 46,32,96,96,102,114,111,109,32,109,111,100,117,108,101,32, + 105,109,112,111,114,116,32,60,102,114,111,109,108,105,115,116, + 62,96,96,41,46,32,32,84,104,101,32,39,108,101,118,101, + 108,39,10,32,32,32,32,97,114,103,117,109,101,110,116,32, + 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,112, + 97,99,107,97,103,101,32,108,111,99,97,116,105,111,110,32, + 116,111,32,105,109,112,111,114,116,32,102,114,111,109,32,105, + 110,32,97,32,114,101,108,97,116,105,118,101,10,32,32,32, + 32,105,109,112,111,114,116,32,40,101,46,103,46,32,96,96, + 102,114,111,109,32,46,46,112,107,103,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,25,0,0,0,78,114, + 135,0,0,0,114,148,0,0,0,41,9,114,216,0,0,0, + 114,227,0,0,0,218,9,112,97,114,116,105,116,105,111,110, + 114,195,0,0,0,114,18,0,0,0,114,99,0,0,0,114, + 9,0,0,0,114,11,0,0,0,114,221,0,0,0,41,9, + 114,20,0,0,0,114,226,0,0,0,218,6,108,111,99,97, + 108,115,114,222,0,0,0,114,197,0,0,0,114,104,0,0, + 0,90,8,103,108,111,98,97,108,115,95,114,196,0,0,0, + 90,7,99,117,116,95,111,102,102,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,10,95,95,105,109,112,111, + 114,116,95,95,92,4,0,0,115,32,0,0,0,8,11,10, + 1,16,2,8,1,12,1,4,1,8,3,18,1,4,1,4, + 1,26,4,30,3,10,1,12,1,4,2,255,128,114,230,0, + 0,0,99,1,0,0,0,0,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,117,0, + 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,169,0,0,0,114,177,0,0,0, + 114,83,0,0,0,114,167,0,0,0,41,2,114,20,0,0, + 0,114,103,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,18,95,98,117,105,108,116,105,110,95, + 102,114,111,109,95,110,97,109,101,129,4,0,0,115,10,0, + 0,0,10,1,8,1,12,1,8,1,255,128,114,231,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, + 0,0,5,0,0,0,67,0,0,0,115,164,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,0,68,0,93,70,92,2,125,3,125, + 4,116,5,124,4,124,2,131,2,114,26,124,3,116,1,106, + 6,118,0,114,60,116,7,125,5,110,16,116,0,160,8,124, + 3,161,1,114,26,116,9,125,5,110,0,116,10,124,4,124, + 5,131,2,125,6,116,11,124,6,124,4,131,2,1,0,113, + 26,116,1,106,3,116,12,25,0,125,7,100,1,68,0,93, + 46,125,8,124,8,116,1,106,3,118,1,114,136,116,13,124, + 8,131,1,125,9,110,10,116,1,106,3,124,8,25,0,125, + 9,116,14,124,7,124,8,124,9,131,3,1,0,113,112,100, + 2,83,0,41,3,122,250,83,101,116,117,112,32,105,109,112, + 111,114,116,108,105,98,32,98,121,32,105,109,112,111,114,116, + 105,110,103,32,110,101,101,100,101,100,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,97,110,100,32, + 105,110,106,101,99,116,105,110,103,32,116,104,101,109,10,32, + 32,32,32,105,110,116,111,32,116,104,101,32,103,108,111,98, + 97,108,32,110,97,109,101,115,112,97,99,101,46,10,10,32, + 32,32,32,65,115,32,115,121,115,32,105,115,32,110,101,101, + 100,101,100,32,102,111,114,32,115,121,115,46,109,111,100,117, + 108,101,115,32,97,99,99,101,115,115,32,97,110,100,32,95, + 105,109,112,32,105,115,32,110,101,101,100,101,100,32,116,111, + 32,108,111,97,100,32,98,117,105,108,116,45,105,110,10,32, + 32,32,32,109,111,100,117,108,101,115,44,32,116,104,111,115, + 101,32,116,119,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,26,0,0,0,114,95,0,0,0,114,68,0, + 0,0,78,41,15,114,61,0,0,0,114,18,0,0,0,114, + 3,0,0,0,114,99,0,0,0,218,5,105,116,101,109,115, + 114,203,0,0,0,114,82,0,0,0,114,169,0,0,0,114, + 92,0,0,0,114,184,0,0,0,114,149,0,0,0,114,155, + 0,0,0,114,9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114, + 104,0,0,0,114,116,0,0,0,114,103,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,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,6,95,115,101,116,117,112, + 136,4,0,0,115,40,0,0,0,4,9,4,1,8,3,18, + 1,10,1,10,1,6,1,10,1,6,1,10,3,10,1,2, + 128,10,3,8,1,10,1,10,1,10,2,14,1,4,251,255, + 128,114,235,0,0,0,99,2,0,0,0,0,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,117,0,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,169,0,0,0,114, - 177,0,0,0,114,83,0,0,0,114,167,0,0,0,41,2, - 114,20,0,0,0,114,103,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,129,4,0, - 0,115,10,0,0,0,10,1,8,1,12,1,8,1,255,128, - 114,231,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,10,0,0,0,5,0,0,0,67,0,0,0,115,164, - 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,0,68,0,93,70,92, - 2,125,3,125,4,116,5,124,4,124,2,131,2,114,26,124, - 3,116,1,106,6,118,0,114,60,116,7,125,5,110,16,116, - 0,160,8,124,3,161,1,114,26,116,9,125,5,110,0,116, - 10,124,4,124,5,131,2,125,6,116,11,124,6,124,4,131, - 2,1,0,113,26,116,1,106,3,116,12,25,0,125,7,100, - 1,68,0,93,46,125,8,124,8,116,1,106,3,118,1,114, - 136,116,13,124,8,131,1,125,9,110,10,116,1,106,3,124, - 8,25,0,125,9,116,14,124,7,124,8,124,9,131,3,1, - 0,113,112,100,2,83,0,41,3,122,250,83,101,116,117,112, - 32,105,109,112,111,114,116,108,105,98,32,98,121,32,105,109, - 112,111,114,116,105,110,103,32,110,101,101,100,101,100,32,98, - 117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,32, - 97,110,100,32,105,110,106,101,99,116,105,110,103,32,116,104, - 101,109,10,32,32,32,32,105,110,116,111,32,116,104,101,32, - 103,108,111,98,97,108,32,110,97,109,101,115,112,97,99,101, - 46,10,10,32,32,32,32,65,115,32,115,121,115,32,105,115, - 32,110,101,101,100,101,100,32,102,111,114,32,115,121,115,46, - 109,111,100,117,108,101,115,32,97,99,99,101,115,115,32,97, - 110,100,32,95,105,109,112,32,105,115,32,110,101,101,100,101, - 100,32,116,111,32,108,111,97,100,32,98,117,105,108,116,45, - 105,110,10,32,32,32,32,109,111,100,117,108,101,115,44,32, - 116,104,111,115,101,32,116,119,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,26,0,0,0,114,95,0,0, - 0,114,68,0,0,0,78,41,15,114,61,0,0,0,114,18, - 0,0,0,114,3,0,0,0,114,99,0,0,0,218,5,105, - 116,101,109,115,114,203,0,0,0,114,82,0,0,0,114,169, - 0,0,0,114,92,0,0,0,114,184,0,0,0,114,149,0, - 0,0,114,155,0,0,0,114,9,0,0,0,114,231,0,0, - 0,114,12,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,20, - 0,0,0,114,104,0,0,0,114,116,0,0,0,114,103,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,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,6,95,115, - 101,116,117,112,136,4,0,0,115,40,0,0,0,4,9,4, - 1,8,3,18,1,10,1,10,1,6,1,10,1,6,1,10, - 3,10,1,2,128,10,3,8,1,10,1,10,1,10,2,14, - 1,4,251,255,128,114,235,0,0,0,99,2,0,0,0,0, - 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, - 106,2,160,3,116,5,161,1,1,0,100,1,83,0,41,2, - 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,235,0,0,0,114,18,0,0,0,114, - 201,0,0,0,114,126,0,0,0,114,169,0,0,0,114,184, - 0,0,0,41,2,114,233,0,0,0,114,234,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, - 95,105,110,115,116,97,108,108,171,4,0,0,115,8,0,0, - 0,10,2,12,2,16,1,255,128,114,236,0,0,0,99,0, - 0,0,0,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,1,0,100,2,83,0,41,3,122,57, - 73,110,115,116,97,108,108,32,105,109,112,111,114,116,101,114, - 115,32,116,104,97,116,32,114,101,113,117,105,114,101,32,101, - 120,116,101,114,110,97,108,32,102,105,108,101,115,121,115,116, - 101,109,32,97,99,99,101,115,115,114,25,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,133,0, - 0,0,114,236,0,0,0,114,18,0,0,0,114,99,0,0, - 0,114,9,0,0,0,41,1,114,237,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,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,179,4,0,0,115,8,0, - 0,0,8,3,4,1,20,1,255,128,114,238,0,0,0,41, - 2,78,78,41,1,78,41,2,78,114,25,0,0,0,41,4, - 78,78,114,5,0,0,0,114,25,0,0,0,41,54,114,10, - 0,0,0,114,7,0,0,0,114,26,0,0,0,114,95,0, - 0,0,114,68,0,0,0,114,133,0,0,0,114,17,0,0, - 0,114,21,0,0,0,114,63,0,0,0,114,37,0,0,0, - 114,47,0,0,0,114,22,0,0,0,114,23,0,0,0,114, - 53,0,0,0,114,54,0,0,0,114,57,0,0,0,114,69, - 0,0,0,114,71,0,0,0,114,80,0,0,0,114,90,0, - 0,0,114,94,0,0,0,114,105,0,0,0,114,118,0,0, - 0,114,119,0,0,0,114,98,0,0,0,114,149,0,0,0, - 114,155,0,0,0,114,159,0,0,0,114,114,0,0,0,114, - 100,0,0,0,114,166,0,0,0,114,167,0,0,0,114,101, - 0,0,0,114,169,0,0,0,114,184,0,0,0,114,189,0, - 0,0,114,198,0,0,0,114,200,0,0,0,114,202,0,0, - 0,114,208,0,0,0,90,15,95,69,82,82,95,77,83,71, - 95,80,82,69,70,73,88,114,210,0,0,0,114,213,0,0, - 0,218,6,111,98,106,101,99,116,114,214,0,0,0,114,215, - 0,0,0,114,216,0,0,0,114,221,0,0,0,114,227,0, - 0,0,114,230,0,0,0,114,231,0,0,0,114,235,0,0, - 0,114,236,0,0,0,114,238,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,106,0, - 0,0,4,0,8,22,4,9,4,1,4,1,4,3,8,3, - 8,8,4,8,4,2,16,3,14,4,14,77,14,21,8,16, - 8,37,8,17,14,11,8,8,8,11,8,12,8,19,14,36, - 16,101,10,26,14,45,8,72,8,17,8,17,8,30,8,36, - 8,45,14,15,14,75,14,80,8,13,8,9,10,9,8,47, - 4,16,8,1,8,2,6,32,8,3,10,16,14,15,8,37, - 10,27,8,37,8,7,8,35,12,8,255,128, + 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,106,2,160,3, + 116,5,161,1,1,0,100,1,83,0,41,2,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,235,0,0,0,114,18,0,0,0,114,201,0,0,0, + 114,126,0,0,0,114,169,0,0,0,114,184,0,0,0,41, + 2,114,233,0,0,0,114,234,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,8,95,105,110,115, + 116,97,108,108,171,4,0,0,115,8,0,0,0,10,2,12, + 2,16,1,255,128,114,236,0,0,0,99,0,0,0,0,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,1,0,100,2,83,0,41,3,122,57,73,110,115,116, + 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, + 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, + 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, + 99,99,101,115,115,114,25,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,133,0,0,0,114,236, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, + 0,0,41,1,114,237,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,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,179,4,0,0,115,8,0,0,0,8,3, + 4,1,20,1,255,128,114,238,0,0,0,41,2,78,78,41, + 1,78,41,2,78,114,25,0,0,0,41,4,78,78,114,5, + 0,0,0,114,25,0,0,0,41,54,114,10,0,0,0,114, + 7,0,0,0,114,26,0,0,0,114,95,0,0,0,114,68, + 0,0,0,114,133,0,0,0,114,17,0,0,0,114,21,0, + 0,0,114,63,0,0,0,114,37,0,0,0,114,47,0,0, + 0,114,22,0,0,0,114,23,0,0,0,114,53,0,0,0, + 114,54,0,0,0,114,57,0,0,0,114,69,0,0,0,114, + 71,0,0,0,114,80,0,0,0,114,90,0,0,0,114,94, + 0,0,0,114,105,0,0,0,114,118,0,0,0,114,119,0, + 0,0,114,98,0,0,0,114,149,0,0,0,114,155,0,0, + 0,114,159,0,0,0,114,114,0,0,0,114,100,0,0,0, + 114,166,0,0,0,114,167,0,0,0,114,101,0,0,0,114, + 169,0,0,0,114,184,0,0,0,114,189,0,0,0,114,198, + 0,0,0,114,200,0,0,0,114,202,0,0,0,114,208,0, + 0,0,90,15,95,69,82,82,95,77,83,71,95,80,82,69, + 70,73,88,114,210,0,0,0,114,213,0,0,0,218,6,111, + 98,106,101,99,116,114,214,0,0,0,114,215,0,0,0,114, + 216,0,0,0,114,221,0,0,0,114,227,0,0,0,114,230, + 0,0,0,114,231,0,0,0,114,235,0,0,0,114,236,0, + 0,0,114,238,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,8,60,109,111, + 100,117,108,101,62,1,0,0,0,115,106,0,0,0,4,0, + 8,22,4,9,4,1,4,1,4,3,8,3,8,8,4,8, + 4,2,16,3,14,4,14,77,14,21,8,16,8,37,8,17, + 14,11,8,8,8,11,8,12,8,19,14,36,16,101,10,26, + 14,45,8,72,8,17,8,17,8,30,8,36,8,45,14,15, + 14,75,14,80,8,13,8,9,10,9,8,47,4,16,8,1, + 8,2,6,32,8,3,10,16,14,15,8,37,10,27,8,37, + 8,7,8,35,12,8,255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index a5da2a92df474..fee8f44f79cdb 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1581,1088 +1581,1089 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,121, 116,101,99,111,100,101,114,68,0,0,0,114,8,1,0,0, 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, - 0,11,0,0,0,67,0,0,0,115,248,0,0,0,116,0, + 0,11,0,0,0,67,0,0,0,115,4,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,4,131,1,115,52,116,0,124,4,131,1, + 114,62,116,1,124,4,131,1,115,62,116,0,124,4,131,1, 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 113,16,116,3,124,6,131,1,68,0,93,96,125,7,116,4, - 124,4,124,7,131,2,125,4,122,14,116,5,160,6,124,4, - 161,1,1,0,87,0,113,60,4,0,116,7,121,106,1,0, - 1,0,1,0,89,0,113,60,4,0,116,8,121,246,1,0, - 125,8,1,0,122,30,116,9,160,10,100,1,124,4,124,8, - 161,3,1,0,87,0,89,0,100,2,125,8,126,8,1,0, - 100,2,83,0,100,2,125,8,126,8,48,0,122,30,116,11, - 124,1,124,2,124,3,131,3,1,0,116,9,160,10,100,3, - 124,1,161,2,1,0,87,0,100,2,83,0,4,0,116,8, - 121,240,1,0,125,8,1,0,122,28,116,9,160,10,100,1, - 124,1,124,8,161,3,1,0,87,0,89,0,100,2,125,8, - 126,8,100,2,83,0,100,2,125,8,126,8,48,0,48,0, - 100,2,83,0,48,0,41,4,122,27,87,114,105,116,101,32, - 98,121,116,101,115,32,100,97,116,97,32,116,111,32,97,32, - 102,105,108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0, - 0,0,114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139, - 0,0,0,114,153,0,0,0,114,77,0,0,0,41,9,114, - 123,0,0,0,114,52,0,0,0,114,37,0,0,0,114,9, - 1,0,0,218,6,112,97,114,101,110,116,114,101,0,0,0, - 114,47,0,0,0,114,43,0,0,0,114,235,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,232, - 0,0,0,24,4,0,0,115,58,0,0,0,12,2,4,1, - 12,2,12,1,12,1,12,2,10,1,2,1,14,1,12,1, - 4,2,14,1,6,3,4,1,4,255,16,2,8,128,2,1, - 12,1,18,1,14,1,8,2,2,1,18,255,8,128,2,254, - 4,255,2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131, - 0,0,0,114,132,0,0,0,114,231,0,0,0,114,233,0, - 0,0,114,232,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,6,1,0,0, - 10,4,0,0,115,12,0,0,0,8,0,4,2,8,2,8, - 5,18,5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114, - 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, - 122,45,76,111,97,100,101,114,32,119,104,105,99,104,32,104, - 97,110,100,108,101,115,32,115,111,117,114,99,101,108,101,115, - 115,32,102,105,108,101,32,105,109,112,111,114,116,115,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 5,0,0,0,67,0,0,0,115,68,0,0,0,124,0,160, - 0,124,1,161,1,125,2,124,0,160,1,124,2,161,1,125, - 3,124,1,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,163,0,0,0,114,149,0,0,0,41,2, - 114,121,0,0,0,114,111,0,0,0,41,5,114,183,0,0, - 0,114,234,0,0,0,114,156,0,0,0,114,169,0,0,0, - 114,242,0,0,0,41,5,114,123,0,0,0,114,143,0,0, - 0,114,52,0,0,0,114,37,0,0,0,114,155,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 220,0,0,0,59,4,0,0,115,24,0,0,0,10,1,10, - 1,2,4,2,1,6,254,12,4,2,1,14,1,2,1,2, - 1,6,253,255,128,122,29,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, - 99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,236,0,0,0, - 75,4,0,0,115,4,0,0,0,4,2,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0, - 114,132,0,0,0,114,220,0,0,0,114,236,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,12,1,0,0,55,4,0,0,115,10,0,0, - 0,8,0,4,2,8,2,12,16,255,128,114,12,1,0,0, - 99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0, - 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, - 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, - 90,10,100,16,100,17,132,0,90,11,101,12,100,18,100,19, - 132,0,131,1,90,13,100,20,83,0,41,21,114,3,1,0, - 0,122,93,76,111,97,100,101,114,32,102,111,114,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,115,46, - 10,10,32,32,32,32,84,104,101,32,99,111,110,115,116,114, - 117,99,116,111,114,32,105,115,32,100,101,115,105,103,110,101, - 100,32,116,111,32,119,111,114,107,32,119,105,116,104,32,70, - 105,108,101,70,105,110,100,101,114,46,10,10,32,32,32,32, - 99,3,0,0,0,0,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,114, - 0,0,0,114,163,0,0,0,41,3,114,123,0,0,0,114, - 121,0,0,0,114,52,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,216,0,0,0,88,4,0, - 0,115,6,0,0,0,6,1,10,1,255,128,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,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,114,0,0,0,114,247,0,0,0,114,249,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,250, - 0,0,0,92,4,0,0,115,8,0,0,0,12,1,10,1, - 2,255,255,128,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,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,114,0,0,0,114,251,0,0,0,114,253,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,254,0,0,0,96,4,0,0,115,4,0,0,0,20,1, - 255,128,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,0,0,0,0,3,0,0, - 0,5,0,0,0,67,0,0,0,115,36,0,0,0,116,0, - 160,1,116,2,106,3,124,1,161,2,125,2,116,0,160,4, - 100,1,124,1,106,5,124,0,106,6,161,3,1,0,124,2, - 83,0,41,3,122,38,67,114,101,97,116,101,32,97,110,32, - 117,110,105,116,105,97,108,105,122,101,100,32,101,120,116,101, - 110,115,105,111,110,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,78,41,7,114,139,0,0,0,114,221,0,0, - 0,114,167,0,0,0,90,14,99,114,101,97,116,101,95,100, - 121,110,97,109,105,99,114,153,0,0,0,114,121,0,0,0, - 114,52,0,0,0,41,3,114,123,0,0,0,114,191,0,0, - 0,114,223,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,219,0,0,0,99,4,0,0,115,16, - 0,0,0,4,2,6,1,4,255,6,2,8,1,4,255,4, - 2,255,128,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,108,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,5,0,0,0,67,0,0,0,115, - 36,0,0,0,116,0,160,1,116,2,106,3,124,1,161,2, - 1,0,116,0,160,4,100,1,124,0,106,5,124,0,106,6, - 161,3,1,0,100,2,83,0,41,3,122,30,73,110,105,116, - 105,97,108,105,122,101,32,97,110,32,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,122,40,101,120,116,101, + 124,4,114,62,116,1,124,4,131,1,114,28,116,3,124,6, + 131,1,68,0,93,98,125,7,116,4,124,4,124,7,131,2, + 125,4,122,14,116,5,160,6,124,4,161,1,1,0,87,0, + 113,70,4,0,116,7,121,116,1,0,1,0,1,0,89,0, + 113,70,4,0,116,8,144,1,121,2,1,0,125,8,1,0, + 122,30,116,9,160,10,100,1,124,4,124,8,161,3,1,0, + 87,0,89,0,100,2,125,8,126,8,1,0,100,2,83,0, + 100,2,125,8,126,8,48,0,122,30,116,11,124,1,124,2, + 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, + 1,0,87,0,100,2,83,0,4,0,116,8,121,252,1,0, + 125,8,1,0,122,28,116,9,160,10,100,1,124,1,124,8, + 161,3,1,0,87,0,89,0,100,2,125,8,126,8,100,2, + 83,0,100,2,125,8,126,8,48,0,48,0,100,2,83,0, + 48,0,41,4,122,27,87,114,105,116,101,32,98,121,116,101, + 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101, + 46,122,27,99,111,117,108,100,32,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, + 55,0,0,0,114,64,0,0,0,114,190,0,0,0,114,50, + 0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139,0,0,0,114, + 153,0,0,0,114,77,0,0,0,41,9,114,123,0,0,0, + 114,52,0,0,0,114,37,0,0,0,114,9,1,0,0,218, + 6,112,97,114,101,110,116,114,101,0,0,0,114,47,0,0, + 0,114,43,0,0,0,114,235,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,232,0,0,0,24, + 4,0,0,115,60,0,0,0,12,2,4,1,12,2,12,1, + 10,1,12,254,12,4,10,1,2,1,14,1,12,1,4,2, + 16,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, + 18,1,14,1,8,2,2,1,18,255,8,128,2,254,4,255, + 2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0, + 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, + 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,6,1,0,0,10,4, + 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, + 5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114,99,101, + 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, + 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, + 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, + 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, + 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,124, + 1,161,1,125,2,124,0,160,1,124,2,161,1,125,3,124, + 1,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,163,0,0,0,114,149,0,0,0,41,2,114,121, + 0,0,0,114,111,0,0,0,41,5,114,183,0,0,0,114, + 234,0,0,0,114,156,0,0,0,114,169,0,0,0,114,242, + 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, + 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, + 0,0,59,4,0,0,115,24,0,0,0,10,1,10,1,2, + 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, + 253,255,128,122,29,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,99,111, + 100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,236,0,0,0,75,4, + 0,0,115,4,0,0,0,4,2,255,128,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, + 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, + 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,12,1,0,0,55,4,0,0,115,10,0,0,0,8, + 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, + 0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, + 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, + 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, + 100,16,100,17,132,0,90,11,101,12,100,18,100,19,132,0, + 131,1,90,13,100,20,83,0,41,21,114,3,1,0,0,122, + 93,76,111,97,100,101,114,32,102,111,114,32,101,120,116,101, + 110,115,105,111,110,32,109,111,100,117,108,101,115,46,10,10, + 32,32,32,32,84,104,101,32,99,111,110,115,116,114,117,99, + 116,111,114,32,105,115,32,100,101,115,105,103,110,101,100,32, + 116,111,32,119,111,114,107,32,119,105,116,104,32,70,105,108, + 101,70,105,110,100,101,114,46,10,10,32,32,32,32,99,3, + 0,0,0,0,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,114,0,0, + 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, + 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,216,0,0,0,88,4,0,0,115, + 6,0,0,0,6,1,10,1,255,128,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,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,114, + 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, + 0,92,4,0,0,115,8,0,0,0,12,1,10,1,2,255, + 255,128,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,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,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, + 0,0,0,96,4,0,0,115,4,0,0,0,20,1,255,128, + 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,0,0,0,0,3,0,0,0,5, + 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, + 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, + 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, + 41,3,122,38,67,114,101,97,116,101,32,97,110,32,117,110, + 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, + 105,111,110,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,101,120,101,99,117,116,101,100,32,102,114,111,109,32, - 123,33,114,125,78,41,7,114,139,0,0,0,114,221,0,0, - 0,114,167,0,0,0,90,12,101,120,101,99,95,100,121,110, + 125,32,108,111,97,100,101,100,32,102,114,111,109,32,123,33, + 114,125,78,41,7,114,139,0,0,0,114,221,0,0,0,114, + 167,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, - 0,0,0,169,2,114,123,0,0,0,114,223,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,224, - 0,0,0,107,4,0,0,115,10,0,0,0,14,2,6,1, - 8,1,8,255,255,128,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,0, - 0,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0, - 115,36,0,0,0,116,0,124,0,106,1,131,1,100,1,25, - 0,137,0,116,2,135,0,102,1,100,2,100,3,132,8,116, - 3,68,0,131,1,131,1,83,0,41,5,122,49,82,101,116, - 117,114,110,32,84,114,117,101,32,105,102,32,116,104,101,32, + 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, + 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,219,0,0,0,99,4,0,0,115,16,0,0, + 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, + 128,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,108,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, + 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, + 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, + 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, + 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, + 110,32,109,111,100,117,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,139,0,0,0,114,221,0,0,0,114, + 167,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, + 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, + 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, + 0,107,4,0,0,115,10,0,0,0,14,2,6,1,8,1, + 8,255,255,128,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,0,0,0, + 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,36, + 0,0,0,116,0,124,0,106,1,131,1,100,1,25,0,137, + 0,116,2,135,0,102,1,100,2,100,3,132,8,116,3,68, + 0,131,1,131,1,83,0,41,5,122,49,82,101,116,117,114, + 110,32,84,114,117,101,32,105,102,32,116,104,101,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,105, + 115,32,97,32,112,97,99,107,97,103,101,46,114,3,0,0, + 0,99,1,0,0,0,0,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,216,0,0,0, + 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, + 0,116,4,0,0,115,8,0,0,0,4,0,2,1,20,255, + 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, + 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, + 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, + 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, + 114,186,0,0,0,113,4,0,0,115,10,0,0,0,14,2, + 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,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,122,63,82,101, + 116,117,114,110,32,78,111,110,101,32,97,115,32,97,110,32, 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, - 32,105,115,32,97,32,112,97,99,107,97,103,101,46,114,3, - 0,0,0,99,1,0,0,0,0,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,216,0, - 0,0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9, - 0,0,0,116,4,0,0,115,8,0,0,0,4,0,2,1, - 20,255,255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103, - 101,110,101,120,112,114,62,78,41,4,114,55,0,0,0,114, - 52,0,0,0,218,3,97,110,121,114,212,0,0,0,114,226, - 0,0,0,114,7,0,0,0,114,16,1,0,0,114,8,0, - 0,0,114,186,0,0,0,113,4,0,0,115,10,0,0,0, - 14,2,12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0, - 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,122,63, - 82,101,116,117,114,110,32,78,111,110,101,32,97,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,220,0,0,0,119,4, - 0,0,115,4,0,0,0,4,2,255,128,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,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,122,53,82, - 101,116,117,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,7,0,0,0,114,226,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,236, - 0,0,0,123,4,0,0,115,4,0,0,0,4,2,255,128, - 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,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,1,1,0,0,114,56,0,0,0,114,226, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,183,0,0,0,127,4,0,0,115,4,0,0,0, - 6,3,255,128,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,130,0,0,0,114,129, - 0,0,0,114,131,0,0,0,114,132,0,0,0,114,216,0, - 0,0,114,250,0,0,0,114,254,0,0,0,114,219,0,0, - 0,114,224,0,0,0,114,186,0,0,0,114,220,0,0,0, - 114,236,0,0,0,114,140,0,0,0,114,183,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,3,1,0,0,80,4,0,0,115,26,0,0, - 0,8,0,4,2,8,6,8,4,8,4,8,3,8,8,8, - 6,8,6,8,4,2,4,14,1,255,128,114,3,1,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,64,0,0,0,115,104,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, - 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, - 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, - 90,10,100,16,100,17,132,0,90,11,100,18,100,19,132,0, - 90,12,100,20,100,21,132,0,90,13,100,22,100,23,132,0, - 90,14,100,24,83,0,41,25,218,14,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,97,38,1,0,0,82,101,112, - 114,101,115,101,110,116,115,32,97,32,110,97,109,101,115,112, - 97,99,101,32,112,97,99,107,97,103,101,39,115,32,112,97, - 116,104,46,32,32,73,116,32,117,115,101,115,32,116,104,101, - 32,109,111,100,117,108,101,32,110,97,109,101,10,32,32,32, - 32,116,111,32,102,105,110,100,32,105,116,115,32,112,97,114, - 101,110,116,32,109,111,100,117,108,101,44,32,97,110,100,32, - 102,114,111,109,32,116,104,101,114,101,32,105,116,32,108,111, - 111,107,115,32,117,112,32,116,104,101,32,112,97,114,101,110, - 116,39,115,10,32,32,32,32,95,95,112,97,116,104,95,95, - 46,32,32,87,104,101,110,32,116,104,105,115,32,99,104,97, - 110,103,101,115,44,32,116,104,101,32,109,111,100,117,108,101, - 39,115,32,111,119,110,32,112,97,116,104,32,105,115,32,114, - 101,99,111,109,112,117,116,101,100,44,10,32,32,32,32,117, - 115,105,110,103,32,112,97,116,104,95,102,105,110,100,101,114, - 46,32,32,70,111,114,32,116,111,112,45,108,101,118,101,108, - 32,109,111,100,117,108,101,115,44,32,116,104,101,32,112,97, - 114,101,110,116,32,109,111,100,117,108,101,39,115,32,112,97, - 116,104,10,32,32,32,32,105,115,32,115,121,115,46,112,97, - 116,104,46,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,67,0,0,0,115,36,0,0, - 0,124,1,124,0,95,0,124,2,124,0,95,1,116,2,124, - 0,160,3,161,0,131,1,124,0,95,4,124,3,124,0,95, - 5,100,0,83,0,114,114,0,0,0,41,6,218,5,95,110, - 97,109,101,218,5,95,112,97,116,104,114,116,0,0,0,218, - 16,95,103,101,116,95,112,97,114,101,110,116,95,112,97,116, - 104,218,17,95,108,97,115,116,95,112,97,114,101,110,116,95, - 112,97,116,104,218,12,95,112,97,116,104,95,102,105,110,100, - 101,114,169,4,114,123,0,0,0,114,121,0,0,0,114,52, - 0,0,0,90,11,112,97,116,104,95,102,105,110,100,101,114, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 216,0,0,0,140,4,0,0,115,10,0,0,0,6,1,6, - 1,14,1,10,1,255,128,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,0,0,0,0,4,0,0, - 0,3,0,0,0,67,0,0,0,115,38,0,0,0,124,0, - 106,0,160,1,100,1,161,1,92,3,125,1,125,2,125,3, - 124,2,100,2,107,2,114,30,100,3,83,0,124,1,100,4, - 102,2,83,0,41,6,122,62,82,101,116,117,114,110,115,32, - 97,32,116,117,112,108,101,32,111,102,32,40,112,97,114,101, - 110,116,45,109,111,100,117,108,101,45,110,97,109,101,44,32, - 112,97,114,101,110,116,45,112,97,116,104,45,97,116,116,114, - 45,110,97,109,101,41,114,79,0,0,0,114,10,0,0,0, - 41,2,114,15,0,0,0,114,52,0,0,0,90,8,95,95, - 112,97,116,104,95,95,78,41,2,114,19,1,0,0,114,49, - 0,0,0,41,4,114,123,0,0,0,114,11,1,0,0,218, - 3,100,111,116,90,2,109,101,114,7,0,0,0,114,7,0, - 0,0,114,8,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, - 146,4,0,0,115,10,0,0,0,18,2,8,1,4,2,8, - 3,255,128,122,38,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,102,105,110,100,95,112,97,114,101,110,116, - 95,112,97,116,104,95,110,97,109,101,115,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0, - 0,114,135,0,0,0,114,15,0,0,0,218,7,109,111,100, - 117,108,101,115,41,3,114,123,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, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,21, - 1,0,0,156,4,0,0,115,6,0,0,0,12,1,16,1, - 255,128,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,0,0,0,0, - 3,0,0,0,4,0,0,0,67,0,0,0,115,80,0,0, - 0,116,0,124,0,160,1,161,0,131,1,125,1,124,1,124, - 0,106,2,107,3,114,74,124,0,160,3,124,0,106,4,124, - 1,161,2,125,2,124,2,100,0,117,1,114,68,124,2,106, - 5,100,0,117,0,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,114,0,0,0,41,8,114,116,0,0,0,114,21,1, - 0,0,114,22,1,0,0,114,23,1,0,0,114,19,1,0, - 0,114,144,0,0,0,114,182,0,0,0,114,20,1,0,0, - 41,3,114,123,0,0,0,90,11,112,97,114,101,110,116,95, - 112,97,116,104,114,191,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,12,95,114,101,99,97,108, - 99,117,108,97,116,101,160,4,0,0,115,18,0,0,0,12, - 2,10,1,14,1,18,3,6,1,8,1,6,1,6,1,255, - 128,122,27,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,114,101,99,97,108,99,117,108,97,116,101,99,1, - 0,0,0,0,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,114,0,0,0,41,2,218, - 4,105,116,101,114,114,28,1,0,0,114,253,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,8, - 95,95,105,116,101,114,95,95,173,4,0,0,115,4,0,0, - 0,12,1,255,128,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,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2, - 0,0,0,67,0,0,0,115,12,0,0,0,124,0,160,0, - 161,0,124,1,25,0,83,0,114,114,0,0,0,169,1,114, - 28,1,0,0,41,2,114,123,0,0,0,218,5,105,110,100, - 101,120,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,95,95,103,101,116,105,116,101,109,95,95,176,4, - 0,0,115,4,0,0,0,12,1,255,128,122,26,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,103,101, - 116,105,116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41, - 3,114,123,0,0,0,114,32,1,0,0,114,52,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,115,101,116,105,116,101,109,95,95,179,4,0,0, - 115,4,0,0,0,14,1,255,128,122,26,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,115,101,116,105, - 116,101,109,95,95,99,1,0,0,0,0,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, - 114,0,0,0,41,2,114,4,0,0,0,114,28,1,0,0, - 114,253,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,7,95,95,108,101,110,95,95,182,4,0, - 0,115,4,0,0,0,12,1,255,128,122,22,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110, - 95,95,99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0, - 0,114,253,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,95,114,101,112,114,95,95,185, - 4,0,0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114, - 114,0,0,0,114,31,1,0,0,169,2,114,123,0,0,0, - 218,4,105,116,101,109,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,12,95,95,99,111,110,116,97,105,110, - 115,95,95,188,4,0,0,115,4,0,0,0,12,1,255,128, - 122,27,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,95,95,99,111,110,116,97,105,110,115,95,95,99,2,0, - 0,0,0,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,114,0,0,0, - 41,2,114,20,1,0,0,114,190,0,0,0,114,37,1,0, + 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,7, + 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,220,0,0,0,119,4,0,0, + 115,4,0,0,0,4,2,255,128,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,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,122,53,82,101,116, + 117,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,7,0,0,0,114,226,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, + 0,123,4,0,0,115,4,0,0,0,4,2,255,128,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,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,1,1,0,0,114,56,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,190,0,0,0,191,4,0,0,115,4,0,0,0,16,1, - 255,128,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,15,114,130,0,0, - 0,114,129,0,0,0,114,131,0,0,0,114,132,0,0,0, - 114,216,0,0,0,114,26,1,0,0,114,21,1,0,0,114, - 28,1,0,0,114,30,1,0,0,114,33,1,0,0,114,34, - 1,0,0,114,35,1,0,0,114,36,1,0,0,114,39,1, - 0,0,114,190,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,18,1,0,0, - 133,4,0,0,115,28,0,0,0,8,0,4,1,8,6,8, - 6,8,10,8,4,8,13,8,3,8,3,8,3,8,3,8, - 3,12,3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0, - 131,1,90,5,100,5,100,6,132,0,90,6,100,7,100,8, - 132,0,90,7,100,9,100,10,132,0,90,8,100,11,100,12, - 132,0,90,9,100,13,100,14,132,0,90,10,100,15,100,16, - 132,0,90,11,100,17,83,0,41,18,218,16,95,78,97,109, - 101,115,112,97,99,101,76,111,97,100,101,114,99,4,0,0, - 0,0,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,114,0,0, - 0,41,2,114,18,1,0,0,114,20,1,0,0,114,24,1, + 114,183,0,0,0,127,4,0,0,115,4,0,0,0,6,3, + 255,128,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,130,0,0,0,114,129,0,0, + 0,114,131,0,0,0,114,132,0,0,0,114,216,0,0,0, + 114,250,0,0,0,114,254,0,0,0,114,219,0,0,0,114, + 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, + 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,216,0,0,0,197,4,0,0,115,4,0,0,0,18, - 1,255,128,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,1, - 0,0,0,0,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,3,122,115,82,101,116,117, - 114,110,32,114,101,112,114,32,102,111,114,32,116,104,101,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,101,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,84,104,101,32, - 105,109,112,111,114,116,32,109,97,99,104,105,110,101,114,121, - 32,100,111,101,115,32,116,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,78,41,2,114,70,0, - 0,0,114,130,0,0,0,41,1,114,223,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,109, - 111,100,117,108,101,95,114,101,112,114,200,4,0,0,115,4, - 0,0,0,12,7,255,128,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,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,7,0,0,0, + 0,114,3,1,0,0,80,4,0,0,115,26,0,0,0,8, + 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, + 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,64,0,0,0,115,104,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,90,6, + 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, + 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, + 100,16,100,17,132,0,90,11,100,18,100,19,132,0,90,12, + 100,20,100,21,132,0,90,13,100,22,100,23,132,0,90,14, + 100,24,83,0,41,25,218,14,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,97,38,1,0,0,82,101,112,114,101, + 115,101,110,116,115,32,97,32,110,97,109,101,115,112,97,99, + 101,32,112,97,99,107,97,103,101,39,115,32,112,97,116,104, + 46,32,32,73,116,32,117,115,101,115,32,116,104,101,32,109, + 111,100,117,108,101,32,110,97,109,101,10,32,32,32,32,116, + 111,32,102,105,110,100,32,105,116,115,32,112,97,114,101,110, + 116,32,109,111,100,117,108,101,44,32,97,110,100,32,102,114, + 111,109,32,116,104,101,114,101,32,105,116,32,108,111,111,107, + 115,32,117,112,32,116,104,101,32,112,97,114,101,110,116,39, + 115,10,32,32,32,32,95,95,112,97,116,104,95,95,46,32, + 32,87,104,101,110,32,116,104,105,115,32,99,104,97,110,103, + 101,115,44,32,116,104,101,32,109,111,100,117,108,101,39,115, + 32,111,119,110,32,112,97,116,104,32,105,115,32,114,101,99, + 111,109,112,117,116,101,100,44,10,32,32,32,32,117,115,105, + 110,103,32,112,97,116,104,95,102,105,110,100,101,114,46,32, + 32,70,111,114,32,116,111,112,45,108,101,118,101,108,32,109, + 111,100,117,108,101,115,44,32,116,104,101,32,112,97,114,101, + 110,116,32,109,111,100,117,108,101,39,115,32,112,97,116,104, + 10,32,32,32,32,105,115,32,115,121,115,46,112,97,116,104, + 46,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124, + 1,124,0,95,0,124,2,124,0,95,1,116,2,124,0,160, + 3,161,0,131,1,124,0,95,4,124,3,124,0,95,5,100, + 0,83,0,114,114,0,0,0,41,6,218,5,95,110,97,109, + 101,218,5,95,112,97,116,104,114,116,0,0,0,218,16,95, + 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,218, + 17,95,108,97,115,116,95,112,97,114,101,110,116,95,112,97, + 116,104,218,12,95,112,97,116,104,95,102,105,110,100,101,114, + 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, + 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, + 0,0,140,4,0,0,115,10,0,0,0,6,1,6,1,14, + 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,38,0,0,0,124,0,106,0, + 160,1,100,1,161,1,92,3,125,1,125,2,125,3,124,2, + 100,2,107,2,114,30,100,3,83,0,124,1,100,4,102,2, + 83,0,41,6,122,62,82,101,116,117,114,110,115,32,97,32, + 116,117,112,108,101,32,111,102,32,40,112,97,114,101,110,116, + 45,109,111,100,117,108,101,45,110,97,109,101,44,32,112,97, + 114,101,110,116,45,112,97,116,104,45,97,116,116,114,45,110, + 97,109,101,41,114,79,0,0,0,114,10,0,0,0,41,2, + 114,15,0,0,0,114,52,0,0,0,90,8,95,95,112,97, + 116,104,95,95,78,41,2,114,19,1,0,0,114,49,0,0, + 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, + 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, + 114,8,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,146,4, + 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, + 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, + 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, + 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0,0,114, + 135,0,0,0,114,15,0,0,0,218,7,109,111,100,117,108, + 101,115,41,3,114,123,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,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, + 0,156,4,0,0,115,6,0,0,0,12,1,16,1,255,128, + 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,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,80,0,0,0,116, + 0,124,0,160,1,161,0,131,1,125,1,124,1,124,0,106, + 2,107,3,114,74,124,0,160,3,124,0,106,4,124,1,161, + 2,125,2,124,2,100,0,117,1,114,68,124,2,106,5,100, + 0,117,0,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, + 114,0,0,0,41,8,114,116,0,0,0,114,21,1,0,0, + 114,22,1,0,0,114,23,1,0,0,114,19,1,0,0,114, + 144,0,0,0,114,182,0,0,0,114,20,1,0,0,41,3, + 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, + 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, + 108,97,116,101,160,4,0,0,115,18,0,0,0,12,2,10, + 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, + 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, + 0,0,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,114,0,0,0,41,2,218,4,105, + 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, + 105,116,101,114,95,95,173,4,0,0,115,4,0,0,0,12, + 1,255,128,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,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,115,12,0,0,0,124,0,160,0,161,0, + 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, + 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,95,95,103,101,116,105,116,101,109,95,95,176,4,0,0, + 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, + 116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41,3,114, + 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, + 95,115,101,116,105,116,101,109,95,95,179,4,0,0,115,4, + 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, + 109,95,95,99,1,0,0,0,0,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,114,0, + 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,7,95,95,108,101,110,95,95,182,4,0,0,115, + 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, + 99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0,0,114, + 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,8,95,95,114,101,112,114,95,95,185,4,0, + 0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114,114,0, + 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, + 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, + 95,188,4,0,0,115,4,0,0,0,12,1,255,128,122,27, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, + 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, + 0,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,114,0,0,0,41,2, + 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, + 0,0,0,191,4,0,0,115,4,0,0,0,16,1,255,128, + 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,15,114,130,0,0,0,114, + 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, + 0,0,0,114,26,1,0,0,114,21,1,0,0,114,28,1, + 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, + 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, + 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,18,1,0,0,133,4, + 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, + 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, + 3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0,131,1, + 90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, + 90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, + 90,9,100,13,100,14,132,0,90,10,100,15,100,16,132,0, + 90,11,100,17,83,0,41,18,218,16,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,99,4,0,0,0,0, + 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,114,0,0,0,41, + 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 216,0,0,0,197,4,0,0,115,4,0,0,0,18,1,255, + 128,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,1,0,0, + 0,0,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,3,122,115,82,101,116,117,114,110, + 32,114,101,112,114,32,102,111,114,32,116,104,101,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,109,101,116,104,111,100,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,46,32,32,84,104,101,32,105,109, + 112,111,114,116,32,109,97,99,104,105,110,101,114,121,32,100, + 111,101,115,32,116,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,78,41,2,114,70,0,0,0, + 114,130,0,0,0,41,1,114,223,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,109,111,100, + 117,108,101,95,114,101,112,114,200,4,0,0,115,4,0,0, + 0,12,7,255,128,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,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,7,0,0,0,114,226, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,186,0,0,0,209,4,0,0,115,4,0,0,0, + 4,1,255,128,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,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,10,0,0,0,114,7,0,0,0, 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,186,0,0,0,209,4,0,0,115,4,0, + 8,0,0,0,114,236,0,0,0,212,4,0,0,115,4,0, 0,0,4,1,255,128,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,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,10,0,0,0,114,7,0, - 0,0,114,226,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,236,0,0,0,212,4,0,0,115, - 4,0,0,0,4,1,255,128,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,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,10,0,0,0,122,8,60,115,116, - 114,105,110,103,62,114,222,0,0,0,84,41,1,114,238,0, - 0,0,41,1,114,239,0,0,0,114,226,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, - 0,0,215,4,0,0,115,4,0,0,0,16,1,255,128,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, + 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,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,10,0,0,0,122,8,60,115,116,114,105, + 110,103,62,114,222,0,0,0,84,41,1,114,238,0,0,0, + 41,1,114,239,0,0,0,114,226,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, + 215,4,0,0,115,4,0,0,0,16,1,255,128,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,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,217,0,0,0,114, + 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,219,0,0,0,218,4,0, + 0,115,4,0,0,0,4,0,255,128,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,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,217,0,0, - 0,114,7,0,0,0,114,218,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,219,0,0,0,218, - 4,0,0,115,4,0,0,0,4,0,255,128,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,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,114, - 0,0,0,114,7,0,0,0,114,13,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, - 0,221,4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1, - 124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1, - 161,2,83,0,41,3,122,98,76,111,97,100,32,97,32,110, - 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,78,41,4,114,139,0,0,0,114,153,0,0,0,114, - 20,1,0,0,114,225,0,0,0,114,226,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,227,0, - 0,0,224,4,0,0,115,10,0,0,0,6,7,4,1,4, - 255,12,3,255,128,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,130,0,0,0,114,129,0,0,0, - 114,131,0,0,0,114,216,0,0,0,114,213,0,0,0,114, - 41,1,0,0,114,186,0,0,0,114,236,0,0,0,114,220, - 0,0,0,114,219,0,0,0,114,224,0,0,0,114,227,0, + 0,0,0,115,4,0,0,0,100,0,83,0,114,114,0,0, + 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,221, + 4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, + 0,0,0,115,26,0,0,0,116,0,160,1,100,1,124,0, + 106,2,161,2,1,0,116,0,160,3,124,0,124,1,161,2, + 83,0,41,3,122,98,76,111,97,100,32,97,32,110,97,109, + 101,115,112,97,99,101,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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, + 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, + 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, + 224,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, + 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131, + 0,0,0,114,216,0,0,0,114,213,0,0,0,114,41,1, + 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, + 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,40,1,0,0,196,4,0,0,115,22,0, + 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, + 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90,6,101, + 7,100,6,100,7,132,0,131,1,90,8,101,7,100,8,100, + 9,132,0,131,1,90,9,101,7,100,19,100,11,100,12,132, + 1,131,1,90,10,101,7,100,20,100,13,100,14,132,1,131, + 1,90,11,101,7,100,21,100,15,100,16,132,1,131,1,90, + 12,101,4,100,17,100,18,132,0,131,1,90,13,100,10,83, + 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, + 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, + 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, + 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, + 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, + 1,106,2,160,3,161,0,131,1,68,0,93,44,92,2,125, + 0,125,1,124,1,100,1,117,0,114,40,116,1,106,2,124, + 0,61,0,113,14,116,4,124,1,100,2,131,2,114,14,124, + 1,160,5,161,0,1,0,113,14,100,1,83,0,41,3,122, + 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, + 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, + 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, + 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, + 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, + 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, + 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, + 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,15,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,133,0,0,0, + 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, + 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,43,1,0,0,243,4,0,0,115,16,0,0, + 0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,255, + 128,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, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 9,0,0,0,67,0,0,0,115,76,0,0,0,116,0,106, + 1,100,1,117,1,114,28,116,0,106,1,115,28,116,2,160, + 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, + 36,125,1,122,14,124,1,124,0,131,1,87,0,2,0,1, + 0,83,0,4,0,116,5,121,70,1,0,1,0,1,0,89, + 0,113,34,48,0,100,1,83,0,41,3,122,46,83,101,97, + 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, + 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, + 102,111,114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10,112,97, + 116,104,95,104,111,111,107,115,114,81,0,0,0,114,82,0, + 0,0,114,142,0,0,0,114,122,0,0,0,41,2,114,52, + 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, + 104,111,111,107,115,253,4,0,0,115,18,0,0,0,16,3, + 12,1,10,1,2,1,14,1,12,1,6,1,4,2,255,128, + 122,22,80,97,116,104,70,105,110,100,101,114,46,95,112,97, + 116,104,95,104,111,111,107,115,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,100,0,0,0,124,1,100,1,107,2,114,42,122,12, + 116,0,160,1,161,0,125,1,87,0,110,20,4,0,116,2, + 121,40,1,0,1,0,1,0,89,0,100,2,83,0,48,0, + 122,16,116,3,106,4,124,1,25,0,125,2,87,0,124,2, + 83,0,4,0,116,5,121,98,1,0,1,0,1,0,124,0, + 160,6,124,1,161,1,125,2,124,2,116,3,106,4,124,1, + 60,0,89,0,124,2,83,0,48,0,41,3,122,210,71,101, + 116,32,116,104,101,32,102,105,110,100,101,114,32,102,111,114, + 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32, + 102,114,111,109,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,10,32, + 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, + 116,104,32,101,110,116,114,121,32,105,115,32,110,111,116,32, + 105,110,32,116,104,101,32,99,97,99,104,101,44,32,102,105, + 110,100,32,116,104,101,32,97,112,112,114,111,112,114,105,97, + 116,101,32,102,105,110,100,101,114,10,32,32,32,32,32,32, + 32,32,97,110,100,32,99,97,99,104,101,32,105,116,46,32, + 73,102,32,110,111,32,102,105,110,100,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,10,0,0,0,78,41,7,114,18,0,0,0,114,63,0, + 0,0,218,17,70,105,108,101,78,111,116,70,111,117,110,100, + 69,114,114,111,114,114,15,0,0,0,114,45,1,0,0,218, + 8,75,101,121,69,114,114,111,114,114,49,1,0,0,41,3, + 114,202,0,0,0,114,52,0,0,0,114,47,1,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,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,10,5,0,0,115,28,0,0,0,8,8,2, + 1,12,1,12,1,8,3,2,1,12,1,4,4,12,253,10, + 1,12,1,4,1,2,255,255,128,122,31,80,97,116,104,70, + 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, + 114,116,101,114,95,99,97,99,104,101,99,3,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,67, + 0,0,0,115,82,0,0,0,116,0,124,2,100,1,131,2, + 114,26,124,2,160,1,124,1,161,1,92,2,125,3,125,4, + 110,14,124,2,160,2,124,1,161,1,125,3,103,0,125,4, + 124,3,100,0,117,1,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,141,0, + 0,0,41,7,114,133,0,0,0,114,141,0,0,0,114,210, + 0,0,0,114,139,0,0,0,114,205,0,0,0,114,187,0, + 0,0,114,182,0,0,0,41,6,114,202,0,0,0,114,143, + 0,0,0,114,47,1,0,0,114,144,0,0,0,114,145,0, + 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,16,95,108,101,103,97,99,121,95, + 103,101,116,95,115,112,101,99,32,5,0,0,115,20,0,0, + 0,10,4,16,1,10,2,4,1,8,1,12,1,12,1,6, + 1,4,1,255,128,122,27,80,97,116,104,70,105,110,100,101, + 114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112, + 101,99,78,99,4,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,5,0,0,0,67,0,0,0,115,166,0,0, + 0,103,0,125,4,124,2,68,0,93,134,125,5,116,0,124, + 5,116,1,116,2,102,2,131,2,115,28,113,8,124,0,160, + 3,124,5,161,1,125,6,124,6,100,1,117,1,114,8,116, + 4,124,6,100,2,131,2,114,70,124,6,160,5,124,1,124, + 3,161,2,125,7,110,12,124,0,160,6,124,1,124,6,161, + 2,125,7,124,7,100,1,117,0,114,92,113,8,124,7,106, + 7,100,1,117,1,114,110,124,7,2,0,1,0,83,0,124, + 7,106,8,125,8,124,8,100,1,117,0,114,132,116,9,100, + 3,131,1,130,1,124,4,160,10,124,8,161,1,1,0,113, + 8,116,11,160,12,124,1,100,1,161,2,125,7,124,4,124, + 7,95,8,124,7,83,0,41,4,122,63,70,105,110,100,32, + 116,104,101,32,108,111,97,100,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,207,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,165,0,0,0,114,90,0,0, + 0,218,5,98,121,116,101,115,114,52,1,0,0,114,133,0, + 0,0,114,207,0,0,0,114,53,1,0,0,114,144,0,0, + 0,114,182,0,0,0,114,122,0,0,0,114,171,0,0,0, + 114,139,0,0,0,114,187,0,0,0,41,9,114,202,0,0, + 0,114,143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0, + 0,114,145,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,9,95,103,101,116,95,115,112,101,99, + 47,5,0,0,115,44,0,0,0,4,5,8,1,14,1,2, + 1,10,1,8,1,10,1,14,1,12,2,8,1,2,1,10, + 1,8,1,6,1,8,1,8,1,10,5,2,128,12,2,6, + 1,4,1,255,128,122,20,80,97,116,104,70,105,110,100,101, + 114,46,95,103,101,116,95,115,112,101,99,99,4,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0, + 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, + 14,116,0,106,1,125,2,124,0,160,2,124,1,124,2,124, + 3,161,3,125,4,124,4,100,1,117,0,114,40,100,1,83, + 0,124,4,106,3,100,1,117,0,114,90,124,4,106,4,125, + 5,124,5,114,86,100,1,124,4,95,5,116,6,124,1,124, + 5,124,0,106,2,131,3,124,4,95,4,124,4,83,0,100, + 1,83,0,124,4,83,0,41,2,122,141,84,114,121,32,116, + 111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,111, + 114,32,39,102,117,108,108,110,97,109,101,39,32,111,110,32, + 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, + 104,39,46,10,10,32,32,32,32,32,32,32,32,84,104,101, + 32,115,101,97,114,99,104,32,105,115,32,98,97,115,101,100, + 32,111,110,32,115,121,115,46,112,97,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,15,0,0,0, + 114,52,0,0,0,114,56,1,0,0,114,144,0,0,0,114, + 182,0,0,0,114,185,0,0,0,114,18,1,0,0,41,6, + 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, + 206,0,0,0,114,191,0,0,0,114,55,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,207,0, + 0,0,79,5,0,0,115,28,0,0,0,8,6,6,1,14, + 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, + 1,4,2,4,2,255,128,122,20,80,97,116,104,70,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, + 0,0,67,0,0,0,115,30,0,0,0,124,0,160,0,124, + 1,124,2,161,2,125,3,124,3,100,1,117,0,114,24,100, + 1,83,0,124,3,106,1,83,0,41,2,122,170,102,105,110, + 100,32,116,104,101,32,109,111,100,117,108,101,32,111,110,32, + 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, + 104,39,32,98,97,115,101,100,32,111,110,32,115,121,115,46, + 112,97,116,104,95,104,111,111,107,115,32,97,110,100,10,32, + 32,32,32,32,32,32,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, + 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,210,0,0,0,103,5,0,0,115,10,0,0,0,12, + 8,8,1,4,1,6,1,255,128,122,22,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,79,0,0,0,115,28,0,0,0,100, + 1,100,2,108,0,109,1,125,2,1,0,124,2,106,2,124, + 0,105,0,124,1,164,1,142,1,83,0,41,4,97,32,1, + 0,0,10,32,32,32,32,32,32,32,32,70,105,110,100,32, + 100,105,115,116,114,105,98,117,116,105,111,110,115,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,97, + 110,32,105,116,101,114,97,98,108,101,32,111,102,32,97,108, + 108,32,68,105,115,116,114,105,98,117,116,105,111,110,32,105, + 110,115,116,97,110,99,101,115,32,99,97,112,97,98,108,101, + 32,111,102,10,32,32,32,32,32,32,32,32,108,111,97,100, + 105,110,103,32,116,104,101,32,109,101,116,97,100,97,116,97, + 32,102,111,114,32,112,97,99,107,97,103,101,115,32,109,97, + 116,99,104,105,110,103,32,96,96,99,111,110,116,101,120,116, + 46,110,97,109,101,96,96,10,32,32,32,32,32,32,32,32, + 40,111,114,32,97,108,108,32,110,97,109,101,115,32,105,102, + 32,96,96,78,111,110,101,96,96,32,105,110,100,105,99,97, + 116,101,100,41,32,97,108,111,110,103,32,116,104,101,32,112, + 97,116,104,115,32,105,110,32,116,104,101,32,108,105,115,116, + 10,32,32,32,32,32,32,32,32,111,102,32,100,105,114,101, + 99,116,111,114,105,101,115,32,96,96,99,111,110,116,101,120, + 116,46,112,97,116,104,96,96,46,10,32,32,32,32,32,32, + 32,32,114,0,0,0,0,41,1,218,18,77,101,116,97,100, + 97,116,97,80,97,116,104,70,105,110,100,101,114,78,41,3, + 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, + 100,97,116,97,114,57,1,0,0,218,18,102,105,110,100,95, + 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, + 124,0,0,0,114,125,0,0,0,114,57,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,58,1, + 0,0,116,5,0,0,115,6,0,0,0,12,10,16,1,255, + 128,122,29,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, + 41,1,78,41,2,78,78,41,1,78,41,14,114,130,0,0, + 0,114,129,0,0,0,114,131,0,0,0,114,132,0,0,0, + 114,213,0,0,0,114,43,1,0,0,114,49,1,0,0,114, + 214,0,0,0,114,52,1,0,0,114,53,1,0,0,114,56, + 1,0,0,114,207,0,0,0,114,210,0,0,0,114,58,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,40,1,0,0,196,4,0,0,115, - 22,0,0,0,8,0,8,1,2,3,10,1,8,8,8,3, - 8,3,8,3,8,3,12,3,255,128,114,40,1,0,0,99, + 0,114,8,0,0,0,114,42,1,0,0,239,4,0,0,115, + 38,0,0,0,8,0,4,2,2,2,10,1,2,9,10,1, + 2,12,10,1,2,21,10,1,2,14,12,1,2,31,12,1, + 2,23,12,1,2,12,14,1,255,128,114,42,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90, - 6,101,7,100,6,100,7,132,0,131,1,90,8,101,7,100, - 8,100,9,132,0,131,1,90,9,101,7,100,19,100,11,100, - 12,132,1,131,1,90,10,101,7,100,20,100,13,100,14,132, - 1,131,1,90,11,101,7,100,21,100,15,100,16,132,1,131, - 1,90,12,101,4,100,17,100,18,132,0,131,1,90,13,100, - 10,83,0,41,22,218,10,80,97,116,104,70,105,110,100,101, - 114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110, - 100,101,114,32,102,111,114,32,115,121,115,46,112,97,116,104, - 32,97,110,100,32,112,97,99,107,97,103,101,32,95,95,112, - 97,116,104,95,95,32,97,116,116,114,105,98,117,116,101,115, - 46,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116, - 0,116,1,106,2,160,3,161,0,131,1,68,0,93,44,92, - 2,125,0,125,1,124,1,100,1,117,0,114,40,116,1,106, - 2,124,0,61,0,113,14,116,4,124,1,100,2,131,2,114, - 14,124,1,160,5,161,0,1,0,113,14,100,1,83,0,41, - 3,122,125,67,97,108,108,32,116,104,101,32,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,32, - 109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,97, - 116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,115, - 10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,32, - 105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,101, - 114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,46, - 78,218,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,15,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,133,0, - 0,0,114,43,1,0,0,41,2,114,121,0,0,0,218,6, - 102,105,110,100,101,114,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,43,1,0,0,243,4,0,0,115,16, - 0,0,0,22,4,8,1,10,1,10,1,8,1,2,128,4, - 252,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,9,0,0,0,67,0,0,0,115,76,0,0,0,116, - 0,106,1,100,1,117,1,114,28,116,0,106,1,115,28,116, - 2,160,3,100,2,116,4,161,2,1,0,116,0,106,1,68, - 0,93,36,125,1,122,14,124,1,124,0,131,1,87,0,2, - 0,1,0,83,0,4,0,116,5,121,70,1,0,1,0,1, - 0,89,0,113,34,48,0,100,1,83,0,41,3,122,46,83, - 101,97,114,99,104,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,115,32,102,111,114,32,97,32,102,105,110,100,101, - 114,32,102,111,114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10, - 112,97,116,104,95,104,111,111,107,115,114,81,0,0,0,114, - 82,0,0,0,114,142,0,0,0,114,122,0,0,0,41,2, - 114,52,0,0,0,90,4,104,111,111,107,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,11,95,112,97,116, - 104,95,104,111,111,107,115,253,4,0,0,115,18,0,0,0, - 16,3,12,1,10,1,2,1,14,1,12,1,6,1,4,2, - 255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,95, - 112,97,116,104,95,104,111,111,107,115,99,2,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,100,0,0,0,124,1,100,1,107,2,114,42, - 122,12,116,0,160,1,161,0,125,1,87,0,110,20,4,0, - 116,2,121,40,1,0,1,0,1,0,89,0,100,2,83,0, - 48,0,122,16,116,3,106,4,124,1,25,0,125,2,87,0, - 124,2,83,0,4,0,116,5,121,98,1,0,1,0,1,0, - 124,0,160,6,124,1,161,1,125,2,124,2,116,3,106,4, - 124,1,60,0,89,0,124,2,83,0,48,0,41,3,122,210, - 71,101,116,32,116,104,101,32,102,105,110,100,101,114,32,102, - 111,114,32,116,104,101,32,112,97,116,104,32,101,110,116,114, - 121,32,102,114,111,109,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, - 10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32, - 112,97,116,104,32,101,110,116,114,121,32,105,115,32,110,111, - 116,32,105,110,32,116,104,101,32,99,97,99,104,101,44,32, - 102,105,110,100,32,116,104,101,32,97,112,112,114,111,112,114, - 105,97,116,101,32,102,105,110,100,101,114,10,32,32,32,32, - 32,32,32,32,97,110,100,32,99,97,99,104,101,32,105,116, - 46,32,73,102,32,110,111,32,102,105,110,100,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,10,0,0,0,78,41,7,114,18,0,0,0,114, - 63,0,0,0,218,17,70,105,108,101,78,111,116,70,111,117, - 110,100,69,114,114,111,114,114,15,0,0,0,114,45,1,0, - 0,218,8,75,101,121,69,114,114,111,114,114,49,1,0,0, - 41,3,114,202,0,0,0,114,52,0,0,0,114,47,1,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,90,5,101,6,90,7,100,6,100, + 7,132,0,90,8,100,8,100,9,132,0,90,9,100,19,100, + 11,100,12,132,1,90,10,100,13,100,14,132,0,90,11,101, + 12,100,15,100,16,132,0,131,1,90,13,100,17,100,18,132, + 0,90,14,100,10,83,0,41,20,218,10,70,105,108,101,70, + 105,110,100,101,114,122,172,70,105,108,101,45,98,97,115,101, + 100,32,102,105,110,100,101,114,46,10,10,32,32,32,32,73, + 110,116,101,114,97,99,116,105,111,110,115,32,119,105,116,104, + 32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,109, + 32,97,114,101,32,99,97,99,104,101,100,32,102,111,114,32, + 112,101,114,102,111,114,109,97,110,99,101,44,32,98,101,105, + 110,103,10,32,32,32,32,114,101,102,114,101,115,104,101,100, + 32,119,104,101,110,32,116,104,101,32,100,105,114,101,99,116, + 111,114,121,32,116,104,101,32,102,105,110,100,101,114,32,105, + 115,32,104,97,110,100,108,105,110,103,32,104,97,115,32,98, + 101,101,110,32,109,111,100,105,102,105,101,100,46,10,10,32, + 32,32,32,99,2,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,6,0,0,0,7,0,0,0,115,84,0,0, + 0,103,0,125,3,124,2,68,0,93,32,92,2,137,0,125, + 4,124,3,160,0,135,0,102,1,100,1,100,2,132,8,124, + 4,68,0,131,1,161,1,1,0,113,8,124,3,124,0,95, + 1,124,1,112,54,100,3,124,0,95,2,100,4,124,0,95, + 3,116,4,131,0,124,0,95,5,116,4,131,0,124,0,95, + 6,100,5,83,0,41,6,122,154,73,110,105,116,105,97,108, + 105,122,101,32,119,105,116,104,32,116,104,101,32,112,97,116, + 104,32,116,111,32,115,101,97,114,99,104,32,111,110,32,97, + 110,100,32,97,32,118,97,114,105,97,98,108,101,32,110,117, + 109,98,101,114,32,111,102,10,32,32,32,32,32,32,32,32, + 50,45,116,117,112,108,101,115,32,99,111,110,116,97,105,110, + 105,110,103,32,116,104,101,32,108,111,97,100,101,114,32,97, + 110,100,32,116,104,101,32,102,105,108,101,32,115,117,102,102, + 105,120,101,115,32,116,104,101,32,108,111,97,100,101,114,10, + 32,32,32,32,32,32,32,32,114,101,99,111,103,110,105,122, + 101,115,46,99,1,0,0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0, + 0,114,14,1,0,0,169,1,114,144,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,9,0,0,0,145,5,0,0, + 115,4,0,0,0,22,0,255,128,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,79,0,0,0,114,109,0,0,0,78,41,7,114,171, + 0,0,0,218,8,95,108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0, + 114,7,0,0,0,114,60,1,0,0,114,8,0,0,0,114, + 216,0,0,0,139,5,0,0,115,18,0,0,0,4,4,12, + 1,26,1,6,1,10,2,6,1,8,1,12,1,255,128,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,0,0,0, + 0,1,0,0,0,2,0,0,0,67,0,0,0,115,10,0, + 0,0,100,1,124,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, + 109,0,0,0,78,41,1,114,62,1,0,0,114,253,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,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,10,5,0,0,115,28,0,0,0,8, - 8,2,1,12,1,12,1,8,3,2,1,12,1,4,4,12, - 253,10,1,12,1,4,1,2,255,255,128,122,31,80,97,116, - 104,70,105,110,100,101,114,46,95,112,97,116,104,95,105,109, - 112,111,114,116,101,114,95,99,97,99,104,101,99,3,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,82,0,0,0,116,0,124,2,100,1, - 131,2,114,26,124,2,160,1,124,1,161,1,92,2,125,3, - 125,4,110,14,124,2,160,2,124,1,161,1,125,3,103,0, - 125,4,124,3,100,0,117,1,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, - 141,0,0,0,41,7,114,133,0,0,0,114,141,0,0,0, - 114,210,0,0,0,114,139,0,0,0,114,205,0,0,0,114, - 187,0,0,0,114,182,0,0,0,41,6,114,202,0,0,0, - 114,143,0,0,0,114,47,1,0,0,114,144,0,0,0,114, - 145,0,0,0,114,191,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,16,95,108,101,103,97,99, - 121,95,103,101,116,95,115,112,101,99,32,5,0,0,115,20, - 0,0,0,10,4,16,1,10,2,4,1,8,1,12,1,12, - 1,6,1,4,1,255,128,122,27,80,97,116,104,70,105,110, - 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95, - 115,112,101,99,78,99,4,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,166, - 0,0,0,103,0,125,4,124,2,68,0,93,134,125,5,116, - 0,124,5,116,1,116,2,102,2,131,2,115,28,113,8,124, - 0,160,3,124,5,161,1,125,6,124,6,100,1,117,1,114, - 8,116,4,124,6,100,2,131,2,114,70,124,6,160,5,124, - 1,124,3,161,2,125,7,110,12,124,0,160,6,124,1,124, - 6,161,2,125,7,124,7,100,1,117,0,114,92,113,8,124, - 7,106,7,100,1,117,1,114,110,124,7,2,0,1,0,83, - 0,124,7,106,8,125,8,124,8,100,1,117,0,114,132,116, - 9,100,3,131,1,130,1,124,4,160,10,124,8,161,1,1, - 0,113,8,116,11,160,12,124,1,100,1,161,2,125,7,124, - 4,124,7,95,8,124,7,83,0,41,4,122,63,70,105,110, - 100,32,116,104,101,32,108,111,97,100,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,207,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,165,0,0,0,114,90, - 0,0,0,218,5,98,121,116,101,115,114,52,1,0,0,114, - 133,0,0,0,114,207,0,0,0,114,53,1,0,0,114,144, - 0,0,0,114,182,0,0,0,114,122,0,0,0,114,171,0, - 0,0,114,139,0,0,0,114,187,0,0,0,41,9,114,202, - 0,0,0,114,143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191, - 0,0,0,114,145,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,9,95,103,101,116,95,115,112, - 101,99,47,5,0,0,115,44,0,0,0,4,5,8,1,14, - 1,2,1,10,1,8,1,10,1,14,1,12,2,8,1,2, - 1,10,1,8,1,6,1,8,1,8,1,10,5,2,128,12, - 2,6,1,4,1,255,128,122,20,80,97,116,104,70,105,110, - 100,101,114,46,95,103,101,116,95,115,112,101,99,99,4,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0, - 0,0,67,0,0,0,115,94,0,0,0,124,2,100,1,117, - 0,114,14,116,0,106,1,125,2,124,0,160,2,124,1,124, - 2,124,3,161,3,125,4,124,4,100,1,117,0,114,40,100, - 1,83,0,124,4,106,3,100,1,117,0,114,90,124,4,106, - 4,125,5,124,5,114,86,100,1,124,4,95,5,116,6,124, - 1,124,5,124,0,106,2,131,3,124,4,95,4,124,4,83, - 0,100,1,83,0,124,4,83,0,41,2,122,141,84,114,121, - 32,116,111,32,102,105,110,100,32,97,32,115,112,101,99,32, - 102,111,114,32,39,102,117,108,108,110,97,109,101,39,32,111, - 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, - 97,116,104,39,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,115,101,97,114,99,104,32,105,115,32,98,97,115, - 101,100,32,111,110,32,115,121,115,46,112,97,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,15,0, - 0,0,114,52,0,0,0,114,56,1,0,0,114,144,0,0, - 0,114,182,0,0,0,114,185,0,0,0,114,18,1,0,0, - 41,6,114,202,0,0,0,114,143,0,0,0,114,52,0,0, - 0,114,206,0,0,0,114,191,0,0,0,114,55,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 207,0,0,0,79,5,0,0,115,28,0,0,0,8,6,6, - 1,14,1,8,1,4,1,10,1,6,1,4,1,6,3,16, - 1,4,1,4,2,4,2,255,128,122,20,80,97,116,104,70, - 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 4,0,0,0,67,0,0,0,115,30,0,0,0,124,0,160, - 0,124,1,124,2,161,2,125,3,124,3,100,1,117,0,114, - 24,100,1,83,0,124,3,106,1,83,0,41,2,122,170,102, - 105,110,100,32,116,104,101,32,109,111,100,117,108,101,32,111, - 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, - 97,116,104,39,32,98,97,115,101,100,32,111,110,32,115,121, - 115,46,112,97,116,104,95,104,111,111,107,115,32,97,110,100, - 10,32,32,32,32,32,32,32,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,10,32,32,32,32,32,32,32,32,84,104,105,115,32, - 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,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,208,0,0,0,114, - 209,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,210,0,0,0,103,5,0,0,115,10,0,0, - 0,12,8,8,1,4,1,6,1,255,128,122,22,80,97,116, - 104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, - 117,108,101,99,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,4,0,0,0,79,0,0,0,115,28,0,0, - 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,106, - 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,97, - 32,1,0,0,10,32,32,32,32,32,32,32,32,70,105,110, - 100,32,100,105,115,116,114,105,98,117,116,105,111,110,115,46, - 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, - 32,97,110,32,105,116,101,114,97,98,108,101,32,111,102,32, - 97,108,108,32,68,105,115,116,114,105,98,117,116,105,111,110, - 32,105,110,115,116,97,110,99,101,115,32,99,97,112,97,98, - 108,101,32,111,102,10,32,32,32,32,32,32,32,32,108,111, - 97,100,105,110,103,32,116,104,101,32,109,101,116,97,100,97, - 116,97,32,102,111,114,32,112,97,99,107,97,103,101,115,32, - 109,97,116,99,104,105,110,103,32,96,96,99,111,110,116,101, - 120,116,46,110,97,109,101,96,96,10,32,32,32,32,32,32, - 32,32,40,111,114,32,97,108,108,32,110,97,109,101,115,32, - 105,102,32,96,96,78,111,110,101,96,96,32,105,110,100,105, - 99,97,116,101,100,41,32,97,108,111,110,103,32,116,104,101, - 32,112,97,116,104,115,32,105,110,32,116,104,101,32,108,105, - 115,116,10,32,32,32,32,32,32,32,32,111,102,32,100,105, - 114,101,99,116,111,114,105,101,115,32,96,96,99,111,110,116, - 101,120,116,46,112,97,116,104,96,96,46,10,32,32,32,32, - 32,32,32,32,114,0,0,0,0,41,1,218,18,77,101,116, - 97,100,97,116,97,80,97,116,104,70,105,110,100,101,114,78, - 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, - 116,97,100,97,116,97,114,57,1,0,0,218,18,102,105,110, - 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, - 3,114,124,0,0,0,114,125,0,0,0,114,57,1,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 58,1,0,0,116,5,0,0,115,6,0,0,0,12,10,16, - 1,255,128,122,29,80,97,116,104,70,105,110,100,101,114,46, - 102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111, - 110,115,41,1,78,41,2,78,78,41,1,78,41,14,114,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, - 0,0,114,213,0,0,0,114,43,1,0,0,114,49,1,0, - 0,114,214,0,0,0,114,52,1,0,0,114,53,1,0,0, - 114,56,1,0,0,114,207,0,0,0,114,210,0,0,0,114, - 58,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,42,1,0,0,239,4,0, - 0,115,38,0,0,0,8,0,4,2,2,2,10,1,2,9, - 10,1,2,12,10,1,2,21,10,1,2,14,12,1,2,31, - 12,1,2,23,12,1,2,12,14,1,255,128,114,42,1,0, - 0,99,0,0,0,0,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,90,5,101,6,90,7,100, - 6,100,7,132,0,90,8,100,8,100,9,132,0,90,9,100, - 19,100,11,100,12,132,1,90,10,100,13,100,14,132,0,90, - 11,101,12,100,15,100,16,132,0,131,1,90,13,100,17,100, - 18,132,0,90,14,100,10,83,0,41,20,218,10,70,105,108, - 101,70,105,110,100,101,114,122,172,70,105,108,101,45,98,97, - 115,101,100,32,102,105,110,100,101,114,46,10,10,32,32,32, - 32,73,110,116,101,114,97,99,116,105,111,110,115,32,119,105, - 116,104,32,116,104,101,32,102,105,108,101,32,115,121,115,116, - 101,109,32,97,114,101,32,99,97,99,104,101,100,32,102,111, - 114,32,112,101,114,102,111,114,109,97,110,99,101,44,32,98, - 101,105,110,103,10,32,32,32,32,114,101,102,114,101,115,104, - 101,100,32,119,104,101,110,32,116,104,101,32,100,105,114,101, - 99,116,111,114,121,32,116,104,101,32,102,105,110,100,101,114, - 32,105,115,32,104,97,110,100,108,105,110,103,32,104,97,115, - 32,98,101,101,110,32,109,111,100,105,102,105,101,100,46,10, - 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,6,0,0,0,7,0,0,0,115,84, - 0,0,0,103,0,125,3,124,2,68,0,93,32,92,2,137, - 0,125,4,124,3,160,0,135,0,102,1,100,1,100,2,132, - 8,124,4,68,0,131,1,161,1,1,0,113,8,124,3,124, - 0,95,1,124,1,112,54,100,3,124,0,95,2,100,4,124, - 0,95,3,116,4,131,0,124,0,95,5,116,4,131,0,124, - 0,95,6,100,5,83,0,41,6,122,154,73,110,105,116,105, - 97,108,105,122,101,32,119,105,116,104,32,116,104,101,32,112, - 97,116,104,32,116,111,32,115,101,97,114,99,104,32,111,110, - 32,97,110,100,32,97,32,118,97,114,105,97,98,108,101,32, - 110,117,109,98,101,114,32,111,102,10,32,32,32,32,32,32, - 32,32,50,45,116,117,112,108,101,115,32,99,111,110,116,97, - 105,110,105,110,103,32,116,104,101,32,108,111,97,100,101,114, - 32,97,110,100,32,116,104,101,32,102,105,108,101,32,115,117, - 102,102,105,120,101,115,32,116,104,101,32,108,111,97,100,101, - 114,10,32,32,32,32,32,32,32,32,114,101,99,111,103,110, - 105,122,101,115,46,99,1,0,0,0,0,0,0,0,0,0, - 0,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,114,0,0,0,114,7, - 0,0,0,114,14,1,0,0,169,1,114,144,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,9,0,0,0,145,5, - 0,0,115,4,0,0,0,22,0,255,128,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,79,0,0,0,114,109,0,0,0,78,41,7, - 114,171,0,0,0,218,8,95,108,111,97,100,101,114,115,114, - 52,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,123,0,0,0,114, - 52,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,193,0, - 0,0,114,7,0,0,0,114,60,1,0,0,114,8,0,0, - 0,114,216,0,0,0,139,5,0,0,115,18,0,0,0,4, - 4,12,1,26,1,6,1,10,2,6,1,8,1,12,1,255, - 128,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,0, - 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, - 10,0,0,0,100,1,124,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,109,0,0,0,78,41,1,114,62,1,0,0,114,253, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,43,1,0,0,153,5,0,0,115,4,0,0,0, - 10,2,255,128,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,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,67,0,0,0,115,42,0,0,0, - 124,0,160,0,124,1,161,1,125,2,124,2,100,1,117,0, - 114,26,100,1,103,0,102,2,83,0,124,2,106,1,124,2, - 106,2,112,38,103,0,102,2,83,0,41,2,122,197,84,114, - 121,32,116,111,32,102,105,110,100,32,97,32,108,111,97,100, - 101,114,32,102,111,114,32,116,104,101,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,44,32,111,114,32, - 116,104,101,32,110,97,109,101,115,112,97,99,101,10,32,32, - 32,32,32,32,32,32,112,97,99,107,97,103,101,32,112,111, - 114,116,105,111,110,115,46,32,82,101,116,117,114,110,115,32, - 40,108,111,97,100,101,114,44,32,108,105,115,116,45,111,102, - 45,112,111,114,116,105,111,110,115,41,46,10,10,32,32,32, - 32,32,32,32,32,84,104,105,115,32,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,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,207,0,0,0,114,144,0,0,0, - 114,182,0,0,0,41,3,114,123,0,0,0,114,143,0,0, - 0,114,191,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,141,0,0,0,159,5,0,0,115,10, - 0,0,0,10,7,8,1,8,1,16,1,255,128,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,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,181,0,0,0,41,1,114,194,0,0,0,41,7,114,123, - 0,0,0,114,192,0,0,0,114,143,0,0,0,114,52,0, - 0,0,90,4,115,109,115,108,114,206,0,0,0,114,144,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,56,1,0,0,171,5,0,0,115,10,0,0,0,10, - 1,8,1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14,0,0, - 0,8,0,0,0,67,0,0,0,115,92,1,0,0,100,1, - 125,3,124,1,160,0,100,2,161,1,100,3,25,0,125,4, - 122,24,116,1,124,0,106,2,112,34,116,3,160,4,161,0, - 131,1,106,5,125,5,87,0,110,22,4,0,116,6,121,64, - 1,0,1,0,1,0,100,4,125,5,89,0,110,2,48,0, - 124,5,124,0,106,7,107,3,114,90,124,0,160,8,161,0, - 1,0,124,5,124,0,95,7,116,9,131,0,114,112,124,0, - 106,10,125,6,124,4,160,11,161,0,125,7,110,10,124,0, - 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,214, - 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, - 68,0,93,56,92,2,125,9,125,10,100,5,124,9,23,0, - 125,11,116,13,124,8,124,11,131,2,125,12,116,15,124,12, - 131,1,114,148,124,0,160,16,124,10,124,1,124,12,124,8, - 103,1,124,2,161,5,2,0,1,0,83,0,116,17,124,8, - 131,1,125,3,124,0,106,14,68,0,93,80,92,2,125,9, - 125,10,116,13,124,0,106,2,124,4,124,9,23,0,131,2, - 125,12,116,18,106,19,100,6,124,12,100,3,100,7,141,3, - 1,0,124,7,124,9,23,0,124,6,118,0,114,220,116,15, - 124,12,131,1,114,220,124,0,160,16,124,10,124,1,124,12, - 100,8,124,2,161,5,2,0,1,0,83,0,124,3,144,1, - 114,88,116,18,160,19,100,9,124,8,161,2,1,0,116,18, - 160,20,124,1,100,8,161,2,125,13,124,8,103,1,124,13, - 95,21,124,13,83,0,100,8,83,0,41,10,122,111,84,114, - 121,32,116,111,32,102,105,110,100,32,97,32,115,112,101,99, + 114,43,1,0,0,153,5,0,0,115,4,0,0,0,10,2, + 255,128,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,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,67,0,0,0,115,42,0,0,0,124,0, + 160,0,124,1,161,1,125,2,124,2,100,1,117,0,114,26, + 100,1,103,0,102,2,83,0,124,2,106,1,124,2,106,2, + 112,38,103,0,102,2,83,0,41,2,122,197,84,114,121,32, + 116,111,32,102,105,110,100,32,97,32,108,111,97,100,101,114, 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, - 101,100,32,109,111,100,117,108,101,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,115,32,116,104,101,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,79, - 0,0,0,114,39,0,0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0, - 0,0,114,52,0,0,0,114,18,0,0,0,114,63,0,0, - 0,114,7,1,0,0,114,58,0,0,0,114,62,1,0,0, - 218,11,95,102,105,108,108,95,99,97,99,104,101,114,21,0, - 0,0,114,65,1,0,0,114,110,0,0,0,114,64,1,0, - 0,114,48,0,0,0,114,61,1,0,0,114,62,0,0,0, - 114,56,1,0,0,114,64,0,0,0,114,139,0,0,0,114, - 153,0,0,0,114,187,0,0,0,114,182,0,0,0,41,14, - 114,123,0,0,0,114,143,0,0,0,114,206,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,173,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, - 15,1,0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,207,0,0,0,176,5,0,0, - 115,74,0,0,0,4,5,14,1,2,1,24,1,12,1,10, - 1,10,1,8,1,6,1,6,2,6,1,10,1,6,2,4, - 1,8,2,12,1,14,1,8,1,10,1,8,1,24,1,8, - 4,14,2,16,1,16,1,12,1,8,1,10,1,4,1,8, - 255,6,2,12,1,12,1,8,1,4,1,4,1,255,128,122, - 20,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, - 95,115,112,101,99,99,1,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,10,0,0,0,67,0,0,0,115,192, - 0,0,0,124,0,106,0,125,1,122,22,116,1,160,2,124, - 1,112,22,116,1,160,3,161,0,161,1,125,2,87,0,110, - 28,4,0,116,4,116,5,116,6,102,3,121,56,1,0,1, - 0,1,0,103,0,125,2,89,0,110,2,48,0,116,7,106, - 8,160,9,100,1,161,1,115,82,116,10,124,2,131,1,124, - 0,95,11,110,74,116,10,131,0,125,3,124,2,68,0,93, - 56,125,4,124,4,160,12,100,2,161,1,92,3,125,5,125, - 6,125,7,124,6,114,134,100,3,160,13,124,5,124,7,160, - 14,161,0,161,2,125,8,110,4,124,5,125,8,124,3,160, - 15,124,8,161,1,1,0,113,92,124,3,124,0,95,11,116, - 7,106,8,160,9,116,16,161,1,114,188,100,4,100,5,132, - 0,124,2,68,0,131,1,124,0,95,17,100,6,83,0,100, - 6,83,0,41,7,122,68,70,105,108,108,32,116,104,101,32, - 99,97,99,104,101,32,111,102,32,112,111,116,101,110,116,105, - 97,108,32,109,111,100,117,108,101,115,32,97,110,100,32,112, - 97,99,107,97,103,101,115,32,102,111,114,32,116,104,105,115, - 32,100,105,114,101,99,116,111,114,121,46,114,14,0,0,0, - 114,79,0,0,0,114,69,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,83, - 0,0,0,115,20,0,0,0,104,0,124,0,93,12,125,1, - 124,1,160,0,161,0,146,2,113,4,83,0,114,7,0,0, - 0,41,1,114,110,0,0,0,41,2,114,5,0,0,0,90, - 2,102,110,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,13,0,0,0,253,5,0,0,115,4,0,0,0, - 20,0,255,128,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,52,0,0,0,114,18,0,0,0,90,7,108,105, - 115,116,100,105,114,114,63,0,0,0,114,50,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,15,0,0,0,114,22,0,0,0,114,23, - 0,0,0,114,63,1,0,0,114,64,1,0,0,114,105,0, - 0,0,114,70,0,0,0,114,110,0,0,0,218,3,97,100, - 100,114,24,0,0,0,114,65,1,0,0,41,9,114,123,0, - 0,0,114,52,0,0,0,90,8,99,111,110,116,101,110,116, - 115,90,21,108,111,119,101,114,95,115,117,102,102,105,120,95, - 99,111,110,116,101,110,116,115,114,38,1,0,0,114,121,0, - 0,0,114,25,1,0,0,114,15,1,0,0,90,8,110,101, - 119,95,110,97,109,101,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,67,1,0,0,224,5,0,0,115,38, - 0,0,0,6,2,2,1,22,1,18,1,10,3,12,3,12, - 1,6,7,8,1,16,1,4,1,18,1,4,2,12,1,6, - 1,12,1,20,1,4,255,255,128,122,22,70,105,108,101,70, - 105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,3,0,0,0,7,0,0,0,115,18,0,0,0,135, - 0,135,1,102,2,100,1,100,2,132,8,125,2,124,2,83, - 0,41,4,97,20,1,0,0,65,32,99,108,97,115,115,32, - 109,101,116,104,111,100,32,119,104,105,99,104,32,114,101,116, - 117,114,110,115,32,97,32,99,108,111,115,117,114,101,32,116, - 111,32,117,115,101,32,111,110,32,115,121,115,46,112,97,116, - 104,95,104,111,111,107,10,32,32,32,32,32,32,32,32,119, - 104,105,99,104,32,119,105,108,108,32,114,101,116,117,114,110, - 32,97,110,32,105,110,115,116,97,110,99,101,32,117,115,105, - 110,103,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,108,111,97,100,101,114,115,32,97,110,100,32,116,104,101, - 32,112,97,116,104,10,32,32,32,32,32,32,32,32,99,97, - 108,108,101,100,32,111,110,32,116,104,101,32,99,108,111,115, - 117,114,101,46,10,10,32,32,32,32,32,32,32,32,73,102, - 32,116,104,101,32,112,97,116,104,32,99,97,108,108,101,100, - 32,111,110,32,116,104,101,32,99,108,111,115,117,114,101,32, - 105,115,32,110,111,116,32,97,32,100,105,114,101,99,116,111, - 114,121,44,32,73,109,112,111,114,116,69,114,114,111,114,32, - 105,115,10,32,32,32,32,32,32,32,32,114,97,105,115,101, - 100,46,10,10,32,32,32,32,32,32,32,32,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,19,0,0,0,115,36,0,0,0,116,0,124,0,131,1, - 115,20,116,1,100,1,124,0,100,2,141,2,130,1,136,0, - 124,0,103,1,136,1,162,1,82,0,142,0,83,0,41,4, - 122,45,80,97,116,104,32,104,111,111,107,32,102,111,114,32, - 105,109,112,111,114,116,108,105,98,46,109,97,99,104,105,110, - 101,114,121,46,70,105,108,101,70,105,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, - 56,0,0,0,78,41,2,114,64,0,0,0,114,122,0,0, - 0,114,56,0,0,0,169,2,114,202,0,0,0,114,66,1, - 0,0,114,7,0,0,0,114,8,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,9,6,0,0,115,8,0,0,0,8, - 2,12,1,16,1,255,128,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,78, - 114,7,0,0,0,41,3,114,202,0,0,0,114,66,1,0, - 0,114,72,1,0,0,114,7,0,0,0,114,71,1,0,0, - 114,8,0,0,0,218,9,112,97,116,104,95,104,111,111,107, - 255,5,0,0,115,6,0,0,0,14,10,4,6,255,128,122, - 20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, - 95,104,111,111,107,99,1,0,0,0,0,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,78,122,16,70,105,108,101,70,105,110,100,101,114,40,123, - 33,114,125,41,41,2,114,70,0,0,0,114,52,0,0,0, - 114,253,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,36,1,0,0,17,6,0,0,115,4,0, - 0,0,12,1,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0,114, - 132,0,0,0,114,216,0,0,0,114,43,1,0,0,114,147, - 0,0,0,114,210,0,0,0,114,141,0,0,0,114,56,1, - 0,0,114,207,0,0,0,114,67,1,0,0,114,214,0,0, - 0,114,73,1,0,0,114,36,1,0,0,114,7,0,0,0, + 101,100,32,109,111,100,117,108,101,44,32,111,114,32,116,104, + 101,32,110,97,109,101,115,112,97,99,101,10,32,32,32,32, + 32,32,32,32,112,97,99,107,97,103,101,32,112,111,114,116, + 105,111,110,115,46,32,82,101,116,117,114,110,115,32,40,108, + 111,97,100,101,114,44,32,108,105,115,116,45,111,102,45,112, + 111,114,116,105,111,110,115,41,46,10,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,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,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,207,0,0,0,114,144,0,0,0,114,182, + 0,0,0,41,3,114,123,0,0,0,114,143,0,0,0,114, + 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,141,0,0,0,159,5,0,0,115,10,0,0, + 0,10,7,8,1,8,1,16,1,255,128,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,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,181, + 0,0,0,41,1,114,194,0,0,0,41,7,114,123,0,0, + 0,114,192,0,0,0,114,143,0,0,0,114,52,0,0,0, + 90,4,115,109,115,108,114,206,0,0,0,114,144,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 59,1,0,0,130,5,0,0,115,26,0,0,0,8,0,4, - 2,8,7,8,14,4,4,8,2,8,12,10,5,8,48,2, - 31,10,1,12,17,255,128,114,59,1,0,0,99,4,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, - 0,67,0,0,0,115,144,0,0,0,124,0,160,0,100,1, - 161,1,125,4,124,0,160,0,100,2,161,1,125,5,124,4, - 115,66,124,5,114,36,124,5,106,1,125,4,110,30,124,2, - 124,3,107,2,114,56,116,2,124,1,124,2,131,2,125,4, - 110,10,116,3,124,1,124,2,131,2,125,4,124,5,115,84, - 116,4,124,1,124,2,124,4,100,3,141,3,125,5,122,38, - 124,5,124,0,100,2,60,0,124,4,124,0,100,1,60,0, - 124,2,124,0,100,4,60,0,124,3,124,0,100,5,60,0, - 87,0,100,0,83,0,4,0,116,5,121,142,1,0,1,0, - 1,0,89,0,100,0,83,0,48,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,60,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,144,0,0,0,114,12,1,0,0,114, - 6,1,0,0,114,194,0,0,0,218,9,69,120,99,101,112, - 116,105,111,110,41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,23,6,0, - 0,115,36,0,0,0,10,2,10,1,4,1,4,1,8,1, - 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, - 8,1,14,1,12,1,8,2,255,128,114,78,1,0,0,99, - 0,0,0,0,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,5,116,6,102,2,125,2,124,0,124,1,124,2,103, - 3,83,0,41,2,122,95,82,101,116,117,114,110,115,32,97, - 32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,97, - 115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,101, - 114,115,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,78,41,7,114,3,1,0,0,114,167, - 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, - 117,102,102,105,120,101,115,114,6,1,0,0,114,106,0,0, - 0,114,12,1,0,0,114,94,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,188,0,0,0,46, - 6,0,0,115,10,0,0,0,12,5,8,1,8,1,10,1, - 255,128,114,188,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, - 115,8,0,0,0,124,0,97,0,100,0,83,0,114,114,0, - 0,0,41,1,114,139,0,0,0,41,1,218,17,95,98,111, - 111,116,115,116,114,97,112,95,109,111,100,117,108,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,21,95, - 115,101,116,95,98,111,111,116,115,116,114,97,112,95,109,111, - 100,117,108,101,57,6,0,0,115,4,0,0,0,8,2,255, - 128,114,81,1,0,0,99,1,0,0,0,0,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,1,161,1,1,0,116,2,106,7,160,8,116,9,161,1, - 1,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,81,1,0,0,114,188,0,0,0, - 114,15,0,0,0,114,48,1,0,0,114,171,0,0,0,114, - 59,1,0,0,114,73,1,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,190,0,0,0,114,42,1,0,0,41,2, - 114,80,1,0,0,90,17,115,117,112,112,111,114,116,101,100, - 95,108,111,97,100,101,114,115,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,8,95,105,110,115,116,97,108, - 108,62,6,0,0,115,10,0,0,0,8,2,6,1,20,1, - 16,1,255,128,114,83,1,0,0,41,1,114,68,0,0,0, - 41,1,78,41,3,78,78,78,41,2,114,0,0,0,0,114, - 0,0,0,0,41,1,84,41,1,78,41,1,78,41,83,114, - 132,0,0,0,114,139,0,0,0,114,167,0,0,0,114,72, - 0,0,0,114,15,0,0,0,114,81,0,0,0,114,164,0, - 0,0,114,22,0,0,0,114,211,0,0,0,90,2,110,116, - 114,18,0,0,0,114,196,0,0,0,90,5,112,111,115,105, - 120,114,42,0,0,0,218,3,97,108,108,114,45,0,0,0, - 114,46,0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0, - 114,21,0,0,0,114,33,0,0,0,114,38,0,0,0,114, - 40,0,0,0,114,48,0,0,0,114,55,0,0,0,114,57, - 0,0,0,114,61,0,0,0,114,62,0,0,0,114,64,0, - 0,0,114,67,0,0,0,114,77,0,0,0,218,4,116,121, - 112,101,218,8,95,95,99,111,100,101,95,95,114,166,0,0, - 0,114,31,0,0,0,114,152,0,0,0,114,30,0,0,0, - 114,35,0,0,0,114,243,0,0,0,114,97,0,0,0,114, - 93,0,0,0,114,106,0,0,0,114,190,0,0,0,114,79, - 1,0,0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0, - 0,0,114,117,0,0,0,114,119,0,0,0,114,140,0,0, - 0,114,147,0,0,0,114,156,0,0,0,114,160,0,0,0, - 114,162,0,0,0,114,169,0,0,0,114,174,0,0,0,114, - 175,0,0,0,114,180,0,0,0,218,6,111,98,106,101,99, - 116,114,189,0,0,0,114,194,0,0,0,114,195,0,0,0, - 114,215,0,0,0,114,228,0,0,0,114,246,0,0,0,114, - 6,1,0,0,114,12,1,0,0,114,3,1,0,0,114,18, - 1,0,0,114,40,1,0,0,114,42,1,0,0,114,59,1, - 0,0,114,78,1,0,0,114,188,0,0,0,114,81,1,0, - 0,114,83,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,8,60,109,111,100, - 117,108,101,62,1,0,0,0,115,172,0,0,0,4,0,4, - 22,8,3,8,1,8,1,8,1,8,1,10,3,4,1,8, - 1,10,1,8,2,4,3,10,1,6,2,22,2,8,1,10, - 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, - 16,8,3,8,5,8,5,8,6,8,6,8,12,8,10,8, - 9,8,5,8,7,10,9,10,22,0,127,16,23,12,1,4, - 2,4,1,6,2,6,1,10,1,8,2,6,2,8,2,16, - 2,8,71,8,40,8,19,8,12,8,12,8,31,8,17,8, - 33,8,28,10,24,10,13,10,10,8,11,6,14,4,3,2, - 1,12,255,14,68,14,64,16,30,0,127,14,17,18,50,18, - 45,18,25,14,53,14,63,14,43,0,127,14,20,0,127,10, - 22,8,23,8,11,12,5,255,128, + 56,1,0,0,171,5,0,0,115,10,0,0,0,10,1,8, + 1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14,0,0,0,8, + 0,0,0,67,0,0,0,115,92,1,0,0,100,1,125,3, + 124,1,160,0,100,2,161,1,100,3,25,0,125,4,122,24, + 116,1,124,0,106,2,112,34,116,3,160,4,161,0,131,1, + 106,5,125,5,87,0,110,22,4,0,116,6,121,64,1,0, + 1,0,1,0,100,4,125,5,89,0,110,2,48,0,124,5, + 124,0,106,7,107,3,114,90,124,0,160,8,161,0,1,0, + 124,5,124,0,95,7,116,9,131,0,114,112,124,0,106,10, + 125,6,124,4,160,11,161,0,125,7,110,10,124,0,106,12, + 125,6,124,4,125,7,124,7,124,6,118,0,114,214,116,13, + 124,0,106,2,124,4,131,2,125,8,124,0,106,14,68,0, + 93,56,92,2,125,9,125,10,100,5,124,9,23,0,125,11, + 116,13,124,8,124,11,131,2,125,12,116,15,124,12,131,1, + 114,148,124,0,160,16,124,10,124,1,124,12,124,8,103,1, + 124,2,161,5,2,0,1,0,83,0,116,17,124,8,131,1, + 125,3,124,0,106,14,68,0,93,80,92,2,125,9,125,10, + 116,13,124,0,106,2,124,4,124,9,23,0,131,2,125,12, + 116,18,106,19,100,6,124,12,100,3,100,7,141,3,1,0, + 124,7,124,9,23,0,124,6,118,0,114,220,116,15,124,12, + 131,1,114,220,124,0,160,16,124,10,124,1,124,12,100,8, + 124,2,161,5,2,0,1,0,83,0,124,3,144,1,114,88, + 116,18,160,19,100,9,124,8,161,2,1,0,116,18,160,20, + 124,1,100,8,161,2,125,13,124,8,103,1,124,13,95,21, + 124,13,83,0,100,8,83,0,41,10,122,111,84,114,121,32, + 116,111,32,102,105,110,100,32,97,32,115,112,101,99,32,102, + 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, + 32,32,82,101,116,117,114,110,115,32,116,104,101,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,79,0,0, + 0,114,39,0,0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0,0,0, + 114,52,0,0,0,114,18,0,0,0,114,63,0,0,0,114, + 7,1,0,0,114,58,0,0,0,114,62,1,0,0,218,11, + 95,102,105,108,108,95,99,97,99,104,101,114,21,0,0,0, + 114,65,1,0,0,114,110,0,0,0,114,64,1,0,0,114, + 48,0,0,0,114,61,1,0,0,114,62,0,0,0,114,56, + 1,0,0,114,64,0,0,0,114,139,0,0,0,114,153,0, + 0,0,114,187,0,0,0,114,182,0,0,0,41,14,114,123, + 0,0,0,114,143,0,0,0,114,206,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,173,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,15,1, + 0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,207,0,0,0,176,5,0,0,115,74, + 0,0,0,4,5,14,1,2,1,24,1,12,1,10,1,10, + 1,8,1,6,1,6,2,6,1,10,1,6,2,4,1,8, + 2,12,1,14,1,8,1,10,1,8,1,24,1,8,4,14, + 2,16,1,16,1,12,1,8,1,10,1,4,1,8,255,6, + 2,12,1,12,1,8,1,4,1,4,1,255,128,122,20,70, + 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,115, + 112,101,99,99,1,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,10,0,0,0,67,0,0,0,115,192,0,0, + 0,124,0,106,0,125,1,122,22,116,1,160,2,124,1,112, + 22,116,1,160,3,161,0,161,1,125,2,87,0,110,28,4, + 0,116,4,116,5,116,6,102,3,121,56,1,0,1,0,1, + 0,103,0,125,2,89,0,110,2,48,0,116,7,106,8,160, + 9,100,1,161,1,115,82,116,10,124,2,131,1,124,0,95, + 11,110,74,116,10,131,0,125,3,124,2,68,0,93,56,125, + 4,124,4,160,12,100,2,161,1,92,3,125,5,125,6,125, + 7,124,6,114,134,100,3,160,13,124,5,124,7,160,14,161, + 0,161,2,125,8,110,4,124,5,125,8,124,3,160,15,124, + 8,161,1,1,0,113,92,124,3,124,0,95,11,116,7,106, + 8,160,9,116,16,161,1,114,188,100,4,100,5,132,0,124, + 2,68,0,131,1,124,0,95,17,100,6,83,0,100,6,83, + 0,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97, + 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108, + 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99, + 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100, + 105,114,101,99,116,111,114,121,46,114,14,0,0,0,114,79, + 0,0,0,114,69,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0, + 0,115,20,0,0,0,104,0,124,0,93,12,125,1,124,1, + 160,0,161,0,146,2,113,4,83,0,114,7,0,0,0,41, + 1,114,110,0,0,0,41,2,114,5,0,0,0,90,2,102, + 110,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,13,0,0,0,253,5,0,0,115,4,0,0,0,20,0, + 255,128,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,52,0,0,0,114,18,0,0,0,90,7,108,105,115,116, + 100,105,114,114,63,0,0,0,114,50,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,15,0,0,0,114,22,0,0,0,114,23,0,0, + 0,114,63,1,0,0,114,64,1,0,0,114,105,0,0,0, + 114,70,0,0,0,114,110,0,0,0,218,3,97,100,100,114, + 24,0,0,0,114,65,1,0,0,41,9,114,123,0,0,0, + 114,52,0,0,0,90,8,99,111,110,116,101,110,116,115,90, + 21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,111, + 110,116,101,110,116,115,114,38,1,0,0,114,121,0,0,0, + 114,25,1,0,0,114,15,1,0,0,90,8,110,101,119,95, + 110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,67,1,0,0,224,5,0,0,115,38,0,0, + 0,6,2,2,1,22,1,18,1,10,3,12,3,12,1,6, + 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, + 1,20,1,4,255,255,128,122,22,70,105,108,101,70,105,110, + 100,101,114,46,95,102,105,108,108,95,99,97,99,104,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,7,0,0,0,115,18,0,0,0,135,0,135, + 1,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, + 4,97,20,1,0,0,65,32,99,108,97,115,115,32,109,101, + 116,104,111,100,32,119,104,105,99,104,32,114,101,116,117,114, + 110,115,32,97,32,99,108,111,115,117,114,101,32,116,111,32, + 117,115,101,32,111,110,32,115,121,115,46,112,97,116,104,95, + 104,111,111,107,10,32,32,32,32,32,32,32,32,119,104,105, + 99,104,32,119,105,108,108,32,114,101,116,117,114,110,32,97, + 110,32,105,110,115,116,97,110,99,101,32,117,115,105,110,103, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,108, + 111,97,100,101,114,115,32,97,110,100,32,116,104,101,32,112, + 97,116,104,10,32,32,32,32,32,32,32,32,99,97,108,108, + 101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,114, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,116, + 104,101,32,112,97,116,104,32,99,97,108,108,101,100,32,111, + 110,32,116,104,101,32,99,108,111,115,117,114,101,32,105,115, + 32,110,111,116,32,97,32,100,105,114,101,99,116,111,114,121, + 44,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, + 10,32,32,32,32,32,32,32,32,114,97,105,115,101,100,46, + 10,10,32,32,32,32,32,32,32,32,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,19, + 0,0,0,115,36,0,0,0,116,0,124,0,131,1,115,20, + 116,1,100,1,124,0,100,2,141,2,130,1,136,0,124,0, + 103,1,136,1,162,1,82,0,142,0,83,0,41,4,122,45, + 80,97,116,104,32,104,111,111,107,32,102,111,114,32,105,109, + 112,111,114,116,108,105,98,46,109,97,99,104,105,110,101,114, + 121,46,70,105,108,101,70,105,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,56,0, + 0,0,78,41,2,114,64,0,0,0,114,122,0,0,0,114, + 56,0,0,0,169,2,114,202,0,0,0,114,66,1,0,0, + 114,7,0,0,0,114,8,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,9,6,0,0,115,8,0,0,0,8,2,12, + 1,16,1,255,128,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,78,114,7, + 0,0,0,41,3,114,202,0,0,0,114,66,1,0,0,114, + 72,1,0,0,114,7,0,0,0,114,71,1,0,0,114,8, + 0,0,0,218,9,112,97,116,104,95,104,111,111,107,255,5, + 0,0,115,6,0,0,0,14,10,4,6,255,128,122,20,70, + 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, + 111,111,107,99,1,0,0,0,0,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,78, + 122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114, + 125,41,41,2,114,70,0,0,0,114,52,0,0,0,114,253, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,36,1,0,0,17,6,0,0,115,4,0,0,0, + 12,1,255,128,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,130, + 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, + 0,0,114,216,0,0,0,114,43,1,0,0,114,147,0,0, + 0,114,210,0,0,0,114,141,0,0,0,114,56,1,0,0, + 114,207,0,0,0,114,67,1,0,0,114,214,0,0,0,114, + 73,1,0,0,114,36,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,59,1, + 0,0,130,5,0,0,115,26,0,0,0,8,0,4,2,8, + 7,8,14,4,4,8,2,8,12,10,5,8,48,2,31,10, + 1,12,17,255,128,114,59,1,0,0,99,4,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, + 0,0,0,115,144,0,0,0,124,0,160,0,100,1,161,1, + 125,4,124,0,160,0,100,2,161,1,125,5,124,4,115,66, + 124,5,114,36,124,5,106,1,125,4,110,30,124,2,124,3, + 107,2,114,56,116,2,124,1,124,2,131,2,125,4,110,10, + 116,3,124,1,124,2,131,2,125,4,124,5,115,84,116,4, + 124,1,124,2,124,4,100,3,141,3,125,5,122,38,124,5, + 124,0,100,2,60,0,124,4,124,0,100,1,60,0,124,2, + 124,0,100,4,60,0,124,3,124,0,100,5,60,0,87,0, + 100,0,83,0,4,0,116,5,121,142,1,0,1,0,1,0, + 89,0,100,0,83,0,48,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,60,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,144,0,0,0,114,12,1,0,0,114,6,1, + 0,0,114,194,0,0,0,218,9,69,120,99,101,112,116,105, + 111,110,41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,23,6,0,0,115, + 36,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, + 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, + 14,1,12,1,8,2,255,128,114,78,1,0,0,99,0,0, + 0,0,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, + 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83, + 0,41,2,122,95,82,101,116,117,114,110,115,32,97,32,108, + 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101, + 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115, + 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,78,41,7,114,3,1,0,0,114,167,0,0, + 0,218,18,101,120,116,101,110,115,105,111,110,95,115,117,102, + 102,105,120,101,115,114,6,1,0,0,114,106,0,0,0,114, + 12,1,0,0,114,94,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,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,188,0,0,0,46,6,0, + 0,115,10,0,0,0,12,5,8,1,8,1,10,1,255,128, + 114,188,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,124,0,97,0,100,0,83,0,114,114,0,0,0, + 41,1,114,139,0,0,0,41,1,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,21,95,115,101, + 116,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, + 108,101,57,6,0,0,115,4,0,0,0,8,2,255,128,114, + 81,1,0,0,99,1,0,0,0,0,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,1, + 161,1,1,0,116,2,106,7,160,8,116,9,161,1,1,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,81,1,0,0,114,188,0,0,0,114,15, + 0,0,0,114,48,1,0,0,114,171,0,0,0,114,59,1, + 0,0,114,73,1,0,0,218,9,109,101,116,97,95,112,97, + 116,104,114,190,0,0,0,114,42,1,0,0,41,2,114,80, + 1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,108, + 111,97,100,101,114,115,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,8,95,105,110,115,116,97,108,108,62, + 6,0,0,115,10,0,0,0,8,2,6,1,20,1,16,1, + 255,128,114,83,1,0,0,41,1,114,68,0,0,0,41,1, + 78,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, + 0,0,41,1,84,41,1,78,41,1,78,41,83,114,132,0, + 0,0,114,139,0,0,0,114,167,0,0,0,114,72,0,0, + 0,114,15,0,0,0,114,81,0,0,0,114,164,0,0,0, + 114,22,0,0,0,114,211,0,0,0,90,2,110,116,114,18, + 0,0,0,114,196,0,0,0,90,5,112,111,115,105,120,114, + 42,0,0,0,218,3,97,108,108,114,45,0,0,0,114,46, + 0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0,114,21, + 0,0,0,114,33,0,0,0,114,38,0,0,0,114,40,0, + 0,0,114,48,0,0,0,114,55,0,0,0,114,57,0,0, + 0,114,61,0,0,0,114,62,0,0,0,114,64,0,0,0, + 114,67,0,0,0,114,77,0,0,0,218,4,116,121,112,101, + 218,8,95,95,99,111,100,101,95,95,114,166,0,0,0,114, + 31,0,0,0,114,152,0,0,0,114,30,0,0,0,114,35, + 0,0,0,114,243,0,0,0,114,97,0,0,0,114,93,0, + 0,0,114,106,0,0,0,114,190,0,0,0,114,79,1,0, + 0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0,0,0, + 114,117,0,0,0,114,119,0,0,0,114,140,0,0,0,114, + 147,0,0,0,114,156,0,0,0,114,160,0,0,0,114,162, + 0,0,0,114,169,0,0,0,114,174,0,0,0,114,175,0, + 0,0,114,180,0,0,0,218,6,111,98,106,101,99,116,114, + 189,0,0,0,114,194,0,0,0,114,195,0,0,0,114,215, + 0,0,0,114,228,0,0,0,114,246,0,0,0,114,6,1, + 0,0,114,12,1,0,0,114,3,1,0,0,114,18,1,0, + 0,114,40,1,0,0,114,42,1,0,0,114,59,1,0,0, + 114,78,1,0,0,114,188,0,0,0,114,81,1,0,0,114, + 83,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,172,0,0,0,4,0,4,22,8, + 3,8,1,8,1,8,1,8,1,10,3,4,1,8,1,10, + 1,8,2,4,3,10,1,6,2,22,2,8,1,10,1,14, + 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, + 3,8,5,8,5,8,6,8,6,8,12,8,10,8,9,8, + 5,8,7,10,9,10,22,0,127,16,23,12,1,4,2,4, + 1,6,2,6,1,10,1,8,2,6,2,8,2,16,2,8, + 71,8,40,8,19,8,12,8,12,8,31,8,17,8,33,8, + 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, + 255,14,68,14,64,16,30,0,127,14,17,18,50,18,45,18, + 25,14,53,14,63,14,43,0,127,14,20,0,127,10,22,8, + 23,8,11,12,5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 59a2fe2502921..2058a9e354873 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -118,610 +118,611 @@ const unsigned char _Py_M__zipimport[] = { 104,101,10,32,32,32,32,122,105,112,102,105,108,101,32,116, 97,114,103,101,116,101,100,46,10,32,32,32,32,99,2,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,9,0, - 0,0,67,0,0,0,115,32,1,0,0,116,0,124,1,116, + 0,0,67,0,0,0,115,36,1,0,0,116,0,124,1,116, 1,131,2,115,28,100,1,100,0,108,2,125,2,124,2,160, 3,124,1,161,1,125,1,124,1,115,44,116,4,100,2,124, 1,100,3,141,2,130,1,116,5,114,60,124,1,160,6,116, - 5,116,7,161,2,125,1,103,0,125,3,122,14,116,8,160, - 9,124,1,161,1,125,4,87,0,110,70,4,0,116,10,116, - 11,102,2,121,148,1,0,1,0,1,0,116,8,160,12,124, - 1,161,1,92,2,125,5,125,6,124,5,124,1,107,2,114, - 130,116,4,100,4,124,1,100,3,141,2,130,1,124,5,125, - 1,124,3,160,13,124,6,161,1,1,0,89,0,113,64,48, - 0,124,4,106,14,100,5,64,0,100,6,107,3,114,176,116, - 4,100,4,124,1,100,3,141,2,130,1,122,12,116,15,124, - 1,25,0,125,7,87,0,110,34,4,0,116,16,121,222,1, - 0,1,0,1,0,116,17,124,1,131,1,125,7,124,7,116, - 15,124,1,60,0,89,0,110,2,48,0,124,7,124,0,95, - 18,124,1,124,0,95,19,116,8,106,20,124,3,100,0,100, - 0,100,7,133,3,25,0,142,0,124,0,95,21,124,0,106, - 21,144,1,114,28,124,0,4,0,106,21,116,7,55,0,2, - 0,95,21,100,0,83,0,100,0,83,0,41,8,78,114,0, - 0,0,0,122,21,97,114,99,104,105,118,101,32,112,97,116, - 104,32,105,115,32,101,109,112,116,121,169,1,218,4,112,97, - 116,104,122,14,110,111,116,32,97,32,90,105,112,32,102,105, - 108,101,105,0,240,0,0,105,0,128,0,0,233,255,255,255, - 255,41,22,218,10,105,115,105,110,115,116,97,110,99,101,218, - 3,115,116,114,218,2,111,115,90,8,102,115,100,101,99,111, - 100,101,114,3,0,0,0,218,12,97,108,116,95,112,97,116, - 104,95,115,101,112,218,7,114,101,112,108,97,99,101,218,8, - 112,97,116,104,95,115,101,112,218,19,95,98,111,111,116,115, - 116,114,97,112,95,101,120,116,101,114,110,97,108,90,10,95, - 112,97,116,104,95,115,116,97,116,218,7,79,83,69,114,114, - 111,114,218,10,86,97,108,117,101,69,114,114,111,114,90,11, - 95,112,97,116,104,95,115,112,108,105,116,218,6,97,112,112, - 101,110,100,90,7,115,116,95,109,111,100,101,218,20,95,122, - 105,112,95,100,105,114,101,99,116,111,114,121,95,99,97,99, - 104,101,218,8,75,101,121,69,114,114,111,114,218,15,95,114, - 101,97,100,95,100,105,114,101,99,116,111,114,121,218,6,95, - 102,105,108,101,115,218,7,97,114,99,104,105,118,101,218,10, - 95,112,97,116,104,95,106,111,105,110,218,6,112,114,101,102, - 105,120,41,8,218,4,115,101,108,102,114,13,0,0,0,114, - 17,0,0,0,114,31,0,0,0,90,2,115,116,90,7,100, - 105,114,110,97,109,101,90,8,98,97,115,101,110,97,109,101, - 218,5,102,105,108,101,115,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,8,95,95,105,110,105,116,95,95, - 64,0,0,0,115,60,0,0,0,10,1,8,1,10,1,4, - 1,12,1,4,1,12,1,4,2,2,2,14,1,16,1,14, - 3,8,1,12,1,4,1,16,1,14,3,12,2,2,3,12, - 1,12,1,8,1,14,1,6,1,6,1,22,2,8,1,18, - 1,4,255,255,128,122,20,122,105,112,105,109,112,111,114,116, - 101,114,46,95,95,105,110,105,116,95,95,78,99,3,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0, - 0,67,0,0,0,115,78,0,0,0,116,0,124,0,124,1, - 131,2,125,3,124,3,100,1,117,1,114,26,124,0,103,0, - 102,2,83,0,116,1,124,0,124,1,131,2,125,4,116,2, - 124,0,124,4,131,2,114,70,100,1,124,0,106,3,155,0, - 116,4,155,0,124,4,155,0,157,3,103,1,102,2,83,0, - 100,1,103,0,102,2,83,0,41,2,97,47,2,0,0,102, - 105,110,100,95,108,111,97,100,101,114,40,102,117,108,108,110, - 97,109,101,44,32,112,97,116,104,61,78,111,110,101,41,32, - 45,62,32,115,101,108,102,44,32,115,116,114,32,111,114,32, - 78,111,110,101,46,10,10,32,32,32,32,32,32,32,32,83, - 101,97,114,99,104,32,102,111,114,32,97,32,109,111,100,117, - 108,101,32,115,112,101,99,105,102,105,101,100,32,98,121,32, - 39,102,117,108,108,110,97,109,101,39,46,32,39,102,117,108, - 108,110,97,109,101,39,32,109,117,115,116,32,98,101,32,116, - 104,101,10,32,32,32,32,32,32,32,32,102,117,108,108,121, - 32,113,117,97,108,105,102,105,101,100,32,40,100,111,116,116, - 101,100,41,32,109,111,100,117,108,101,32,110,97,109,101,46, - 32,73,116,32,114,101,116,117,114,110,115,32,116,104,101,32, - 122,105,112,105,109,112,111,114,116,101,114,10,32,32,32,32, - 32,32,32,32,105,110,115,116,97,110,99,101,32,105,116,115, - 101,108,102,32,105,102,32,116,104,101,32,109,111,100,117,108, - 101,32,119,97,115,32,102,111,117,110,100,44,32,97,32,115, - 116,114,105,110,103,32,99,111,110,116,97,105,110,105,110,103, - 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, - 108,32,112,97,116,104,32,110,97,109,101,32,105,102,32,105, - 116,39,115,32,112,111,115,115,105,98,108,121,32,97,32,112, - 111,114,116,105,111,110,32,111,102,32,97,32,110,97,109,101, - 115,112,97,99,101,32,112,97,99,107,97,103,101,44,10,32, - 32,32,32,32,32,32,32,111,114,32,78,111,110,101,32,111, - 116,104,101,114,119,105,115,101,46,32,84,104,101,32,111,112, - 116,105,111,110,97,108,32,39,112,97,116,104,39,32,97,114, - 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, - 100,32,45,45,32,105,116,39,115,10,32,32,32,32,32,32, - 32,32,116,104,101,114,101,32,102,111,114,32,99,111,109,112, - 97,116,105,98,105,108,105,116,121,32,119,105,116,104,32,116, - 104,101,32,105,109,112,111,114,116,101,114,32,112,114,111,116, - 111,99,111,108,46,10,10,32,32,32,32,32,32,32,32,68, - 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, - 80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,78,41, - 5,218,16,95,103,101,116,95,109,111,100,117,108,101,95,105, - 110,102,111,218,16,95,103,101,116,95,109,111,100,117,108,101, - 95,112,97,116,104,218,7,95,105,115,95,100,105,114,114,29, - 0,0,0,114,20,0,0,0,41,5,114,32,0,0,0,218, - 8,102,117,108,108,110,97,109,101,114,13,0,0,0,218,2, - 109,105,218,7,109,111,100,112,97,116,104,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,11,102,105,110,100, - 95,108,111,97,100,101,114,110,0,0,0,115,16,0,0,0, - 10,12,8,1,8,2,10,7,10,1,24,4,8,2,255,128, - 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,108,111,97,100,101,114,99,3,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, - 0,0,115,16,0,0,0,124,0,160,0,124,1,124,2,161, - 2,100,1,25,0,83,0,41,3,97,203,1,0,0,102,105, - 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, - 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, - 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, - 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, - 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, - 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, - 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, - 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, - 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, - 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, - 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, - 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, - 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, - 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, - 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, - 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, - 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, - 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, - 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, - 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, - 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, - 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, - 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, - 110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,114,0,0,0,0,78,41, - 1,114,41,0,0,0,41,3,114,32,0,0,0,114,38,0, - 0,0,114,13,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,144,0,0,0,115,4,0,0,0,16,11,255,128, - 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,3,0,0,0,0,0, - 0,0,0,0,0,0,7,0,0,0,5,0,0,0,67,0, - 0,0,115,108,0,0,0,116,0,124,0,124,1,131,2,125, - 3,124,3,100,1,117,1,114,34,116,1,106,2,124,1,124, - 0,124,3,100,2,141,3,83,0,116,3,124,0,124,1,131, - 2,125,4,116,4,124,0,124,4,131,2,114,104,124,0,106, - 5,155,0,116,6,155,0,124,4,155,0,157,3,125,5,116, - 1,106,7,124,1,100,1,100,3,100,4,141,3,125,6,124, - 6,106,8,160,9,124,5,161,1,1,0,124,6,83,0,100, - 1,83,0,41,5,122,107,67,114,101,97,116,101,32,97,32, - 77,111,100,117,108,101,83,112,101,99,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,115,32,78,111,110,101,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,97,110,110,111,116,32, - 98,101,32,102,111,117,110,100,46,10,32,32,32,32,32,32, - 32,32,78,41,1,218,10,105,115,95,112,97,99,107,97,103, - 101,84,41,3,218,4,110,97,109,101,90,6,108,111,97,100, - 101,114,114,43,0,0,0,41,10,114,35,0,0,0,218,10, - 95,98,111,111,116,115,116,114,97,112,90,16,115,112,101,99, - 95,102,114,111,109,95,108,111,97,100,101,114,114,36,0,0, - 0,114,37,0,0,0,114,29,0,0,0,114,20,0,0,0, - 90,10,77,111,100,117,108,101,83,112,101,99,90,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,114,24,0,0,0,41,7,114, - 32,0,0,0,114,38,0,0,0,90,6,116,97,114,103,101, - 116,90,11,109,111,100,117,108,101,95,105,110,102,111,114,40, - 0,0,0,114,13,0,0,0,90,4,115,112,101,99,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,9,102, - 105,110,100,95,115,112,101,99,157,0,0,0,115,26,0,0, - 0,10,5,8,1,16,1,10,7,10,1,18,4,8,1,2, - 1,6,255,12,2,4,1,4,2,255,128,122,21,122,105,112, - 105,109,112,111,114,116,101,114,46,102,105,110,100,95,115,112, - 101,99,99,2,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, - 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, - 124,2,83,0,41,2,122,163,103,101,116,95,99,111,100,101, - 40,102,117,108,108,110,97,109,101,41,32,45,62,32,99,111, - 100,101,32,111,98,106,101,99,116,46,10,10,32,32,32,32, - 32,32,32,32,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, + 5,116,7,161,2,125,1,103,0,125,3,9,0,122,14,116, + 8,160,9,124,1,161,1,125,4,87,0,110,70,4,0,116, + 10,116,11,102,2,121,150,1,0,1,0,1,0,116,8,160, + 12,124,1,161,1,92,2,125,5,125,6,124,5,124,1,107, + 2,114,132,116,4,100,5,124,1,100,3,141,2,130,1,124, + 5,125,1,124,3,160,13,124,6,161,1,1,0,89,0,110, + 28,48,0,124,4,106,14,100,6,64,0,100,7,107,3,114, + 180,116,4,100,5,124,1,100,3,141,2,130,1,113,66,122, + 12,116,15,124,1,25,0,125,7,87,0,110,34,4,0,116, + 16,121,226,1,0,1,0,1,0,116,17,124,1,131,1,125, + 7,124,7,116,15,124,1,60,0,89,0,110,2,48,0,124, + 7,124,0,95,18,124,1,124,0,95,19,116,8,106,20,124, + 3,100,0,100,0,100,8,133,3,25,0,142,0,124,0,95, + 21,124,0,106,21,144,1,114,32,124,0,4,0,106,21,116, + 7,55,0,2,0,95,21,100,0,83,0,100,0,83,0,41, + 9,78,114,0,0,0,0,122,21,97,114,99,104,105,118,101, + 32,112,97,116,104,32,105,115,32,101,109,112,116,121,169,1, + 218,4,112,97,116,104,84,122,14,110,111,116,32,97,32,90, + 105,112,32,102,105,108,101,105,0,240,0,0,105,0,128,0, + 0,233,255,255,255,255,41,22,218,10,105,115,105,110,115,116, + 97,110,99,101,218,3,115,116,114,218,2,111,115,90,8,102, + 115,100,101,99,111,100,101,114,3,0,0,0,218,12,97,108, + 116,95,112,97,116,104,95,115,101,112,218,7,114,101,112,108, + 97,99,101,218,8,112,97,116,104,95,115,101,112,218,19,95, + 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, + 97,108,90,10,95,112,97,116,104,95,115,116,97,116,218,7, + 79,83,69,114,114,111,114,218,10,86,97,108,117,101,69,114, + 114,111,114,90,11,95,112,97,116,104,95,115,112,108,105,116, + 218,6,97,112,112,101,110,100,90,7,115,116,95,109,111,100, + 101,218,20,95,122,105,112,95,100,105,114,101,99,116,111,114, + 121,95,99,97,99,104,101,218,8,75,101,121,69,114,114,111, + 114,218,15,95,114,101,97,100,95,100,105,114,101,99,116,111, + 114,121,218,6,95,102,105,108,101,115,218,7,97,114,99,104, + 105,118,101,218,10,95,112,97,116,104,95,106,111,105,110,218, + 6,112,114,101,102,105,120,41,8,218,4,115,101,108,102,114, + 13,0,0,0,114,17,0,0,0,114,31,0,0,0,90,2, + 115,116,90,7,100,105,114,110,97,109,101,90,8,98,97,115, + 101,110,97,109,101,218,5,102,105,108,101,115,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,8,95,95,105, + 110,105,116,95,95,64,0,0,0,115,64,0,0,0,10,1, + 8,1,10,1,4,1,12,1,4,1,12,1,4,2,2,1, + 2,1,14,1,16,1,14,3,8,1,12,1,4,1,16,1, + 14,3,12,2,2,241,2,18,12,1,12,1,8,1,14,1, + 6,1,6,1,22,2,8,1,18,1,4,255,255,128,122,20, + 122,105,112,105,109,112,111,114,116,101,114,46,95,95,105,110, + 105,116,95,95,78,99,3,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,78, + 0,0,0,116,0,124,0,124,1,131,2,125,3,124,3,100, + 1,117,1,114,26,124,0,103,0,102,2,83,0,116,1,124, + 0,124,1,131,2,125,4,116,2,124,0,124,4,131,2,114, + 70,100,1,124,0,106,3,155,0,116,4,155,0,124,4,155, + 0,157,3,103,1,102,2,83,0,100,1,103,0,102,2,83, + 0,41,2,97,47,2,0,0,102,105,110,100,95,108,111,97, + 100,101,114,40,102,117,108,108,110,97,109,101,44,32,112,97, + 116,104,61,78,111,110,101,41,32,45,62,32,115,101,108,102, + 44,32,115,116,114,32,111,114,32,78,111,110,101,46,10,10, + 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, + 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, + 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, + 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, + 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, + 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, + 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, + 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, + 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, + 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, + 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, + 111,117,110,100,44,32,97,32,115,116,114,105,110,103,32,99, + 111,110,116,97,105,110,105,110,103,32,116,104,101,10,32,32, + 32,32,32,32,32,32,102,117,108,108,32,112,97,116,104,32, + 110,97,109,101,32,105,102,32,105,116,39,115,32,112,111,115, + 115,105,98,108,121,32,97,32,112,111,114,116,105,111,110,32, + 111,102,32,97,32,110,97,109,101,115,112,97,99,101,32,112, + 97,99,107,97,103,101,44,10,32,32,32,32,32,32,32,32, + 111,114,32,78,111,110,101,32,111,116,104,101,114,119,105,115, + 101,46,32,84,104,101,32,111,112,116,105,111,110,97,108,32, + 39,112,97,116,104,39,32,97,114,103,117,109,101,110,116,32, + 105,115,32,105,103,110,111,114,101,100,32,45,45,32,105,116, + 39,115,10,32,32,32,32,32,32,32,32,116,104,101,114,101, + 32,102,111,114,32,99,111,109,112,97,116,105,98,105,108,105, + 116,121,32,119,105,116,104,32,116,104,101,32,105,109,112,111, + 114,116,101,114,32,112,114,111,116,111,99,111,108,46,10,10, + 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, + 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, + 51,46,49,48,46,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,32, + 32,32,32,32,32,32,32,78,41,5,218,16,95,103,101,116, + 95,109,111,100,117,108,101,95,105,110,102,111,218,16,95,103, + 101,116,95,109,111,100,117,108,101,95,112,97,116,104,218,7, + 95,105,115,95,100,105,114,114,29,0,0,0,114,20,0,0, + 0,41,5,114,32,0,0,0,218,8,102,117,108,108,110,97, + 109,101,114,13,0,0,0,218,2,109,105,218,7,109,111,100, + 112,97,116,104,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,11,102,105,110,100,95,108,111,97,100,101,114, + 110,0,0,0,115,16,0,0,0,10,12,8,1,8,2,10, + 7,10,1,24,4,8,2,255,128,122,23,122,105,112,105,109, + 112,111,114,116,101,114,46,102,105,110,100,95,108,111,97,100, + 101,114,99,3,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,0, + 124,0,160,0,124,1,124,2,161,2,100,1,25,0,83,0, + 41,3,97,203,1,0,0,102,105,110,100,95,109,111,100,117, + 108,101,40,102,117,108,108,110,97,109,101,44,32,112,97,116, + 104,61,78,111,110,101,41,32,45,62,32,115,101,108,102,32, + 111,114,32,78,111,110,101,46,10,10,32,32,32,32,32,32, + 32,32,83,101,97,114,99,104,32,102,111,114,32,97,32,109, + 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, + 98,121,32,39,102,117,108,108,110,97,109,101,39,46,32,39, + 102,117,108,108,110,97,109,101,39,32,109,117,115,116,32,98, + 101,32,116,104,101,10,32,32,32,32,32,32,32,32,102,117, + 108,108,121,32,113,117,97,108,105,102,105,101,100,32,40,100, + 111,116,116,101,100,41,32,109,111,100,117,108,101,32,110,97, + 109,101,46,32,73,116,32,114,101,116,117,114,110,115,32,116, + 104,101,32,122,105,112,105,109,112,111,114,116,101,114,10,32, + 32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,32, + 105,116,115,101,108,102,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,119,97,115,32,102,111,117,110,100,44,32, + 111,114,32,78,111,110,101,32,105,102,32,105,116,32,119,97, + 115,110,39,116,46,10,32,32,32,32,32,32,32,32,84,104, + 101,32,111,112,116,105,111,110,97,108,32,39,112,97,116,104, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, + 110,111,114,101,100,32,45,45,32,105,116,39,115,32,116,104, + 101,114,101,32,102,111,114,32,99,111,109,112,97,116,105,98, + 105,108,105,116,121,10,32,32,32,32,32,32,32,32,119,105, + 116,104,32,116,104,101,32,105,109,112,111,114,116,101,114,32, + 112,114,111,116,111,99,111,108,46,10,10,32,32,32,32,32, + 32,32,32,68,101,112,114,101,99,97,116,101,100,32,115,105, + 110,99,101,32,80,121,116,104,111,110,32,51,46,49,48,46, + 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,32,32,32,32,32,32, + 32,32,114,0,0,0,0,78,41,1,114,41,0,0,0,41, + 3,114,32,0,0,0,114,38,0,0,0,114,13,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 11,102,105,110,100,95,109,111,100,117,108,101,144,0,0,0, + 115,4,0,0,0,16,11,255,128,122,23,122,105,112,105,109, + 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, + 108,101,99,3,0,0,0,0,0,0,0,0,0,0,0,7, + 0,0,0,5,0,0,0,67,0,0,0,115,108,0,0,0, + 116,0,124,0,124,1,131,2,125,3,124,3,100,1,117,1, + 114,34,116,1,106,2,124,1,124,0,124,3,100,2,141,3, + 83,0,116,3,124,0,124,1,131,2,125,4,116,4,124,0, + 124,4,131,2,114,104,124,0,106,5,155,0,116,6,155,0, + 124,4,155,0,157,3,125,5,116,1,106,7,124,1,100,1, + 100,3,100,4,141,3,125,6,124,6,106,8,160,9,124,5, + 161,1,1,0,124,6,83,0,100,1,83,0,41,5,122,107, + 67,114,101,97,116,101,32,97,32,77,111,100,117,108,101,83, + 112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,78, + 111,110,101,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,99,97,110,110,111,116,32,98,101,32,102,111,117,110, + 100,46,10,32,32,32,32,32,32,32,32,78,41,1,218,10, + 105,115,95,112,97,99,107,97,103,101,84,41,3,218,4,110, + 97,109,101,90,6,108,111,97,100,101,114,114,43,0,0,0, + 41,10,114,35,0,0,0,218,10,95,98,111,111,116,115,116, + 114,97,112,90,16,115,112,101,99,95,102,114,111,109,95,108, + 111,97,100,101,114,114,36,0,0,0,114,37,0,0,0,114, + 29,0,0,0,114,20,0,0,0,90,10,77,111,100,117,108, + 101,83,112,101,99,90,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,114,24,0,0,0,41,7,114,32,0,0,0,114,38,0, + 0,0,90,6,116,97,114,103,101,116,90,11,109,111,100,117, + 108,101,95,105,110,102,111,114,40,0,0,0,114,13,0,0, + 0,90,4,115,112,101,99,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,9,102,105,110,100,95,115,112,101, + 99,157,0,0,0,115,26,0,0,0,10,5,8,1,16,1, + 10,7,10,1,18,4,8,1,2,1,6,255,12,2,4,1, + 4,2,255,128,122,21,122,105,112,105,109,112,111,114,116,101, + 114,46,102,105,110,100,95,115,112,101,99,99,2,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, + 67,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, + 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,122, + 163,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, + 109,101,41,32,45,62,32,99,111,100,101,32,111,98,106,101, + 99,116,46,10,10,32,32,32,32,32,32,32,32,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,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,97, + 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, + 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, + 32,32,32,32,78,169,1,218,16,95,103,101,116,95,109,111, + 100,117,108,101,95,99,111,100,101,169,5,114,32,0,0,0, + 114,38,0,0,0,218,4,99,111,100,101,218,9,105,115,112, + 97,99,107,97,103,101,114,40,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,8,103,101,116,95, + 99,111,100,101,184,0,0,0,115,6,0,0,0,16,6,4, + 1,255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0,0,67,0, + 0,0,115,112,0,0,0,116,0,114,16,124,1,160,1,116, + 0,116,2,161,2,125,1,124,1,125,2,124,1,160,3,124, + 0,106,4,116,2,23,0,161,1,114,58,124,1,116,5,124, + 0,106,4,116,2,23,0,131,1,100,1,133,2,25,0,125, + 2,122,14,124,0,106,6,124,2,25,0,125,3,87,0,110, + 26,4,0,116,7,121,98,1,0,1,0,1,0,116,8,100, + 2,100,3,124,2,131,3,130,1,48,0,116,9,124,0,106, + 4,124,3,131,2,83,0,41,4,122,154,103,101,116,95,100, + 97,116,97,40,112,97,116,104,110,97,109,101,41,32,45,62, + 32,115,116,114,105,110,103,32,119,105,116,104,32,102,105,108, + 101,32,100,97,116,97,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,32,116,104,101,32,100,97,116,97, + 32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104, + 32,39,112,97,116,104,110,97,109,101,39,46,32,82,97,105, + 115,101,32,79,83,69,114,114,111,114,32,105,102,10,32,32, + 32,32,32,32,32,32,116,104,101,32,102,105,108,101,32,119, + 97,115,110,39,116,32,102,111,117,110,100,46,10,32,32,32, + 32,32,32,32,32,78,114,0,0,0,0,218,0,41,10,114, + 18,0,0,0,114,19,0,0,0,114,20,0,0,0,218,10, + 115,116,97,114,116,115,119,105,116,104,114,29,0,0,0,218, + 3,108,101,110,114,28,0,0,0,114,26,0,0,0,114,22, + 0,0,0,218,9,95,103,101,116,95,100,97,116,97,41,4, + 114,32,0,0,0,218,8,112,97,116,104,110,97,109,101,90, + 3,107,101,121,218,9,116,111,99,95,101,110,116,114,121,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, + 103,101,116,95,100,97,116,97,194,0,0,0,115,22,0,0, + 0,4,6,12,1,4,2,16,1,22,1,2,2,14,1,12, + 1,14,1,12,1,255,128,122,20,122,105,112,105,109,112,111, + 114,116,101,114,46,103,101,116,95,100,97,116,97,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, + 1,131,2,92,3,125,2,125,3,125,4,124,4,83,0,41, + 2,122,106,103,101,116,95,102,105,108,101,110,97,109,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,102,105,108, + 101,110,97,109,101,32,115,116,114,105,110,103,46,10,10,32, + 32,32,32,32,32,32,32,82,101,116,117,114,110,32,116,104, + 101,32,102,105,108,101,110,97,109,101,32,102,111,114,32,116, 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, - 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, - 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,110, - 100,46,10,32,32,32,32,32,32,32,32,78,169,1,218,16, - 95,103,101,116,95,109,111,100,117,108,101,95,99,111,100,101, - 169,5,114,32,0,0,0,114,38,0,0,0,218,4,99,111, - 100,101,218,9,105,115,112,97,99,107,97,103,101,114,40,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,8,103,101,116,95,99,111,100,101,184,0,0,0,115, - 6,0,0,0,16,6,4,1,255,128,122,20,122,105,112,105, - 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,0,0,0,0,4,0,0, - 0,8,0,0,0,67,0,0,0,115,112,0,0,0,116,0, - 114,16,124,1,160,1,116,0,116,2,161,2,125,1,124,1, - 125,2,124,1,160,3,124,0,106,4,116,2,23,0,161,1, - 114,58,124,1,116,5,124,0,106,4,116,2,23,0,131,1, - 100,1,133,2,25,0,125,2,122,14,124,0,106,6,124,2, - 25,0,125,3,87,0,110,26,4,0,116,7,121,98,1,0, - 1,0,1,0,116,8,100,2,100,3,124,2,131,3,130,1, - 48,0,116,9,124,0,106,4,124,3,131,2,83,0,41,4, - 122,154,103,101,116,95,100,97,116,97,40,112,97,116,104,110, - 97,109,101,41,32,45,62,32,115,116,114,105,110,103,32,119, - 105,116,104,32,102,105,108,101,32,100,97,116,97,46,10,10, - 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, - 104,101,32,100,97,116,97,32,97,115,115,111,99,105,97,116, - 101,100,32,119,105,116,104,32,39,112,97,116,104,110,97,109, - 101,39,46,32,82,97,105,115,101,32,79,83,69,114,114,111, - 114,32,105,102,10,32,32,32,32,32,32,32,32,116,104,101, - 32,102,105,108,101,32,119,97,115,110,39,116,32,102,111,117, - 110,100,46,10,32,32,32,32,32,32,32,32,78,114,0,0, - 0,0,218,0,41,10,114,18,0,0,0,114,19,0,0,0, - 114,20,0,0,0,218,10,115,116,97,114,116,115,119,105,116, - 104,114,29,0,0,0,218,3,108,101,110,114,28,0,0,0, - 114,26,0,0,0,114,22,0,0,0,218,9,95,103,101,116, - 95,100,97,116,97,41,4,114,32,0,0,0,218,8,112,97, - 116,104,110,97,109,101,90,3,107,101,121,218,9,116,111,99, - 95,101,110,116,114,121,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,8,103,101,116,95,100,97,116,97,194, - 0,0,0,115,22,0,0,0,4,6,12,1,4,2,16,1, - 22,1,2,2,14,1,12,1,14,1,12,1,255,128,122,20, - 122,105,112,105,109,112,111,114,116,101,114,46,103,101,116,95, - 100,97,116,97,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,3,0,0,0,67,0,0,0,115,20,0, - 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, - 125,4,124,4,83,0,41,2,122,106,103,101,116,95,102,105, - 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, + 117,108,101,46,10,32,32,32,32,32,32,32,32,78,114,47, + 0,0,0,114,49,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,12,103,101,116,95,102,105,108, + 101,110,97,109,101,215,0,0,0,115,6,0,0,0,16,7, + 4,1,255,128,122,24,122,105,112,105,109,112,111,114,116,101, + 114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,8, + 0,0,0,67,0,0,0,115,126,0,0,0,116,0,124,0, + 124,1,131,2,125,2,124,2,100,1,117,0,114,36,116,1, + 100,2,124,1,155,2,157,2,124,1,100,3,141,2,130,1, + 116,2,124,0,124,1,131,2,125,3,124,2,114,64,116,3, + 160,4,124,3,100,4,161,2,125,4,110,10,124,3,155,0, + 100,5,157,2,125,4,122,14,124,0,106,5,124,4,25,0, + 125,5,87,0,110,20,4,0,116,6,121,108,1,0,1,0, + 1,0,89,0,100,1,83,0,48,0,116,7,124,0,106,8, + 124,5,131,2,160,9,161,0,83,0,41,6,122,253,103,101, + 116,95,115,111,117,114,99,101,40,102,117,108,108,110,97,109, + 101,41,32,45,62,32,115,111,117,114,99,101,32,115,116,114, 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, - 101,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,46,10,32,32,32,32, - 32,32,32,32,78,114,47,0,0,0,114,49,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,12, - 103,101,116,95,102,105,108,101,110,97,109,101,215,0,0,0, - 115,6,0,0,0,16,7,4,1,255,128,122,24,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,102,105,108, - 101,110,97,109,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,126, - 0,0,0,116,0,124,0,124,1,131,2,125,2,124,2,100, - 1,117,0,114,36,116,1,100,2,124,1,155,2,157,2,124, - 1,100,3,141,2,130,1,116,2,124,0,124,1,131,2,125, - 3,124,2,114,64,116,3,160,4,124,3,100,4,161,2,125, - 4,110,10,124,3,155,0,100,5,157,2,125,4,122,14,124, - 0,106,5,124,4,25,0,125,5,87,0,110,20,4,0,116, - 6,121,108,1,0,1,0,1,0,89,0,100,1,83,0,48, - 0,116,7,124,0,106,8,124,5,131,2,160,9,161,0,83, - 0,41,6,122,253,103,101,116,95,115,111,117,114,99,101,40, - 102,117,108,108,110,97,109,101,41,32,45,62,32,115,111,117, - 114,99,101,32,115,116,114,105,110,103,46,10,10,32,32,32, - 32,32,32,32,32,82,101,116,117,114,110,32,116,104,101,32, - 115,111,117,114,99,101,32,99,111,100,101,32,102,111,114,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,46,32,82,97,105,115,101,32,90,105,112,73, - 109,112,111,114,116,69,114,114,111,114,10,32,32,32,32,32, - 32,32,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117, - 110,100,44,32,114,101,116,117,114,110,32,78,111,110,101,32, - 105,102,32,116,104,101,32,97,114,99,104,105,118,101,32,100, - 111,101,115,10,32,32,32,32,32,32,32,32,99,111,110,116, - 97,105,110,32,116,104,101,32,109,111,100,117,108,101,44,32, - 98,117,116,32,104,97,115,32,110,111,32,115,111,117,114,99, - 101,32,102,111,114,32,105,116,46,10,32,32,32,32,32,32, - 32,32,78,250,18,99,97,110,39,116,32,102,105,110,100,32, - 109,111,100,117,108,101,32,169,1,114,44,0,0,0,250,11, - 95,95,105,110,105,116,95,95,46,112,121,250,3,46,112,121, - 41,10,114,35,0,0,0,114,3,0,0,0,114,36,0,0, - 0,114,21,0,0,0,114,30,0,0,0,114,28,0,0,0, - 114,26,0,0,0,114,56,0,0,0,114,29,0,0,0,218, - 6,100,101,99,111,100,101,41,6,114,32,0,0,0,114,38, - 0,0,0,114,39,0,0,0,114,13,0,0,0,218,8,102, - 117,108,108,112,97,116,104,114,58,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,10,103,101,116, - 95,115,111,117,114,99,101,226,0,0,0,115,26,0,0,0, - 10,7,8,1,18,1,10,2,4,1,14,1,10,2,2,2, - 14,1,12,1,8,2,16,1,255,128,122,22,122,105,112,105, - 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,0,0,0,0,3, - 0,0,0,4,0,0,0,67,0,0,0,115,40,0,0,0, - 116,0,124,0,124,1,131,2,125,2,124,2,100,1,117,0, - 114,36,116,1,100,2,124,1,155,2,157,2,124,1,100,3, - 141,2,130,1,124,2,83,0,41,4,122,171,105,115,95,112, - 97,99,107,97,103,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,98,111,111,108,46,10,10,32,32,32,32,32, - 32,32,32,82,101,116,117,114,110,32,84,114,117,101,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,102,117,108,108,110,97, - 109,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, - 10,32,32,32,32,32,32,32,32,82,97,105,115,101,32,90, - 105,112,73,109,112,111,114,116,69,114,114,111,114,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,99,111,117,108, - 100,110,39,116,32,98,101,32,102,111,117,110,100,46,10,32, - 32,32,32,32,32,32,32,78,114,61,0,0,0,114,62,0, - 0,0,41,2,114,35,0,0,0,114,3,0,0,0,41,3, - 114,32,0,0,0,114,38,0,0,0,114,39,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,43, - 0,0,0,252,0,0,0,115,10,0,0,0,10,6,8,1, - 18,1,4,1,255,128,122,22,122,105,112,105,109,112,111,114, - 116,101,114,46,105,115,95,112,97,99,107,97,103,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,8, - 0,0,0,67,0,0,0,115,252,0,0,0,100,1,125,2, - 116,0,160,1,124,2,116,2,161,2,1,0,116,3,124,0, - 124,1,131,2,92,3,125,3,125,4,125,5,116,4,106,5, - 160,6,124,1,161,1,125,6,124,6,100,2,117,0,115,62, - 116,7,124,6,116,8,131,2,115,80,116,8,124,1,131,1, - 125,6,124,6,116,4,106,5,124,1,60,0,124,0,124,6, - 95,9,122,84,124,4,114,124,116,10,124,0,124,1,131,2, - 125,7,116,11,160,12,124,0,106,13,124,7,161,2,125,8, - 124,8,103,1,124,6,95,14,116,15,124,6,100,3,131,2, - 115,140,116,16,124,6,95,16,116,11,160,17,124,6,106,18, - 124,1,124,5,161,3,1,0,116,19,124,3,124,6,106,18, - 131,2,1,0,87,0,110,16,1,0,1,0,1,0,116,4, - 106,5,124,1,61,0,130,0,122,14,116,4,106,5,124,1, - 25,0,125,6,87,0,110,30,4,0,116,20,121,232,1,0, - 1,0,1,0,116,21,100,4,124,1,155,2,100,5,157,3, - 131,1,130,1,48,0,116,22,160,23,100,6,124,1,124,5, - 161,3,1,0,124,6,83,0,41,7,97,55,1,0,0,108, - 111,97,100,95,109,111,100,117,108,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,76,111,97,100,32,116,104, - 101,32,109,111,100,117,108,101,32,115,112,101,99,105,102,105, - 101,100,32,98,121,32,39,102,117,108,108,110,97,109,101,39, - 46,32,39,102,117,108,108,110,97,109,101,39,32,109,117,115, - 116,32,98,101,32,116,104,101,10,32,32,32,32,32,32,32, - 32,102,117,108,108,121,32,113,117,97,108,105,102,105,101,100, - 32,40,100,111,116,116,101,100,41,32,109,111,100,117,108,101, - 32,110,97,109,101,46,32,73,116,32,114,101,116,117,114,110, - 115,32,116,104,101,32,105,109,112,111,114,116,101,100,10,32, - 32,32,32,32,32,32,32,109,111,100,117,108,101,44,32,111, - 114,32,114,97,105,115,101,115,32,90,105,112,73,109,112,111, - 114,116,69,114,114,111,114,32,105,102,32,105,116,32,119,97, - 115,110,39,116,32,102,111,117,110,100,46,10,10,32,32,32, - 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, - 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, - 48,46,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,32,32, - 32,32,32,32,32,32,122,114,122,105,112,105,109,112,111,114, - 116,46,122,105,112,105,109,112,111,114,116,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,105,110,115,116,101,97,100,78,218,12,95,95,98, - 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, - 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, - 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, - 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, - 112,32,123,125,41,24,218,9,95,119,97,114,110,105,110,103, - 115,90,4,119,97,114,110,218,18,68,101,112,114,101,99,97, - 116,105,111,110,87,97,114,110,105,110,103,114,48,0,0,0, - 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, - 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, - 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, - 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, - 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, - 218,7,104,97,115,97,116,116,114,114,68,0,0,0,90,14, - 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, - 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, - 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, - 114,45,0,0,0,218,16,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,41,9,114,32,0,0,0,114,38, - 0,0,0,218,3,109,115,103,114,50,0,0,0,114,51,0, - 0,0,114,40,0,0,0,90,3,109,111,100,114,13,0,0, - 0,114,66,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,108,111,97,100,95,109,111,100,117, - 108,101,9,1,0,0,115,54,0,0,0,4,9,12,2,16, - 1,12,1,18,1,8,1,10,1,6,1,2,2,4,1,10, - 3,14,1,8,1,10,2,6,1,16,1,16,1,6,1,8, - 1,2,1,2,2,14,1,12,1,18,1,14,1,4,1,255, - 128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,64,0,0,0,122,20,124,0,160,0,124,1, - 161,1,115,18,87,0,100,1,83,0,87,0,110,20,4,0, - 116,1,121,40,1,0,1,0,1,0,89,0,100,1,83,0, - 48,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, - 124,0,124,1,131,2,83,0,41,4,122,204,82,101,116,117, - 114,110,32,116,104,101,32,82,101,115,111,117,114,99,101,82, - 101,97,100,101,114,32,102,111,114,32,97,32,112,97,99,107, - 97,103,101,32,105,110,32,97,32,122,105,112,32,102,105,108, - 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, - 102,117,108,108,110,97,109,101,39,32,105,115,32,97,32,112, - 97,99,107,97,103,101,32,119,105,116,104,105,110,32,116,104, - 101,32,122,105,112,32,102,105,108,101,44,32,114,101,116,117, - 114,110,32,116,104,101,10,32,32,32,32,32,32,32,32,39, - 82,101,115,111,117,114,99,101,82,101,97,100,101,114,39,32, - 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,112, - 97,99,107,97,103,101,46,32,32,79,116,104,101,114,119,105, - 115,101,32,114,101,116,117,114,110,32,78,111,110,101,46,10, - 32,32,32,32,32,32,32,32,78,114,0,0,0,0,41,1, - 218,9,90,105,112,82,101,97,100,101,114,41,4,114,43,0, - 0,0,114,3,0,0,0,90,17,105,109,112,111,114,116,108, - 105,98,46,114,101,97,100,101,114,115,114,83,0,0,0,41, - 3,114,32,0,0,0,114,38,0,0,0,114,83,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,52,1,0,0,115,16,0,0,0,2,6,10, - 1,10,1,12,1,8,1,12,1,10,1,255,128,122,31,122, - 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5, - 0,0,0,67,0,0,0,115,24,0,0,0,100,1,124,0, - 106,0,155,0,116,1,155,0,124,0,106,2,155,0,100,2, - 157,5,83,0,41,3,78,122,21,60,122,105,112,105,109,112, - 111,114,116,101,114,32,111,98,106,101,99,116,32,34,122,2, - 34,62,41,3,114,29,0,0,0,114,20,0,0,0,114,31, - 0,0,0,41,1,114,32,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, - 114,95,95,67,1,0,0,115,4,0,0,0,24,1,255,128, - 122,20,122,105,112,105,109,112,111,114,116,101,114,46,95,95, - 114,101,112,114,95,95,41,1,78,41,1,78,41,1,78,41, - 16,114,6,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,7,95,95,100,111,99,95,95,114,34,0,0,0,114,41, - 0,0,0,114,42,0,0,0,114,46,0,0,0,114,52,0, - 0,0,114,59,0,0,0,114,60,0,0,0,114,67,0,0, - 0,114,43,0,0,0,114,82,0,0,0,114,84,0,0,0, - 114,85,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,4,0,0,0,46,0, - 0,0,115,30,0,0,0,8,0,4,1,8,17,10,46,10, - 34,10,13,8,27,8,10,8,21,8,11,8,26,8,13,8, - 43,12,15,255,128,122,12,95,95,105,110,105,116,95,95,46, - 112,121,99,84,114,63,0,0,0,70,41,3,122,4,46,112, - 121,99,84,70,41,3,114,64,0,0,0,70,70,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,67,0,0,0,115,20,0,0,0,124,0,106,0,124, - 1,160,1,100,1,161,1,100,2,25,0,23,0,83,0,41, - 3,78,218,1,46,233,2,0,0,0,41,2,114,31,0,0, - 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114, - 32,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,36,0,0,0,85,1,0, - 0,115,4,0,0,0,20,1,255,128,114,36,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, - 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,169, - 1,78,41,2,114,20,0,0,0,114,28,0,0,0,41,3, - 114,32,0,0,0,114,13,0,0,0,90,7,100,105,114,112, - 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,37,0,0,0,89,1,0,0,115,6,0,0,0, - 8,4,10,2,255,128,114,37,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,124,0,124,1,131, - 2,125,2,116,1,68,0,93,34,92,3,125,3,125,4,125, - 5,124,2,124,3,23,0,125,6,124,6,124,0,106,2,118, - 0,114,14,124,5,2,0,1,0,83,0,100,0,83,0,114, - 90,0,0,0,41,3,114,36,0,0,0,218,16,95,122,105, - 112,95,115,101,97,114,99,104,111,114,100,101,114,114,28,0, - 0,0,41,7,114,32,0,0,0,114,38,0,0,0,114,13, - 0,0,0,218,6,115,117,102,102,105,120,218,10,105,115,98, - 121,116,101,99,111,100,101,114,51,0,0,0,114,66,0,0, - 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,35,0,0,0,98,1,0,0,115,14,0,0,0,10,1, - 14,1,8,1,10,1,8,1,4,1,255,128,114,35,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,26,0, - 0,0,9,0,0,0,67,0,0,0,115,230,4,0,0,122, - 14,116,0,160,1,124,0,161,1,125,1,87,0,110,32,4, - 0,116,2,121,46,1,0,1,0,1,0,116,3,100,1,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,48,0,124, - 1,144,4,143,140,1,0,122,36,124,1,160,4,116,5,11, - 0,100,3,161,2,1,0,124,1,160,6,161,0,125,2,124, - 1,160,7,116,5,161,1,125,3,87,0,110,32,4,0,116, - 2,121,124,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,48,0,116,8,124, - 3,131,1,116,5,107,3,114,156,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,3,100,0,100, - 5,133,2,25,0,116,9,107,3,144,1,114,154,122,24,124, - 1,160,4,100,6,100,3,161,2,1,0,124,1,160,6,161, - 0,125,4,87,0,110,32,4,0,116,2,121,230,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,48,0,116,10,124,4,116,11,24,0,116, - 5,24,0,100,6,131,2,125,5,122,22,124,1,160,4,124, - 5,161,1,1,0,124,1,160,7,161,0,125,6,87,0,110, - 34,4,0,116,2,144,1,121,50,1,0,1,0,1,0,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,48,0,124,6,160,12,116,9,161,1,125,7,124,7,100, - 6,107,0,144,1,114,90,116,3,100,7,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,6,124,7,124,7,116, - 5,23,0,133,2,25,0,125,3,116,8,124,3,131,1,116, - 5,107,3,144,1,114,138,116,3,100,8,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,4,116,8,124,6,131, - 1,24,0,124,7,23,0,125,2,116,13,124,3,100,9,100, - 10,133,2,25,0,131,1,125,8,116,13,124,3,100,10,100, - 11,133,2,25,0,131,1,125,9,124,2,124,8,107,0,144, - 1,114,214,116,3,100,12,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,2,124,9,107,0,144,1,114,242,116, - 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, - 10,124,10,100,6,107,0,144,2,114,30,116,3,100,14,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, - 11,100,6,125,12,122,14,124,1,160,4,124,2,161,1,1, - 0,87,0,110,34,4,0,116,2,144,2,121,86,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,48,0,124,1,160,7,100,15,161,1,125, - 3,116,8,124,3,131,1,100,5,107,0,144,2,114,120,116, - 14,100,16,131,1,130,1,124,3,100,0,100,5,133,2,25, - 0,100,17,107,3,144,2,114,142,144,4,113,180,116,8,124, - 3,131,1,100,15,107,3,144,2,114,164,116,14,100,16,131, - 1,130,1,116,15,124,3,100,18,100,19,133,2,25,0,131, - 1,125,13,116,15,124,3,100,19,100,9,133,2,25,0,131, - 1,125,14,116,15,124,3,100,9,100,20,133,2,25,0,131, - 1,125,15,116,15,124,3,100,20,100,10,133,2,25,0,131, - 1,125,16,116,13,124,3,100,10,100,11,133,2,25,0,131, - 1,125,17,116,13,124,3,100,11,100,21,133,2,25,0,131, - 1,125,18,116,13,124,3,100,21,100,22,133,2,25,0,131, - 1,125,4,116,15,124,3,100,22,100,23,133,2,25,0,131, - 1,125,19,116,15,124,3,100,23,100,24,133,2,25,0,131, - 1,125,20,116,15,124,3,100,24,100,25,133,2,25,0,131, - 1,125,21,116,13,124,3,100,26,100,15,133,2,25,0,131, - 1,125,22,124,19,124,20,23,0,124,21,23,0,125,8,124, - 22,124,9,107,4,144,3,114,124,116,3,100,27,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,22,124,10,55, - 0,125,22,122,14,124,1,160,7,124,19,161,1,125,23,87, - 0,110,34,4,0,116,2,144,3,121,180,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,48,0,116,8,124,23,131,1,124,19,107,3,144, - 3,114,214,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,122,50,116,8,124,1,160,7,124,8,124, - 19,24,0,161,1,131,1,124,8,124,19,24,0,107,3,144, - 4,114,6,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,87,0,110,34,4,0,116,2,144,4,121, - 42,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,48,0,124,13,100,28,64, - 0,144,4,114,64,124,23,160,16,161,0,125,23,110,52,122, - 14,124,23,160,16,100,29,161,1,125,23,87,0,110,36,4, - 0,116,17,144,4,121,114,1,0,1,0,1,0,124,23,160, - 16,100,30,161,1,160,18,116,19,161,1,125,23,89,0,110, - 2,48,0,124,23,160,20,100,31,116,21,161,2,125,23,116, - 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, - 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, - 25,124,11,124,23,60,0,124,12,100,32,55,0,125,12,144, - 2,113,88,87,0,100,0,4,0,4,0,131,3,1,0,110, - 18,49,0,144,4,115,202,48,0,1,0,1,0,1,0,89, - 0,1,0,116,24,160,25,100,33,124,12,124,0,161,3,1, - 0,124,11,83,0,41,34,78,122,21,99,97,110,39,116,32, - 111,112,101,110,32,90,105,112,32,102,105,108,101,58,32,114, - 12,0,0,0,114,88,0,0,0,250,21,99,97,110,39,116, - 32,114,101,97,100,32,90,105,112,32,102,105,108,101,58,32, - 233,4,0,0,0,114,0,0,0,0,122,16,110,111,116,32, - 97,32,90,105,112,32,102,105,108,101,58,32,122,18,99,111, - 114,114,117,112,116,32,90,105,112,32,102,105,108,101,58,32, - 233,12,0,0,0,233,16,0,0,0,233,20,0,0,0,122, - 28,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, - 101,99,116,111,114,121,32,115,105,122,101,58,32,122,30,98, - 97,100,32,99,101,110,116,114,97,108,32,100,105,114,101,99, - 116,111,114,121,32,111,102,102,115,101,116,58,32,122,38,98, - 97,100,32,99,101,110,116,114,97,108,32,100,105,114,101,99, - 116,111,114,121,32,115,105,122,101,32,111,114,32,111,102,102, - 115,101,116,58,32,233,46,0,0,0,250,27,69,79,70,32, - 114,101,97,100,32,119,104,101,114,101,32,110,111,116,32,101, - 120,112,101,99,116,101,100,115,4,0,0,0,80,75,1,2, - 233,8,0,0,0,233,10,0,0,0,233,14,0,0,0,233, - 24,0,0,0,233,28,0,0,0,233,30,0,0,0,233,32, - 0,0,0,233,34,0,0,0,233,42,0,0,0,122,25,98, - 97,100,32,108,111,99,97,108,32,104,101,97,100,101,114,32, - 111,102,102,115,101,116,58,32,105,0,8,0,0,218,5,97, - 115,99,105,105,90,6,108,97,116,105,110,49,250,1,47,114, - 5,0,0,0,122,33,122,105,112,105,109,112,111,114,116,58, - 32,102,111,117,110,100,32,123,125,32,110,97,109,101,115,32, - 105,110,32,123,33,114,125,41,26,218,3,95,105,111,218,9, - 111,112,101,110,95,99,111,100,101,114,22,0,0,0,114,3, - 0,0,0,218,4,115,101,101,107,218,20,69,78,68,95,67, - 69,78,84,82,65,76,95,68,73,82,95,83,73,90,69,90, - 4,116,101,108,108,218,4,114,101,97,100,114,55,0,0,0, - 218,18,83,84,82,73,78,71,95,69,78,68,95,65,82,67, - 72,73,86,69,218,3,109,97,120,218,15,77,65,88,95,67, - 79,77,77,69,78,84,95,76,69,78,218,5,114,102,105,110, - 100,114,2,0,0,0,218,8,69,79,70,69,114,114,111,114, - 114,1,0,0,0,114,65,0,0,0,218,18,85,110,105,99, - 111,100,101,68,101,99,111,100,101,69,114,114,111,114,218,9, - 116,114,97,110,115,108,97,116,101,218,11,99,112,52,51,55, - 95,116,97,98,108,101,114,19,0,0,0,114,20,0,0,0, - 114,21,0,0,0,114,30,0,0,0,114,45,0,0,0,114, - 80,0,0,0,41,26,114,29,0,0,0,218,2,102,112,90, - 15,104,101,97,100,101,114,95,112,111,115,105,116,105,111,110, - 218,6,98,117,102,102,101,114,218,9,102,105,108,101,95,115, - 105,122,101,90,17,109,97,120,95,99,111,109,109,101,110,116, - 95,115,116,97,114,116,218,4,100,97,116,97,90,3,112,111, - 115,218,11,104,101,97,100,101,114,95,115,105,122,101,90,13, - 104,101,97,100,101,114,95,111,102,102,115,101,116,90,10,97, - 114,99,95,111,102,102,115,101,116,114,33,0,0,0,218,5, - 99,111,117,110,116,218,5,102,108,97,103,115,218,8,99,111, - 109,112,114,101,115,115,218,4,116,105,109,101,218,4,100,97, - 116,101,218,3,99,114,99,218,9,100,97,116,97,95,115,105, - 122,101,218,9,110,97,109,101,95,115,105,122,101,218,10,101, - 120,116,114,97,95,115,105,122,101,90,12,99,111,109,109,101, - 110,116,95,115,105,122,101,218,11,102,105,108,101,95,111,102, - 102,115,101,116,114,44,0,0,0,114,13,0,0,0,218,1, - 116,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,27,0,0,0,129,1,0,0,115,214,0,0,0,2,1, - 14,1,12,1,20,1,8,2,2,1,14,1,8,1,14,1, - 12,1,20,1,12,1,18,1,18,1,2,3,12,1,12,1, - 12,1,10,1,2,1,8,255,8,2,2,1,2,255,2,1, - 4,255,2,2,10,1,12,1,14,1,10,1,2,1,8,255, - 10,2,10,1,10,1,2,1,6,255,16,2,14,1,10,1, - 2,1,6,255,16,2,16,2,16,1,10,1,18,1,10,1, - 18,1,8,1,8,1,10,1,18,1,4,2,4,2,2,1, - 14,1,14,1,20,1,10,2,14,1,8,1,18,2,4,1, - 14,1,8,1,16,1,16,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,16,1,12,1,10,1,18,1, - 8,1,2,2,14,1,14,1,20,1,14,1,18,1,2,4, - 28,1,22,1,14,1,20,1,10,2,10,2,2,3,14,1, - 14,1,22,1,12,2,12,1,20,1,8,1,44,1,14,1, + 116,117,114,110,32,116,104,101,32,115,111,117,114,99,101,32, + 99,111,100,101,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,109,111,100,117,108,101,46,32,82, + 97,105,115,101,32,90,105,112,73,109,112,111,114,116,69,114, + 114,111,114,10,32,32,32,32,32,32,32,32,105,102,32,116, + 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, + 39,116,32,98,101,32,102,111,117,110,100,44,32,114,101,116, + 117,114,110,32,78,111,110,101,32,105,102,32,116,104,101,32, + 97,114,99,104,105,118,101,32,100,111,101,115,10,32,32,32, + 32,32,32,32,32,99,111,110,116,97,105,110,32,116,104,101, + 32,109,111,100,117,108,101,44,32,98,117,116,32,104,97,115, + 32,110,111,32,115,111,117,114,99,101,32,102,111,114,32,105, + 116,46,10,32,32,32,32,32,32,32,32,78,250,18,99,97, + 110,39,116,32,102,105,110,100,32,109,111,100,117,108,101,32, + 169,1,114,44,0,0,0,250,11,95,95,105,110,105,116,95, + 95,46,112,121,250,3,46,112,121,41,10,114,35,0,0,0, + 114,3,0,0,0,114,36,0,0,0,114,21,0,0,0,114, + 30,0,0,0,114,28,0,0,0,114,26,0,0,0,114,56, + 0,0,0,114,29,0,0,0,218,6,100,101,99,111,100,101, + 41,6,114,32,0,0,0,114,38,0,0,0,114,39,0,0, + 0,114,13,0,0,0,218,8,102,117,108,108,112,97,116,104, + 114,58,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 226,0,0,0,115,26,0,0,0,10,7,8,1,18,1,10, + 2,4,1,14,1,10,2,2,2,14,1,12,1,8,2,16, + 1,255,128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0, + 67,0,0,0,115,40,0,0,0,116,0,124,0,124,1,131, + 2,125,2,124,2,100,1,117,0,114,36,116,1,100,2,124, + 1,155,2,157,2,124,1,100,3,141,2,130,1,124,2,83, + 0,41,4,122,171,105,115,95,112,97,99,107,97,103,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,98,111,111, + 108,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, + 114,110,32,84,114,117,101,32,105,102,32,116,104,101,32,109, + 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, + 98,121,32,102,117,108,108,110,97,109,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,46,10,32,32,32,32,32,32, + 32,32,82,97,105,115,101,32,90,105,112,73,109,112,111,114, + 116,69,114,114,111,114,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,99,111,117,108,100,110,39,116,32,98,101, + 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, + 78,114,61,0,0,0,114,62,0,0,0,41,2,114,35,0, + 0,0,114,3,0,0,0,41,3,114,32,0,0,0,114,38, + 0,0,0,114,39,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,114,43,0,0,0,252,0,0,0, + 115,10,0,0,0,10,6,8,1,18,1,4,1,255,128,122, + 22,122,105,112,105,109,112,111,114,116,101,114,46,105,115,95, + 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,8,0,0,0,67,0,0,0, + 115,252,0,0,0,100,1,125,2,116,0,160,1,124,2,116, + 2,161,2,1,0,116,3,124,0,124,1,131,2,92,3,125, + 3,125,4,125,5,116,4,106,5,160,6,124,1,161,1,125, + 6,124,6,100,2,117,0,115,62,116,7,124,6,116,8,131, + 2,115,80,116,8,124,1,131,1,125,6,124,6,116,4,106, + 5,124,1,60,0,124,0,124,6,95,9,122,84,124,4,114, + 124,116,10,124,0,124,1,131,2,125,7,116,11,160,12,124, + 0,106,13,124,7,161,2,125,8,124,8,103,1,124,6,95, + 14,116,15,124,6,100,3,131,2,115,140,116,16,124,6,95, + 16,116,11,160,17,124,6,106,18,124,1,124,5,161,3,1, + 0,116,19,124,3,124,6,106,18,131,2,1,0,87,0,110, + 16,1,0,1,0,1,0,116,4,106,5,124,1,61,0,130, + 0,122,14,116,4,106,5,124,1,25,0,125,6,87,0,110, + 30,4,0,116,20,121,232,1,0,1,0,1,0,116,21,100, + 4,124,1,155,2,100,5,157,3,131,1,130,1,48,0,116, + 22,160,23,100,6,124,1,124,5,161,3,1,0,124,6,83, + 0,41,7,97,55,1,0,0,108,111,97,100,95,109,111,100, + 117,108,101,40,102,117,108,108,110,97,109,101,41,32,45,62, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, + 32,32,76,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,39, + 102,117,108,108,110,97,109,101,39,46,32,39,102,117,108,108, + 110,97,109,101,39,32,109,117,115,116,32,98,101,32,116,104, + 101,10,32,32,32,32,32,32,32,32,102,117,108,108,121,32, + 113,117,97,108,105,102,105,101,100,32,40,100,111,116,116,101, + 100,41,32,109,111,100,117,108,101,32,110,97,109,101,46,32, + 73,116,32,114,101,116,117,114,110,115,32,116,104,101,32,105, + 109,112,111,114,116,101,100,10,32,32,32,32,32,32,32,32, + 109,111,100,117,108,101,44,32,111,114,32,114,97,105,115,101, + 115,32,90,105,112,73,109,112,111,114,116,69,114,114,111,114, + 32,105,102,32,105,116,32,119,97,115,110,39,116,32,102,111, + 117,110,100,46,10,10,32,32,32,32,32,32,32,32,68,101, + 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, + 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122, + 114,122,105,112,105,109,112,111,114,116,46,122,105,112,105,109, + 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, + 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,78,218,12,95,95,98,117,105,108,116,105,110,115, + 95,95,122,14,76,111,97,100,101,100,32,109,111,100,117,108, + 101,32,122,25,32,110,111,116,32,102,111,117,110,100,32,105, + 110,32,115,121,115,46,109,111,100,117,108,101,115,122,30,105, + 109,112,111,114,116,32,123,125,32,35,32,108,111,97,100,101, + 100,32,102,114,111,109,32,90,105,112,32,123,125,41,24,218, + 9,95,119,97,114,110,105,110,103,115,90,4,119,97,114,110, + 218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,114, + 110,105,110,103,114,48,0,0,0,218,3,115,121,115,218,7, + 109,111,100,117,108,101,115,218,3,103,101,116,114,15,0,0, + 0,218,12,95,109,111,100,117,108,101,95,116,121,112,101,218, + 10,95,95,108,111,97,100,101,114,95,95,114,36,0,0,0, + 114,21,0,0,0,114,30,0,0,0,114,29,0,0,0,90, + 8,95,95,112,97,116,104,95,95,218,7,104,97,115,97,116, + 116,114,114,68,0,0,0,90,14,95,102,105,120,95,117,112, + 95,109,111,100,117,108,101,218,8,95,95,100,105,99,116,95, + 95,218,4,101,120,101,99,114,26,0,0,0,218,11,73,109, + 112,111,114,116,69,114,114,111,114,114,45,0,0,0,218,16, + 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101, + 41,9,114,32,0,0,0,114,38,0,0,0,218,3,109,115, + 103,114,50,0,0,0,114,51,0,0,0,114,40,0,0,0, + 90,3,109,111,100,114,13,0,0,0,114,66,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,11, + 108,111,97,100,95,109,111,100,117,108,101,9,1,0,0,115, + 54,0,0,0,4,9,12,2,16,1,12,1,18,1,8,1, + 10,1,6,1,2,2,4,1,10,3,14,1,8,1,10,2, + 6,1,16,1,16,1,6,1,8,1,2,1,2,2,14,1, + 12,1,18,1,14,1,4,1,255,128,122,23,122,105,112,105, + 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,0,0,0,0, + 3,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, + 0,122,20,124,0,160,0,124,1,161,1,115,18,87,0,100, + 1,83,0,87,0,110,20,4,0,116,1,121,40,1,0,1, + 0,1,0,89,0,100,1,83,0,48,0,100,2,100,3,108, + 2,109,3,125,2,1,0,124,2,124,0,124,1,131,2,83, + 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, + 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, + 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, + 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, + 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, + 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, + 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, + 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, + 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, + 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, + 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, + 97,100,101,114,41,4,114,43,0,0,0,114,3,0,0,0, + 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, + 101,114,115,114,83,0,0,0,41,3,114,32,0,0,0,114, + 38,0,0,0,114,83,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,218,19,103,101,116,95,114,101, + 115,111,117,114,99,101,95,114,101,97,100,101,114,52,1,0, + 0,115,16,0,0,0,2,6,10,1,10,1,12,1,8,1, + 12,1,10,1,255,128,122,31,122,105,112,105,109,112,111,114, + 116,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, + 95,114,101,97,100,101,114,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, + 115,24,0,0,0,100,1,124,0,106,0,155,0,116,1,155, + 0,124,0,106,2,155,0,100,2,157,5,83,0,41,3,78, + 122,21,60,122,105,112,105,109,112,111,114,116,101,114,32,111, + 98,106,101,99,116,32,34,122,2,34,62,41,3,114,29,0, + 0,0,114,20,0,0,0,114,31,0,0,0,41,1,114,32, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,8,95,95,114,101,112,114,95,95,67,1,0,0, + 115,4,0,0,0,24,1,255,128,122,20,122,105,112,105,109, + 112,111,114,116,101,114,46,95,95,114,101,112,114,95,95,41, + 1,78,41,1,78,41,1,78,41,16,114,6,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,7,95,95,100,111,99, + 95,95,114,34,0,0,0,114,41,0,0,0,114,42,0,0, + 0,114,46,0,0,0,114,52,0,0,0,114,59,0,0,0, + 114,60,0,0,0,114,67,0,0,0,114,43,0,0,0,114, + 82,0,0,0,114,84,0,0,0,114,85,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,4,0,0,0,46,0,0,0,115,30,0,0,0, + 8,0,4,1,8,17,10,46,10,34,10,13,8,27,8,10, + 8,21,8,11,8,26,8,13,8,43,12,15,255,128,122,12, + 95,95,105,110,105,116,95,95,46,112,121,99,84,114,63,0, + 0,0,70,41,3,122,4,46,112,121,99,84,70,41,3,114, + 64,0,0,0,70,70,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, + 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, + 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, + 0,0,0,41,2,114,31,0,0,0,218,10,114,112,97,114, + 116,105,116,105,111,110,41,2,114,32,0,0,0,114,38,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,36,0,0,0,85,1,0,0,115,4,0,0,0,20, + 1,255,128,114,36,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, + 0,115,18,0,0,0,124,1,116,0,23,0,125,2,124,2, + 124,0,106,1,118,0,83,0,169,1,78,41,2,114,20,0, + 0,0,114,28,0,0,0,41,3,114,32,0,0,0,114,13, + 0,0,0,90,7,100,105,114,112,97,116,104,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,37,0,0,0, + 89,1,0,0,115,6,0,0,0,8,4,10,2,255,128,114, + 37,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,7,0,0,0,4,0,0,0,67,0,0,0,115,54,0, + 0,0,116,0,124,0,124,1,131,2,125,2,116,1,68,0, + 93,34,92,3,125,3,125,4,125,5,124,2,124,3,23,0, + 125,6,124,6,124,0,106,2,118,0,114,14,124,5,2,0, + 1,0,83,0,100,0,83,0,114,90,0,0,0,41,3,114, + 36,0,0,0,218,16,95,122,105,112,95,115,101,97,114,99, + 104,111,114,100,101,114,114,28,0,0,0,41,7,114,32,0, + 0,0,114,38,0,0,0,114,13,0,0,0,218,6,115,117, + 102,102,105,120,218,10,105,115,98,121,116,101,99,111,100,101, + 114,51,0,0,0,114,66,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,35,0,0,0,98,1, + 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, + 1,4,1,255,128,114,35,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,26,0,0,0,9,0,0,0,67, + 0,0,0,115,232,4,0,0,122,14,116,0,160,1,124,0, + 161,1,125,1,87,0,110,32,4,0,116,2,121,46,1,0, + 1,0,1,0,116,3,100,1,124,0,155,2,157,2,124,0, + 100,2,141,2,130,1,48,0,124,1,144,4,143,142,1,0, + 122,36,124,1,160,4,116,5,11,0,100,3,161,2,1,0, + 124,1,160,6,161,0,125,2,124,1,160,7,116,5,161,1, + 125,3,87,0,110,32,4,0,116,2,121,124,1,0,1,0, + 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, + 141,2,130,1,48,0,116,8,124,3,131,1,116,5,107,3, + 114,156,116,3,100,4,124,0,155,2,157,2,124,0,100,2, + 141,2,130,1,124,3,100,0,100,5,133,2,25,0,116,9, + 107,3,144,1,114,154,122,24,124,1,160,4,100,6,100,3, + 161,2,1,0,124,1,160,6,161,0,125,4,87,0,110,32, + 4,0,116,2,121,230,1,0,1,0,1,0,116,3,100,4, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 116,10,124,4,116,11,24,0,116,5,24,0,100,6,131,2, + 125,5,122,22,124,1,160,4,124,5,161,1,1,0,124,1, + 160,7,161,0,125,6,87,0,110,34,4,0,116,2,144,1, + 121,50,1,0,1,0,1,0,116,3,100,4,124,0,155,2, + 157,2,124,0,100,2,141,2,130,1,48,0,124,6,160,12, + 116,9,161,1,125,7,124,7,100,6,107,0,144,1,114,90, + 116,3,100,7,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,124,6,124,7,124,7,116,5,23,0,133,2,25,0, + 125,3,116,8,124,3,131,1,116,5,107,3,144,1,114,138, + 116,3,100,8,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,124,4,116,8,124,6,131,1,24,0,124,7,23,0, + 125,2,116,13,124,3,100,9,100,10,133,2,25,0,131,1, + 125,8,116,13,124,3,100,10,100,11,133,2,25,0,131,1, + 125,9,124,2,124,8,107,0,144,1,114,214,116,3,100,12, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,2, + 124,9,107,0,144,1,114,242,116,3,100,13,124,0,155,2, + 157,2,124,0,100,2,141,2,130,1,124,2,124,8,56,0, + 125,2,124,2,124,9,24,0,125,10,124,10,100,6,107,0, + 144,2,114,30,116,3,100,14,124,0,155,2,157,2,124,0, + 100,2,141,2,130,1,105,0,125,11,100,6,125,12,122,14, + 124,1,160,4,124,2,161,1,1,0,87,0,110,34,4,0, + 116,2,144,2,121,86,1,0,1,0,1,0,116,3,100,4, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 9,0,124,1,160,7,100,16,161,1,125,3,116,8,124,3, + 131,1,100,5,107,0,144,2,114,122,116,14,100,17,131,1, + 130,1,124,3,100,0,100,5,133,2,25,0,100,18,107,3, + 144,2,114,144,144,4,113,182,116,8,124,3,131,1,100,16, + 107,3,144,2,114,166,116,14,100,17,131,1,130,1,116,15, + 124,3,100,19,100,20,133,2,25,0,131,1,125,13,116,15, + 124,3,100,20,100,9,133,2,25,0,131,1,125,14,116,15, + 124,3,100,9,100,21,133,2,25,0,131,1,125,15,116,15, + 124,3,100,21,100,10,133,2,25,0,131,1,125,16,116,13, + 124,3,100,10,100,11,133,2,25,0,131,1,125,17,116,13, + 124,3,100,11,100,22,133,2,25,0,131,1,125,18,116,13, + 124,3,100,22,100,23,133,2,25,0,131,1,125,4,116,15, + 124,3,100,23,100,24,133,2,25,0,131,1,125,19,116,15, + 124,3,100,24,100,25,133,2,25,0,131,1,125,20,116,15, + 124,3,100,25,100,26,133,2,25,0,131,1,125,21,116,13, + 124,3,100,27,100,16,133,2,25,0,131,1,125,22,124,19, + 124,20,23,0,124,21,23,0,125,8,124,22,124,9,107,4, + 144,3,114,126,116,3,100,28,124,0,155,2,157,2,124,0, + 100,2,141,2,130,1,124,22,124,10,55,0,125,22,122,14, + 124,1,160,7,124,19,161,1,125,23,87,0,110,34,4,0, + 116,2,144,3,121,182,1,0,1,0,1,0,116,3,100,4, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 116,8,124,23,131,1,124,19,107,3,144,3,114,216,116,3, + 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, + 122,50,116,8,124,1,160,7,124,8,124,19,24,0,161,1, + 131,1,124,8,124,19,24,0,107,3,144,4,114,8,116,3, + 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, + 87,0,110,34,4,0,116,2,144,4,121,44,1,0,1,0, + 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, + 141,2,130,1,48,0,124,13,100,29,64,0,144,4,114,66, + 124,23,160,16,161,0,125,23,110,52,122,14,124,23,160,16, + 100,30,161,1,125,23,87,0,110,36,4,0,116,17,144,4, + 121,116,1,0,1,0,1,0,124,23,160,16,100,31,161,1, + 160,18,116,19,161,1,125,23,89,0,110,2,48,0,124,23, + 160,20,100,32,116,21,161,2,125,23,116,22,160,23,124,0, + 124,23,161,2,125,24,124,24,124,14,124,18,124,4,124,22, + 124,15,124,16,124,17,102,8,125,25,124,25,124,11,124,23, + 60,0,124,12,100,33,55,0,125,12,144,2,113,90,87,0, + 100,0,4,0,4,0,131,3,1,0,110,18,49,0,144,4, + 115,204,48,0,1,0,1,0,1,0,89,0,1,0,116,24, + 160,25,100,34,124,12,124,0,161,3,1,0,124,11,83,0, + 41,35,78,122,21,99,97,110,39,116,32,111,112,101,110,32, + 90,105,112,32,102,105,108,101,58,32,114,12,0,0,0,114, + 88,0,0,0,250,21,99,97,110,39,116,32,114,101,97,100, + 32,90,105,112,32,102,105,108,101,58,32,233,4,0,0,0, + 114,0,0,0,0,122,16,110,111,116,32,97,32,90,105,112, + 32,102,105,108,101,58,32,122,18,99,111,114,114,117,112,116, + 32,90,105,112,32,102,105,108,101,58,32,233,12,0,0,0, + 233,16,0,0,0,233,20,0,0,0,122,28,98,97,100,32, + 99,101,110,116,114,97,108,32,100,105,114,101,99,116,111,114, + 121,32,115,105,122,101,58,32,122,30,98,97,100,32,99,101, + 110,116,114,97,108,32,100,105,114,101,99,116,111,114,121,32, + 111,102,102,115,101,116,58,32,122,38,98,97,100,32,99,101, + 110,116,114,97,108,32,100,105,114,101,99,116,111,114,121,32, + 115,105,122,101,32,111,114,32,111,102,102,115,101,116,58,32, + 84,233,46,0,0,0,250,27,69,79,70,32,114,101,97,100, + 32,119,104,101,114,101,32,110,111,116,32,101,120,112,101,99, + 116,101,100,115,4,0,0,0,80,75,1,2,233,8,0,0, + 0,233,10,0,0,0,233,14,0,0,0,233,24,0,0,0, + 233,28,0,0,0,233,30,0,0,0,233,32,0,0,0,233, + 34,0,0,0,233,42,0,0,0,122,25,98,97,100,32,108, + 111,99,97,108,32,104,101,97,100,101,114,32,111,102,102,115, + 101,116,58,32,105,0,8,0,0,218,5,97,115,99,105,105, + 90,6,108,97,116,105,110,49,250,1,47,114,5,0,0,0, + 122,33,122,105,112,105,109,112,111,114,116,58,32,102,111,117, + 110,100,32,123,125,32,110,97,109,101,115,32,105,110,32,123, + 33,114,125,41,26,218,3,95,105,111,218,9,111,112,101,110, + 95,99,111,100,101,114,22,0,0,0,114,3,0,0,0,218, + 4,115,101,101,107,218,20,69,78,68,95,67,69,78,84,82, + 65,76,95,68,73,82,95,83,73,90,69,90,4,116,101,108, + 108,218,4,114,101,97,100,114,55,0,0,0,218,18,83,84, + 82,73,78,71,95,69,78,68,95,65,82,67,72,73,86,69, + 218,3,109,97,120,218,15,77,65,88,95,67,79,77,77,69, + 78,84,95,76,69,78,218,5,114,102,105,110,100,114,2,0, + 0,0,218,8,69,79,70,69,114,114,111,114,114,1,0,0, + 0,114,65,0,0,0,218,18,85,110,105,99,111,100,101,68, + 101,99,111,100,101,69,114,114,111,114,218,9,116,114,97,110, + 115,108,97,116,101,218,11,99,112,52,51,55,95,116,97,98, + 108,101,114,19,0,0,0,114,20,0,0,0,114,21,0,0, + 0,114,30,0,0,0,114,45,0,0,0,114,80,0,0,0, + 41,26,114,29,0,0,0,218,2,102,112,90,15,104,101,97, + 100,101,114,95,112,111,115,105,116,105,111,110,218,6,98,117, + 102,102,101,114,218,9,102,105,108,101,95,115,105,122,101,90, + 17,109,97,120,95,99,111,109,109,101,110,116,95,115,116,97, + 114,116,218,4,100,97,116,97,90,3,112,111,115,218,11,104, + 101,97,100,101,114,95,115,105,122,101,90,13,104,101,97,100, + 101,114,95,111,102,102,115,101,116,90,10,97,114,99,95,111, + 102,102,115,101,116,114,33,0,0,0,218,5,99,111,117,110, + 116,218,5,102,108,97,103,115,218,8,99,111,109,112,114,101, + 115,115,218,4,116,105,109,101,218,4,100,97,116,101,218,3, + 99,114,99,218,9,100,97,116,97,95,115,105,122,101,218,9, + 110,97,109,101,95,115,105,122,101,218,10,101,120,116,114,97, + 95,115,105,122,101,90,12,99,111,109,109,101,110,116,95,115, + 105,122,101,218,11,102,105,108,101,95,111,102,102,115,101,116, + 114,44,0,0,0,114,13,0,0,0,218,1,116,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,114,27,0,0, + 0,129,1,0,0,115,218,0,0,0,2,1,14,1,12,1, + 20,1,8,2,2,1,14,1,8,1,14,1,12,1,20,1, + 12,1,18,1,18,1,2,3,12,1,12,1,12,1,10,1, + 2,1,8,255,8,2,2,1,2,255,2,1,4,255,2,2, + 10,1,12,1,14,1,10,1,2,1,8,255,10,2,10,1, + 10,1,2,1,6,255,16,2,14,1,10,1,2,1,6,255, + 16,2,16,2,16,1,10,1,18,1,10,1,18,1,8,1, + 8,1,10,1,18,1,4,2,4,2,2,1,14,1,14,1, + 20,1,2,1,10,1,14,1,8,1,18,2,4,1,14,1, + 8,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,12,1,10,1,18,1,8,1, + 2,2,14,1,14,1,20,1,14,1,18,1,2,4,28,1, + 22,1,14,1,20,1,10,2,10,2,2,3,14,1,14,1, + 22,1,12,2,12,1,20,1,8,1,8,1,36,202,14,55, 4,1,255,128,114,27,0,0,0,117,190,1,0,0,0,1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33, From webhook-mailer at python.org Tue Dec 15 07:52:04 2020 From: webhook-mailer at python.org (terryjreedy) Date: Tue, 15 Dec 2020 12:52:04 -0000 Subject: [Python-checkins] bpo-33610: Edit idlelib.codecontext (GH-23773) (GH-23775) Message-ID: https://github.com/python/cpython/commit/99d37a0ee82c16f30a874c9b583d59a3844dc9c9 commit: 99d37a0ee82c16f30a874c9b583d59a3844dc9c9 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: terryjreedy date: 2020-12-15T07:51:56-05:00 summary: bpo-33610: Edit idlelib.codecontext (GH-23773) (GH-23775) Add sentence to module docstring and import tkinter items. (cherry picked from commit 6f79e60b66dacefca147bdaa80eb37f936a72991) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/codecontext.py diff --git a/Lib/idlelib/codecontext.py b/Lib/idlelib/codecontext.py index 989b30e599465..eb19773f56e34 100644 --- a/Lib/idlelib/codecontext.py +++ b/Lib/idlelib/codecontext.py @@ -7,11 +7,14 @@ enclosing block. The number of hint lines is determined by the maxlines variable in the codecontext section of config-extensions.def. Lines which do not open blocks are not shown in the context hints pane. + +For EditorWindows, <> is bound to CodeContext(self). +toggle_code_context_event. """ import re from sys import maxsize as INFINITY -import tkinter +from tkinter import Frame, Text, TclError from tkinter.constants import NSEW, SUNKEN from idlelib.config import idleConf @@ -83,7 +86,7 @@ def __del__(self): if self.t1 is not None: try: self.text.after_cancel(self.t1) - except tkinter.TclError: # pragma: no cover + except TclError: # pragma: no cover pass self.t1 = None @@ -111,7 +114,7 @@ def toggle_code_context_event(self, event=None): padx += widget.tk.getint(info['padx']) padx += widget.tk.getint(widget.cget('padx')) border += widget.tk.getint(widget.cget('border')) - context = self.context = tkinter.Text( + context = self.context = Text( self.editwin.text_frame, height=1, width=1, # Don't request more than we get. @@ -127,7 +130,7 @@ def toggle_code_context_event(self, event=None): line_number_colors = idleConf.GetHighlight(idleConf.CurrentTheme(), 'linenumber') - self.cell00 = tkinter.Frame(self.editwin.text_frame, + self.cell00 = Frame(self.editwin.text_frame, bg=line_number_colors['background']) self.cell00.grid(row=0, column=0, sticky=NSEW) menu_status = 'Hide' @@ -221,7 +224,7 @@ def jumptoline(self, event=None): """ try: self.context.index("sel.first") - except tkinter.TclError: + except TclError: lines = len(self.info) if lines == 1: # No context lines are showing. newtop = 1 From webhook-mailer at python.org Tue Dec 15 08:34:51 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 13:34:51 -0000 Subject: [Python-checkins] bpo-42639: Move atexit state to PyInterpreterState (GH-23763) Message-ID: https://github.com/python/cpython/commit/b8fa135908d294b350cdad04e2f512327a538dee commit: b8fa135908d294b350cdad04e2f512327a538dee branch: master author: Victor Stinner committer: vstinner date: 2020-12-15T14:34:19+01:00 summary: bpo-42639: Move atexit state to PyInterpreterState (GH-23763) * Add _PyAtExit_Call() function and remove pyexitfunc and pyexitmodule members of PyInterpreterState. The function logs atexit callback errors using _PyErr_WriteUnraisableMsg(). * Add _PyAtExit_Init() and _PyAtExit_Fini() functions. * Remove traverse, clear and free functions of the atexit module. Co-authored-by: Dong-hee Na files: A Misc/NEWS.d/next/Core and Builtins/2020-12-09-01-55-10.bpo-42639.5pI5HG.rst M Include/internal/pycore_interp.h M Include/internal/pycore_pylifecycle.h M Lib/test/test_atexit.py M Modules/atexitmodule.c M Python/pylifecycle.c M Python/pystate.c diff --git a/Include/internal/pycore_interp.h b/Include/internal/pycore_interp.h index 12416c2e94d43..9ec5358b5e36e 100644 --- a/Include/internal/pycore_interp.h +++ b/Include/internal/pycore_interp.h @@ -159,6 +159,20 @@ struct _Py_exc_state { }; +// atexit state +typedef struct { + PyObject *func; + PyObject *args; + PyObject *kwargs; +} atexit_callback; + +struct atexit_state { + atexit_callback **callbacks; + int ncallbacks; + int callback_len; +}; + + /* interpreter state */ #define _PY_NSMALLPOSINTS 257 @@ -234,12 +248,10 @@ struct _is { PyObject *after_forkers_child; #endif - /* AtExit module */ - PyObject *atexit_module; - uint64_t tstate_next_unique_id; struct _warnings_runtime_state warnings; + struct atexit_state atexit; PyObject *audit_hooks; diff --git a/Include/internal/pycore_pylifecycle.h b/Include/internal/pycore_pylifecycle.h index e6e4187cd5ab0..d1c23c8179150 100644 --- a/Include/internal/pycore_pylifecycle.h +++ b/Include/internal/pycore_pylifecycle.h @@ -55,6 +55,7 @@ extern PyStatus _PyTypes_Init(void); extern PyStatus _PyTypes_InitSlotDefs(void); extern PyStatus _PyImportZip_Init(PyThreadState *tstate); extern PyStatus _PyGC_Init(PyThreadState *tstate); +extern PyStatus _PyAtExit_Init(PyThreadState *tstate); /* Various internal finalizers */ @@ -85,6 +86,7 @@ extern void _PyHash_Fini(void); extern void _PyTraceMalloc_Fini(void); extern void _PyWarnings_Fini(PyInterpreterState *interp); extern void _PyAST_Fini(PyInterpreterState *interp); +extern void _PyAtExit_Fini(PyInterpreterState *interp); extern PyStatus _PyGILState_Init(PyThreadState *tstate); extern void _PyGILState_Fini(PyThreadState *tstate); @@ -109,7 +111,7 @@ PyAPI_FUNC(void) _PyErr_Display(PyObject *file, PyObject *exception, PyAPI_FUNC(void) _PyThreadState_DeleteCurrent(PyThreadState *tstate); -extern void _PyAtExit_Call(PyObject *module); +extern void _PyAtExit_Call(PyThreadState *tstate); #ifdef __cplusplus } diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py index 906f96dc31af0..29faaaf0a9d80 100644 --- a/Lib/test/test_atexit.py +++ b/Lib/test/test_atexit.py @@ -170,6 +170,24 @@ def f(msg): self.assertEqual(res.out.decode().splitlines(), ["two", "one"]) self.assertFalse(res.err) + def test_atexit_instances(self): + # bpo-42639: It is safe to have more than one atexit instance. + code = textwrap.dedent(""" + import sys + import atexit as atexit1 + del sys.modules['atexit'] + import atexit as atexit2 + del sys.modules['atexit'] + + assert atexit2 is not atexit1 + + atexit1.register(print, "atexit1") + atexit2.register(print, "atexit2") + """) + res = script_helper.assert_python_ok("-c", code) + self.assertEqual(res.out.decode().splitlines(), ["atexit2", "atexit1"]) + self.assertFalse(res.err) + @support.cpython_only class SubinterpreterTest(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-09-01-55-10.bpo-42639.5pI5HG.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-09-01-55-10.bpo-42639.5pI5HG.rst new file mode 100644 index 0000000000000..7999ee976f3c0 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-09-01-55-10.bpo-42639.5pI5HG.rst @@ -0,0 +1,3 @@ +Make the :mod:`atexit` module state per-interpreter. It is now safe have more +than one :mod:`atexit` module instance. +Patch by Dong-hee Na and Victor Stinner. diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c index 90ed7d50cad49..ae13eae75dbae 100644 --- a/Modules/atexitmodule.c +++ b/Modules/atexitmodule.c @@ -7,38 +7,26 @@ */ #include "Python.h" -#include "pycore_interp.h" // PyInterpreterState.atexit_func +#include "pycore_initconfig.h" // _PyStatus_NO_MEMORY +#include "pycore_interp.h" // PyInterpreterState.atexit #include "pycore_pystate.h" // _PyInterpreterState_GET /* ===================================================================== */ /* Callback machinery. */ -typedef struct { - PyObject *func; - PyObject *args; - PyObject *kwargs; -} atexit_callback; - -struct atexit_state { - atexit_callback **atexit_callbacks; - int ncallbacks; - int callback_len; -}; - static inline struct atexit_state* -get_atexit_state(PyObject *module) +get_atexit_state(void) { - void *state = PyModule_GetState(module); - assert(state != NULL); - return (struct atexit_state *)state; + PyInterpreterState *interp = _PyInterpreterState_GET(); + return &interp->atexit; } static void atexit_delete_cb(struct atexit_state *state, int i) { - atexit_callback *cb = state->atexit_callbacks[i]; - state->atexit_callbacks[i] = NULL; + atexit_callback *cb = state->callbacks[i]; + state->callbacks[i] = NULL; Py_DECREF(cb->func); Py_DECREF(cb->args); @@ -53,7 +41,7 @@ atexit_cleanup(struct atexit_state *state) { atexit_callback *cb; for (int i = 0; i < state->ncallbacks; i++) { - cb = state->atexit_callbacks[i]; + cb = state->callbacks[i]; if (cb == NULL) continue; @@ -62,25 +50,45 @@ atexit_cleanup(struct atexit_state *state) state->ncallbacks = 0; } -/* Installed into pylifecycle.c's atexit mechanism */ -static void -atexit_callfuncs(PyObject *module, int ignore_exc) +PyStatus +_PyAtExit_Init(PyThreadState *tstate) { - assert(!PyErr_Occurred()); + struct atexit_state *state = &tstate->interp->atexit; + // _PyAtExit_Init() must only be called once + assert(state->callbacks == NULL); - if (module == NULL) { - return; + state->callback_len = 32; + state->ncallbacks = 0; + state->callbacks = PyMem_New(atexit_callback*, state->callback_len); + if (state->callbacks == NULL) { + return _PyStatus_NO_MEMORY(); } + return _PyStatus_OK(); +} + + +void +_PyAtExit_Fini(PyInterpreterState *interp) +{ + struct atexit_state *state = &interp->atexit; + atexit_cleanup(state); + PyMem_Free(state->callbacks); +} + + +static void +atexit_callfuncs(struct atexit_state *state, int ignore_exc) +{ + assert(!PyErr_Occurred()); - struct atexit_state *state = get_atexit_state(module); if (state->ncallbacks == 0) { return; } PyObject *exc_type = NULL, *exc_value, *exc_tb; for (int i = state->ncallbacks - 1; i >= 0; i--) { - atexit_callback *cb = state->atexit_callbacks[i]; + atexit_callback *cb = state->callbacks[i]; if (cb == NULL) { continue; } @@ -125,15 +133,17 @@ atexit_callfuncs(PyObject *module, int ignore_exc) void -_PyAtExit_Call(PyObject *module) +_PyAtExit_Call(PyThreadState *tstate) { - atexit_callfuncs(module, 1); + struct atexit_state *state = &tstate->interp->atexit; + atexit_callfuncs(state, 1); } /* ===================================================================== */ /* Module methods. */ + PyDoc_STRVAR(atexit_register__doc__, "register(func, *args, **kwargs) -> func\n\ \n\ @@ -161,15 +171,15 @@ atexit_register(PyObject *module, PyObject *args, PyObject *kwargs) return NULL; } - struct atexit_state *state = get_atexit_state(module); + struct atexit_state *state = get_atexit_state(); if (state->ncallbacks >= state->callback_len) { atexit_callback **r; state->callback_len += 16; - r = (atexit_callback**)PyMem_Realloc(state->atexit_callbacks, - sizeof(atexit_callback*) * state->callback_len); + size_t size = sizeof(atexit_callback*) * (size_t)state->callback_len; + r = (atexit_callback**)PyMem_Realloc(state->callbacks, size); if (r == NULL) return PyErr_NoMemory(); - state->atexit_callbacks = r; + state->callbacks = r; } atexit_callback *callback = PyMem_Malloc(sizeof(atexit_callback)); @@ -185,7 +195,7 @@ atexit_register(PyObject *module, PyObject *args, PyObject *kwargs) callback->func = Py_NewRef(func); callback->kwargs = Py_XNewRef(kwargs); - state->atexit_callbacks[state->ncallbacks++] = callback; + state->callbacks[state->ncallbacks++] = callback; return Py_NewRef(func); } @@ -198,7 +208,8 @@ Run all registered exit functions."); static PyObject * atexit_run_exitfuncs(PyObject *module, PyObject *unused) { - atexit_callfuncs(module, 0); + struct atexit_state *state = get_atexit_state(); + atexit_callfuncs(state, 0); if (PyErr_Occurred()) { return NULL; } @@ -213,7 +224,7 @@ Clear the list of previously registered exit functions."); static PyObject * atexit_clear(PyObject *module, PyObject *unused) { - atexit_cleanup(get_atexit_state(module)); + atexit_cleanup(get_atexit_state()); Py_RETURN_NONE; } @@ -225,41 +236,10 @@ Return the number of registered exit functions."); static PyObject * atexit_ncallbacks(PyObject *module, PyObject *unused) { - struct atexit_state *state = get_atexit_state(module); + struct atexit_state *state = get_atexit_state(); return PyLong_FromSsize_t(state->ncallbacks); } -static int -atexit_m_traverse(PyObject *module, visitproc visit, void *arg) -{ - struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); - for (int i = 0; i < state->ncallbacks; i++) { - atexit_callback *cb = state->atexit_callbacks[i]; - if (cb == NULL) - continue; - Py_VISIT(cb->func); - Py_VISIT(cb->args); - Py_VISIT(cb->kwargs); - } - return 0; -} - -static int -atexit_m_clear(PyObject *module) -{ - struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); - atexit_cleanup(state); - return 0; -} - -static void -atexit_free(PyObject *module) -{ - struct atexit_state *state = (struct atexit_state *)PyModule_GetState(module); - atexit_cleanup(state); - PyMem_Free(state->atexit_callbacks); -} - PyDoc_STRVAR(atexit_unregister__doc__, "unregister(func) -> None\n\ \n\ @@ -271,10 +251,10 @@ atexit.register\n\ static PyObject * atexit_unregister(PyObject *module, PyObject *func) { - struct atexit_state *state = get_atexit_state(module); + struct atexit_state *state = get_atexit_state(); for (int i = 0; i < state->ncallbacks; i++) { - atexit_callback *cb = state->atexit_callbacks[i]; + atexit_callback *cb = state->callbacks[i]; if (cb == NULL) { continue; } @@ -305,6 +285,7 @@ static PyMethodDef atexit_methods[] = { {NULL, NULL} /* sentinel */ }; + /* ===================================================================== */ /* Initialization function. */ @@ -315,37 +296,12 @@ upon normal program termination.\n\ Two public functions, register and unregister, are defined.\n\ "); -static int -atexit_exec(PyObject *module) -{ - struct atexit_state *state = get_atexit_state(module); - state->callback_len = 32; - state->ncallbacks = 0; - state->atexit_callbacks = PyMem_New(atexit_callback*, state->callback_len); - if (state->atexit_callbacks == NULL) { - return -1; - } - - PyInterpreterState *interp = _PyInterpreterState_GET(); - interp->atexit_module = module; - return 0; -} - -static PyModuleDef_Slot atexit_slots[] = { - {Py_mod_exec, atexit_exec}, - {0, NULL} -}; - static struct PyModuleDef atexitmodule = { PyModuleDef_HEAD_INIT, .m_name = "atexit", .m_doc = atexit__doc__, - .m_size = sizeof(struct atexit_state), + .m_size = 0, .m_methods = atexit_methods, - .m_slots = atexit_slots, - .m_traverse = atexit_m_traverse, - .m_clear = atexit_m_clear, - .m_free = (freefunc)atexit_free }; PyMODINIT_FUNC diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 7b80d01a375e5..8d744c7bfd4a9 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -55,7 +55,6 @@ static PyStatus add_main_module(PyInterpreterState *interp); static PyStatus init_import_site(void); static PyStatus init_set_builtins_open(void); static PyStatus init_sys_streams(PyThreadState *tstate); -static void call_py_exitfuncs(PyThreadState *tstate); static void wait_for_thread_shutdown(PyThreadState *tstate); static void call_ll_exitfuncs(_PyRuntimeState *runtime); @@ -690,6 +689,12 @@ pycore_init_types(PyThreadState *tstate) if (_PyWarnings_InitState(tstate) < 0) { return _PyStatus_ERR("can't initialize warnings"); } + + status = _PyAtExit_Init(tstate); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + return _PyStatus_OK(); } @@ -1655,7 +1660,7 @@ Py_FinalizeEx(void) * the threads created via Threading. */ - call_py_exitfuncs(tstate); + _PyAtExit_Call(tstate); /* Copy the core config, PyInterpreterState_Delete() free the core config memory */ @@ -1946,7 +1951,7 @@ Py_EndInterpreter(PyThreadState *tstate) // Wrap up existing "threading"-module-created, non-daemon threads. wait_for_thread_shutdown(tstate); - call_py_exitfuncs(tstate); + _PyAtExit_Call(tstate); if (tstate != interp->tstate_head || tstate->next != NULL) { Py_FatalError("not the last thread"); @@ -2633,15 +2638,6 @@ Py_ExitStatusException(PyStatus status) } -/* Clean up and exit */ - -static void -call_py_exitfuncs(PyThreadState *tstate) -{ - _PyAtExit_Call(tstate->interp->atexit_module); -} - - /* Wait until threading._shutdown completes, provided the threading module was imported in the first place. The shutdown routine will wait until all non-daemon diff --git a/Python/pystate.c b/Python/pystate.c index 8da583f8e06bc..ead25b08d7a83 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -303,6 +303,7 @@ interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate) _PyAST_Fini(interp); _PyWarnings_Fini(interp); + _PyAtExit_Fini(interp); // All Python types must be destroyed before the last GC collection. Python // types create a reference cycle to themselves in their in their From webhook-mailer at python.org Tue Dec 15 09:14:50 2020 From: webhook-mailer at python.org (encukou) Date: Tue, 15 Dec 2020 14:14:50 -0000 Subject: [Python-checkins] bpo-14935: Remove static state from the _csv module (GH-23224) Message-ID: https://github.com/python/cpython/commit/6a02b384751dbc13979efc1185f0a7c1670dc349 commit: 6a02b384751dbc13979efc1185f0a7c1670dc349 branch: master author: Petr Viktorin committer: encukou date: 2020-12-15T15:14:35+01:00 summary: bpo-14935: Remove static state from the _csv module (GH-23224) Uses code from: https://github.com/python/cpython/pull/16078 Co-authored-by: Marcel Plch Co-authored-by: Eddie Elizondo Co-authored-by: Hai Shi files: A Misc/NEWS.d/next/Library/2020-10-20-23-28-55.bpo-1635741.Iyka3r.rst M Modules/_csv.c diff --git a/Misc/NEWS.d/next/Library/2020-10-20-23-28-55.bpo-1635741.Iyka3r.rst b/Misc/NEWS.d/next/Library/2020-10-20-23-28-55.bpo-1635741.Iyka3r.rst new file mode 100644 index 0000000000000..e14e9a12c275d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-20-23-28-55.bpo-1635741.Iyka3r.rst @@ -0,0 +1 @@ +Port the _csv module to the multi-phase initialization API (:pep:`489`). diff --git a/Modules/_csv.c b/Modules/_csv.c index 594f6c1472726..cade1ca9d47f0 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -18,9 +18,14 @@ module instead. typedef struct { PyObject *error_obj; /* CSV exception */ PyObject *dialects; /* Dialect registry */ + PyTypeObject *dialect_type; + PyTypeObject *reader_type; + PyTypeObject *writer_type; long field_limit; /* max parsed field size */ } _csvstate; +static struct PyModuleDef _csvmodule; + static inline _csvstate* get_csv_state(PyObject *module) { @@ -30,31 +35,35 @@ get_csv_state(PyObject *module) } static int -_csv_clear(PyObject *m) +_csv_clear(PyObject *module) { - Py_CLEAR(get_csv_state(m)->error_obj); - Py_CLEAR(get_csv_state(m)->dialects); + _csvstate *module_state = PyModule_GetState(module); + Py_CLEAR(module_state->error_obj); + Py_CLEAR(module_state->dialects); + Py_CLEAR(module_state->dialect_type); + Py_CLEAR(module_state->reader_type); + Py_CLEAR(module_state->writer_type); return 0; } static int -_csv_traverse(PyObject *m, visitproc visit, void *arg) +_csv_traverse(PyObject *module, visitproc visit, void *arg) { - Py_VISIT(get_csv_state(m)->error_obj); - Py_VISIT(get_csv_state(m)->dialects); + _csvstate *module_state = PyModule_GetState(module); + Py_VISIT(module_state->error_obj); + Py_VISIT(module_state->dialects); + Py_VISIT(module_state->dialect_type); + Py_VISIT(module_state->reader_type); + Py_VISIT(module_state->writer_type); return 0; } static void -_csv_free(void *m) +_csv_free(void *module) { - _csv_clear((PyObject *)m); + _csv_clear((PyObject *)module); } -static struct PyModuleDef _csvmodule; - -#define _csvstate_global ((_csvstate *)PyModule_GetState(PyState_FindModule(&_csvmodule))) - typedef enum { START_RECORD, START_FIELD, ESCAPED_CHAR, IN_FIELD, IN_QUOTED_FIELD, ESCAPE_IN_QUOTED_FIELD, QUOTE_IN_QUOTED_FIELD, @@ -92,8 +101,6 @@ typedef struct { } DialectObj; -static PyTypeObject Dialect_Type; - typedef struct { PyObject_HEAD @@ -110,8 +117,6 @@ typedef struct { unsigned long line_num; /* Source-file line number */ } ReaderObj; -static PyTypeObject Reader_Type; - typedef struct { PyObject_HEAD @@ -123,26 +128,27 @@ typedef struct { Py_ssize_t rec_size; /* size of allocated record */ Py_ssize_t rec_len; /* length of record */ int num_fields; /* number of fields in record */ -} WriterObj; -static PyTypeObject Writer_Type; + PyObject *error_obj; /* cached error object */ +} WriterObj; /* * DIALECT class */ static PyObject * -get_dialect_from_registry(PyObject * name_obj) +get_dialect_from_registry(PyObject *name_obj, _csvstate *module_state) { PyObject *dialect_obj; - dialect_obj = PyDict_GetItemWithError(_csvstate_global->dialects, name_obj); + dialect_obj = PyDict_GetItemWithError(module_state->dialects, name_obj); if (dialect_obj == NULL) { if (!PyErr_Occurred()) - PyErr_Format(_csvstate_global->error_obj, "unknown dialect"); + PyErr_Format(module_state->error_obj, "unknown dialect"); } else Py_INCREF(dialect_obj); + return dialect_obj; } @@ -309,8 +315,16 @@ static PyGetSetDef Dialect_getsetlist[] = { static void Dialect_dealloc(DialectObj *self) { - Py_XDECREF(self->lineterminator); - Py_TYPE(self)->tp_free((PyObject *)self); + PyTypeObject *tp = Py_TYPE(self); + Py_CLEAR(self->lineterminator); + tp->tp_free((PyObject *)self); + Py_DECREF(tp); +} + +static void +Dialect_finalize(DialectObj *self) +{ + Py_CLEAR(self->lineterminator); } static char *dialect_kws[] = { @@ -326,6 +340,22 @@ static char *dialect_kws[] = { NULL }; +static _csvstate * +_csv_state_from_type(PyTypeObject *type, const char *name) +{ + PyObject *module = _PyType_GetModuleByDef(type, &_csvmodule); + if (module == NULL) { + return NULL; + } + _csvstate *module_state = PyModule_GetState(module); + if (module_state == NULL) { + PyErr_Format(PyExc_SystemError, + "%s: No _csv module state found", name); + return NULL; + } + return module_state; +} + static PyObject * dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { @@ -354,16 +384,21 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) &strict)) return NULL; + _csvstate *module_state = _csv_state_from_type(type, "dialect_new"); + if (module_state == NULL) { + return NULL; + } + if (dialect != NULL) { if (PyUnicode_Check(dialect)) { - dialect = get_dialect_from_registry(dialect); + dialect = get_dialect_from_registry(dialect, module_state); if (dialect == NULL) return NULL; } else Py_INCREF(dialect); /* Can we reuse this instance? */ - if (PyObject_TypeCheck(dialect, &Dialect_Type) && + if (PyObject_TypeCheck(dialect, module_state->dialect_type) && delimiter == NULL && doublequote == NULL && escapechar == NULL && @@ -377,7 +412,7 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) self = (DialectObj *)type->tp_alloc(type, 0); if (self == NULL) { - Py_XDECREF(dialect); + Py_CLEAR(dialect); return NULL; } self->lineterminator = NULL; @@ -441,76 +476,69 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) ret = (PyObject *)self; Py_INCREF(self); err: - Py_XDECREF(self); - Py_XDECREF(dialect); - Py_XDECREF(delimiter); - Py_XDECREF(doublequote); - Py_XDECREF(escapechar); - Py_XDECREF(lineterminator); - Py_XDECREF(quotechar); - Py_XDECREF(quoting); - Py_XDECREF(skipinitialspace); - Py_XDECREF(strict); + Py_CLEAR(self); + Py_CLEAR(dialect); + Py_CLEAR(delimiter); + Py_CLEAR(doublequote); + Py_CLEAR(escapechar); + Py_CLEAR(lineterminator); + Py_CLEAR(quotechar); + Py_CLEAR(quoting); + Py_CLEAR(skipinitialspace); + Py_CLEAR(strict); return ret; } +/* Since dialect is now a heap type, it inherits pickling method for + * protocol 0 and 1 from object, therefore it needs to be overriden */ + +PyDoc_STRVAR(dialect_reduce_doc, "raises an exception to avoid pickling"); + +static PyObject * +Dialect_reduce(PyObject *self, PyObject *args) { + PyErr_Format(PyExc_TypeError, + "cannot pickle '%.100s' instances", _PyType_Name(Py_TYPE(self))); + return NULL; +} + +static struct PyMethodDef dialect_methods[] = { + {"__reduce__", Dialect_reduce, METH_VARARGS, dialect_reduce_doc}, + {"__reduce_ex__", Dialect_reduce, METH_VARARGS, dialect_reduce_doc}, + {NULL, NULL} +}; PyDoc_STRVAR(Dialect_Type_doc, "CSV dialect\n" "\n" "The Dialect type records CSV parsing and generation options.\n"); -static PyTypeObject Dialect_Type = { - PyVarObject_HEAD_INIT(NULL, 0) - "_csv.Dialect", /* tp_name */ - sizeof(DialectObj), /* tp_basicsize */ - 0, /* tp_itemsize */ - /* methods */ - (destructor)Dialect_dealloc, /* tp_dealloc */ - 0, /* tp_vectorcall_offset */ - (getattrfunc)0, /* tp_getattr */ - (setattrfunc)0, /* tp_setattr */ - 0, /* tp_as_async */ - (reprfunc)0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - (hashfunc)0, /* tp_hash */ - (ternaryfunc)0, /* tp_call */ - (reprfunc)0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - Dialect_Type_doc, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - Dialect_memberlist, /* tp_members */ - Dialect_getsetlist, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - dialect_new, /* tp_new */ - 0, /* tp_free */ +static PyType_Slot Dialect_Type_slots[] = { + {Py_tp_doc, (char*)Dialect_Type_doc}, + {Py_tp_members, Dialect_memberlist}, + {Py_tp_getset, Dialect_getsetlist}, + {Py_tp_new, dialect_new}, + {Py_tp_methods, dialect_methods}, + {Py_tp_finalize, Dialect_finalize}, + {Py_tp_dealloc, Dialect_dealloc}, + {0, NULL} }; +PyType_Spec Dialect_Type_spec = { + .name = "_csv.Dialect", + .basicsize = sizeof(DialectObj), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .slots = Dialect_Type_slots, +}; + + /* * Return an instance of the dialect type, given a Python instance or kwarg * description of the dialect */ static PyObject * -_call_dialect(PyObject *dialect_inst, PyObject *kwargs) +_call_dialect(_csvstate *module_state, PyObject *dialect_inst, PyObject *kwargs) { - PyObject *type = (PyObject *)&Dialect_Type; + PyObject *type = (PyObject *)module_state->dialect_type; if (dialect_inst) { return PyObject_VectorcallDict(type, &dialect_inst, 1, kwargs); } @@ -568,11 +596,12 @@ parse_grow_buff(ReaderObj *self) } static int -parse_add_char(ReaderObj *self, Py_UCS4 c) +parse_add_char(ReaderObj *self, _csvstate *module_state, Py_UCS4 c) { - if (self->field_len >= _csvstate_global->field_limit) { - PyErr_Format(_csvstate_global->error_obj, "field larger than field limit (%ld)", - _csvstate_global->field_limit); + if (self->field_len >= module_state->field_limit) { + PyErr_Format(module_state->error_obj, + "field larger than field limit (%ld)", + module_state->field_limit); return -1; } if (self->field_len == self->field_size && !parse_grow_buff(self)) @@ -582,7 +611,7 @@ parse_add_char(ReaderObj *self, Py_UCS4 c) } static int -parse_process_char(ReaderObj *self, Py_UCS4 c) +parse_process_char(ReaderObj *self, _csvstate *module_state, Py_UCS4 c) { DialectObj *dialect = self->dialect; @@ -628,7 +657,7 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) /* begin new unquoted field */ if (dialect->quoting == QUOTE_NONNUMERIC) self->numeric_field = 1; - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = IN_FIELD; } @@ -636,14 +665,14 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) case ESCAPED_CHAR: if (c == '\n' || c=='\r') { - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = AFTER_ESCAPED_CRNL; break; } if (c == '\0') c = '\n'; - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = IN_FIELD; break; @@ -673,7 +702,7 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) } else { /* normal character - save in field */ - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; } break; @@ -699,7 +728,7 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) } else { /* normal character - save in field */ - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; } break; @@ -707,7 +736,7 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) case ESCAPE_IN_QUOTED_FIELD: if (c == '\0') c = '\n'; - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = IN_QUOTED_FIELD; break; @@ -717,7 +746,7 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) if (dialect->quoting != QUOTE_NONE && c == dialect->quotechar) { /* save "" as " */ - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = IN_QUOTED_FIELD; } @@ -734,13 +763,13 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) self->state = (c == '\0' ? START_RECORD : EAT_CRNL); } else if (!dialect->strict) { - if (parse_add_char(self, c) < 0) + if (parse_add_char(self, module_state, c) < 0) return -1; self->state = IN_FIELD; } else { /* illegal */ - PyErr_Format(_csvstate_global->error_obj, "'%c' expected after '%c'", + PyErr_Format(module_state->error_obj, "'%c' expected after '%c'", dialect->delimiter, dialect->quotechar); return -1; @@ -753,7 +782,8 @@ parse_process_char(ReaderObj *self, Py_UCS4 c) else if (c == '\0') self->state = START_RECORD; else { - PyErr_Format(_csvstate_global->error_obj, "new-line character seen in unquoted field - do you need to open the file in universal-newline mode?"); + PyErr_Format(module_state->error_obj, + "new-line character seen in unquoted field - do you need to open the file in universal-newline mode?"); return -1; } break; @@ -784,6 +814,12 @@ Reader_iternext(ReaderObj *self) const void *data; PyObject *lineobj; + _csvstate *module_state = _csv_state_from_type(Py_TYPE(self), + "Reader.__next__"); + if (module_state == NULL) { + return NULL; + } + if (parse_reset(self) < 0) return NULL; do { @@ -793,7 +829,7 @@ Reader_iternext(ReaderObj *self) if (!PyErr_Occurred() && (self->field_len != 0 || self->state == IN_QUOTED_FIELD)) { if (self->dialect->strict) - PyErr_SetString(_csvstate_global->error_obj, + PyErr_SetString(module_state->error_obj, "unexpected end of data"); else if (parse_save_field(self) >= 0) break; @@ -801,7 +837,7 @@ Reader_iternext(ReaderObj *self) return NULL; } if (!PyUnicode_Check(lineobj)) { - PyErr_Format(_csvstate_global->error_obj, + PyErr_Format(module_state->error_obj, "iterator should return strings, " "not %.200s " "(the file should be opened in text mode)", @@ -823,18 +859,18 @@ Reader_iternext(ReaderObj *self) c = PyUnicode_READ(kind, data, pos); if (c == '\0') { Py_DECREF(lineobj); - PyErr_Format(_csvstate_global->error_obj, + PyErr_Format(module_state->error_obj, "line contains NUL"); goto err; } - if (parse_process_char(self, c) < 0) { + if (parse_process_char(self, module_state, c) < 0) { Py_DECREF(lineobj); goto err; } pos++; } Py_DECREF(lineobj); - if (parse_process_char(self, 0) < 0) + if (parse_process_char(self, module_state, 0) < 0) goto err; } while (self->state != START_RECORD); @@ -847,13 +883,29 @@ Reader_iternext(ReaderObj *self) static void Reader_dealloc(ReaderObj *self) { + PyTypeObject *tp = Py_TYPE(self); PyObject_GC_UnTrack(self); - Py_XDECREF(self->dialect); - Py_XDECREF(self->input_iter); - Py_XDECREF(self->fields); - if (self->field != NULL) + Py_CLEAR(self->dialect); + Py_CLEAR(self->input_iter); + Py_CLEAR(self->fields); + if (self->field != NULL) { PyMem_Free(self->field); + self->field = NULL; + } PyObject_GC_Del(self); + Py_DECREF(tp); +} + +static void +Reader_finalize(ReaderObj *self) +{ + Py_CLEAR(self->dialect); + Py_CLEAR(self->input_iter); + Py_CLEAR(self->fields); + if (self->field != NULL) { + PyMem_Free(self->field); + self->field = NULL; + } } static int @@ -893,47 +945,35 @@ static struct PyMemberDef Reader_memberlist[] = { }; -static PyTypeObject Reader_Type = { - PyVarObject_HEAD_INIT(NULL, 0) - "_csv.reader", /*tp_name*/ - sizeof(ReaderObj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)Reader_dealloc, /*tp_dealloc*/ - 0, /*tp_vectorcall_offset*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - 0, /*tp_as_async*/ - (reprfunc)0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)0, /*tp_hash*/ - (ternaryfunc)0, /*tp_call*/ - (reprfunc)0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | - Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - Reader_Type_doc, /*tp_doc*/ - (traverseproc)Reader_traverse, /*tp_traverse*/ - (inquiry)Reader_clear, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - PyObject_SelfIter, /*tp_iter*/ - (getiterfunc)Reader_iternext, /*tp_iternext*/ - Reader_methods, /*tp_methods*/ - Reader_memberlist, /*tp_members*/ - 0, /*tp_getset*/ +static PyType_Slot Reader_Type_slots[] = { + {Py_tp_doc, (char*)Reader_Type_doc}, + {Py_tp_traverse, Reader_traverse}, + {Py_tp_clear, Reader_clear}, + {Py_tp_iter, PyObject_SelfIter}, + {Py_tp_iternext, Reader_iternext}, + {Py_tp_methods, Reader_methods}, + {Py_tp_members, Reader_memberlist}, + {Py_tp_finalize, Reader_finalize}, + {Py_tp_dealloc, Reader_dealloc}, + {0, NULL} +}; +PyType_Spec Reader_Type_spec = { + .name = "_csv.reader", + .basicsize = sizeof(ReaderObj), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .slots = Reader_Type_slots }; + static PyObject * csv_reader(PyObject *module, PyObject *args, PyObject *keyword_args) { PyObject * iterator, * dialect = NULL; - ReaderObj * self = PyObject_GC_New(ReaderObj, &Reader_Type); + _csvstate *module_state = get_csv_state(module); + ReaderObj * self = PyObject_GC_New( + ReaderObj, + module_state->reader_type); if (!self) return NULL; @@ -959,7 +999,8 @@ csv_reader(PyObject *module, PyObject *args, PyObject *keyword_args) Py_DECREF(self); return NULL; } - self->dialect = (DialectObj *)_call_dialect(dialect, keyword_args); + self->dialect = (DialectObj *)_call_dialect(module_state, dialect, + keyword_args); if (self->dialect == NULL) { Py_DECREF(self); return NULL; @@ -1048,7 +1089,7 @@ join_append_data(WriterObj *self, unsigned int field_kind, const void *field_dat } if (want_escape) { if (!dialect->escapechar) { - PyErr_Format(_csvstate_global->error_obj, + PyErr_Format(self->error_obj, "need to escape, but no escapechar set"); return -1; } @@ -1166,7 +1207,7 @@ csv_writerow(WriterObj *self, PyObject *seq) iter = PyObject_GetIter(seq); if (iter == NULL) { if (PyErr_ExceptionMatches(PyExc_TypeError)) { - PyErr_Format(_csvstate_global->error_obj, + PyErr_Format(self->error_obj, "iterable expected, not %.200s", Py_TYPE(seq)->tp_name); } @@ -1223,7 +1264,7 @@ csv_writerow(WriterObj *self, PyObject *seq) if (self->num_fields > 0 && self->rec_len == 0) { if (dialect->quoting == QUOTE_NONE) { - PyErr_Format(_csvstate_global->error_obj, + PyErr_Format(self->error_obj, "single empty field record must be quoted"); return NULL; } @@ -1292,22 +1333,12 @@ static struct PyMemberDef Writer_memberlist[] = { { NULL } }; -static void -Writer_dealloc(WriterObj *self) -{ - PyObject_GC_UnTrack(self); - Py_XDECREF(self->dialect); - Py_XDECREF(self->write); - if (self->rec != NULL) - PyMem_Free(self->rec); - PyObject_GC_Del(self); -} - static int Writer_traverse(WriterObj *self, visitproc visit, void *arg) { Py_VISIT(self->dialect); Py_VISIT(self->write); + Py_VISIT(self->error_obj); return 0; } @@ -1316,9 +1347,19 @@ Writer_clear(WriterObj *self) { Py_CLEAR(self->dialect); Py_CLEAR(self->write); + Py_CLEAR(self->error_obj); return 0; } +static void +Writer_finalize(WriterObj *self) +{ + Writer_clear(self); + if (self->rec != NULL) { + PyMem_Free(self->rec); + } +} + PyDoc_STRVAR(Writer_Type_doc, "CSV writer\n" "\n" @@ -1326,46 +1367,30 @@ PyDoc_STRVAR(Writer_Type_doc, "in CSV format from sequence input.\n" ); -static PyTypeObject Writer_Type = { - PyVarObject_HEAD_INIT(NULL, 0) - "_csv.writer", /*tp_name*/ - sizeof(WriterObj), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)Writer_dealloc, /*tp_dealloc*/ - 0, /*tp_vectorcall_offset*/ - (getattrfunc)0, /*tp_getattr*/ - (setattrfunc)0, /*tp_setattr*/ - 0, /*tp_as_async*/ - (reprfunc)0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - (hashfunc)0, /*tp_hash*/ - (ternaryfunc)0, /*tp_call*/ - (reprfunc)0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | - Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - Writer_Type_doc, - (traverseproc)Writer_traverse, /*tp_traverse*/ - (inquiry)Writer_clear, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - (getiterfunc)0, /*tp_iter*/ - (getiterfunc)0, /*tp_iternext*/ - Writer_methods, /*tp_methods*/ - Writer_memberlist, /*tp_members*/ - 0, /*tp_getset*/ +static PyType_Slot Writer_Type_slots[] = { + {Py_tp_finalize, Writer_finalize}, + {Py_tp_doc, (char*)Writer_Type_doc}, + {Py_tp_traverse, Writer_traverse}, + {Py_tp_clear, Writer_clear}, + {Py_tp_methods, Writer_methods}, + {Py_tp_members, Writer_memberlist}, + {0, NULL} +}; + +PyType_Spec Writer_Type_spec = { + .name = "_csv.writer", + .basicsize = sizeof(WriterObj), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .slots = Writer_Type_slots, }; + static PyObject * csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args) { PyObject * output_file, * dialect = NULL; - WriterObj * self = PyObject_GC_New(WriterObj, &Writer_Type); + _csvstate *module_state = get_csv_state(module); + WriterObj * self = PyObject_GC_New(WriterObj, module_state->writer_type); _Py_IDENTIFIER(write); if (!self) @@ -1379,6 +1404,8 @@ csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args) self->rec_len = 0; self->num_fields = 0; + self->error_obj = Py_NewRef(module_state->error_obj); + if (!PyArg_UnpackTuple(args, "", 1, 2, &output_file, &dialect)) { Py_DECREF(self); return NULL; @@ -1393,7 +1420,8 @@ csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args) Py_DECREF(self); return NULL; } - self->dialect = (DialectObj *)_call_dialect(dialect, keyword_args); + self->dialect = (DialectObj *)_call_dialect(module_state, dialect, + keyword_args); if (self->dialect == NULL) { Py_DECREF(self); return NULL; @@ -1408,13 +1436,14 @@ csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args) static PyObject * csv_list_dialects(PyObject *module, PyObject *args) { - return PyDict_Keys(_csvstate_global->dialects); + return PyDict_Keys(get_csv_state(module)->dialects); } static PyObject * csv_register_dialect(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *name_obj, *dialect_obj = NULL; + _csvstate *module_state = get_csv_state(module); PyObject *dialect; if (!PyArg_UnpackTuple(args, "", 1, 2, &name_obj, &dialect_obj)) @@ -1426,10 +1455,10 @@ csv_register_dialect(PyObject *module, PyObject *args, PyObject *kwargs) } if (PyUnicode_READY(name_obj) == -1) return NULL; - dialect = _call_dialect(dialect_obj, kwargs); + dialect = _call_dialect(module_state, dialect_obj, kwargs); if (dialect == NULL) return NULL; - if (PyDict_SetItem(_csvstate_global->dialects, name_obj, dialect) < 0) { + if (PyDict_SetItem(module_state->dialects, name_obj, dialect) < 0) { Py_DECREF(dialect); return NULL; } @@ -1440,9 +1469,10 @@ csv_register_dialect(PyObject *module, PyObject *args, PyObject *kwargs) static PyObject * csv_unregister_dialect(PyObject *module, PyObject *name_obj) { - if (PyDict_DelItem(_csvstate_global->dialects, name_obj) < 0) { + _csvstate *module_state = get_csv_state(module); + if (PyDict_DelItem(module_state->dialects, name_obj) < 0) { if (PyErr_ExceptionMatches(PyExc_KeyError)) { - PyErr_Format(_csvstate_global->error_obj, "unknown dialect"); + PyErr_Format(module_state->error_obj, "unknown dialect"); } return NULL; } @@ -1452,14 +1482,15 @@ csv_unregister_dialect(PyObject *module, PyObject *name_obj) static PyObject * csv_get_dialect(PyObject *module, PyObject *name_obj) { - return get_dialect_from_registry(name_obj); + return get_dialect_from_registry(name_obj, get_csv_state(module)); } static PyObject * csv_field_size_limit(PyObject *module, PyObject *args) { PyObject *new_limit = NULL; - long old_limit = _csvstate_global->field_limit; + _csvstate *module_state = get_csv_state(module); + long old_limit = module_state->field_limit; if (!PyArg_UnpackTuple(args, "field_size_limit", 0, 1, &new_limit)) return NULL; @@ -1469,15 +1500,25 @@ csv_field_size_limit(PyObject *module, PyObject *args) "limit must be an integer"); return NULL; } - _csvstate_global->field_limit = PyLong_AsLong(new_limit); - if (_csvstate_global->field_limit == -1 && PyErr_Occurred()) { - _csvstate_global->field_limit = old_limit; + module_state->field_limit = PyLong_AsLong(new_limit); + if (module_state->field_limit == -1 && PyErr_Occurred()) { + module_state->field_limit = old_limit; return NULL; } } return PyLong_FromLong(old_limit); } +static PyType_Slot error_slots[] = { + {0, NULL}, +}; + +PyType_Spec error_spec = { + .name = "_csv.Error", + .flags = Py_TPFLAGS_DEFAULT, + .slots = error_slots, +}; + /* * MODULE */ @@ -1610,68 +1651,89 @@ static struct PyMethodDef csv_methods[] = { { NULL, NULL } }; -static struct PyModuleDef _csvmodule = { - PyModuleDef_HEAD_INIT, - "_csv", - csv_module_doc, - sizeof(_csvstate), - csv_methods, - NULL, - _csv_traverse, - _csv_clear, - _csv_free -}; - -PyMODINIT_FUNC -PyInit__csv(void) -{ - PyObject *module; +static int +csv_exec(PyObject *module) { const StyleDesc *style; + PyObject *temp; + _csvstate *module_state = get_csv_state(module); - if (PyType_Ready(&Reader_Type) < 0) - return NULL; + temp = PyType_FromModuleAndSpec(module, &Dialect_Type_spec, NULL); + module_state->dialect_type = (PyTypeObject *)temp; + if (PyModule_AddObjectRef(module, "Dialect", temp) < 0) { + return -1; + } - if (PyType_Ready(&Writer_Type) < 0) - return NULL; + temp = PyType_FromModuleAndSpec(module, &Reader_Type_spec, NULL); + module_state->reader_type = (PyTypeObject *)temp; + if (PyModule_AddObjectRef(module, "Reader", temp) < 0) { + return -1; + } - /* Create the module and add the functions */ - module = PyModule_Create(&_csvmodule); - if (module == NULL) - return NULL; + temp = PyType_FromModuleAndSpec(module, &Writer_Type_spec, NULL); + module_state->writer_type = (PyTypeObject *)temp; + if (PyModule_AddObjectRef(module, "Writer", temp) < 0) { + return -1; + } /* Add version to the module. */ if (PyModule_AddStringConstant(module, "__version__", - MODULE_VERSION) == -1) - return NULL; + MODULE_VERSION) == -1) { + return -1; + } /* Set the field limit */ - get_csv_state(module)->field_limit = 128 * 1024; - /* Do I still need to add this var to the Module Dict? */ + module_state->field_limit = 128 * 1024; /* Add _dialects dictionary */ - get_csv_state(module)->dialects = PyDict_New(); - if (get_csv_state(module)->dialects == NULL) - return NULL; - Py_INCREF(get_csv_state(module)->dialects); - if (PyModule_AddObject(module, "_dialects", get_csv_state(module)->dialects)) - return NULL; + module_state->dialects = PyDict_New(); + if (PyModule_AddObjectRef(module, "_dialects", module_state->dialects) < 0) { + return -1; + } /* Add quote styles into dictionary */ for (style = quote_styles; style->name; style++) { if (PyModule_AddIntConstant(module, style->name, style->style) == -1) - return NULL; + return -1; } - if (PyModule_AddType(module, &Dialect_Type)) { - return NULL; + /* Add the CSV exception object to the module. */ + PyObject *bases = PyTuple_Pack(1, PyExc_Exception); + if (bases == NULL) { + return -1; + } + module_state->error_obj = PyType_FromModuleAndSpec(module, &error_spec, + bases); + Py_DECREF(bases); + if (module_state->error_obj == NULL) { + return -1; + } + if (PyModule_AddType(module, (PyTypeObject *)module_state->error_obj) != 0) { + return -1; } - /* Add the CSV exception object to the module. */ - get_csv_state(module)->error_obj = PyErr_NewException("_csv.Error", NULL, NULL); - if (get_csv_state(module)->error_obj == NULL) - return NULL; - Py_INCREF(get_csv_state(module)->error_obj); - PyModule_AddObject(module, "Error", get_csv_state(module)->error_obj); - return module; + return 0; +} + +static PyModuleDef_Slot csv_slots[] = { + {Py_mod_exec, csv_exec}, + {0, NULL} +}; + +static struct PyModuleDef _csvmodule = { + PyModuleDef_HEAD_INIT, + "_csv", + csv_module_doc, + sizeof(_csvstate), + csv_methods, + csv_slots, + _csv_traverse, + _csv_clear, + _csv_free +}; + +PyMODINIT_FUNC +PyInit__csv(void) +{ + return PyModuleDef_Init(&_csvmodule); } From webhook-mailer at python.org Tue Dec 15 10:08:25 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 15:08:25 -0000 Subject: [Python-checkins] bpo-42639: Add script_helper.run_test_script() (GH-23777) Message-ID: https://github.com/python/cpython/commit/f7049b5fb680c774e4950d10be62859a749f4e79 commit: f7049b5fb680c774e4950d10be62859a749f4e79 branch: master author: Victor Stinner committer: vstinner date: 2020-12-15T16:08:16+01:00 summary: bpo-42639: Add script_helper.run_test_script() (GH-23777) * Add run_test_script() function to test.support.script_helper. * Rename Lib/test/eintrdata/eintr_tester.py to Lib/test/_test_eintr.py. * test_eintr.py uses run_test_script(). files: A Lib/test/_test_eintr.py D Lib/test/eintrdata/eintr_tester.py M Lib/test/support/script_helper.py M Lib/test/test_eintr.py diff --git a/Lib/test/eintrdata/eintr_tester.py b/Lib/test/_test_eintr.py similarity index 100% rename from Lib/test/eintrdata/eintr_tester.py rename to Lib/test/_test_eintr.py diff --git a/Lib/test/support/script_helper.py b/Lib/test/support/script_helper.py index 09bb586dcf79d..6d699c8486cd2 100644 --- a/Lib/test/support/script_helper.py +++ b/Lib/test/support/script_helper.py @@ -11,12 +11,14 @@ import zipfile from importlib.util import source_from_cache +from test import support from test.support.import_helper import make_legacy_pyc # Cached result of the expensive test performed in the function below. __cached_interp_requires_environment = None + def interpreter_requires_environment(): """ Returns True if our sys.executable interpreter requires environment @@ -136,12 +138,14 @@ def run_python_until_end(*args, **env_vars): rc = proc.returncode return _PythonRunResult(rc, out, err), cmd_line + def _assert_python(expected_success, /, *args, **env_vars): res, cmd_line = run_python_until_end(*args, **env_vars) if (res.rc and expected_success) or (not res.rc and not expected_success): res.fail(cmd_line) return res + def assert_python_ok(*args, **env_vars): """ Assert that running the interpreter with `args` and optional environment @@ -155,6 +159,7 @@ def assert_python_ok(*args, **env_vars): """ return _assert_python(True, *args, **env_vars) + def assert_python_failure(*args, **env_vars): """ Assert that running the interpreter with `args` and optional environment @@ -165,6 +170,7 @@ def assert_python_failure(*args, **env_vars): """ return _assert_python(False, *args, **env_vars) + def spawn_python(*args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw): """Run a Python subprocess with the given arguments. @@ -187,6 +193,7 @@ def spawn_python(*args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw): stdout=stdout, stderr=stderr, **kw) + def kill_python(p): """Run the given Popen process until completion and return stdout.""" p.stdin.close() @@ -198,6 +205,7 @@ def kill_python(p): subprocess._cleanup() return data + def make_script(script_dir, script_basename, source, omit_suffix=False): script_filename = script_basename if not omit_suffix: @@ -209,6 +217,7 @@ def make_script(script_dir, script_basename, source, omit_suffix=False): importlib.invalidate_caches() return script_name + def make_zip_script(zip_dir, zip_basename, script_name, name_in_zip=None): zip_filename = zip_basename+os.extsep+'zip' zip_name = os.path.join(zip_dir, zip_filename) @@ -228,10 +237,12 @@ def make_zip_script(zip_dir, zip_basename, script_name, name_in_zip=None): # zip_file.printdir() return zip_name, os.path.join(zip_name, name_in_zip) + def make_pkg(pkg_dir, init_source=''): os.mkdir(pkg_dir) make_script(pkg_dir, '__init__', init_source) + def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename, source, depth=1, compiled=False): unlink = [] @@ -260,3 +271,24 @@ def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename, # print 'Contents of %r:' % zip_name # zip_file.printdir() return zip_name, os.path.join(zip_name, script_name_in_zip) + + +def run_test_script(script): + # use -u to try to get the full output if the test hangs or crash + if support.verbose: + def title(text): + return f"===== {text} ======" + + name = f"script {os.path.basename(script)}" + print() + print(title(name), flush=True) + # In verbose mode, the child process inherit stdout and stdout, + # to see output in realtime and reduce the risk of losing output. + args = [sys.executable, "-E", "-X", "faulthandler", "-u", script, "-v"] + proc = subprocess.run(args) + print(title(f"{name} completed: exit code {proc.returncode}"), + flush=True) + if proc.returncode: + raise AssertionError(f"{name} failed") + else: + assert_python_ok("-u", script, "-v") diff --git a/Lib/test/test_eintr.py b/Lib/test/test_eintr.py index a5f8f6465e88b..b61cdfa0a122d 100644 --- a/Lib/test/test_eintr.py +++ b/Lib/test/test_eintr.py @@ -15,22 +15,8 @@ class EINTRTests(unittest.TestCase): def test_all(self): # Run the tester in a sub-process, to make sure there is only one # thread (for reliable signal delivery). - tester = support.findfile("eintr_tester.py", subdir="eintrdata") - # use -u to try to get the full output if the test hangs or crash - args = ["-u", tester, "-v"] - if support.verbose: - print() - print("--- run eintr_tester.py ---", flush=True) - # In verbose mode, the child process inherit stdout and stdout, - # to see output in realtime and reduce the risk of losing output. - args = [sys.executable, "-E", "-X", "faulthandler", *args] - proc = subprocess.run(args) - print(f"--- eintr_tester.py completed: " - f"exit code {proc.returncode} ---", flush=True) - if proc.returncode: - self.fail("eintr_tester.py failed") - else: - script_helper.assert_python_ok("-u", tester, "-v") + script = support.findfile("_test_eintr.py") + script_helper.run_test_script(script) if __name__ == "__main__": From webhook-mailer at python.org Tue Dec 15 10:25:37 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 15:25:37 -0000 Subject: [Python-checkins] bpo-32381: pymain_run_file() uses PySys_FormatStderr() (GH-23778) Message-ID: https://github.com/python/cpython/commit/ceb420251c1d635520049fbb7b5269a73d63fb58 commit: ceb420251c1d635520049fbb7b5269a73d63fb58 branch: master author: Victor Stinner committer: vstinner date: 2020-12-15T16:25:27+01:00 summary: bpo-32381: pymain_run_file() uses PySys_FormatStderr() (GH-23778) If config->run_filename doesn't exist, log the error into sys.stderr using "%R" format, to escape properly unencodable characters (usually with backslashreplace). files: M Modules/main.c diff --git a/Modules/main.c b/Modules/main.c index 7ffcb07a7fd4b..b97034ea1e78a 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -305,20 +305,23 @@ pymain_run_module(const wchar_t *modname, int set_argv0) static int -pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) +pymain_run_file_obj(PyObject *program_name, PyObject *filename, + int skip_source_first_line, PyCompilerFlags *cf) { - const wchar_t *filename = config->run_filename; - if (PySys_Audit("cpython.run_file", "u", filename) < 0) { + if (PySys_Audit("cpython.run_file", "O", filename) < 0) { return pymain_exit_err_print(); } - FILE *fp = _Py_wfopen(filename, L"rb"); + + FILE *fp = _Py_fopen_obj(filename, "rb"); if (fp == NULL) { - fprintf(stderr, "%ls: can't open file '%ls': [Errno %d] %s\n", - config->program_name, filename, errno, strerror(errno)); + // Ignore the OSError + PyErr_Clear(); + PySys_FormatStderr("%S: can't open file %R: [Errno %d] %s\n", + program_name, filename, errno, strerror(errno)); return 2; } - if (config->skip_source_first_line) { + if (skip_source_first_line) { int ch; /* Push back first newline so line numbers remain the same */ while ((ch = getc(fp)) != EOF) { @@ -331,29 +334,43 @@ pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) struct _Py_stat_struct sb; if (_Py_fstat_noraise(fileno(fp), &sb) == 0 && S_ISDIR(sb.st_mode)) { - fprintf(stderr, - "%ls: '%ls' is a directory, cannot continue\n", - config->program_name, filename); + PySys_FormatStderr("%S: %R is a directory, cannot continue\n", + program_name, filename); fclose(fp); return 1; } - /* call pending calls like signal handlers (SIGINT) */ + // Call pending calls like signal handlers (SIGINT) if (Py_MakePendingCalls() == -1) { fclose(fp); return pymain_exit_err_print(); } - PyObject *filename_obj = PyUnicode_FromWideChar(filename, -1); - if (filename_obj == NULL) { + /* PyRun_AnyFileExFlags(closeit=1) calls fclose(fp) before running code */ + int run = _PyRun_AnyFileObject(fp, filename, 1, cf); + return (run != 0); +} + +static int +pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) +{ + PyObject *filename = PyUnicode_FromWideChar(config->run_filename, -1); + if (filename == NULL) { + PyErr_Print(); + return -1; + } + PyObject *program_name = PyUnicode_FromWideChar(config->program_name, -1); + if (program_name == NULL) { + Py_DECREF(filename); PyErr_Print(); return -1; } - /* PyRun_AnyFileExFlags(closeit=1) calls fclose(fp) before running code */ - int run = _PyRun_AnyFileObject(fp, filename_obj, 1, cf); - Py_XDECREF(filename_obj); - return (run != 0); + int res = pymain_run_file_obj(program_name, filename, + config->skip_source_first_line, cf); + Py_DECREF(filename); + Py_DECREF(program_name); + return res; } From webhook-mailer at python.org Tue Dec 15 11:12:11 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 16:12:11 -0000 Subject: [Python-checkins] bpo-42639: atexit._run_exitfuncs() uses sys.unraisablehook (GH-23779) Message-ID: https://github.com/python/cpython/commit/3ca2b8fd75043927f0bb03b8dac72d32beae255d commit: 3ca2b8fd75043927f0bb03b8dac72d32beae255d branch: master author: Victor Stinner committer: vstinner date: 2020-12-15T17:12:02+01:00 summary: bpo-42639: atexit._run_exitfuncs() uses sys.unraisablehook (GH-23779) atexit._run_exitfuncs() now logs callback exceptions using sys.unraisablehook, rather than logging them directly into sys.stderr and raising the last exception. Run GeneralTest of test_atexit in a subprocess since it calls atexit._clear() which clears all atexit callbacks. _PyAtExit_Fini() sets state->callbacks to NULL. files: A Lib/test/_test_atexit.py A Misc/NEWS.d/next/Library/2020-12-15-15-14-29.bpo-42639.uJ3h8I.rst M Lib/test/test_atexit.py M Lib/test/test_eintr.py M Modules/atexitmodule.c diff --git a/Lib/test/_test_atexit.py b/Lib/test/_test_atexit.py new file mode 100644 index 0000000000000..a31658531113b --- /dev/null +++ b/Lib/test/_test_atexit.py @@ -0,0 +1,121 @@ +""" +Tests run by test_atexit in a subprocess since it clears atexit callbacks. +""" +import atexit +import sys +import unittest +from test import support + + +class GeneralTest(unittest.TestCase): + def setUp(self): + atexit._clear() + + def tearDown(self): + atexit._clear() + + def assert_raises_unraisable(self, exc_type, func, *args): + with support.catch_unraisable_exception() as cm: + atexit.register(func, *args) + atexit._run_exitfuncs() + + self.assertEqual(cm.unraisable.object, func) + self.assertEqual(cm.unraisable.exc_type, exc_type) + self.assertEqual(type(cm.unraisable.exc_value), exc_type) + + def test_order(self): + # Check that callbacks are called in reverse order with the expected + # positional and keyword arguments. + calls = [] + + def func1(*args, **kwargs): + calls.append(('func1', args, kwargs)) + + def func2(*args, **kwargs): + calls.append(('func2', args, kwargs)) + + # be sure args are handled properly + atexit.register(func1, 1, 2) + atexit.register(func2) + atexit.register(func2, 3, key="value") + atexit._run_exitfuncs() + + self.assertEqual(calls, + [('func2', (3,), {'key': 'value'}), + ('func2', (), {}), + ('func1', (1, 2), {})]) + + def test_badargs(self): + def func(): + pass + + # func() has no parameter, but it's called with 2 parameters + self.assert_raises_unraisable(TypeError, func, 1 ,2) + + def test_raise(self): + def raise_type_error(): + raise TypeError + + self.assert_raises_unraisable(TypeError, raise_type_error) + + def test_raise_unnormalized(self): + # bpo-10756: Make sure that an unnormalized exception is handled + # properly. + def div_zero(): + 1 / 0 + + self.assert_raises_unraisable(ZeroDivisionError, div_zero) + + def test_exit(self): + self.assert_raises_unraisable(SystemExit, sys.exit) + + def test_stress(self): + a = [0] + def inc(): + a[0] += 1 + + for i in range(128): + atexit.register(inc) + atexit._run_exitfuncs() + + self.assertEqual(a[0], 128) + + def test_clear(self): + a = [0] + def inc(): + a[0] += 1 + + atexit.register(inc) + atexit._clear() + atexit._run_exitfuncs() + + self.assertEqual(a[0], 0) + + def test_unregister(self): + a = [0] + def inc(): + a[0] += 1 + def dec(): + a[0] -= 1 + + for i in range(4): + atexit.register(inc) + atexit.register(dec) + atexit.unregister(inc) + atexit._run_exitfuncs() + + self.assertEqual(a[0], -1) + + def test_bound_methods(self): + l = [] + atexit.register(l.append, 5) + atexit._run_exitfuncs() + self.assertEqual(l, [5]) + + atexit.unregister(l.append) + atexit._run_exitfuncs() + self.assertEqual(l, [5]) + + +if __name__ == "__main__": + unittest.main() diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py index 29faaaf0a9d80..e0feef7c65360 100644 --- a/Lib/test/test_atexit.py +++ b/Lib/test/test_atexit.py @@ -1,5 +1,4 @@ import atexit -import io import os import sys import textwrap @@ -7,154 +6,14 @@ from test import support from test.support import script_helper -### helpers -def h1(): - print("h1") - -def h2(): - print("h2") - -def h3(): - print("h3") - -def h4(*args, **kwargs): - print("h4", args, kwargs) - -def raise1(): - raise TypeError - -def raise2(): - raise SystemError - -def exit(): - raise SystemExit - class GeneralTest(unittest.TestCase): + def test_general(self): + # Run _test_atexit.py in a subprocess since it calls atexit._clear() + script = support.findfile("_test_atexit.py") + script_helper.run_test_script(script) - def setUp(self): - self.save_stdout = sys.stdout - self.save_stderr = sys.stderr - self.stream = io.StringIO() - sys.stdout = sys.stderr = self.stream - atexit._clear() - - def tearDown(self): - sys.stdout = self.save_stdout - sys.stderr = self.save_stderr - atexit._clear() - - def test_args(self): - # be sure args are handled properly - atexit.register(h1) - atexit.register(h4) - atexit.register(h4, 4, kw="abc") - atexit._run_exitfuncs() - - self.assertEqual(self.stream.getvalue(), - "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n") - - def test_badargs(self): - atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0) - self.assertRaises(TypeError, atexit._run_exitfuncs) - - def test_order(self): - # be sure handlers are executed in reverse order - atexit.register(h1) - atexit.register(h2) - atexit.register(h3) - atexit._run_exitfuncs() - - self.assertEqual(self.stream.getvalue(), "h3\nh2\nh1\n") - - def test_raise(self): - # be sure raises are handled properly - atexit.register(raise1) - atexit.register(raise2) - - self.assertRaises(TypeError, atexit._run_exitfuncs) - - def test_raise_unnormalized(self): - # Issue #10756: Make sure that an unnormalized exception is - # handled properly - atexit.register(lambda: 1 / 0) - - self.assertRaises(ZeroDivisionError, atexit._run_exitfuncs) - self.assertIn("ZeroDivisionError", self.stream.getvalue()) - - def test_exit(self): - # be sure a SystemExit is handled properly - atexit.register(exit) - - self.assertRaises(SystemExit, atexit._run_exitfuncs) - self.assertEqual(self.stream.getvalue(), '') - - def test_print_tracebacks(self): - # Issue #18776: the tracebacks should be printed when errors occur. - def f(): - 1/0 # one - def g(): - 1/0 # two - def h(): - 1/0 # three - atexit.register(f) - atexit.register(g) - atexit.register(h) - - self.assertRaises(ZeroDivisionError, atexit._run_exitfuncs) - stderr = self.stream.getvalue() - self.assertEqual(stderr.count("ZeroDivisionError"), 3) - self.assertIn("# one", stderr) - self.assertIn("# two", stderr) - self.assertIn("# three", stderr) - - def test_stress(self): - a = [0] - def inc(): - a[0] += 1 - - for i in range(128): - atexit.register(inc) - atexit._run_exitfuncs() - - self.assertEqual(a[0], 128) - - def test_clear(self): - a = [0] - def inc(): - a[0] += 1 - - atexit.register(inc) - atexit._clear() - atexit._run_exitfuncs() - - self.assertEqual(a[0], 0) - - def test_unregister(self): - a = [0] - def inc(): - a[0] += 1 - def dec(): - a[0] -= 1 - - for i in range(4): - atexit.register(inc) - atexit.register(dec) - atexit.unregister(inc) - atexit._run_exitfuncs() - - self.assertEqual(a[0], -1) - - def test_bound_methods(self): - l = [] - atexit.register(l.append, 5) - atexit._run_exitfuncs() - self.assertEqual(l, [5]) - - atexit.unregister(l.append) - atexit._run_exitfuncs() - self.assertEqual(l, [5]) - +class FunctionalTest(unittest.TestCase): def test_shutdown(self): # Actually test the shutdown mechanism in a subprocess code = textwrap.dedent(""" diff --git a/Lib/test/test_eintr.py b/Lib/test/test_eintr.py index b61cdfa0a122d..528147802ba47 100644 --- a/Lib/test/test_eintr.py +++ b/Lib/test/test_eintr.py @@ -1,9 +1,6 @@ import os import signal -import subprocess -import sys import unittest - from test import support from test.support import script_helper diff --git a/Misc/NEWS.d/next/Library/2020-12-15-15-14-29.bpo-42639.uJ3h8I.rst b/Misc/NEWS.d/next/Library/2020-12-15-15-14-29.bpo-42639.uJ3h8I.rst new file mode 100644 index 0000000000000..847c24112f9a8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-15-14-29.bpo-42639.uJ3h8I.rst @@ -0,0 +1,3 @@ +:func:`atexit._run_exitfuncs` now logs callback exceptions using +:data:`sys.unraisablehook`, rather than logging them directly into +:data:`sys.stderr` and raise the last exception. diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c index ae13eae75dbae..49e2a75137e4a 100644 --- a/Modules/atexitmodule.c +++ b/Modules/atexitmodule.c @@ -74,11 +74,12 @@ _PyAtExit_Fini(PyInterpreterState *interp) struct atexit_state *state = &interp->atexit; atexit_cleanup(state); PyMem_Free(state->callbacks); + state->callbacks = NULL; } static void -atexit_callfuncs(struct atexit_state *state, int ignore_exc) +atexit_callfuncs(struct atexit_state *state) { assert(!PyErr_Occurred()); @@ -86,7 +87,6 @@ atexit_callfuncs(struct atexit_state *state, int ignore_exc) return; } - PyObject *exc_type = NULL, *exc_value, *exc_tb; for (int i = state->ncallbacks - 1; i >= 0; i--) { atexit_callback *cb = state->callbacks[i]; if (cb == NULL) { @@ -95,24 +95,7 @@ atexit_callfuncs(struct atexit_state *state, int ignore_exc) PyObject *res = PyObject_Call(cb->func, cb->args, cb->kwargs); if (res == NULL) { - if (ignore_exc) { - _PyErr_WriteUnraisableMsg("in atexit callback", cb->func); - } - else { - /* Maintain the last exception, but don't leak if there are - multiple exceptions. */ - if (exc_type) { - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - } - PyErr_Fetch(&exc_type, &exc_value, &exc_tb); - if (!PyErr_GivenExceptionMatches(exc_type, PyExc_SystemExit)) { - PySys_WriteStderr("Error in atexit._run_exitfuncs:\n"); - PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb); - PyErr_Display(exc_type, exc_value, exc_tb); - } - } + _PyErr_WriteUnraisableMsg("in atexit callback", cb->func); } else { Py_DECREF(res); @@ -121,14 +104,7 @@ atexit_callfuncs(struct atexit_state *state, int ignore_exc) atexit_cleanup(state); - if (ignore_exc) { - assert(!PyErr_Occurred()); - } - else { - if (exc_type) { - PyErr_Restore(exc_type, exc_value, exc_tb); - } - } + assert(!PyErr_Occurred()); } @@ -136,7 +112,7 @@ void _PyAtExit_Call(PyThreadState *tstate) { struct atexit_state *state = &tstate->interp->atexit; - atexit_callfuncs(state, 1); + atexit_callfuncs(state); } @@ -177,8 +153,9 @@ atexit_register(PyObject *module, PyObject *args, PyObject *kwargs) state->callback_len += 16; size_t size = sizeof(atexit_callback*) * (size_t)state->callback_len; r = (atexit_callback**)PyMem_Realloc(state->callbacks, size); - if (r == NULL) + if (r == NULL) { return PyErr_NoMemory(); + } state->callbacks = r; } @@ -203,16 +180,15 @@ atexit_register(PyObject *module, PyObject *args, PyObject *kwargs) PyDoc_STRVAR(atexit_run_exitfuncs__doc__, "_run_exitfuncs() -> None\n\ \n\ -Run all registered exit functions."); +Run all registered exit functions.\n\ +\n\ +If a callaback raises an exception, it is logged with sys.unraisablehook."); static PyObject * atexit_run_exitfuncs(PyObject *module, PyObject *unused) { struct atexit_state *state = get_atexit_state(); - atexit_callfuncs(state, 0); - if (PyErr_Occurred()) { - return NULL; - } + atexit_callfuncs(state); Py_RETURN_NONE; } From webhook-mailer at python.org Tue Dec 15 11:23:11 2020 From: webhook-mailer at python.org (JulienPalard) Date: Tue, 15 Dec 2020 16:23:11 -0000 Subject: [Python-checkins] bpo-36675: Doc: Reveal doctest directives (GH-23620) Message-ID: https://github.com/python/cpython/commit/c8a10d2fabff492ab352501c316baf5f2fc6510e commit: c8a10d2fabff492ab352501c316baf5f2fc6510e branch: master author: Julien Palard committer: JulienPalard date: 2020-12-15T17:23:03+01:00 summary: bpo-36675: Doc: Reveal doctest directives (GH-23620) files: M .azure-pipelines/docs-steps.yml M Doc/library/doctest.rst diff --git a/.azure-pipelines/docs-steps.yml b/.azure-pipelines/docs-steps.yml index 55c38611b95c8..8e72baf2b12fe 100644 --- a/.azure-pipelines/docs-steps.yml +++ b/.azure-pipelines/docs-steps.yml @@ -12,7 +12,7 @@ steps: inputs: versionSpec: '>=3.6' -- script: python -m pip install sphinx==2.2.0 blurb python-docs-theme +- script: python -m pip install sphinx==3.2.1 blurb python-docs-theme displayName: 'Install build dependencies' - ${{ if ne(parameters.latex, 'true') }}: @@ -31,7 +31,7 @@ steps: - ${{ if eq(parameters.upload, 'true') }}: - task: PublishBuildArtifacts at 1 displayName: 'Publish docs' - + inputs: PathToPublish: '$(build.sourcesDirectory)/Doc/build' ArtifactName: docs diff --git a/Doc/library/doctest.rst b/Doc/library/doctest.rst index a77322f83acbd..42ad0c9f06e23 100644 --- a/Doc/library/doctest.rst +++ b/Doc/library/doctest.rst @@ -719,36 +719,51 @@ above. An example's doctest directives modify doctest's behavior for that single example. Use ``+`` to enable the named behavior, or ``-`` to disable it. -For example, this test passes:: +For example, this test passes: - >>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE +.. doctest:: + :no-trim-doctest-flags: + + >>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] Without the directive it would fail, both because the actual output doesn't have two blanks before the single-digit list elements, and because the actual output is on a single line. This test also passes, and also requires a directive to do -so:: +so: + +.. doctest:: + :no-trim-doctest-flags: - >>> print(list(range(20))) # doctest: +ELLIPSIS + >>> print(list(range(20))) # doctest: +ELLIPSIS [0, 1, ..., 18, 19] Multiple directives can be used on a single physical line, separated by -commas:: +commas: - >>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE +.. doctest:: + :no-trim-doctest-flags: + + >>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE [0, 1, ..., 18, 19] If multiple directive comments are used for a single example, then they are -combined:: +combined: + +.. doctest:: + :no-trim-doctest-flags: - >>> print(list(range(20))) # doctest: +ELLIPSIS - ... # doctest: +NORMALIZE_WHITESPACE + >>> print(list(range(20))) # doctest: +ELLIPSIS + ... # doctest: +NORMALIZE_WHITESPACE [0, 1, ..., 18, 19] As the previous example shows, you can add ``...`` lines to your example containing only directives. This can be useful when an example is too long for -a directive to comfortably fit on the same line:: +a directive to comfortably fit on the same line: + +.. doctest:: + :no-trim-doctest-flags: >>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40))) ... # doctest: +ELLIPSIS @@ -793,18 +808,23 @@ instead. Another is to do :: There are others, but you get the idea. -Another bad idea is to print things that embed an object address, like :: +Another bad idea is to print things that embed an object address, like + +.. doctest:: - >>> id(1.0) # certain to fail some of the time + >>> id(1.0) # certain to fail some of the time # doctest: +SKIP 7948648 >>> class C: pass - >>> C() # the default repr() for instances embeds an address - <__main__.C instance at 0x00AC18F0> + >>> C() # the default repr() for instances embeds an address # doctest: +SKIP + + +The :const:`ELLIPSIS` directive gives a nice approach for the last example: -The :const:`ELLIPSIS` directive gives a nice approach for the last example:: +.. doctest:: + :no-trim-doctest-flags: - >>> C() #doctest: +ELLIPSIS - <__main__.C instance at 0x...> + >>> C() # doctest: +ELLIPSIS + Floating-point numbers are also subject to small output variations across platforms, because Python defers to the platform C library for float formatting, From webhook-mailer at python.org Tue Dec 15 12:06:47 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 17:06:47 -0000 Subject: [Python-checkins] bpo-42641: Enhance test_select.test_select() (GH-23782) Message-ID: https://github.com/python/cpython/commit/7f14a3756b61272cc15f24302589874b125c2f04 commit: 7f14a3756b61272cc15f24302589874b125c2f04 branch: master author: Victor Stinner committer: vstinner date: 2020-12-15T18:06:36+01:00 summary: bpo-42641: Enhance test_select.test_select() (GH-23782) Enhance test_select.test_select(): it now takes 500 ms rather than 10 seconds. * Use Python rather than a shell as the child process to make the test more portable. * Use a sleep of 50 ms per line rather than 1 second. * Use subprocess.Popen rather than os.popen(). files: A Misc/NEWS.d/next/Tests/2020-12-15-17-38-04.bpo-42641.uzwlF_.rst M Lib/test/test_select.py diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index 458998a62fdf5..4ddd5fb96e0ce 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -1,7 +1,9 @@ import errno import os import select +import subprocess import sys +import textwrap import unittest from test import support @@ -45,16 +47,25 @@ def test_returned_list_identity(self): self.assertIsNot(w, x) def test_select(self): - cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' - with os.popen(cmd) as p: - for tout in (0, 1, 2, 4, 8, 16) + (None,)*10: + code = textwrap.dedent(''' + import time + for i in range(10): + print("testing...", flush=True) + time.sleep(0.050) + ''') + cmd = [sys.executable, '-I', '-c', code] + with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc: + pipe = proc.stdout + for timeout in (0, 1, 2, 4, 8, 16) + (None,)*10: if support.verbose: - print('timeout =', tout) - rfd, wfd, xfd = select.select([p], [], [], tout) - if (rfd, wfd, xfd) == ([], [], []): + print(f'timeout = {timeout}') + rfd, wfd, xfd = select.select([pipe], [], [], timeout) + self.assertEqual(wfd, []) + self.assertEqual(xfd, []) + if not rfd: continue - if (rfd, wfd, xfd) == ([p], [], []): - line = p.readline() + if rfd == [pipe]: + line = pipe.readline() if support.verbose: print(repr(line)) if not line: @@ -62,7 +73,8 @@ def test_select(self): print('EOF') break continue - self.fail('Unexpected return values from select():', rfd, wfd, xfd) + self.fail('Unexpected return values from select():', + rfd, wfd, xfd) # Issue 16230: Crash on select resized list def test_select_mutated(self): diff --git a/Misc/NEWS.d/next/Tests/2020-12-15-17-38-04.bpo-42641.uzwlF_.rst b/Misc/NEWS.d/next/Tests/2020-12-15-17-38-04.bpo-42641.uzwlF_.rst new file mode 100644 index 0000000000000..bf890b73ee720 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-15-17-38-04.bpo-42641.uzwlF_.rst @@ -0,0 +1,2 @@ +Enhance ``test_select.test_select()``: it now takes 500 ms rather than 10 +seconds. Use Python rather than a shell to make the test more portable. From webhook-mailer at python.org Tue Dec 15 13:16:28 2020 From: webhook-mailer at python.org (pablogsal) Date: Tue, 15 Dec 2020 18:16:28 -0000 Subject: [Python-checkins] Update stable ABI script for MacOS and update list of exported symbols (GH-23783) Message-ID: https://github.com/python/cpython/commit/0911411e0cee4f2bd6906aeece83d2e6ba3c38c0 commit: 0911411e0cee4f2bd6906aeece83d2e6ba3c38c0 branch: master author: Pablo Galindo committer: pablogsal date: 2020-12-15T18:16:13Z summary: Update stable ABI script for MacOS and update list of exported symbols (GH-23783) files: M Doc/data/stable_abi.dat M Tools/scripts/stable_abi.py diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 28cb50b12301b..c2c9c6e11e4ce 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -743,6 +743,7 @@ Py_FileSystemDefaultEncodeErrors Py_FileSystemDefaultEncoding Py_Finalize Py_FinalizeEx +Py_FrozenMain Py_GenericAlias Py_GenericAliasType Py_GetBuildInfo diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index b3a46f985e0a2..47547a97bfd31 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -31,6 +31,7 @@ "ucnhash.h", } +MACOS = (sys.platform == "darwin") def get_exported_symbols(library, dynamic=False): # Only look at dynamic symbols @@ -57,7 +58,10 @@ def get_exported_symbols(library, dynamic=False): continue symbol = parts[-1] - yield symbol + if MACOS and symbol.startswith("_"): + yield symbol[1:] + else: + yield symbol def check_library(stable_abi_file, library, abi_funcs, dynamic=False): From webhook-mailer at python.org Tue Dec 15 13:45:10 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 15 Dec 2020 18:45:10 -0000 Subject: [Python-checkins] [3.9] bpo-42318: Fix support of non-BMP characters in Tkinter on macOS (GH-23281). (GH-23784) Message-ID: https://github.com/python/cpython/commit/28bf6ab61f77c69b732a211c398ac882bf3f65f4 commit: 28bf6ab61f77c69b732a211c398ac882bf3f65f4 branch: 3.9 author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-15T20:44:44+02:00 summary: [3.9] bpo-42318: Fix support of non-BMP characters in Tkinter on macOS (GH-23281). (GH-23784) (cherry picked from commit a26215db11cfcf7b5f55cab9e91396761a0e0bcf) files: A Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst M Lib/test/test_tcl.py M Modules/_tkinter.c diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py index 1c5b9cf2bd2a8..bc8926a239921 100644 --- a/Lib/test/test_tcl.py +++ b/Lib/test/test_tcl.py @@ -1,4 +1,5 @@ import unittest +import locale import re import subprocess import sys @@ -59,6 +60,10 @@ def test_eval_null_in_result(self): tcl = self.interp self.assertEqual(tcl.eval('set a "a\\0b"'), 'a\x00b') + def test_eval_surrogates_in_result(self): + tcl = self.interp + self.assertIn(tcl.eval(r'set a "<\ud83d\udcbb>"'), '<\U0001f4bb>') + def testEvalException(self): tcl = self.interp self.assertRaises(TclError,tcl.eval,'set a') @@ -191,29 +196,48 @@ def test_getboolean(self): def testEvalFile(self): tcl = self.interp - with open(support.TESTFN, 'w') as f: - self.addCleanup(support.unlink, support.TESTFN) + filename = support.TESTFN_ASCII + self.addCleanup(support.unlink, filename) + with open(filename, 'w') as f: f.write("""set a 1 set b 2 set c [ expr $a + $b ] """) - tcl.evalfile(support.TESTFN) + tcl.evalfile(filename) self.assertEqual(tcl.eval('set a'),'1') self.assertEqual(tcl.eval('set b'),'2') self.assertEqual(tcl.eval('set c'),'3') def test_evalfile_null_in_result(self): tcl = self.interp - with open(support.TESTFN, 'w') as f: - self.addCleanup(support.unlink, support.TESTFN) + filename = support.TESTFN_ASCII + self.addCleanup(support.unlink, filename) + with open(filename, 'w') as f: f.write(""" set a "a\0b" set b "a\\0b" """) - tcl.evalfile(support.TESTFN) + tcl.evalfile(filename) self.assertEqual(tcl.eval('set a'), 'a\x00b') self.assertEqual(tcl.eval('set b'), 'a\x00b') + def test_evalfile_surrogates_in_result(self): + tcl = self.interp + encoding = tcl.call('encoding', 'system') + self.addCleanup(tcl.call, 'encoding', 'system', encoding) + tcl.call('encoding', 'system', 'utf-8') + + filename = support.TESTFN_ASCII + self.addCleanup(support.unlink, filename) + with open(filename, 'wb') as f: + f.write(b""" + set a "<\xed\xa0\xbd\xed\xb2\xbb>" + set b "<\\ud83d\\udcbb>" + """) + tcl.evalfile(filename) + self.assertEqual(tcl.eval('set a'), '<\U0001f4bb>') + self.assertEqual(tcl.eval('set b'), '<\U0001f4bb>') + def testEvalFileException(self): tcl = self.interp filename = "doesnotexists" @@ -436,6 +460,11 @@ def passValue(value): self.assertEqual(passValue('str\x00ing\u20ac'), 'str\x00ing\u20ac') self.assertEqual(passValue('str\x00ing\U0001f4bb'), 'str\x00ing\U0001f4bb') + if sys.platform != 'win32': + self.assertEqual(passValue('<\udce2\udc82\udcac>'), + '<\u20ac>') + self.assertEqual(passValue('<\udced\udca0\udcbd\udced\udcb2\udcbb>'), + '<\U0001f4bb>') self.assertEqual(passValue(b'str\x00ing'), b'str\x00ing' if self.wantobjects else 'str\x00ing') self.assertEqual(passValue(b'str\xc0\x80ing'), @@ -495,6 +524,9 @@ def float_eq(actual, expected): check('string\xbd') check('string\u20ac') check('string\U0001f4bb') + if sys.platform != 'win32': + check('<\udce2\udc82\udcac>', '<\u20ac>') + check('<\udced\udca0\udcbd\udced\udcb2\udcbb>', '<\U0001f4bb>') check('') check(b'string', 'string') check(b'string\xe2\x82\xac', 'string\xe2\x82\xac') @@ -538,6 +570,8 @@ def test_splitlist(self): ('a \u20ac', ('a', '\u20ac')), ('a \U0001f4bb', ('a', '\U0001f4bb')), (b'a \xe2\x82\xac', ('a', '\u20ac')), + (b'a \xf0\x9f\x92\xbb', ('a', '\U0001f4bb')), + (b'a \xed\xa0\xbd\xed\xb2\xbb', ('a', '\U0001f4bb')), (b'a\xc0\x80b c\xc0\x80d', ('a\x00b', 'c\x00d')), ('a {b c}', ('a', 'b c')), (r'a b\ c', ('a', 'b c')), diff --git a/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst b/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst new file mode 100644 index 0000000000000..e72daebb2f152 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-14-13-46-27.bpo-42318.wYAcBD.rst @@ -0,0 +1 @@ +Fixed support of non-BMP characters in :mod:`tkinter` on macOS. diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 793c5e7154884..b30141d4497bd 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -395,7 +395,8 @@ unicodeFromTclStringAndSize(const char *s, Py_ssize_t size) char *buf = NULL; PyErr_Clear(); - /* Tcl encodes null character as \xc0\x80 */ + /* Tcl encodes null character as \xc0\x80. + https://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8 */ if (memchr(s, '\xc0', size)) { char *q; const char *e = s + size; @@ -419,6 +420,57 @@ unicodeFromTclStringAndSize(const char *s, Py_ssize_t size) if (buf != NULL) { PyMem_Free(buf); } + if (r == NULL || PyUnicode_KIND(r) == PyUnicode_1BYTE_KIND) { + return r; + } + + /* In CESU-8 non-BMP characters are represented as a surrogate pair, + like in UTF-16, and then each surrogate code point is encoded in UTF-8. + https://en.wikipedia.org/wiki/CESU-8 */ + Py_ssize_t len = PyUnicode_GET_LENGTH(r); + Py_ssize_t i, j; + /* All encoded surrogate characters start with \xED. */ + i = PyUnicode_FindChar(r, 0xdcED, 0, len, 1); + if (i == -2) { + Py_DECREF(r); + return NULL; + } + if (i == -1) { + return r; + } + Py_UCS4 *u = PyUnicode_AsUCS4Copy(r); + Py_DECREF(r); + if (u == NULL) { + return NULL; + } + Py_UCS4 ch; + for (j = i; i < len; i++, u[j++] = ch) { + Py_UCS4 ch1, ch2, ch3, high, low; + /* Low surrogates U+D800 - U+DBFF are encoded as + \xED\xA0\x80 - \xED\xAF\xBF. */ + ch1 = ch = u[i]; + if (ch1 != 0xdcED) continue; + ch2 = u[i + 1]; + if (!(0xdcA0 <= ch2 && ch2 <= 0xdcAF)) continue; + ch3 = u[i + 2]; + if (!(0xdc80 <= ch3 && ch3 <= 0xdcBF)) continue; + high = 0xD000 | ((ch2 & 0x3F) << 6) | (ch3 & 0x3F); + assert(Py_UNICODE_IS_HIGH_SURROGATE(high)); + /* High surrogates U+DC00 - U+DFFF are encoded as + \xED\xB0\x80 - \xED\xBF\xBF. */ + ch1 = u[i + 3]; + if (ch1 != 0xdcED) continue; + ch2 = u[i + 4]; + if (!(0xdcB0 <= ch2 && ch2 <= 0xdcBF)) continue; + ch3 = u[i + 5]; + if (!(0xdc80 <= ch3 && ch3 <= 0xdcBF)) continue; + low = 0xD000 | ((ch2 & 0x3F) << 6) | (ch3 & 0x3F); + assert(Py_UNICODE_IS_HIGH_SURROGATE(high)); + ch = Py_UNICODE_JOIN_SURROGATES(high, low); + i += 5; + } + r = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, u, j); + PyMem_Free(u); return r; } From webhook-mailer at python.org Tue Dec 15 14:05:06 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Dec 2020 19:05:06 -0000 Subject: [Python-checkins] Let dependabot create PRs against the maintenance branches (GH-22992) Message-ID: https://github.com/python/cpython/commit/0603f8087abab4d56fd275051ab3fd76a477539a commit: 0603f8087abab4d56fd275051ab3fd76a477539a branch: master author: Mariatta committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-15T11:04:55-08:00 summary: Let dependabot create PRs against the maintenance branches (GH-22992) With this, we don't have to manually trigger backport whenever there is update to GitHub Actions dependencies. files: M .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e90677b9f775a..d9cbb3c7ec385 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,3 +7,7 @@ updates: labels: - "skip issue" - "skip news" + target_branch: + - "master" + - "3.9" + - "3.8" From webhook-mailer at python.org Tue Dec 15 14:43:20 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Tue, 15 Dec 2020 19:43:20 -0000 Subject: [Python-checkins] bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) Message-ID: https://github.com/python/cpython/commit/b9ced83cf427ec86802ba4c9a562c6d9cafc72f5 commit: b9ced83cf427ec86802ba4c9a562c6d9cafc72f5 branch: master author: E-Paine <63801254+E-Paine at users.noreply.github.com> committer: serhiy-storchaka date: 2020-12-15T21:42:55+02:00 summary: bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) files: A Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst M Lib/tkinter/ttk.py diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index 968fd54dce1ee..f3a2f7660f30b 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -1538,7 +1538,10 @@ def __init__(self, master=None, variable=None, from_=0, to=10, **kw): scale_side = 'bottom' if self._label_top else 'top' label_side = 'top' if scale_side == 'bottom' else 'bottom' self.scale.pack(side=scale_side, fill='x') - tmp = Label(self).pack(side=label_side) # place holder + # Dummy required to make frame correct height + dummy = Label(self) + dummy.pack(side=label_side) + dummy.lower() self.label.place(anchor='n' if label_side == 'top' else 's') # update the label as scale or variable changes diff --git a/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst new file mode 100644 index 0000000000000..aedc5c49b4087 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst @@ -0,0 +1 @@ +Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to prevent hiding part of the content label. From webhook-mailer at python.org Tue Dec 15 14:58:53 2020 From: webhook-mailer at python.org (Mariatta) Date: Tue, 15 Dec 2020 19:58:53 -0000 Subject: [Python-checkins] Adding "stale" GitHub Action (GH-21247) Message-ID: https://github.com/python/cpython/commit/9cc8fa6ac89e9ea3ee483675b3c373650fc1bb3a commit: 9cc8fa6ac89e9ea3ee483675b3c373650fc1bb3a branch: master author: Mariatta committer: Mariatta date: 2020-12-15T11:58:43-08:00 summary: Adding "stale" GitHub Action (GH-21247) Adding "stale" GitHub Action Added the "stale" GitHub action to the CPython repo. PR's older than 30 days will be labeled as stale using the "stale-pr" label. Closes https://github.com/python/core-workflow/issues/372 Co-authored-by: Brett Cannon files: A .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000000..706d8e11a2073 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,19 @@ +name: Mark stale pull requests + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + stale: + + runs-on: ubuntu-latest + + steps: + - uses: actions/stale at v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' + stale-pr-label: 'stale' + days-before-stale: 30 + days-before-close: -1 From webhook-mailer at python.org Tue Dec 15 15:02:07 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 15 Dec 2020 20:02:07 -0000 Subject: [Python-checkins] bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) Message-ID: https://github.com/python/cpython/commit/13d40c2a418116797eccd77bd65e4dbd689008db commit: 13d40c2a418116797eccd77bd65e4dbd689008db branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-15T12:02:03-08:00 summary: bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) (cherry picked from commit b9ced83cf427ec86802ba4c9a562c6d9cafc72f5) Co-authored-by: E-Paine <63801254+E-Paine at users.noreply.github.com> files: A Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst M Lib/tkinter/ttk.py diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index 968fd54dce1ee..f3a2f7660f30b 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -1538,7 +1538,10 @@ def __init__(self, master=None, variable=None, from_=0, to=10, **kw): scale_side = 'bottom' if self._label_top else 'top' label_side = 'top' if scale_side == 'bottom' else 'bottom' self.scale.pack(side=scale_side, fill='x') - tmp = Label(self).pack(side=label_side) # place holder + # Dummy required to make frame correct height + dummy = Label(self) + dummy.pack(side=label_side) + dummy.lower() self.label.place(anchor='n' if label_side == 'top' else 's') # update the label as scale or variable changes diff --git a/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst new file mode 100644 index 0000000000000..aedc5c49b4087 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst @@ -0,0 +1 @@ +Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to prevent hiding part of the content label. From webhook-mailer at python.org Tue Dec 15 16:20:27 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 21:20:27 -0000 Subject: [Python-checkins] bpo-31904: Disable os.popen and popen test cases on VxWorks (GH-21687) Message-ID: https://github.com/python/cpython/commit/e1e3c2dac3da8a179f57bd3e3309ab65385bcc8a commit: e1e3c2dac3da8a179f57bd3e3309ab65385bcc8a branch: master author: pxinwr committer: vstinner date: 2020-12-15T22:20:07+01:00 summary: bpo-31904: Disable os.popen and popen test cases on VxWorks (GH-21687) files: A Misc/NEWS.d/next/Tests/2020-07-30-18-06-15.bpo-31904.y3d8dk.rst M Doc/library/os.rst M Lib/os.py M Lib/test/test_os.py M Lib/test/test_popen.py M Lib/test/test_posix.py M Lib/test/test_select.py diff --git a/Doc/library/os.rst b/Doc/library/os.rst index a4c5fbb481521..b309988688959 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -32,7 +32,7 @@ Notes on the availability of these functions: objects, and result in an object of the same type, if a path or file name is returned. -* On VxWorks, os.fork, os.execv and os.spawn*p* are not supported. +* On VxWorks, os.popen, os.fork, os.execv and os.spawn*p* are not supported. .. note:: diff --git a/Lib/os.py b/Lib/os.py index b794159f86c33..05e9c32c5a711 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -36,7 +36,7 @@ __all__ = ["altsep", "curdir", "pardir", "sep", "pathsep", "linesep", "defpath", "name", "path", "devnull", "SEEK_SET", "SEEK_CUR", "SEEK_END", "fsencode", "fsdecode", "get_exec_path", "fdopen", - "popen", "extsep"] + "extsep"] def _exists(name): return name in globals() @@ -969,51 +969,55 @@ def spawnlpe(mode, file, *args): __all__.extend(["spawnlp", "spawnlpe"]) - -# Supply os.popen() -def popen(cmd, mode="r", buffering=-1): - if not isinstance(cmd, str): - raise TypeError("invalid cmd type (%s, expected string)" % type(cmd)) - if mode not in ("r", "w"): - raise ValueError("invalid mode %r" % mode) - if buffering == 0 or buffering is None: - raise ValueError("popen() does not support unbuffered streams") - import subprocess, io - if mode == "r": - proc = subprocess.Popen(cmd, - shell=True, - stdout=subprocess.PIPE, - bufsize=buffering) - return _wrap_close(io.TextIOWrapper(proc.stdout), proc) - else: - proc = subprocess.Popen(cmd, - shell=True, - stdin=subprocess.PIPE, - bufsize=buffering) - return _wrap_close(io.TextIOWrapper(proc.stdin), proc) - -# Helper for popen() -- a proxy for a file whose close waits for the process -class _wrap_close: - def __init__(self, stream, proc): - self._stream = stream - self._proc = proc - def close(self): - self._stream.close() - returncode = self._proc.wait() - if returncode == 0: - return None - if name == 'nt': - return returncode +# VxWorks has no user space shell provided. As a result, running +# command in a shell can't be supported. +if sys.platform != 'vxworks': + # Supply os.popen() + def popen(cmd, mode="r", buffering=-1): + if not isinstance(cmd, str): + raise TypeError("invalid cmd type (%s, expected string)" % type(cmd)) + if mode not in ("r", "w"): + raise ValueError("invalid mode %r" % mode) + if buffering == 0 or buffering is None: + raise ValueError("popen() does not support unbuffered streams") + import subprocess, io + if mode == "r": + proc = subprocess.Popen(cmd, + shell=True, + stdout=subprocess.PIPE, + bufsize=buffering) + return _wrap_close(io.TextIOWrapper(proc.stdout), proc) else: - return returncode << 8 # Shift left to match old behavior - def __enter__(self): - return self - def __exit__(self, *args): - self.close() - def __getattr__(self, name): - return getattr(self._stream, name) - def __iter__(self): - return iter(self._stream) + proc = subprocess.Popen(cmd, + shell=True, + stdin=subprocess.PIPE, + bufsize=buffering) + return _wrap_close(io.TextIOWrapper(proc.stdin), proc) + + # Helper for popen() -- a proxy for a file whose close waits for the process + class _wrap_close: + def __init__(self, stream, proc): + self._stream = stream + self._proc = proc + def close(self): + self._stream.close() + returncode = self._proc.wait() + if returncode == 0: + return None + if name == 'nt': + return returncode + else: + return returncode << 8 # Shift left to match old behavior + def __enter__(self): + return self + def __exit__(self, *args): + self.close() + def __getattr__(self, name): + return getattr(self._stream, name) + def __iter__(self): + return iter(self._stream) + + __all__.append("popen") # Supply os.fdopen() def fdopen(fd, *args, **kwargs): diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index dbb2975c0eee4..08d7ab8a30ba7 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -991,6 +991,7 @@ def _empty_mapping(self): # Bug 1110478 @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), 'requires a shell') + @unittest.skipUnless(hasattr(os, 'popen'), "needs os.popen()") def test_update2(self): os.environ.clear() os.environ.update(HELLO="World") @@ -1000,6 +1001,7 @@ def test_update2(self): @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), 'requires a shell') + @unittest.skipUnless(hasattr(os, 'popen'), "needs os.popen()") def test_os_popen_iter(self): with os.popen("%s -c 'echo \"line1\nline2\nline3\"'" % unix_shell) as popen: diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py index ab1bc776552ca..cac2f6177f325 100644 --- a/Lib/test/test_popen.py +++ b/Lib/test/test_popen.py @@ -7,6 +7,9 @@ from test import support import os, sys +if not hasattr(os, 'popen'): + raise unittest.SkipTest("need os.popen()") + # Test that command-lines get down as we expect. # To do this we execute: # python -c "import sys;print(sys.argv)" {rest_of_commandline} diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 185b293b07046..cd18a4972fa2c 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1045,6 +1045,7 @@ def test_getgrouplist(self): @unittest.skipUnless(hasattr(os, 'getegid'), "test needs os.getegid()") + @unittest.skipUnless(hasattr(os, 'popen'), "test needs os.popen()") def test_getgroups(self): with os.popen('id -G 2>/dev/null') as idg: groups = idg.read().strip() diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index 4ddd5fb96e0ce..f63564e6b0ee6 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -46,6 +46,7 @@ def test_returned_list_identity(self): self.assertIsNot(r, x) self.assertIsNot(w, x) + @unittest.skipUnless(hasattr(os, 'popen'), "need os.popen()") def test_select(self): code = textwrap.dedent(''' import time diff --git a/Misc/NEWS.d/next/Tests/2020-07-30-18-06-15.bpo-31904.y3d8dk.rst b/Misc/NEWS.d/next/Tests/2020-07-30-18-06-15.bpo-31904.y3d8dk.rst new file mode 100644 index 0000000000000..fa2974963bf01 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-07-30-18-06-15.bpo-31904.y3d8dk.rst @@ -0,0 +1 @@ +Disable os.popen and impacted tests on VxWorks From webhook-mailer at python.org Tue Dec 15 16:22:07 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 21:22:07 -0000 Subject: [Python-checkins] bpo-31904: Skip some tests of changing owner in _test_all_chown_common() on VxWorks (GH-23716) Message-ID: https://github.com/python/cpython/commit/9a0dea6137a9fe295c8b03aaa08a74c8572ecc4e commit: 9a0dea6137a9fe295c8b03aaa08a74c8572ecc4e branch: master author: pxinwr committer: vstinner date: 2020-12-15T22:21:53+01:00 summary: bpo-31904: Skip some tests of changing owner in _test_all_chown_common() on VxWorks (GH-23716) files: A Misc/NEWS.d/next/Tests/2020-12-09-15-23-28.bpo-31904.ghj38d.rst M Lib/test/test_posix.py diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index cd18a4972fa2c..588c86994b4bd 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -724,11 +724,20 @@ def check_stat(uid, gid): chown_func(first_param, uid, -1) check_stat(uid, gid) - if uid == 0: + if sys.platform == "vxworks": + # On VxWorks, root user id is 1 and 0 means no login user: + # both are super users. + is_root = (uid in (0, 1)) + else: + is_root = (uid == 0) + if is_root: # Try an amusingly large uid/gid to make sure we handle # large unsigned values. (chown lets you use any # uid/gid you like, even if they aren't defined.) # + # On VxWorks uid_t is defined as unsigned short. A big + # value greater than 65535 will result in underflow error. + # # This problem keeps coming up: # http://bugs.python.org/issue1747858 # http://bugs.python.org/issue4591 @@ -738,7 +747,7 @@ def check_stat(uid, gid): # This part of the test only runs when run as root. # Only scary people run their tests as root. - big_value = 2**31 + big_value = (2**31 if sys.platform != "vxworks" else 2**15) chown_func(first_param, big_value, big_value) check_stat(big_value, big_value) chown_func(first_param, -1, -1) diff --git a/Misc/NEWS.d/next/Tests/2020-12-09-15-23-28.bpo-31904.ghj38d.rst b/Misc/NEWS.d/next/Tests/2020-12-09-15-23-28.bpo-31904.ghj38d.rst new file mode 100644 index 0000000000000..654562bf407b1 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-09-15-23-28.bpo-31904.ghj38d.rst @@ -0,0 +1 @@ +Skip some tests in _test_all_chown_common() on VxWorks. From webhook-mailer at python.org Tue Dec 15 16:24:12 2020 From: webhook-mailer at python.org (vstinner) Date: Tue, 15 Dec 2020 21:24:12 -0000 Subject: [Python-checkins] bpo-31904: Skip os.path.expanduser() tests on VxWorks (GH-23776) Message-ID: https://github.com/python/cpython/commit/b230409f21f5e5b42de6ec10147cd95ae3bdd095 commit: b230409f21f5e5b42de6ec10147cd95ae3bdd095 branch: master author: pxinwr committer: vstinner date: 2020-12-15T22:24:00+01:00 summary: bpo-31904: Skip os.path.expanduser() tests on VxWorks (GH-23776) files: M Lib/test/test_pathlib.py M Lib/test/test_posixpath.py diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 7f7f72c625806..9be72941d3354 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -2467,6 +2467,8 @@ def test_rglob(self): @unittest.skipUnless(hasattr(pwd, 'getpwall'), 'pwd module does not expose getpwall()') + @unittest.skipIf(sys.platform == "vxworks", + "no home directory on VxWorks") def test_expanduser(self): P = self.cls import_helper.import_module('pwd') diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py index 42fd8ef8b1746..e18d01f4635a3 100644 --- a/Lib/test/test_posixpath.py +++ b/Lib/test/test_posixpath.py @@ -1,5 +1,6 @@ import os import posixpath +import sys import unittest from posixpath import realpath, abspath, dirname, basename from test import test_genericpath @@ -262,6 +263,8 @@ def test_expanduser_home_envvar(self): self.assertEqual(posixpath.expanduser("~/"), "/") self.assertEqual(posixpath.expanduser("~/foo"), "/foo") + @unittest.skipIf(sys.platform == "vxworks", + "no home directory on VxWorks") def test_expanduser_pwd(self): pwd = import_helper.import_module('pwd') From webhook-mailer at python.org Tue Dec 15 19:28:36 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 00:28:36 -0000 Subject: [Python-checkins] Update idlelib/help.html to current Sphinx output (GH-22833) Message-ID: https://github.com/python/cpython/commit/57a1fc65bf028336607be14ac31a5d0ff0e6f956 commit: 57a1fc65bf028336607be14ac31a5d0ff0e6f956 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-15T16:28:30-08:00 summary: Update idlelib/help.html to current Sphinx output (GH-22833) idle.rst is unchanged (cherry picked from commit a460d45063844a21c20fa8b0d23878165f99f3b5) Co-authored-by: Terry Jan Reedy files: M Lib/idlelib/help.html diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html index 0edd3917e1ffa..170999e128017 100644 --- a/Lib/idlelib/help.html +++ b/Lib/idlelib/help.html @@ -1,23 +1,24 @@ - + - IDLE — Python 3.10.0a0 documentation + + IDLE — Python 3.10.0a1 documentation - - - - - + + + + + - + @@ -71,11 +72,12 @@

Navigation

  • - 3.10.0a0 Documentation » + 3.10.0a1 Documentation »
  • +
  • @@ -426,30 +428,30 @@

    Key bindingsCommand key on macOS.

    • Backspace deletes to the left; Del deletes to the right

    • -
    • C-Backspace delete word left; C-Del delete word to the right

    • -
    • Arrow keys and Page Up/Page Down to move around

    • -
    • C-LeftArrow and C-RightArrow moves by words

    • +
    • C-Backspace delete word left; C-Del delete word to the right

    • +
    • Arrow keys and Page Up/Page Down to move around

    • +
    • C-LeftArrow and C-RightArrow moves by words

    • Home/End go to begin/end of line

    • -
    • C-Home/C-End go to begin/end of file

    • +
    • C-Home/C-End go to begin/end of file

    • Some useful Emacs bindings are inherited from Tcl/Tk:

        -
      • C-a beginning of line

      • -
      • C-e end of line

      • -
      • C-k kill line (but doesn?t put it in clipboard)

      • -
      • C-l center window around the insertion point

      • -
      • C-b go backward one character without deleting (usually you can +

      • C-a beginning of line

      • +
      • C-e end of line

      • +
      • C-k kill line (but doesn?t put it in clipboard)

      • +
      • C-l center window around the insertion point

      • +
      • C-b go backward one character without deleting (usually you can also use the cursor key for this)

      • -
      • C-f go forward one character without deleting (usually you can +

      • C-f go forward one character without deleting (usually you can also use the cursor key for this)

      • -
      • C-p go up one line (usually you can also use the cursor key for +

      • C-p go up one line (usually you can also use the cursor key for this)

      • -
      • C-d delete next character

      • +
      • C-d delete next character

    -

    Standard keybindings (like C-c to copy and C-v to paste) +

    Standard keybindings (like C-c to copy and C-v to paste) may work. Keybindings are selected in the Configure IDLE dialog.

  • -
  • C-d sends end-of-file; closes window if typed at a >>> prompt

  • -
  • Alt-/ (Expand word) is also useful to reduce typing

    +
  • C-c interrupts executing command

  • +
  • C-d sends end-of-file; closes window if typed at a >>> prompt

  • +
  • Alt-/ (Expand word) is also useful to reduce typing

    Command history

      -
    • Alt-p retrieves previous command matching what you have typed. On -macOS use C-p.

    • -
    • Alt-n retrieves next. On macOS use C-n.

    • +
    • Alt-p retrieves previous command matching what you have typed. On +macOS use C-p.

    • +
    • Alt-n retrieves next. On macOS use C-n.

    • Return while on any previous command retrieves that command

  • @@ -852,6 +854,7 @@

    Extensions @@ -947,11 +950,12 @@

    Navigation

  • - 3.10.0a0 Documentation » + 3.10.0a1 Documentation »
  • +
  • @@ -978,11 +982,11 @@

    Navigation



    - Last updated on Sep 22, 2020. + Last updated on Oct 20, 2020. Found a bug?
    - Created using Sphinx 2.1.1. + Created using Sphinx 3.2.1. From webhook-mailer at python.org Tue Dec 15 21:13:05 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 02:13:05 -0000 Subject: [Python-checkins] bpo-42090: zipfile.Path.joinpath now accepts multiple arguments (GH-22976) Message-ID: https://github.com/python/cpython/commit/928dbfc16c9c4715459c80fe551c74702480db8b commit: 928dbfc16c9c4715459c80fe551c74702480db8b branch: master author: Jason R. Coombs committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-15T18:12:54-08:00 summary: bpo-42090: zipfile.Path.joinpath now accepts multiple arguments (GH-22976) Automerge-Triggered-By: GH:jaraco files: A Misc/NEWS.d/next/Library/2020-10-25-14-48-57.bpo-42090.Ubuc0j.rst M Doc/library/zipfile.rst M Lib/test/test_zipfile.py M Lib/zipfile.py diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst index 7126d8bd703f6..3db55e646c47c 100644 --- a/Doc/library/zipfile.rst +++ b/Doc/library/zipfile.rst @@ -483,7 +483,7 @@ Path Objects Path objects expose the following features of :mod:`pathlib.Path` objects: -Path objects are traversable using the ``/`` operator. +Path objects are traversable using the ``/`` operator or ``joinpath``. .. attribute:: Path.name @@ -532,6 +532,19 @@ Path objects are traversable using the ``/`` operator. Read the current file as bytes. +.. method:: Path.joinpath(*other) + + Return a new Path object with each of the *other* arguments + joined. The following are equivalent:: + + >>> Path(...).joinpath('child').joinpath('grandchild') + >>> Path(...).joinpath('child', 'grandchild') + >>> Path(...) / 'child' / 'grandchild' + + .. versionchanged:: 3.10 + Prior to 3.10, ``joinpath`` was undocumented and accepted + exactly one parameter. + .. _pyzipfile-objects: diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index b3c24213f3474..7c09e2f51b005 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -2965,6 +2965,12 @@ def test_joinpath(self, alpharep): e = root.joinpath("b").joinpath("d").joinpath("e.txt") assert e.read_text() == "content of e" + @pass_alpharep + def test_joinpath_multiple(self, alpharep): + root = zipfile.Path(alpharep) + e = root.joinpath("b", "d", "e.txt") + assert e.read_text() == "content of e" + @pass_alpharep def test_traverse_truediv(self, alpharep): root = zipfile.Path(alpharep) diff --git a/Lib/zipfile.py b/Lib/zipfile.py index e1a50a3eb51d9..0eed4ce9a6344 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -2379,8 +2379,8 @@ def __str__(self): def __repr__(self): return self.__repr.format(self=self) - def joinpath(self, add): - next = posixpath.join(self.at, add) + def joinpath(self, *other): + next = posixpath.join(self.at, *other) return self._next(self.root.resolve_dir(next)) __truediv__ = joinpath diff --git a/Misc/NEWS.d/next/Library/2020-10-25-14-48-57.bpo-42090.Ubuc0j.rst b/Misc/NEWS.d/next/Library/2020-10-25-14-48-57.bpo-42090.Ubuc0j.rst new file mode 100644 index 0000000000000..72f6853b50504 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-25-14-48-57.bpo-42090.Ubuc0j.rst @@ -0,0 +1,2 @@ +``zipfile.Path.joinpath`` now accepts arbitrary arguments, same as +``pathlib.Path.joinpath``. From webhook-mailer at python.org Tue Dec 15 21:36:45 2020 From: webhook-mailer at python.org (Mariatta) Date: Wed, 16 Dec 2020 02:36:45 -0000 Subject: [Python-checkins] Update Stale action message (GH-23791) Message-ID: https://github.com/python/cpython/commit/801165e1a99507d604d4db82e44b1cab9f9c715c commit: 801165e1a99507d604d4db82e44b1cab9f9c715c branch: master author: Mariatta committer: Mariatta date: 2020-12-15T18:36:33-08:00 summary: Update Stale action message (GH-23791) We don't close PRs after it becomes stale. files: M .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 706d8e11a2073..58c9a4f21c30f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/stale at v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' + stale-pr-message: 'This PR is stale because it has been open for 30 days with no activity.' stale-pr-label: 'stale' days-before-stale: 30 days-before-close: -1 From webhook-mailer at python.org Tue Dec 15 21:47:36 2020 From: webhook-mailer at python.org (willingc) Date: Wed, 16 Dec 2020 02:47:36 -0000 Subject: [Python-checkins] bpo-42179: Clarify exception chaining (GH-23160) Message-ID: https://github.com/python/cpython/commit/3f9fe23c05280dc5736c07bb0e968cdaf8c503d0 commit: 3f9fe23c05280dc5736c07bb0e968cdaf8c503d0 branch: master author: Vladimir committer: willingc date: 2020-12-15T18:47:26-08:00 summary: bpo-42179: Clarify exception chaining (GH-23160) * Update errors.rst Clarify exception chaining behaviour and give a reference to the library documentation. * Update errors.rst Wording * Update errors.rst Spelling * Update errors.rst Remove mentioning of special attributes as folks think it's too much for beginners. files: M Doc/tutorial/errors.rst diff --git a/Doc/tutorial/errors.rst b/Doc/tutorial/errors.rst index efe44da3043c5..4a25861a050e6 100644 --- a/Doc/tutorial/errors.rst +++ b/Doc/tutorial/errors.rst @@ -281,17 +281,17 @@ chaining exceptions. For example:: This can be useful when you are transforming exceptions. For example:: >>> def func(): - ... raise IOError + ... raise ConnectionError ... >>> try: ... func() - ... except IOError as exc: + ... except ConnectionError as exc: ... raise RuntimeError('Failed to open database') from exc ... Traceback (most recent call last): File "", line 2, in File "", line 2, in func - OSError + ConnectionError The above exception was the direct cause of the following exception: @@ -300,7 +300,7 @@ This can be useful when you are transforming exceptions. For example:: RuntimeError: Failed to open database Exception chaining happens automatically when an exception is raised inside an -:keyword:`except` or :keyword:`finally` section. Exception chaining can be +:keyword:`except` or :keyword:`finally` section. This can be disabled by using ``from None`` idiom: >>> try: From webhook-mailer at python.org Tue Dec 15 22:18:25 2020 From: webhook-mailer at python.org (merwok) Date: Wed, 16 Dec 2020 03:18:25 -0000 Subject: [Python-checkins] [3.8] bpo-39416: change word case to not imply ABC (GH-22867) (GH-22869) Message-ID: https://github.com/python/cpython/commit/aedc94b8e9d0f7700c665d8d1ba9c93df33e63a8 commit: aedc94b8e9d0f7700c665d8d1ba9c93df33e63a8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: merwok date: 2020-12-15T22:18:17-05:00 summary: [3.8] bpo-39416: change word case to not imply ABC (GH-22867) (GH-22869) follow-up to bpo-39416 Co-authored-by: kpinc files: M Doc/reference/datamodel.rst diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 083d38cc9f160..332051e396994 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -182,7 +182,7 @@ Ellipsis related to mathematical numbers, but subject to the limitations of numerical representation in computers. - The string representations of the Numeric classes, computed by + The string representations of the numeric classes, computed by :meth:`__repr__` and :meth:`__str__`, have the following properties: From webhook-mailer at python.org Wed Dec 16 04:43:48 2020 From: webhook-mailer at python.org (asvetlov) Date: Wed, 16 Dec 2020 09:43:48 -0000 Subject: [Python-checkins] bpo-42644: Validate values in logging.disable() (#23786) Message-ID: https://github.com/python/cpython/commit/b32d8b4f9bcd2e7d11240b6b9de0262cf8f5e09d commit: b32d8b4f9bcd2e7d11240b6b9de0262cf8f5e09d branch: master author: Matthias Bussonnier committer: asvetlov date: 2020-12-16T11:43:39+02:00 summary: bpo-42644: Validate values in logging.disable() (#23786) * bpo-42644: Validate values in logging.disable() Technically make the value of manager a property that checks and convert values assigned to it properly. This has the side effect of making `logging.disable` also accept strings representing the various level of warnings. We want to validate the type of the disable attribute at assignment time, as it is later compared to other levels when emitting warnings and would generate a `TypeError: '>=' not supported between ....` in a different part of the code base, which can make it difficult to track down. When assigned an incorrect value; it will raise a TypeError when the wrong type, or ValueError if an invalid str. Co-authored-by: Andrew Svetlov files: A Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst M Lib/logging/__init__.py M Lib/test/test_logging.py diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index badfd654b1689..50b7378cd6386 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1289,6 +1289,14 @@ def __init__(self, rootnode): self.loggerClass = None self.logRecordFactory = None + @property + def disable(self): + return self._disable + + @disable.setter + def disable(self, value): + self._disable = _checkLevel(value) + def getLogger(self, name): """ Get a logger with the specified name (channel name), creating it diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index e2196736dcdf4..859baa4738ba7 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4219,6 +4219,15 @@ def test_disable(self): logging.disable(83) self.assertEqual(logging.root.manager.disable, 83) + self.assertRaises(ValueError, logging.disable, "doesnotexists") + + class _NotAnIntOrString: + pass + + self.assertRaises(TypeError, logging.disable, _NotAnIntOrString()) + + logging.disable("WARN") + # test the default value introduced in 3.7 # (Issue #28524) logging.disable() diff --git a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst new file mode 100644 index 0000000000000..f58b58e4002ad --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst @@ -0,0 +1,3 @@ +`logging.disable` will now validate the types and value of its parameter. It +also now accepts strings representing the levels (as does `loging.setLevel`) +instead of only the numerical values. From webhook-mailer at python.org Wed Dec 16 05:10:55 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 10:10:55 -0000 Subject: [Python-checkins] bpo-42644: Validate values in logging.disable() (GH-23786) Message-ID: https://github.com/python/cpython/commit/0a24a57888798905e3b8891c59e61ed4f1bfc5a8 commit: 0a24a57888798905e3b8891c59e61ed4f1bfc5a8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T02:10:32-08:00 summary: bpo-42644: Validate values in logging.disable() (GH-23786) * bpo-42644: Validate values in logging.disable() Technically make the value of manager a property that checks and convert values assigned to it properly. This has the side effect of making `logging.disable` also accept strings representing the various level of warnings. We want to validate the type of the disable attribute at assignment time, as it is later compared to other levels when emitting warnings and would generate a `TypeError: '>=' not supported between ....` in a different part of the code base, which can make it difficult to track down. When assigned an incorrect value; it will raise a TypeError when the wrong type, or ValueError if an invalid str. Co-authored-by: Andrew Svetlov (cherry picked from commit b32d8b4f9bcd2e7d11240b6b9de0262cf8f5e09d) Co-authored-by: Matthias Bussonnier files: A Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst M Lib/logging/__init__.py M Lib/test/test_logging.py diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 79e0787af8596..da3f7b1f73422 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1269,6 +1269,14 @@ def __init__(self, rootnode): self.loggerClass = None self.logRecordFactory = None + @property + def disable(self): + return self._disable + + @disable.setter + def disable(self, value): + self._disable = _checkLevel(value) + def getLogger(self, name): """ Get a logger with the specified name (channel name), creating it diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index b9392aefd4476..3e15db03a43a5 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4170,6 +4170,15 @@ def test_disable(self): logging.disable(83) self.assertEqual(logging.root.manager.disable, 83) + self.assertRaises(ValueError, logging.disable, "doesnotexists") + + class _NotAnIntOrString: + pass + + self.assertRaises(TypeError, logging.disable, _NotAnIntOrString()) + + logging.disable("WARN") + # test the default value introduced in 3.7 # (Issue #28524) logging.disable() diff --git a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst new file mode 100644 index 0000000000000..f58b58e4002ad --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst @@ -0,0 +1,3 @@ +`logging.disable` will now validate the types and value of its parameter. It +also now accepts strings representing the levels (as does `loging.setLevel`) +instead of only the numerical values. From webhook-mailer at python.org Wed Dec 16 05:12:18 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 10:12:18 -0000 Subject: [Python-checkins] bpo-42644: Validate values in logging.disable() (GH-23786) Message-ID: https://github.com/python/cpython/commit/db63da7e5d4a98925a04f903a19bf3595b9c2c46 commit: db63da7e5d4a98925a04f903a19bf3595b9c2c46 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T02:12:08-08:00 summary: bpo-42644: Validate values in logging.disable() (GH-23786) * bpo-42644: Validate values in logging.disable() Technically make the value of manager a property that checks and convert values assigned to it properly. This has the side effect of making `logging.disable` also accept strings representing the various level of warnings. We want to validate the type of the disable attribute at assignment time, as it is later compared to other levels when emitting warnings and would generate a `TypeError: '>=' not supported between ....` in a different part of the code base, which can make it difficult to track down. When assigned an incorrect value; it will raise a TypeError when the wrong type, or ValueError if an invalid str. Co-authored-by: Andrew Svetlov (cherry picked from commit b32d8b4f9bcd2e7d11240b6b9de0262cf8f5e09d) Co-authored-by: Matthias Bussonnier files: A Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst M Lib/logging/__init__.py M Lib/test/test_logging.py diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 7b169a16fbb70..6920a7b654a59 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1269,6 +1269,14 @@ def __init__(self, rootnode): self.loggerClass = None self.logRecordFactory = None + @property + def disable(self): + return self._disable + + @disable.setter + def disable(self, value): + self._disable = _checkLevel(value) + def getLogger(self, name): """ Get a logger with the specified name (channel name), creating it diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 410eae2208688..a6cd291c9a553 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4191,6 +4191,15 @@ def test_disable(self): logging.disable(83) self.assertEqual(logging.root.manager.disable, 83) + self.assertRaises(ValueError, logging.disable, "doesnotexists") + + class _NotAnIntOrString: + pass + + self.assertRaises(TypeError, logging.disable, _NotAnIntOrString()) + + logging.disable("WARN") + # test the default value introduced in 3.7 # (Issue #28524) logging.disable() diff --git a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst new file mode 100644 index 0000000000000..f58b58e4002ad --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst @@ -0,0 +1,3 @@ +`logging.disable` will now validate the types and value of its parameter. It +also now accepts strings representing the levels (as does `loging.setLevel`) +instead of only the numerical values. From webhook-mailer at python.org Wed Dec 16 05:16:35 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 10:16:35 -0000 Subject: [Python-checkins] bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) Message-ID: https://github.com/python/cpython/commit/79782fe4f8cf73d7fdf8db02073bbadf7ff817b6 commit: 79782fe4f8cf73d7fdf8db02073bbadf7ff817b6 branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T11:16:25+01:00 summary: bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) Use shorter timeout and replace send() with sendall(). files: M Lib/test/test_epoll.py diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py index 10f148fe5cdb4..b623852f9eb4e 100644 --- a/Lib/test/test_epoll.py +++ b/Lib/test/test_epoll.py @@ -160,44 +160,42 @@ def test_fromfd(self): self.fail("epoll on closed fd didn't raise EBADF") def test_control_and_wait(self): + # create the epoll object client, server = self._connected_pair() - ep = select.epoll(16) ep.register(server.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) ep.register(client.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) + # EPOLLOUT now = time.monotonic() events = ep.poll(1, 4) then = time.monotonic() self.assertFalse(then - now > 0.1, then - now) - events.sort() expected = [(client.fileno(), select.EPOLLOUT), (server.fileno(), select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) - events = ep.poll(timeout=2.1, maxevents=4) + # no event + events = ep.poll(timeout=0.1, maxevents=4) self.assertFalse(events) - client.send(b"Hello!") - server.send(b"world!!!") + # send: EPOLLIN and EPOLLOUT + client.sendall(b"Hello!") + server.sendall(b"world!!!") now = time.monotonic() - events = ep.poll(1, 4) + events = ep.poll(1.0, 4) then = time.monotonic() self.assertFalse(then - now > 0.01) - events.sort() expected = [(client.fileno(), select.EPOLLIN | select.EPOLLOUT), (server.fileno(), select.EPOLLIN | select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) + # unregister, modify ep.unregister(client.fileno()) ep.modify(server.fileno(), select.EPOLLOUT) now = time.monotonic() From webhook-mailer at python.org Wed Dec 16 05:32:11 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Wed, 16 Dec 2020 10:32:11 -0000 Subject: [Python-checkins] bpo-19733: Re-enable tests for -image option in Tkinter (GH-23785) Message-ID: https://github.com/python/cpython/commit/5f0fe8ec70120f4586d08978b0911b436f82c421 commit: 5f0fe8ec70120f4586d08978b0911b436f82c421 branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-16T12:31:49+02:00 summary: bpo-19733: Re-enable tests for -image option in Tkinter (GH-23785) files: M Lib/tkinter/test/test_tkinter/test_widgets.py M Lib/tkinter/test/widget_tests.py diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index b6f792d6c2cf8..4b9b6ebdda04e 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -2,7 +2,6 @@ import tkinter from tkinter import TclError import os -import sys from test.support import requires from tkinter.test.support import (tcl_version, requires_tcl, @@ -265,8 +264,6 @@ def test_height(self): test_highlightthickness = StandardOptionsTests.test_highlightthickness - @unittest.skipIf(sys.platform == 'darwin', - 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() image = tkinter.PhotoImage(master=self.root, name='image1') diff --git a/Lib/tkinter/test/widget_tests.py b/Lib/tkinter/test/widget_tests.py index b42ff52178f29..ad4a8bd2bf325 100644 --- a/Lib/tkinter/test/widget_tests.py +++ b/Lib/tkinter/test/widget_tests.py @@ -1,7 +1,6 @@ # Common tests for test_tkinter/test_widgets.py and test_ttk/test_widgets.py import unittest -import sys import tkinter from tkinter.test.support import (AbstractTkTest, tcl_version, requires_tcl, get_tk_patchlevel, pixels_conv, tcl_obj_eq) @@ -332,8 +331,6 @@ def test_highlightthickness(self): self.checkParam(widget, 'highlightthickness', -2, expected=0, conv=self._conv_pixels) - @unittest.skipIf(sys.platform == 'darwin', - 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() self.checkImageParam(widget, 'image') From webhook-mailer at python.org Wed Dec 16 05:54:25 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 10:54:25 -0000 Subject: [Python-checkins] bpo-19733: Re-enable tests for -image option in Tkinter (GH-23785) Message-ID: https://github.com/python/cpython/commit/cd7412e3c4a2805009d0baa948cd4026d6fa6f3d commit: cd7412e3c4a2805009d0baa948cd4026d6fa6f3d branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T02:54:04-08:00 summary: bpo-19733: Re-enable tests for -image option in Tkinter (GH-23785) (cherry picked from commit 5f0fe8ec70120f4586d08978b0911b436f82c421) Co-authored-by: Serhiy Storchaka files: M Lib/tkinter/test/test_tkinter/test_widgets.py M Lib/tkinter/test/widget_tests.py diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index b6f792d6c2cf8..4b9b6ebdda04e 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -2,7 +2,6 @@ import tkinter from tkinter import TclError import os -import sys from test.support import requires from tkinter.test.support import (tcl_version, requires_tcl, @@ -265,8 +264,6 @@ def test_height(self): test_highlightthickness = StandardOptionsTests.test_highlightthickness - @unittest.skipIf(sys.platform == 'darwin', - 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() image = tkinter.PhotoImage(master=self.root, name='image1') diff --git a/Lib/tkinter/test/widget_tests.py b/Lib/tkinter/test/widget_tests.py index b42ff52178f29..ad4a8bd2bf325 100644 --- a/Lib/tkinter/test/widget_tests.py +++ b/Lib/tkinter/test/widget_tests.py @@ -1,7 +1,6 @@ # Common tests for test_tkinter/test_widgets.py and test_ttk/test_widgets.py import unittest -import sys import tkinter from tkinter.test.support import (AbstractTkTest, tcl_version, requires_tcl, get_tk_patchlevel, pixels_conv, tcl_obj_eq) @@ -332,8 +331,6 @@ def test_highlightthickness(self): self.checkParam(widget, 'highlightthickness', -2, expected=0, conv=self._conv_pixels) - @unittest.skipIf(sys.platform == 'darwin', - 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() self.checkImageParam(widget, 'image') From webhook-mailer at python.org Wed Dec 16 06:11:39 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 11:11:39 -0000 Subject: [Python-checkins] bpo-40364: asyncio uses os.waitstatus_to_exitcode() (GH-23798) Message-ID: https://github.com/python/cpython/commit/99d28c56708bff1f442e1df5748adb2620542c61 commit: 99d28c56708bff1f442e1df5748adb2620542c61 branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T12:11:24+01:00 summary: bpo-40364: asyncio uses os.waitstatus_to_exitcode() (GH-23798) test_unix_events.py no longer checks if waitstatus_to_exitcode() mock has been called or not to make the test more functional, rather than checking the exact implementation. files: M Lib/asyncio/unix_events.py M Lib/test/test_asyncio/test_unix_events.py diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 1b57e34563eea..33a6732941fc3 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -44,6 +44,16 @@ def _sighandler_noop(signum, frame): pass +def waitstatus_to_exitcode(status): + try: + return os.waitstatus_to_exitcode(status) + except ValueError: + # The child exited, but we don't understand its status. + # This shouldn't happen, but if it does, let's just + # return that status; perhaps that helps debug it. + return status + + class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop): """Unix event loop. @@ -941,7 +951,7 @@ def _do_wait(self, pid): " will report returncode 255", pid) else: - returncode = _compute_returncode(status) + returncode = waitstatus_to_exitcode(status) os.close(pidfd) callback(pid, returncode, *args) @@ -956,20 +966,6 @@ def remove_child_handler(self, pid): return True -def _compute_returncode(status): - if os.WIFSIGNALED(status): - # The child process died because of a signal. - return -os.WTERMSIG(status) - elif os.WIFEXITED(status): - # The child process exited (e.g sys.exit()). - return os.WEXITSTATUS(status) - else: - # The child exited, but we don't understand its status. - # This shouldn't happen, but if it does, let's just - # return that status; perhaps that helps debug it. - return status - - class BaseChildWatcher(AbstractChildWatcher): def __init__(self): @@ -1080,7 +1076,7 @@ def _do_waitpid(self, expected_pid): # The child process is still alive. return - returncode = _compute_returncode(status) + returncode = waitstatus_to_exitcode(status) if self._loop.get_debug(): logger.debug('process %s exited with returncode %s', expected_pid, returncode) @@ -1173,7 +1169,7 @@ def _do_waitpid_all(self): # A child process is still alive. return - returncode = _compute_returncode(status) + returncode = waitstatus_to_exitcode(status) with self._lock: try: @@ -1296,7 +1292,7 @@ def _do_waitpid(self, expected_pid): # The child process is still alive. return - returncode = _compute_returncode(status) + returncode = waitstatus_to_exitcode(status) debug_log = True try: loop, callback, args = self._callbacks.pop(pid) @@ -1399,7 +1395,7 @@ def _do_waitpid(self, loop, expected_pid, callback, args): "Unknown child process pid %d, will report returncode 255", pid) else: - returncode = _compute_returncode(status) + returncode = waitstatus_to_exitcode(status) if loop.get_debug(): logger.debug('process %s exited with returncode %s', expected_pid, returncode) diff --git a/Lib/test/test_asyncio/test_unix_events.py b/Lib/test/test_asyncio/test_unix_events.py index 2c7d52a15bb72..643638564e342 100644 --- a/Lib/test/test_asyncio/test_unix_events.py +++ b/Lib/test/test_asyncio/test_unix_events.py @@ -1,6 +1,5 @@ """Tests for unix_events.py.""" -import collections import contextlib import errno import io @@ -30,6 +29,15 @@ MOCK_ANY = mock.ANY +def EXITCODE(exitcode): + return 32768 + exitcode + + +def SIGNAL(signum): + assert 1 <= signum <= 68 + return 32768 - signum + + def tearDownModule(): asyncio.set_event_loop_policy(None) @@ -1125,15 +1133,6 @@ def test_not_implemented(self): NotImplementedError, watcher._do_waitpid, f) -WaitPidMocks = collections.namedtuple("WaitPidMocks", - ("waitpid", - "WIFEXITED", - "WIFSIGNALED", - "WEXITSTATUS", - "WTERMSIG", - )) - - class ChildWatcherTestsMixin: ignore_warnings = mock.patch.object(log.logger, "warning") @@ -1164,22 +1163,16 @@ def waitpid(self, pid, flags): else: raise ChildProcessError() - def add_zombie(self, pid, returncode): - self.zombies[pid] = returncode + 32768 - - def WIFEXITED(self, status): - return status >= 32768 + def add_zombie(self, pid, status): + self.zombies[pid] = status - def WIFSIGNALED(self, status): - return 32700 < status < 32768 - - def WEXITSTATUS(self, status): - self.assertTrue(self.WIFEXITED(status)) - return status - 32768 - - def WTERMSIG(self, status): - self.assertTrue(self.WIFSIGNALED(status)) - return 32768 - status + def waitstatus_to_exitcode(self, status): + if status > 32768: + return status - 32768 + elif 32700 < status < 32768: + return status - 32768 + else: + return status def test_create_watcher(self): self.m_add_signal_handler.assert_called_once_with( @@ -1191,19 +1184,13 @@ def patch(target, wrapper): return mock.patch(target, wraps=wrapper, new_callable=mock.Mock) - with patch('os.WTERMSIG', self.WTERMSIG) as m_WTERMSIG, \ - patch('os.WEXITSTATUS', self.WEXITSTATUS) as m_WEXITSTATUS, \ - patch('os.WIFSIGNALED', self.WIFSIGNALED) as m_WIFSIGNALED, \ - patch('os.WIFEXITED', self.WIFEXITED) as m_WIFEXITED, \ + with patch('asyncio.unix_events.waitstatus_to_exitcode', self.waitstatus_to_exitcode), \ patch('os.waitpid', self.waitpid) as m_waitpid: - func(self, WaitPidMocks(m_waitpid, - m_WIFEXITED, m_WIFSIGNALED, - m_WEXITSTATUS, m_WTERMSIG, - )) + func(self, m_waitpid) return wrapped_func @waitpid_mocks - def test_sigchld(self, m): + def test_sigchld(self, m_waitpid): # register a child callback = mock.Mock() @@ -1212,59 +1199,36 @@ def test_sigchld(self, m): self.watcher.add_child_handler(42, callback, 9, 10, 14) self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child is running self.watcher._sig_chld() self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child terminates (returncode 12) self.running = False - self.add_zombie(42, 12) + self.add_zombie(42, EXITCODE(12)) self.watcher._sig_chld() - self.assertTrue(m.WIFEXITED.called) - self.assertTrue(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) callback.assert_called_once_with(42, 12, 9, 10, 14) - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WEXITSTATUS.reset_mock() callback.reset_mock() # ensure that the child is effectively reaped - self.add_zombie(42, 13) + self.add_zombie(42, EXITCODE(13)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback.called) - self.assertFalse(m.WTERMSIG.called) - - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WEXITSTATUS.reset_mock() # sigchld called again self.zombies.clear() self.watcher._sig_chld() self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) @waitpid_mocks - def test_sigchld_two_children(self, m): + def test_sigchld_two_children(self, m_waitpid): callback1 = mock.Mock() callback2 = mock.Mock() @@ -1275,10 +1239,6 @@ def test_sigchld_two_children(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # register child 2 with self.watcher: @@ -1286,34 +1246,20 @@ def test_sigchld_two_children(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # children are running self.watcher._sig_chld() self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child 1 terminates (signal 3) - self.add_zombie(43, -3) + self.add_zombie(43, SIGNAL(3)) self.watcher._sig_chld() callback1.assert_called_once_with(43, -3, 7, 8) self.assertFalse(callback2.called) - self.assertTrue(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertTrue(m.WTERMSIG.called) - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WTERMSIG.reset_mock() callback1.reset_mock() # child 2 still running @@ -1321,40 +1267,25 @@ def test_sigchld_two_children(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child 2 terminates (code 108) - self.add_zombie(44, 108) + self.add_zombie(44, EXITCODE(108)) self.running = False self.watcher._sig_chld() callback2.assert_called_once_with(44, 108, 147, 18) self.assertFalse(callback1.called) - self.assertTrue(m.WIFEXITED.called) - self.assertTrue(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WEXITSTATUS.reset_mock() callback2.reset_mock() # ensure that the children are effectively reaped - self.add_zombie(43, 14) - self.add_zombie(44, 15) + self.add_zombie(43, EXITCODE(14)) + self.add_zombie(44, EXITCODE(15)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WTERMSIG.called) - - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WEXITSTATUS.reset_mock() # sigchld called again self.zombies.clear() @@ -1362,13 +1293,9 @@ def test_sigchld_two_children(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) @waitpid_mocks - def test_sigchld_two_children_terminating_together(self, m): + def test_sigchld_two_children_terminating_together(self, m_waitpid): callback1 = mock.Mock() callback2 = mock.Mock() @@ -1379,10 +1306,6 @@ def test_sigchld_two_children_terminating_together(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # register child 2 with self.watcher: @@ -1390,60 +1313,43 @@ def test_sigchld_two_children_terminating_together(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # children are running self.watcher._sig_chld() self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child 1 terminates (code 78) # child 2 terminates (signal 5) - self.add_zombie(45, 78) - self.add_zombie(46, -5) + self.add_zombie(45, EXITCODE(78)) + self.add_zombie(46, SIGNAL(5)) self.running = False self.watcher._sig_chld() callback1.assert_called_once_with(45, 78, 17, 8) callback2.assert_called_once_with(46, -5, 1147, 18) - self.assertTrue(m.WIFSIGNALED.called) - self.assertTrue(m.WIFEXITED.called) - self.assertTrue(m.WEXITSTATUS.called) - self.assertTrue(m.WTERMSIG.called) - - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WTERMSIG.reset_mock() - m.WEXITSTATUS.reset_mock() + callback1.reset_mock() callback2.reset_mock() # ensure that the children are effectively reaped - self.add_zombie(45, 14) - self.add_zombie(46, 15) + self.add_zombie(45, EXITCODE(14)) + self.add_zombie(46, EXITCODE(15)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WTERMSIG.called) @waitpid_mocks - def test_sigchld_race_condition(self, m): + def test_sigchld_race_condition(self, m_waitpid): # register a child callback = mock.Mock() with self.watcher: # child terminates before being registered - self.add_zombie(50, 4) + self.add_zombie(50, EXITCODE(4)) self.watcher._sig_chld() self.watcher.add_child_handler(50, callback, 1, 12) @@ -1452,14 +1358,14 @@ def test_sigchld_race_condition(self, m): callback.reset_mock() # ensure that the child is effectively reaped - self.add_zombie(50, -1) + self.add_zombie(50, SIGNAL(1)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback.called) @waitpid_mocks - def test_sigchld_replace_handler(self, m): + def test_sigchld_replace_handler(self, m_waitpid): callback1 = mock.Mock() callback2 = mock.Mock() @@ -1470,10 +1376,6 @@ def test_sigchld_replace_handler(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # register the same child again with self.watcher: @@ -1481,38 +1383,27 @@ def test_sigchld_replace_handler(self, m): self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child terminates (signal 8) self.running = False - self.add_zombie(51, -8) + self.add_zombie(51, SIGNAL(8)) self.watcher._sig_chld() callback2.assert_called_once_with(51, -8, 21) self.assertFalse(callback1.called) - self.assertTrue(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertTrue(m.WTERMSIG.called) - m.WIFSIGNALED.reset_mock() - m.WIFEXITED.reset_mock() - m.WTERMSIG.reset_mock() callback2.reset_mock() # ensure that the child is effectively reaped - self.add_zombie(51, 13) + self.add_zombie(51, EXITCODE(13)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback1.called) self.assertFalse(callback2.called) - self.assertFalse(m.WTERMSIG.called) @waitpid_mocks - def test_sigchld_remove_handler(self, m): + def test_sigchld_remove_handler(self, m_waitpid): callback = mock.Mock() # register a child @@ -1521,30 +1412,22 @@ def test_sigchld_remove_handler(self, m): self.watcher.add_child_handler(52, callback, 1984) self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # unregister the child self.watcher.remove_child_handler(52) self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child terminates (code 99) self.running = False - self.add_zombie(52, 99) + self.add_zombie(52, EXITCODE(99)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback.called) @waitpid_mocks - def test_sigchld_unknown_status(self, m): + def test_sigchld_unknown_status(self, m_waitpid): callback = mock.Mock() # register a child @@ -1553,10 +1436,6 @@ def test_sigchld_unknown_status(self, m): self.watcher.add_child_handler(53, callback, -19) self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # terminate with unknown status self.zombies[53] = 1178 @@ -1564,24 +1443,18 @@ def test_sigchld_unknown_status(self, m): self.watcher._sig_chld() callback.assert_called_once_with(53, 1178, -19) - self.assertTrue(m.WIFEXITED.called) - self.assertTrue(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) callback.reset_mock() - m.WIFEXITED.reset_mock() - m.WIFSIGNALED.reset_mock() # ensure that the child is effectively reaped - self.add_zombie(53, 101) + self.add_zombie(53, EXITCODE(101)) with self.ignore_warnings: self.watcher._sig_chld() self.assertFalse(callback.called) @waitpid_mocks - def test_remove_child_handler(self, m): + def test_remove_child_handler(self, m_waitpid): callback1 = mock.Mock() callback2 = mock.Mock() callback3 = mock.Mock() @@ -1602,9 +1475,9 @@ def test_remove_child_handler(self, m): self.assertFalse(self.watcher.remove_child_handler(55)) # all children terminate - self.add_zombie(54, 0) - self.add_zombie(55, 1) - self.add_zombie(56, 2) + self.add_zombie(54, EXITCODE(0)) + self.add_zombie(55, EXITCODE(1)) + self.add_zombie(56, EXITCODE(2)) self.running = False with self.ignore_warnings: self.watcher._sig_chld() @@ -1614,7 +1487,7 @@ def test_remove_child_handler(self, m): callback3.assert_called_once_with(56, 2, 3) @waitpid_mocks - def test_sigchld_unhandled_exception(self, m): + def test_sigchld_unhandled_exception(self, m_waitpid): callback = mock.Mock() # register a child @@ -1623,7 +1496,7 @@ def test_sigchld_unhandled_exception(self, m): self.watcher.add_child_handler(57, callback) # raise an exception - m.waitpid.side_effect = ValueError + m_waitpid.side_effect = ValueError with mock.patch.object(log.logger, 'error') as m_error: @@ -1632,7 +1505,7 @@ def test_sigchld_unhandled_exception(self, m): self.assertTrue(m_error.called) @waitpid_mocks - def test_sigchld_child_reaped_elsewhere(self, m): + def test_sigchld_child_reaped_elsewhere(self, m_waitpid): # register a child callback = mock.Mock() @@ -1641,19 +1514,15 @@ def test_sigchld_child_reaped_elsewhere(self, m): self.watcher.add_child_handler(58, callback) self.assertFalse(callback.called) - self.assertFalse(m.WIFEXITED.called) - self.assertFalse(m.WIFSIGNALED.called) - self.assertFalse(m.WEXITSTATUS.called) - self.assertFalse(m.WTERMSIG.called) # child terminates self.running = False - self.add_zombie(58, 4) + self.add_zombie(58, EXITCODE(4)) # waitpid is called elsewhere os.waitpid(58, os.WNOHANG) - m.waitpid.reset_mock() + m_waitpid.reset_mock() # sigchld with self.ignore_warnings: @@ -1667,7 +1536,7 @@ def test_sigchld_child_reaped_elsewhere(self, m): callback.assert_called_once_with(58, 255) @waitpid_mocks - def test_sigchld_unknown_pid_during_registration(self, m): + def test_sigchld_unknown_pid_during_registration(self, m_waitpid): # register two children callback1 = mock.Mock() callback2 = mock.Mock() @@ -1675,9 +1544,9 @@ def test_sigchld_unknown_pid_during_registration(self, m): with self.ignore_warnings, self.watcher: self.running = True # child 1 terminates - self.add_zombie(591, 7) + self.add_zombie(591, EXITCODE(7)) # an unknown child terminates - self.add_zombie(593, 17) + self.add_zombie(593, EXITCODE(17)) self.watcher._sig_chld() @@ -1688,7 +1557,7 @@ def test_sigchld_unknown_pid_during_registration(self, m): self.assertFalse(callback2.called) @waitpid_mocks - def test_set_loop(self, m): + def test_set_loop(self, m_waitpid): # register a child callback = mock.Mock() @@ -1713,13 +1582,13 @@ def test_set_loop(self, m): # child terminates self.running = False - self.add_zombie(60, 9) + self.add_zombie(60, EXITCODE(9)) self.watcher._sig_chld() callback.assert_called_once_with(60, 9) @waitpid_mocks - def test_set_loop_race_condition(self, m): + def test_set_loop_race_condition(self, m_waitpid): # register 3 children callback1 = mock.Mock() callback2 = mock.Mock() @@ -1746,8 +1615,8 @@ def test_set_loop_race_condition(self, m): signal.SIGCHLD) # child 1 & 2 terminate - self.add_zombie(61, 11) - self.add_zombie(62, -5) + self.add_zombie(61, EXITCODE(11)) + self.add_zombie(62, SIGNAL(5)) # SIGCHLD was not caught self.assertFalse(callback1.called) @@ -1773,7 +1642,7 @@ def test_set_loop_race_condition(self, m): # child 3 terminates self.running = False - self.add_zombie(622, 19) + self.add_zombie(622, EXITCODE(19)) self.watcher._sig_chld() self.assertFalse(callback1.called) @@ -1781,16 +1650,16 @@ def test_set_loop_race_condition(self, m): callback3.assert_called_once_with(622, 19) @waitpid_mocks - def test_close(self, m): + def test_close(self, m_waitpid): # register two children callback1 = mock.Mock() with self.watcher: self.running = True # child 1 terminates - self.add_zombie(63, 9) + self.add_zombie(63, EXITCODE(9)) # other child terminates - self.add_zombie(65, 18) + self.add_zombie(65, EXITCODE(18)) self.watcher._sig_chld() self.watcher.add_child_handler(63, callback1) From webhook-mailer at python.org Wed Dec 16 06:12:43 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 11:12:43 -0000 Subject: [Python-checkins] bpo-42613: Fix freeze.py config directory (GH-23792) Message-ID: https://github.com/python/cpython/commit/1c653f17cb84d81df3a74ab0b42140d2bb68c5c4 commit: 1c653f17cb84d81df3a74ab0b42140d2bb68c5c4 branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T12:12:36+01:00 summary: bpo-42613: Fix freeze.py config directory (GH-23792) Fix freeze.py tool to use the prope config and library directories. files: A Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst M Tools/freeze/freeze.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst new file mode 100644 index 0000000000000..140ff8255b96b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst @@ -0,0 +1,2 @@ +Fix ``freeze.py`` tool to use the prope config and library directories. +Patch by Victor Stinner. diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py index 83aa508a46a93..d66e1e2708e75 100755 --- a/Tools/freeze/freeze.py +++ b/Tools/freeze/freeze.py @@ -93,6 +93,7 @@ import getopt import os import sys +import sysconfig # Import the freeze-private modules @@ -226,7 +227,7 @@ def main(): extensions_c = 'frozen_extensions.c' if ishome: print("(Using Python source directory)") - binlib = exec_prefix + configdir = exec_prefix incldir = os.path.join(prefix, 'Include') config_h_dir = exec_prefix config_c_in = os.path.join(prefix, 'Modules', 'config.c.in') @@ -235,22 +236,21 @@ def main(): if win: frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c') else: - binlib = os.path.join(exec_prefix, - 'lib', 'python%s' % version, - 'config-%s' % flagged_version) + configdir = sysconfig.get_config_var('LIBPL') incldir = os.path.join(prefix, 'include', 'python%s' % flagged_version) config_h_dir = os.path.join(exec_prefix, 'include', 'python%s' % flagged_version) - config_c_in = os.path.join(binlib, 'config.c.in') - frozenmain_c = os.path.join(binlib, 'frozenmain.c') - makefile_in = os.path.join(binlib, 'Makefile') - frozendllmain_c = os.path.join(binlib, 'frozen_dllmain.c') + config_c_in = os.path.join(configdir, 'config.c.in') + frozenmain_c = os.path.join(configdir, 'frozenmain.c') + makefile_in = os.path.join(configdir, 'Makefile') + frozendllmain_c = os.path.join(configdir, 'frozen_dllmain.c') + libdir = sysconfig.get_config_var('LIBDIR') supp_sources = [] defines = [] includes = ['-I' + incldir, '-I' + config_h_dir] # sanity check of directories and files - check_dirs = [prefix, exec_prefix, binlib, incldir] + check_dirs = [prefix, exec_prefix, configdir, incldir] if not win: # These are not directories on Windows. check_dirs = check_dirs + extensions @@ -457,7 +457,7 @@ def main(): cflags = ['$(OPT)'] cppflags = defines + includes - libs = [os.path.join(binlib, '$(LDLIBRARY)')] + libs = [os.path.join(libdir, '$(LDLIBRARY)')] somevars = {} if os.path.exists(makefile_in): From webhook-mailer at python.org Wed Dec 16 06:20:42 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 11:20:42 -0000 Subject: [Python-checkins] bpo-1635741: Refactor _threadmodule.c (GH-23793) Message-ID: https://github.com/python/cpython/commit/8203c73f3bb1f51614279b6e23af2ec587d1fa22 commit: 8203c73f3bb1f51614279b6e23af2ec587d1fa22 branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T12:20:33+01:00 summary: bpo-1635741: Refactor _threadmodule.c (GH-23793) * Fix ExceptHookArgsType name: "_thread.ExceptHookArgs", instead of "_thread._ExceptHookArgs". * PyInit__thread() no longer intializes interp->num_threads to 0: it is already done in PyInterpreterState_New(). * Use PyModule_AddType(), Py_NewRef() and Py_XNewRef(). * Replace str_dict variable with _Py_IDENTIFIER(__dict__). * Remove assert(Py_IS_TYPE(obj, &Locktype)) from release_sentinel() to avoid having to retrive the type from this callback. * Add thread_bootstate_free() * Rename t_bootstrap() to thread_run() * bootstate structure: rename keyw member to kwargs files: M Modules/_threadmodule.c diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 86d5f544fcf0f..bd4331c6108bd 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -8,12 +8,15 @@ #include "pycore_pystate.h" // _PyThreadState_Init() #include // offsetof() -static PyObject *ThreadError; -static PyObject *str_dict; +// ThreadError is just an alias to PyExc_RuntimeError +#define ThreadError PyExc_RuntimeError + +_Py_IDENTIFIER(__dict__); _Py_IDENTIFIER(stderr); _Py_IDENTIFIER(flush); + /* Lock objects */ typedef struct { @@ -26,8 +29,9 @@ typedef struct { static void lock_dealloc(lockobject *self) { - if (self->in_weakreflist != NULL) + if (self->in_weakreflist != NULL) { PyObject_ClearWeakRefs((PyObject *) self); + } if (self->lock_lock != NULL) { /* Unlock the lock so it's safe to free it */ if (self->locked) @@ -48,12 +52,13 @@ acquire_timed(PyThread_type_lock lock, _PyTime_t timeout) { PyLockStatus r; _PyTime_t endtime = 0; - _PyTime_t microseconds; - if (timeout > 0) + if (timeout > 0) { endtime = _PyTime_GetMonotonicClock() + timeout; + } do { + _PyTime_t microseconds; microseconds = _PyTime_AsMicroseconds(timeout, _PyTime_ROUND_CEILING); /* first a simple non-blocking try without releasing the GIL */ @@ -138,12 +143,10 @@ static PyObject * lock_PyThread_acquire_lock(lockobject *self, PyObject *args, PyObject *kwds) { _PyTime_t timeout; - PyLockStatus r; - if (lock_acquire_parse_args(args, kwds, &timeout) < 0) return NULL; - r = acquire_timed(self->lock_lock, timeout); + PyLockStatus r = acquire_timed(self->lock_lock, timeout); if (r == PY_LOCK_INTR) { return NULL; } @@ -245,36 +248,28 @@ static PyMethodDef lock_methods[] = { {NULL, NULL} /* sentinel */ }; +PyDoc_STRVAR(lock_doc, +"A lock object is a synchronization primitive. To create a lock,\n\ +call threading.Lock(). Methods are:\n\ +\n\ +acquire() -- lock the lock, possibly blocking until it can be obtained\n\ +release() -- unlock of the lock\n\ +locked() -- test whether the lock is currently locked\n\ +\n\ +A lock is not owned by the thread that locked it; another thread may\n\ +unlock it. A thread attempting to lock a lock that it has already locked\n\ +will block until another thread unlocks it. Deadlocks may ensue."); + static PyTypeObject Locktype = { PyVarObject_HEAD_INIT(&PyType_Type, 0) - "_thread.lock", /*tp_name*/ - sizeof(lockobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)lock_dealloc, /*tp_dealloc*/ - 0, /*tp_vectorcall_offset*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_as_async*/ - (reprfunc)lock_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - offsetof(lockobject, in_weakreflist), /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - lock_methods, /*tp_methods*/ + .tp_name = "_thread.lock", + .tp_basicsize = sizeof(lockobject), + .tp_dealloc = (destructor)lock_dealloc, + .tp_repr = (reprfunc)lock_repr, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_doc = lock_doc, + .tp_weaklistoffset = offsetof(lockobject, in_weakreflist), + .tp_methods = lock_methods, }; /* Recursive lock objects */ @@ -527,56 +522,29 @@ static PyMethodDef rlock_methods[] = { static PyTypeObject RLocktype = { PyVarObject_HEAD_INIT(&PyType_Type, 0) - "_thread.RLock", /*tp_name*/ - sizeof(rlockobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)rlock_dealloc, /*tp_dealloc*/ - 0, /*tp_vectorcall_offset*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_as_async*/ - (reprfunc)rlock_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - offsetof(rlockobject, in_weakreflist), /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - rlock_methods, /*tp_methods*/ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ - rlock_new /* tp_new */ + .tp_name = "_thread.RLock", + .tp_basicsize = sizeof(rlockobject), + .tp_dealloc = (destructor)rlock_dealloc, + .tp_repr = (reprfunc)rlock_repr, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_weaklistoffset = offsetof(rlockobject, in_weakreflist), + .tp_methods = rlock_methods, + .tp_alloc = PyType_GenericAlloc, + .tp_new = rlock_new, }; static lockobject * newlockobject(void) { - lockobject *self; - self = PyObject_New(lockobject, &Locktype); - if (self == NULL) + lockobject *self = PyObject_New(lockobject, &Locktype); + if (self == NULL) { return NULL; + } + self->lock_lock = PyThread_allocate_lock(); self->locked = 0; self->in_weakreflist = NULL; + if (self->lock_lock == NULL) { Py_DECREF(self); PyErr_SetString(ThreadError, "can't allocate lock"); @@ -642,30 +610,12 @@ localdummy_dealloc(localdummyobject *self) static PyTypeObject localdummytype = { PyVarObject_HEAD_INIT(NULL, 0) - /* tp_name */ "_thread._localdummy", - /* tp_basicsize */ sizeof(localdummyobject), - /* tp_itemsize */ 0, - /* tp_dealloc */ (destructor)localdummy_dealloc, - /* tp_vectorcall_offset */ 0, - /* tp_getattr */ 0, - /* tp_setattr */ 0, - /* tp_as_async */ 0, - /* tp_repr */ 0, - /* tp_as_number */ 0, - /* tp_as_sequence */ 0, - /* tp_as_mapping */ 0, - /* tp_hash */ 0, - /* tp_call */ 0, - /* tp_str */ 0, - /* tp_getattro */ 0, - /* tp_setattro */ 0, - /* tp_as_buffer */ 0, - /* tp_flags */ Py_TPFLAGS_DEFAULT, - /* tp_doc */ "Thread-local dummy", - /* tp_traverse */ 0, - /* tp_clear */ 0, - /* tp_richcompare */ 0, - /* tp_weaklistoffset */ offsetof(localdummyobject, weakreflist) + .tp_name = "_thread._localdummy", + .tp_basicsize = sizeof(localdummyobject), + .tp_dealloc = (destructor)localdummy_dealloc, + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_doc = "Thread-local dummy", + .tp_weaklistoffset = offsetof(localdummyobject, weakreflist), }; @@ -690,11 +640,10 @@ static PyObject *_localdummy_destroyed(PyObject *meth_self, PyObject *dummyweakr static PyObject * _local_create_dummy(localobject *self) { - PyObject *tdict, *ldict = NULL, *wr = NULL; + PyObject *ldict = NULL, *wr = NULL; localdummyobject *dummy = NULL; - int r; - tdict = PyThreadState_GetDict(); + PyObject *tdict = PyThreadState_GetDict(); if (tdict == NULL) { PyErr_SetString(PyExc_SystemError, "Couldn't get thread-state dictionary"); @@ -702,25 +651,30 @@ _local_create_dummy(localobject *self) } ldict = PyDict_New(); - if (ldict == NULL) + if (ldict == NULL) { goto err; + } dummy = (localdummyobject *) localdummytype.tp_alloc(&localdummytype, 0); - if (dummy == NULL) + if (dummy == NULL) { goto err; + } dummy->localdict = ldict; wr = PyWeakref_NewRef((PyObject *) dummy, self->wr_callback); - if (wr == NULL) + if (wr == NULL) { goto err; + } /* As a side-effect, this will cache the weakref's hash before the dummy gets deleted */ - r = PyDict_SetItem(self->dummies, wr, ldict); - if (r < 0) + int r = PyDict_SetItem(self->dummies, wr, ldict); + if (r < 0) { goto err; + } Py_CLEAR(wr); r = PyDict_SetItem(tdict, self->key, (PyObject *) dummy); - if (r < 0) + if (r < 0) { goto err; + } Py_CLEAR(dummy); Py_DECREF(ldict); @@ -737,7 +691,6 @@ static PyObject * local_new(PyTypeObject *type, PyObject *args, PyObject *kw) { localobject *self; - PyObject *wr; static PyMethodDef wr_callback_def = { "_localdummy_destroyed", (PyCFunction) _localdummy_destroyed, METH_O }; @@ -749,42 +702,45 @@ local_new(PyTypeObject *type, PyObject *args, PyObject *kw) if (rc == 0 && kw != NULL) rc = PyObject_IsTrue(kw); if (rc != 0) { - if (rc > 0) + if (rc > 0) { PyErr_SetString(PyExc_TypeError, "Initialization arguments are not supported"); + } return NULL; } } self = (localobject *)type->tp_alloc(type, 0); - if (self == NULL) + if (self == NULL) { return NULL; + } - Py_XINCREF(args); - self->args = args; - Py_XINCREF(kw); - self->kw = kw; + self->args = Py_XNewRef(args); + self->kw = Py_XNewRef(kw); self->key = PyUnicode_FromFormat("thread.local.%p", self); - if (self->key == NULL) + if (self->key == NULL) { goto err; + } self->dummies = PyDict_New(); - if (self->dummies == NULL) + if (self->dummies == NULL) { goto err; + } /* We use a weak reference to self in the callback closure in order to avoid spurious reference cycles */ - wr = PyWeakref_NewRef((PyObject *) self, NULL); - if (wr == NULL) + PyObject *wr = PyWeakref_NewRef((PyObject *) self, NULL); + if (wr == NULL) { goto err; + } self->wr_callback = PyCFunction_NewEx(&wr_callback_def, wr, NULL); Py_DECREF(wr); - if (self->wr_callback == NULL) + if (self->wr_callback == NULL) { goto err; - - if (_local_create_dummy(self) == NULL) + } + if (_local_create_dummy(self) == NULL) { goto err; - + } return (PyObject *)self; err: @@ -834,8 +790,9 @@ local_dealloc(localobject *self) { /* Weakrefs must be invalidated right now, otherwise they can be used from code called below, which is very dangerous since Py_REFCNT(self) == 0 */ - if (self->weakreflist != NULL) + if (self->weakreflist != NULL) { PyObject_ClearWeakRefs((PyObject *) self); + } PyObject_GC_UnTrack(self); @@ -848,16 +805,15 @@ local_dealloc(localobject *self) static PyObject * _ldict(localobject *self) { - PyObject *tdict, *ldict, *dummy; - - tdict = PyThreadState_GetDict(); + PyObject *tdict = PyThreadState_GetDict(); if (tdict == NULL) { PyErr_SetString(PyExc_SystemError, "Couldn't get thread-state dictionary"); return NULL; } - dummy = PyDict_GetItemWithError(tdict, self->key); + PyObject *ldict; + PyObject *dummy = PyDict_GetItemWithError(tdict, self->key); if (dummy == NULL) { if (PyErr_Occurred()) { return NULL; @@ -887,22 +843,26 @@ _ldict(localobject *self) static int local_setattro(localobject *self, PyObject *name, PyObject *v) { - PyObject *ldict; - int r; + PyObject *ldict = _ldict(self); + if (ldict == NULL) { + return -1; + } - ldict = _ldict(self); - if (ldict == NULL) + PyObject *str_dict = _PyUnicode_FromId(&PyId___dict__); // borrowed ref + if (str_dict == NULL) { return -1; + } - r = PyObject_RichCompareBool(name, str_dict, Py_EQ); + int r = PyObject_RichCompareBool(name, str_dict, Py_EQ); + if (r == -1) { + return -1; + } if (r == 1) { PyErr_Format(PyExc_AttributeError, "'%.50s' object attribute '%U' is read-only", Py_TYPE(self)->tp_name, name); return -1; } - if (r == -1) - return -1; return _PyObject_GenericSetAttrWithDict((PyObject *)self, name, v, ldict); } @@ -911,80 +871,54 @@ static PyObject *local_getattro(localobject *, PyObject *); static PyTypeObject localtype = { PyVarObject_HEAD_INIT(NULL, 0) - /* tp_name */ "_thread._local", - /* tp_basicsize */ sizeof(localobject), - /* tp_itemsize */ 0, - /* tp_dealloc */ (destructor)local_dealloc, - /* tp_vectorcall_offset */ 0, - /* tp_getattr */ 0, - /* tp_setattr */ 0, - /* tp_as_async */ 0, - /* tp_repr */ 0, - /* tp_as_number */ 0, - /* tp_as_sequence */ 0, - /* tp_as_mapping */ 0, - /* tp_hash */ 0, - /* tp_call */ 0, - /* tp_str */ 0, - /* tp_getattro */ (getattrofunc)local_getattro, - /* tp_setattro */ (setattrofunc)local_setattro, - /* tp_as_buffer */ 0, - /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE - | Py_TPFLAGS_HAVE_GC, - /* tp_doc */ "Thread-local data", - /* tp_traverse */ (traverseproc)local_traverse, - /* tp_clear */ (inquiry)local_clear, - /* tp_richcompare */ 0, - /* tp_weaklistoffset */ offsetof(localobject, weakreflist), - /* tp_iter */ 0, - /* tp_iternext */ 0, - /* tp_methods */ 0, - /* tp_members */ 0, - /* tp_getset */ 0, - /* tp_base */ 0, - /* tp_dict */ 0, /* internal use */ - /* tp_descr_get */ 0, - /* tp_descr_set */ 0, - /* tp_dictoffset */ 0, - /* tp_init */ 0, - /* tp_alloc */ 0, - /* tp_new */ local_new, - /* tp_free */ 0, /* Low-level free-mem routine */ - /* tp_is_gc */ 0, /* For PyObject_IS_GC */ + .tp_name = "_thread._local", + .tp_basicsize = sizeof(localobject), + .tp_dealloc = (destructor)local_dealloc, + .tp_getattro = (getattrofunc)local_getattro, + .tp_setattro = (setattrofunc)local_setattro, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .tp_doc = "Thread-local data", + .tp_traverse = (traverseproc)local_traverse, + .tp_clear = (inquiry)local_clear, + .tp_weaklistoffset = offsetof(localobject, weakreflist), + .tp_new = local_new, }; static PyObject * local_getattro(localobject *self, PyObject *name) { - PyObject *ldict, *value; - int r; - - ldict = _ldict(self); + PyObject *ldict = _ldict(self); if (ldict == NULL) return NULL; - r = PyObject_RichCompareBool(name, str_dict, Py_EQ); + PyObject *str_dict = _PyUnicode_FromId(&PyId___dict__); // borrowed ref + if (str_dict == NULL) { + return NULL; + } + + int r = PyObject_RichCompareBool(name, str_dict, Py_EQ); if (r == 1) { - Py_INCREF(ldict); - return ldict; + return Py_NewRef(ldict); } - if (r == -1) + if (r == -1) { return NULL; + } - if (!Py_IS_TYPE(self, &localtype)) + if (!Py_IS_TYPE(self, &localtype)) { /* use generic lookup for subtypes */ - return _PyObject_GenericGetAttrWithDict( - (PyObject *)self, name, ldict, 0); + return _PyObject_GenericGetAttrWithDict((PyObject *)self, name, + ldict, 0); + } /* Optimization: just look in dict ourselves */ - value = PyDict_GetItemWithError(ldict, name); + PyObject *value = PyDict_GetItemWithError(ldict, name); if (value != NULL) { - Py_INCREF(value); - return value; + return Py_NewRef(value); } - else if (PyErr_Occurred()) { + if (PyErr_Occurred()) { return NULL; } + /* Fall back on generic to get __class__ and __dict__ */ return _PyObject_GenericGetAttrWithDict( (PyObject *)self, name, ldict, 0); @@ -994,17 +928,15 @@ local_getattro(localobject *self, PyObject *name) static PyObject * _localdummy_destroyed(PyObject *localweakref, PyObject *dummyweakref) { - PyObject *obj; - localobject *self; assert(PyWeakref_CheckRef(localweakref)); - obj = PyWeakref_GET_OBJECT(localweakref); - if (obj == Py_None) + PyObject *obj = PyWeakref_GET_OBJECT(localweakref); + if (obj == Py_None) { Py_RETURN_NONE; - Py_INCREF(obj); - assert(PyObject_TypeCheck(obj, &localtype)); + } + /* If the thread-local object is still alive and not being cleared, remove the corresponding local dict */ - self = (localobject *) obj; + localobject *self = (localobject *)Py_NewRef(obj); if (self->dummies != NULL) { PyObject *ldict; ldict = PyDict_GetItemWithError(self->dummies, dummyweakref); @@ -1024,24 +956,35 @@ struct bootstate { PyInterpreterState *interp; PyObject *func; PyObject *args; - PyObject *keyw; + PyObject *kwargs; PyThreadState *tstate; _PyRuntimeState *runtime; }; + static void -t_bootstrap(void *boot_raw) +thread_bootstate_free(struct bootstate *boot) +{ + Py_DECREF(boot->func); + Py_DECREF(boot->args); + Py_XDECREF(boot->kwargs); + PyMem_Free(boot); +} + + +static void +thread_run(void *boot_raw) { struct bootstate *boot = (struct bootstate *) boot_raw; PyThreadState *tstate; - PyObject *res; tstate = boot->tstate; tstate->thread_id = PyThread_get_thread_ident(); _PyThreadState_Init(tstate); PyEval_AcquireThread(tstate); tstate->interp->num_threads++; - res = PyObject_Call(boot->func, boot->args, boot->keyw); + + PyObject *res = PyObject_Call(boot->func, boot->args, boot->kwargs); if (res == NULL) { if (PyErr_ExceptionMatches(PyExc_SystemExit)) /* SystemExit is ignored silently */ @@ -1053,13 +996,12 @@ t_bootstrap(void *boot_raw) else { Py_DECREF(res); } - Py_DECREF(boot->func); - Py_DECREF(boot->args); - Py_XDECREF(boot->keyw); - PyMem_Free(boot_raw); + + thread_bootstate_free(boot); tstate->interp->num_threads--; PyThreadState_Clear(tstate); _PyThreadState_DeleteCurrent(tstate); + PyThread_exit_thread(); } @@ -1067,12 +1009,10 @@ static PyObject * thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs) { _PyRuntimeState *runtime = &_PyRuntime; - PyObject *func, *args, *keyw = NULL; - struct bootstate *boot; - unsigned long ident; + PyObject *func, *args, *kwargs = NULL; if (!PyArg_UnpackTuple(fargs, "start_new_thread", 2, 3, - &func, &args, &keyw)) + &func, &args, &kwargs)) return NULL; if (!PyCallable_Check(func)) { PyErr_SetString(PyExc_TypeError, @@ -1084,7 +1024,7 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs) "2nd arg must be a tuple"); return NULL; } - if (keyw != NULL && !PyDict_Check(keyw)) { + if (kwargs != NULL && !PyDict_Check(kwargs)) { PyErr_SetString(PyExc_TypeError, "optional 3rd arg must be a dictionary"); return NULL; @@ -1097,31 +1037,26 @@ thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs) return NULL; } - boot = PyMem_NEW(struct bootstate, 1); - if (boot == NULL) + struct bootstate *boot = PyMem_NEW(struct bootstate, 1); + if (boot == NULL) { return PyErr_NoMemory(); + } boot->interp = _PyInterpreterState_GET(); - boot->func = func; - boot->args = args; - boot->keyw = keyw; boot->tstate = _PyThreadState_Prealloc(boot->interp); - boot->runtime = runtime; if (boot->tstate == NULL) { PyMem_Free(boot); return PyErr_NoMemory(); } - Py_INCREF(func); - Py_INCREF(args); - Py_XINCREF(keyw); + boot->runtime = runtime; + boot->func = Py_NewRef(func); + boot->args = Py_NewRef(args); + boot->kwargs = Py_XNewRef(kwargs); - ident = PyThread_start_new_thread(t_bootstrap, (void*) boot); + unsigned long ident = PyThread_start_new_thread(thread_run, (void*) boot); if (ident == PYTHREAD_INVALID_THREAD_ID) { PyErr_SetString(ThreadError, "can't start new thread"); - Py_DECREF(func); - Py_DECREF(args); - Py_XDECREF(keyw); PyThreadState_Clear(boot->tstate); - PyMem_Free(boot); + thread_bootstate_free(boot); return NULL; } return PyLong_FromUnsignedLong(ident); @@ -1169,7 +1104,7 @@ A subthread can use this function to interrupt the main thread." static lockobject *newlockobject(void); static PyObject * -thread_PyThread_allocate_lock(PyObject *self, PyObject *Py_UNUSED(ignored)) +thread_PyThread_allocate_lock(PyObject *module, PyObject *Py_UNUSED(ignored)) { return (PyObject *) newlockobject(); } @@ -1248,7 +1183,6 @@ release_sentinel(void *wr_raw) PyObject *obj = PyWeakref_GET_OBJECT(wr); lockobject *lock; if (obj != Py_None) { - assert(Py_IS_TYPE(obj, &Locktype)); lock = (lockobject *) obj; if (lock->locked) { PyThread_release_lock(lock->lock_lock); @@ -1261,7 +1195,7 @@ release_sentinel(void *wr_raw) } static PyObject * -thread__set_sentinel(PyObject *self, PyObject *Py_UNUSED(ignored)) +thread__set_sentinel(PyObject *module, PyObject *Py_UNUSED(ignored)) { PyObject *wr; PyThreadState *tstate = PyThreadState_Get(); @@ -1429,7 +1363,7 @@ static PyStructSequence_Field ExceptHookArgs_fields[] = { }; static PyStructSequence_Desc ExceptHookArgs_desc = { - .name = "_thread.ExceptHookArgs", + .name = "_thread._ExceptHookArgs", .doc = ExceptHookArgs__doc__, .fields = ExceptHookArgs_fields, .n_in_sequence = 4 @@ -1530,106 +1464,87 @@ static PyMethodDef thread_methods[] = { /* Initialization function */ -PyDoc_STRVAR(thread_doc, -"This module provides primitive operations to write multi-threaded programs.\n\ -The 'threading' module provides a more convenient interface."); - -PyDoc_STRVAR(lock_doc, -"A lock object is a synchronization primitive. To create a lock,\n\ -call threading.Lock(). Methods are:\n\ -\n\ -acquire() -- lock the lock, possibly blocking until it can be obtained\n\ -release() -- unlock of the lock\n\ -locked() -- test whether the lock is currently locked\n\ -\n\ -A lock is not owned by the thread that locked it; another thread may\n\ -unlock it. A thread attempting to lock a lock that it has already locked\n\ -will block until another thread unlocks it. Deadlocks may ensue."); - -static struct PyModuleDef threadmodule = { - PyModuleDef_HEAD_INIT, - "_thread", - thread_doc, - -1, - thread_methods, - NULL, - NULL, - NULL, - NULL -}; - - -PyMODINIT_FUNC -PyInit__thread(void) +static int +_thread_module_exec(PyObject *module) { - PyObject *m, *d, *v; - double time_max; - double timeout_max; - PyInterpreterState *interp = _PyInterpreterState_GET(); + // Initialize the C thread library + PyThread_init_thread(); - /* Initialize types: */ + // Initialize types if (PyType_Ready(&localdummytype) < 0) - return NULL; - if (PyType_Ready(&localtype) < 0) - return NULL; - if (PyType_Ready(&Locktype) < 0) - return NULL; - if (PyType_Ready(&RLocktype) < 0) - return NULL; + return -1; + if (PyType_Ready(&localtype) < 0) { + return -1; + } + if (PyType_Ready(&Locktype) < 0) { + return -1; + } + if (PyType_Ready(&RLocktype) < 0) { + return -1; + } if (ExceptHookArgsType.tp_name == NULL) { if (PyStructSequence_InitType2(&ExceptHookArgsType, &ExceptHookArgs_desc) < 0) { - return NULL; + return -1; } } - /* Create the module and add the functions */ - m = PyModule_Create(&threadmodule); - if (m == NULL) - return NULL; + // Add module attributes + PyObject *d = PyModule_GetDict(module); + if (PyDict_SetItemString(d, "error", ThreadError) < 0) { + return -1; + } + if (PyDict_SetItemString(d, "LockType", (PyObject *)&Locktype) < 0) { + return -1; + } + if (PyModule_AddType(module, &RLocktype) < 0) { + return -1; + } + if (PyModule_AddType(module, &localtype) < 0) { + return -1; + } + if (PyModule_AddType(module, &ExceptHookArgsType) < 0) { + return -1; + } - timeout_max = (_PyTime_t)PY_TIMEOUT_MAX * 1e-6; - time_max = _PyTime_AsSecondsDouble(_PyTime_MAX); + // TIMEOUT_MAX + double timeout_max = (_PyTime_t)PY_TIMEOUT_MAX * 1e-6; + double time_max = _PyTime_AsSecondsDouble(_PyTime_MAX); timeout_max = Py_MIN(timeout_max, time_max); - /* Round towards minus infinity */ + // Round towards minus infinity timeout_max = floor(timeout_max); - v = PyFloat_FromDouble(timeout_max); - if (!v) - return NULL; - if (PyModule_AddObject(m, "TIMEOUT_MAX", v) < 0) - return NULL; + if (PyModule_AddObject(module, "TIMEOUT_MAX", + PyFloat_FromDouble(timeout_max)) < 0) { + return -1; + } - /* Add a symbolic constant */ - d = PyModule_GetDict(m); - ThreadError = PyExc_RuntimeError; - Py_INCREF(ThreadError); + return 0; +} - PyDict_SetItemString(d, "error", ThreadError); - Locktype.tp_doc = lock_doc; - Py_INCREF(&Locktype); - PyDict_SetItemString(d, "LockType", (PyObject *)&Locktype); - Py_INCREF(&RLocktype); - if (PyModule_AddObject(m, "RLock", (PyObject *)&RLocktype) < 0) - return NULL; +PyDoc_STRVAR(thread_doc, +"This module provides primitive operations to write multi-threaded programs.\n\ +The 'threading' module provides a more convenient interface."); - Py_INCREF(&localtype); - if (PyModule_AddObject(m, "_local", (PyObject *)&localtype) < 0) - return NULL; +static struct PyModuleDef _thread_module = { + PyModuleDef_HEAD_INIT, + .m_name = "_thread", + .m_doc = thread_doc, + .m_size = -1, + .m_methods = thread_methods, +}; - Py_INCREF(&ExceptHookArgsType); - if (PyModule_AddObject(m, "_ExceptHookArgs", - (PyObject *)&ExceptHookArgsType) < 0) +PyMODINIT_FUNC +PyInit__thread(void) +{ + PyObject *module = PyModule_Create(&_thread_module); + if (module == NULL) return NULL; - interp->num_threads = 0; - - str_dict = PyUnicode_InternFromString("__dict__"); - if (str_dict == NULL) + if (_thread_module_exec(module) < 0) { + Py_DECREF(module); return NULL; - - /* Initialize the C thread library */ - PyThread_init_thread(); - return m; + } + return module; } From webhook-mailer at python.org Wed Dec 16 07:18:26 2020 From: webhook-mailer at python.org (markshannon) Date: Wed, 16 Dec 2020 12:18:26 -0000 Subject: [Python-checkins] bpo-42615: Delete redundant jump instructions that only bypass empty blocks (GH-23733) Message-ID: https://github.com/python/cpython/commit/c71581c7a4192e6ba9a79eccc583aaadab300efa commit: c71581c7a4192e6ba9a79eccc583aaadab300efa branch: master author: Om G <34579088+OmG-117 at users.noreply.github.com> committer: markshannon date: 2020-12-16T12:18:05Z summary: bpo-42615: Delete redundant jump instructions that only bypass empty blocks (GH-23733) * Delete jump instructions that bypass empty blocks * Add news entry * Explicitly check for unconditional jump opcodes Using the is_jump function results in the inclusion of instructions like returns for which this optimization is not really valid. So, instead explicitly check that the instruction is an unconditional jump. * Handle conditional jumps, delete jumps gracefully * Ensure b_nofallthrough and b_reachable are valid * Add test for redundant jumps * Regenerate importlib.h and edit Misc/ACKS * Fix bad whitespace files: A Misc/NEWS.d/next/Core and Builtins/2020-12-10-17-06-52.bpo-42615.Je6Q-r.rst M Lib/test/test_compile.py M Misc/ACKS M Python/compile.c M Python/importlib.h diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 3a37b6cf30bfc..3e826b9accfb1 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -837,6 +837,34 @@ def test_big_dict_literal(self): the_dict = "{" + ",".join(f"{x}:{x}" for x in range(dict_size)) + "}" self.assertEqual(len(eval(the_dict)), dict_size) + def test_redundant_jump_in_if_else_break(self): + # Check if bytecode containing jumps that simply point to the next line + # is generated around if-else-break style structures. See bpo-42615. + + def if_else_break(): + val = 1 + while True: + if val > 0: + val -= 1 + else: + break + val = -1 + + INSTR_SIZE = 2 + HANDLED_JUMPS = ( + 'POP_JUMP_IF_FALSE', + 'POP_JUMP_IF_TRUE', + 'JUMP_ABSOLUTE', + 'JUMP_FORWARD', + ) + + for line, instr in enumerate(dis.Bytecode(if_else_break)): + if instr.opname == 'JUMP_FORWARD': + self.assertNotEqual(instr.arg, 0) + elif instr.opname in HANDLED_JUMPS: + self.assertNotEqual(instr.arg, (line + 1)*INSTR_SIZE) + + class TestExpressionStackSize(unittest.TestCase): # These tests check that the computed stack size for a code object # stays within reasonable bounds (see issue #21523 for an example diff --git a/Misc/ACKS b/Misc/ACKS index 253349017c5cd..134f4ea3be874 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -643,6 +643,7 @@ Grzegorz Grzywacz Thomas Guettler Yuyang Guo Anuj Gupta +Om Gupta Michael Guravage Lars Gust?bel Thomas G?ttler diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-10-17-06-52.bpo-42615.Je6Q-r.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-10-17-06-52.bpo-42615.Je6Q-r.rst new file mode 100644 index 0000000000000..2d919a8192d5a --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-10-17-06-52.bpo-42615.Je6Q-r.rst @@ -0,0 +1,2 @@ +Remove jump commands made redundant by the deletion of unreachable bytecode +blocks diff --git a/Python/compile.c b/Python/compile.c index ae92869fc9565..4792733fd5861 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -6437,8 +6437,50 @@ optimize_cfg(struct assembler *a, PyObject *consts) for (basicblock *b = a->a_entry; b != NULL; b = b->b_next) { if (b->b_reachable == 0) { b->b_iused = 0; + b->b_nofallthrough = 0; } } + /* Delete jump instructions made redundant by previous step. If a non-empty + block ends with a jump instruction, check if the next non-empty block + reached through normal flow control is the target of that jump. If it + is, then the jump instruction is redundant and can be deleted. + */ + for (basicblock *b = a->a_entry; b != NULL; b = b->b_next) { + if (b->b_iused > 0) { + struct instr *b_last_instr = &b->b_instr[b->b_iused - 1]; + if (b_last_instr->i_opcode == POP_JUMP_IF_FALSE || + b_last_instr->i_opcode == POP_JUMP_IF_TRUE || + b_last_instr->i_opcode == JUMP_ABSOLUTE || + b_last_instr->i_opcode == JUMP_FORWARD) { + basicblock *b_next_act = b->b_next; + while (b_next_act != NULL && b_next_act->b_iused == 0) { + b_next_act = b_next_act->b_next; + } + if (b_last_instr->i_target == b_next_act) { + b->b_nofallthrough = 0; + switch(b_last_instr->i_opcode) { + case POP_JUMP_IF_FALSE: + case POP_JUMP_IF_TRUE: + b_last_instr->i_opcode = POP_TOP; + b_last_instr->i_target = NULL; + b_last_instr->i_oparg = 0; + break; + case JUMP_ABSOLUTE: + case JUMP_FORWARD: + b_last_instr->i_opcode = NOP; + clean_basic_block(b); + break; + } + /* The blocks after this one are now reachable through it */ + b_next_act = b->b_next; + while (b_next_act != NULL && b_next_act->b_iused == 0) { + b_next_act->b_reachable = 1; + b_next_act = b_next_act->b_next; + } + } + } + } + } minimize_lineno_table(a); return 0; } diff --git a/Python/importlib.h b/Python/importlib.h index e05c8ea391474..f8def1b2b95e2 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1749,107 +1749,107 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 102,114,111,109,95,110,97,109,101,129,4,0,0,115,10,0, 0,0,10,1,8,1,12,1,8,1,255,128,114,231,0,0, 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,5,0,0,0,67,0,0,0,115,164,0,0,0,124, + 0,0,5,0,0,0,67,0,0,0,115,162,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,0,68,0,93,70,92,2,125,3,125, + 1,106,3,160,4,161,0,68,0,93,68,92,2,125,3,125, 4,116,5,124,4,124,2,131,2,114,26,124,3,116,1,106, - 6,118,0,114,60,116,7,125,5,110,16,116,0,160,8,124, - 3,161,1,114,26,116,9,125,5,110,0,116,10,124,4,124, - 5,131,2,125,6,116,11,124,6,124,4,131,2,1,0,113, - 26,116,1,106,3,116,12,25,0,125,7,100,1,68,0,93, - 46,125,8,124,8,116,1,106,3,118,1,114,136,116,13,124, - 8,131,1,125,9,110,10,116,1,106,3,124,8,25,0,125, - 9,116,14,124,7,124,8,124,9,131,3,1,0,113,112,100, - 2,83,0,41,3,122,250,83,101,116,117,112,32,105,109,112, - 111,114,116,108,105,98,32,98,121,32,105,109,112,111,114,116, - 105,110,103,32,110,101,101,100,101,100,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,115,32,97,110,100,32, - 105,110,106,101,99,116,105,110,103,32,116,104,101,109,10,32, - 32,32,32,105,110,116,111,32,116,104,101,32,103,108,111,98, - 97,108,32,110,97,109,101,115,112,97,99,101,46,10,10,32, - 32,32,32,65,115,32,115,121,115,32,105,115,32,110,101,101, - 100,101,100,32,102,111,114,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,99,99,101,115,115,32,97,110,100,32,95, - 105,109,112,32,105,115,32,110,101,101,100,101,100,32,116,111, - 32,108,111,97,100,32,98,117,105,108,116,45,105,110,10,32, - 32,32,32,109,111,100,117,108,101,115,44,32,116,104,111,115, - 101,32,116,119,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,26,0,0,0,114,95,0,0,0,114,68,0, - 0,0,78,41,15,114,61,0,0,0,114,18,0,0,0,114, - 3,0,0,0,114,99,0,0,0,218,5,105,116,101,109,115, - 114,203,0,0,0,114,82,0,0,0,114,169,0,0,0,114, - 92,0,0,0,114,184,0,0,0,114,149,0,0,0,114,155, - 0,0,0,114,9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114, - 104,0,0,0,114,116,0,0,0,114,103,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,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,6,95,115,101,116,117,112, - 136,4,0,0,115,40,0,0,0,4,9,4,1,8,3,18, - 1,10,1,10,1,6,1,10,1,6,1,10,3,10,1,2, - 128,10,3,8,1,10,1,10,1,10,2,14,1,4,251,255, - 128,114,235,0,0,0,99,2,0,0,0,0,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,106,2,160,3, - 116,5,161,1,1,0,100,1,83,0,41,2,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,235,0,0,0,114,18,0,0,0,114,201,0,0,0, - 114,126,0,0,0,114,169,0,0,0,114,184,0,0,0,41, - 2,114,233,0,0,0,114,234,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,95,105,110,115, - 116,97,108,108,171,4,0,0,115,8,0,0,0,10,2,12, - 2,16,1,255,128,114,236,0,0,0,99,0,0,0,0,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,1,0,100,2,83,0,41,3,122,57,73,110,115,116, - 97,108,108,32,105,109,112,111,114,116,101,114,115,32,116,104, - 97,116,32,114,101,113,117,105,114,101,32,101,120,116,101,114, - 110,97,108,32,102,105,108,101,115,121,115,116,101,109,32,97, - 99,99,101,115,115,114,25,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,133,0,0,0,114,236, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, - 0,0,41,1,114,237,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,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,179,4,0,0,115,8,0,0,0,8,3, - 4,1,20,1,255,128,114,238,0,0,0,41,2,78,78,41, - 1,78,41,2,78,114,25,0,0,0,41,4,78,78,114,5, - 0,0,0,114,25,0,0,0,41,54,114,10,0,0,0,114, - 7,0,0,0,114,26,0,0,0,114,95,0,0,0,114,68, - 0,0,0,114,133,0,0,0,114,17,0,0,0,114,21,0, - 0,0,114,63,0,0,0,114,37,0,0,0,114,47,0,0, - 0,114,22,0,0,0,114,23,0,0,0,114,53,0,0,0, - 114,54,0,0,0,114,57,0,0,0,114,69,0,0,0,114, - 71,0,0,0,114,80,0,0,0,114,90,0,0,0,114,94, - 0,0,0,114,105,0,0,0,114,118,0,0,0,114,119,0, - 0,0,114,98,0,0,0,114,149,0,0,0,114,155,0,0, - 0,114,159,0,0,0,114,114,0,0,0,114,100,0,0,0, - 114,166,0,0,0,114,167,0,0,0,114,101,0,0,0,114, - 169,0,0,0,114,184,0,0,0,114,189,0,0,0,114,198, - 0,0,0,114,200,0,0,0,114,202,0,0,0,114,208,0, - 0,0,90,15,95,69,82,82,95,77,83,71,95,80,82,69, - 70,73,88,114,210,0,0,0,114,213,0,0,0,218,6,111, - 98,106,101,99,116,114,214,0,0,0,114,215,0,0,0,114, - 216,0,0,0,114,221,0,0,0,114,227,0,0,0,114,230, - 0,0,0,114,231,0,0,0,114,235,0,0,0,114,236,0, - 0,0,114,238,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,60,109,111, - 100,117,108,101,62,1,0,0,0,115,106,0,0,0,4,0, - 8,22,4,9,4,1,4,1,4,3,8,3,8,8,4,8, - 4,2,16,3,14,4,14,77,14,21,8,16,8,37,8,17, - 14,11,8,8,8,11,8,12,8,19,14,36,16,101,10,26, - 14,45,8,72,8,17,8,17,8,30,8,36,8,45,14,15, - 14,75,14,80,8,13,8,9,10,9,8,47,4,16,8,1, - 8,2,6,32,8,3,10,16,14,15,8,37,10,27,8,37, - 8,7,8,35,12,8,255,128, + 6,118,0,114,60,116,7,125,5,110,14,116,0,160,8,124, + 3,161,1,114,26,116,9,125,5,116,10,124,4,124,5,131, + 2,125,6,116,11,124,6,124,4,131,2,1,0,113,26,116, + 1,106,3,116,12,25,0,125,7,100,1,68,0,93,46,125, + 8,124,8,116,1,106,3,118,1,114,134,116,13,124,8,131, + 1,125,9,110,10,116,1,106,3,124,8,25,0,125,9,116, + 14,124,7,124,8,124,9,131,3,1,0,113,110,100,2,83, + 0,41,3,122,250,83,101,116,117,112,32,105,109,112,111,114, + 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, + 103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,110, + 106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,32, + 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, + 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, + 32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,101, + 100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,101, + 115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,109, + 112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,108, + 111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,32, + 32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,32, + 116,119,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,26,0,0,0,114,95,0,0,0,114,68,0,0,0, + 78,41,15,114,61,0,0,0,114,18,0,0,0,114,3,0, + 0,0,114,99,0,0,0,218,5,105,116,101,109,115,114,203, + 0,0,0,114,82,0,0,0,114,169,0,0,0,114,92,0, + 0,0,114,184,0,0,0,114,149,0,0,0,114,155,0,0, + 0,114,9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0, + 0,0,114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,6,95,115,101,116,117,112,136,4, + 0,0,115,40,0,0,0,4,9,4,1,8,3,18,1,10, + 1,10,1,6,1,10,1,4,1,10,3,10,1,2,128,10, + 3,8,1,10,1,10,1,10,2,14,1,4,251,255,128,114, + 235,0,0,0,99,2,0,0,0,0,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,106,2,160,3,116,5, + 161,1,1,0,100,1,83,0,41,2,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, + 235,0,0,0,114,18,0,0,0,114,201,0,0,0,114,126, + 0,0,0,114,169,0,0,0,114,184,0,0,0,41,2,114, + 233,0,0,0,114,234,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,8,95,105,110,115,116,97, + 108,108,171,4,0,0,115,8,0,0,0,10,2,12,2,16, + 1,255,128,114,236,0,0,0,99,0,0,0,0,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, + 1,0,100,2,83,0,41,3,122,57,73,110,115,116,97,108, + 108,32,105,109,112,111,114,116,101,114,115,32,116,104,97,116, + 32,114,101,113,117,105,114,101,32,101,120,116,101,114,110,97, + 108,32,102,105,108,101,115,121,115,116,101,109,32,97,99,99, + 101,115,115,114,25,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,133,0,0,0,114,236,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, + 41,1,114,237,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,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,179,4,0,0,115,8,0,0,0,8,3,4,1, + 20,1,255,128,114,238,0,0,0,41,2,78,78,41,1,78, + 41,2,78,114,25,0,0,0,41,4,78,78,114,5,0,0, + 0,114,25,0,0,0,41,54,114,10,0,0,0,114,7,0, + 0,0,114,26,0,0,0,114,95,0,0,0,114,68,0,0, + 0,114,133,0,0,0,114,17,0,0,0,114,21,0,0,0, + 114,63,0,0,0,114,37,0,0,0,114,47,0,0,0,114, + 22,0,0,0,114,23,0,0,0,114,53,0,0,0,114,54, + 0,0,0,114,57,0,0,0,114,69,0,0,0,114,71,0, + 0,0,114,80,0,0,0,114,90,0,0,0,114,94,0,0, + 0,114,105,0,0,0,114,118,0,0,0,114,119,0,0,0, + 114,98,0,0,0,114,149,0,0,0,114,155,0,0,0,114, + 159,0,0,0,114,114,0,0,0,114,100,0,0,0,114,166, + 0,0,0,114,167,0,0,0,114,101,0,0,0,114,169,0, + 0,0,114,184,0,0,0,114,189,0,0,0,114,198,0,0, + 0,114,200,0,0,0,114,202,0,0,0,114,208,0,0,0, + 90,15,95,69,82,82,95,77,83,71,95,80,82,69,70,73, + 88,114,210,0,0,0,114,213,0,0,0,218,6,111,98,106, + 101,99,116,114,214,0,0,0,114,215,0,0,0,114,216,0, + 0,0,114,221,0,0,0,114,227,0,0,0,114,230,0,0, + 0,114,231,0,0,0,114,235,0,0,0,114,236,0,0,0, + 114,238,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,8,60,109,111,100,117, + 108,101,62,1,0,0,0,115,106,0,0,0,4,0,8,22, + 4,9,4,1,4,1,4,3,8,3,8,8,4,8,4,2, + 16,3,14,4,14,77,14,21,8,16,8,37,8,17,14,11, + 8,8,8,11,8,12,8,19,14,36,16,101,10,26,14,45, + 8,72,8,17,8,17,8,30,8,36,8,45,14,15,14,75, + 14,80,8,13,8,9,10,9,8,47,4,16,8,1,8,2, + 6,32,8,3,10,16,14,15,8,37,10,27,8,37,8,7, + 8,35,12,8,255,128, }; From webhook-mailer at python.org Wed Dec 16 08:07:12 2020 From: webhook-mailer at python.org (markshannon) Date: Wed, 16 Dec 2020 13:07:12 -0000 Subject: [Python-checkins] bpo-42645: Make sure that return/break/continue are only traced once when exiting via a finally block. (GH-23780) Message-ID: https://github.com/python/cpython/commit/5274b682bc93a04da8a69742528ac7f64633a96e commit: 5274b682bc93a04da8a69742528ac7f64633a96e branch: master author: Mark Shannon committer: markshannon date: 2020-12-16T13:07:01Z summary: bpo-42645: Make sure that return/break/continue are only traced once when exiting via a finally block. (GH-23780) * Make sure that return/break/continue are only traced once when exiting via a finally block. * Add test for return in try-finally. * Update importlib files: M Lib/test/test_dis.py M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index eb931703d51ed..f279f75c9614d 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -366,16 +366,12 @@ def _tryfinallyconst(b): %3d 6 LOAD_FAST 1 (b) 8 CALL_FUNCTION 0 10 POP_TOP - -%3d 12 RETURN_VALUE - -%3d >> 14 LOAD_FAST 1 (b) + 12 RETURN_VALUE + >> 14 LOAD_FAST 1 (b) 16 CALL_FUNCTION 0 18 POP_TOP 20 RERAISE """ % (_tryfinally.__code__.co_firstlineno + 1, - _tryfinally.__code__.co_firstlineno + 2, - _tryfinally.__code__.co_firstlineno + 4, _tryfinally.__code__.co_firstlineno + 2, _tryfinally.__code__.co_firstlineno + 4, ) @@ -388,17 +384,13 @@ def _tryfinallyconst(b): %3d 4 LOAD_FAST 0 (b) 6 CALL_FUNCTION 0 8 POP_TOP - -%3d 10 LOAD_CONST 1 (1) + 10 LOAD_CONST 1 (1) 12 RETURN_VALUE - -%3d >> 14 LOAD_FAST 0 (b) + >> 14 LOAD_FAST 0 (b) 16 CALL_FUNCTION 0 18 POP_TOP 20 RERAISE """ % (_tryfinallyconst.__code__.co_firstlineno + 1, - _tryfinallyconst.__code__.co_firstlineno + 2, - _tryfinallyconst.__code__.co_firstlineno + 4, _tryfinallyconst.__code__.co_firstlineno + 2, _tryfinallyconst.__code__.co_firstlineno + 4, ) diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index a842139cd8e4c..3bfc99385d2eb 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -678,6 +678,119 @@ def func(): (4, 'line'), (4, 'return')]) + def test_if_break(self): + + def func(): + seq = [1, 0] + while seq: + n = seq.pop() + if n: + break # line 5 + else: + n = 99 + return n # line 8 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (8, 'line'), + (8, 'return')]) + + def test_break_through_finally(self): + + def func(): + a, c, d, i = 1, 1, 1, 99 + try: + for i in range(3): + try: + a = 5 + if i > 0: + break # line 7 + a = 8 + finally: + c = 10 + except: + d = 12 # line 12 + assert a == 5 and c == 10 and d == 1 # line 13 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (8, 'line'), + (10, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (7, 'line'), + (10, 'line'), + (13, 'line'), + (13, 'return')]) + + def test_continue_through_finally(self): + + def func(): + a, b, c, d, i = 1, 1, 1, 1, 99 + try: + for i in range(2): + try: + a = 5 + if i > 0: + continue # line 7 + b = 8 + finally: + c = 10 + except: + d = 12 # line 12 + assert (a, b, c, d) == (5, 8, 10, 1) # line 13 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (8, 'line'), + (10, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (7, 'line'), + (10, 'line'), + (3, 'line'), + (13, 'line'), + (13, 'return')]) + + def test_return_through_finally(self): + + def func(): + try: + return 2 + finally: + 4 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (4, 'line'), + (4, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index 4792733fd5861..2871ffc476f8d 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1695,19 +1695,22 @@ compiler_unwind_fblock(struct compiler *c, struct fblockinfo *info, return 1; case FINALLY_TRY: + /* This POP_BLOCK gets the line number of the unwinding statement */ ADDOP(c, POP_BLOCK); if (preserve_tos) { if (!compiler_push_fblock(c, POP_VALUE, NULL, NULL, NULL)) { return 0; } } - /* Emit the finally block, restoring the line number when done */ - int saved_lineno = c->u->u_lineno; + /* Emit the finally block */ VISIT_SEQ(c, stmt, info->fb_datum); - c->u->u_lineno = saved_lineno; if (preserve_tos) { compiler_pop_fblock(c, POP_VALUE, NULL); } + /* The finally block should appear to execute after the + * statement causing the unwinding, so make the unwinding + * instruction artificial */ + c->u->u_lineno = -1; return 1; case FINALLY_END: @@ -2859,6 +2862,12 @@ compiler_return(struct compiler *c, stmt_ty s) } if (preserve_tos) { VISIT(c, expr, s->v.Return.value); + } else { + /* Emit instruction with line number for expression */ + if (s->v.Return.value != NULL) { + SET_LOC(c, s->v.Return.value); + ADDOP(c, NOP); + } } if (!compiler_unwind_fblock_stack(c, preserve_tos, NULL)) return 0; @@ -2866,7 +2875,7 @@ compiler_return(struct compiler *c, stmt_ty s) ADDOP_LOAD_CONST(c, Py_None); } else if (!preserve_tos) { - VISIT(c, expr, s->v.Return.value); + ADDOP_LOAD_CONST(c, s->v.Return.value->v.Constant.value); } ADDOP(c, RETURN_VALUE); NEXT_BLOCK(c); diff --git a/Python/importlib.h b/Python/importlib.h index f8def1b2b95e2..1caf2f4f742d2 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -183,1673 +183,1673 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,114,31,0,0,0,218,7,114,101,108,101,97,115,101,169, 2,114,33,0,0,0,114,40,0,0,0,114,5,0,0,0, 114,5,0,0,0,114,6,0,0,0,114,43,0,0,0,100, - 0,0,0,115,40,0,0,0,8,6,8,1,2,1,2,1, - 8,1,20,1,6,1,14,1,14,1,6,9,4,247,8,1, - 12,1,12,1,44,1,10,2,10,1,2,244,8,14,255,128, - 122,19,95,77,111,100,117,108,101,76,111,99,107,46,97,99, - 113,117,105,114,101,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,144, - 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,143, - 110,1,0,124,0,106,3,124,1,107,3,114,34,116,4,100, - 1,131,1,130,1,124,0,106,5,100,2,107,4,115,48,74, - 0,130,1,124,0,4,0,106,5,100,3,56,0,2,0,95, - 5,124,0,106,5,100,2,107,2,114,108,100,0,124,0,95, - 3,124,0,106,6,114,108,124,0,4,0,106,6,100,3,56, - 0,2,0,95,6,124,0,106,7,160,8,161,0,1,0,87, - 0,100,0,4,0,4,0,131,3,1,0,100,0,83,0,49, - 0,115,130,48,0,1,0,1,0,1,0,89,0,1,0,100, - 0,83,0,41,4,78,250,31,99,97,110,110,111,116,32,114, - 101,108,101,97,115,101,32,117,110,45,97,99,113,117,105,114, - 101,100,32,108,111,99,107,114,25,0,0,0,114,42,0,0, - 0,41,9,114,26,0,0,0,114,35,0,0,0,114,27,0, - 0,0,114,29,0,0,0,218,12,82,117,110,116,105,109,101, - 69,114,114,111,114,114,30,0,0,0,114,31,0,0,0,114, - 28,0,0,0,114,44,0,0,0,114,45,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,44,0, - 0,0,125,0,0,0,115,24,0,0,0,8,1,8,1,10, - 1,8,1,14,1,14,1,10,1,6,1,6,1,14,1,46, - 1,255,128,122,19,95,77,111,100,117,108,101,76,111,99,107, - 46,114,101,108,101,97,115,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, - 0,115,18,0,0,0,100,1,160,0,124,0,106,1,116,2, - 124,0,131,1,161,2,83,0,41,2,78,122,23,95,77,111, - 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, - 116,32,123,125,169,3,218,6,102,111,114,109,97,116,114,20, - 0,0,0,218,2,105,100,169,1,114,33,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,8,95, - 95,114,101,112,114,95,95,138,0,0,0,115,4,0,0,0, - 18,1,255,128,122,20,95,77,111,100,117,108,101,76,111,99, - 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, - 0,114,34,0,0,0,114,41,0,0,0,114,43,0,0,0, - 114,44,0,0,0,114,52,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,23, - 0,0,0,65,0,0,0,115,16,0,0,0,8,0,4,1, - 8,5,8,8,8,21,8,25,12,13,255,128,114,23,0,0, - 0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132, - 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, - 11,218,16,95,68,117,109,109,121,77,111,100,117,108,101,76, - 111,99,107,122,86,65,32,115,105,109,112,108,101,32,95,77, - 111,100,117,108,101,76,111,99,107,32,101,113,117,105,118,97, - 108,101,110,116,32,102,111,114,32,80,121,116,104,111,110,32, - 98,117,105,108,100,115,32,119,105,116,104,111,117,116,10,32, - 32,32,32,109,117,108,116,105,45,116,104,114,101,97,100,105, - 110,103,32,115,117,112,112,111,114,116,46,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, - 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,100, - 1,124,0,95,1,100,0,83,0,114,24,0,0,0,41,2, - 114,20,0,0,0,114,30,0,0,0,114,32,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,34, - 0,0,0,146,0,0,0,115,6,0,0,0,6,1,10,1, - 255,128,122,25,95,68,117,109,109,121,77,111,100,117,108,101, - 76,111,99,107,46,95,95,105,110,105,116,95,95,99,1,0, + 0,0,0,115,38,0,0,0,8,6,8,1,2,1,2,1, + 8,1,20,1,6,1,14,1,14,1,10,9,8,248,12,1, + 12,1,44,1,10,2,10,1,2,244,8,14,255,128,122,19, + 95,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, + 105,114,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,8,0,0,0,67,0,0,0,115,144,0,0, + 0,116,0,160,1,161,0,125,1,124,0,106,2,143,110,1, + 0,124,0,106,3,124,1,107,3,114,34,116,4,100,1,131, + 1,130,1,124,0,106,5,100,2,107,4,115,48,74,0,130, + 1,124,0,4,0,106,5,100,3,56,0,2,0,95,5,124, + 0,106,5,100,2,107,2,114,108,100,0,124,0,95,3,124, + 0,106,6,114,108,124,0,4,0,106,6,100,3,56,0,2, + 0,95,6,124,0,106,7,160,8,161,0,1,0,87,0,100, + 0,4,0,4,0,131,3,1,0,100,0,83,0,49,0,115, + 130,48,0,1,0,1,0,1,0,89,0,1,0,100,0,83, + 0,41,4,78,250,31,99,97,110,110,111,116,32,114,101,108, + 101,97,115,101,32,117,110,45,97,99,113,117,105,114,101,100, + 32,108,111,99,107,114,25,0,0,0,114,42,0,0,0,41, + 9,114,26,0,0,0,114,35,0,0,0,114,27,0,0,0, + 114,29,0,0,0,218,12,82,117,110,116,105,109,101,69,114, + 114,111,114,114,30,0,0,0,114,31,0,0,0,114,28,0, + 0,0,114,44,0,0,0,114,45,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, + 125,0,0,0,115,24,0,0,0,8,1,8,1,10,1,8, + 1,14,1,14,1,10,1,6,1,6,1,14,1,46,1,255, + 128,122,19,95,77,111,100,117,108,101,76,111,99,107,46,114, + 101,108,101,97,115,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,5,0,0,0,67,0,0,0,115, + 18,0,0,0,100,1,160,0,124,0,106,1,116,2,124,0, + 131,1,161,2,83,0,41,2,78,122,23,95,77,111,100,117, + 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, + 123,125,169,3,218,6,102,111,114,109,97,116,114,20,0,0, + 0,218,2,105,100,169,1,114,33,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,114, + 101,112,114,95,95,138,0,0,0,115,4,0,0,0,18,1, + 255,128,122,20,95,77,111,100,117,108,101,76,111,99,107,46, + 95,95,114,101,112,114,95,95,78,41,9,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 34,0,0,0,114,41,0,0,0,114,43,0,0,0,114,44, + 0,0,0,114,52,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,23,0,0, + 0,65,0,0,0,115,16,0,0,0,8,0,4,1,8,5, + 8,8,8,21,8,25,12,13,255,128,114,23,0,0,0,99, + 0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,100,8,100,9,132,0,90,7,100,10,83,0,41,11,218, + 16,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,122,86,65,32,115,105,109,112,108,101,32,95,77,111,100, + 117,108,101,76,111,99,107,32,101,113,117,105,118,97,108,101, + 110,116,32,102,111,114,32,80,121,116,104,111,110,32,98,117, + 105,108,100,115,32,119,105,116,104,111,117,116,10,32,32,32, + 32,109,117,108,116,105,45,116,104,114,101,97,100,105,110,103, + 32,115,117,112,112,111,114,116,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,16,0,0,0,124,1,124,0,95,0,100,1,124, + 0,95,1,100,0,83,0,114,24,0,0,0,41,2,114,20, + 0,0,0,114,30,0,0,0,114,32,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,34,0,0, + 0,146,0,0,0,115,6,0,0,0,6,1,10,1,255,128, + 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, + 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,18,0,0,0,124,0,4,0,106,0,100, + 1,55,0,2,0,95,0,100,2,83,0,41,3,78,114,42, + 0,0,0,84,41,1,114,30,0,0,0,114,51,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 43,0,0,0,150,0,0,0,115,6,0,0,0,14,1,4, + 1,255,128,122,24,95,68,117,109,109,121,77,111,100,117,108, + 101,76,111,99,107,46,97,99,113,117,105,114,101,99,1,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,18,0,0,0,124,0,4,0,106, - 0,100,1,55,0,2,0,95,0,100,2,83,0,41,3,78, - 114,42,0,0,0,84,41,1,114,30,0,0,0,114,51,0, + 0,0,67,0,0,0,115,36,0,0,0,124,0,106,0,100, + 1,107,2,114,18,116,1,100,2,131,1,130,1,124,0,4, + 0,106,0,100,3,56,0,2,0,95,0,100,0,83,0,41, + 4,78,114,25,0,0,0,114,46,0,0,0,114,42,0,0, + 0,41,2,114,30,0,0,0,114,47,0,0,0,114,51,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,43,0,0,0,150,0,0,0,115,6,0,0,0,14, - 1,4,1,255,128,122,24,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,97,99,113,117,105,114,101,99, - 1,0,0,0,0,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,2,114,18,116,1,100,2,131,1,130,1,124, - 0,4,0,106,0,100,3,56,0,2,0,95,0,100,0,83, - 0,41,4,78,114,25,0,0,0,114,46,0,0,0,114,42, - 0,0,0,41,2,114,30,0,0,0,114,47,0,0,0,114, - 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,44,0,0,0,154,0,0,0,115,8,0,0, - 0,10,1,8,1,18,1,255,128,122,24,95,68,117,109,109, - 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, - 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,5,0,0,0,67,0,0,0,115,18,0,0, - 0,100,1,160,0,124,0,106,1,116,2,124,0,131,1,161, - 2,83,0,41,2,78,122,28,95,68,117,109,109,121,77,111, - 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, - 116,32,123,125,114,48,0,0,0,114,51,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,52,0, - 0,0,159,0,0,0,115,4,0,0,0,18,1,255,128,122, - 25,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,46,95,95,114,101,112,114,95,95,78,41,8,114,9,0, - 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, - 0,114,34,0,0,0,114,43,0,0,0,114,44,0,0,0, - 114,52,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,53,0,0,0,142,0, - 0,0,115,14,0,0,0,8,0,4,1,8,3,8,4,8, - 4,12,5,255,128,114,53,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64, - 0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0,41,8,218,18, - 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, - 101,114,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, - 124,1,124,0,95,0,100,0,124,0,95,1,100,0,83,0, - 114,0,0,0,0,41,2,218,5,95,110,97,109,101,218,5, - 95,108,111,99,107,114,32,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,34,0,0,0,165,0, - 0,0,115,6,0,0,0,6,1,10,1,255,128,122,27,95, - 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, - 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, - 0,0,0,115,26,0,0,0,116,0,124,0,106,1,131,1, - 124,0,95,2,124,0,106,2,160,3,161,0,1,0,100,0, - 83,0,114,0,0,0,0,41,4,218,16,95,103,101,116,95, - 109,111,100,117,108,101,95,108,111,99,107,114,55,0,0,0, - 114,56,0,0,0,114,43,0,0,0,114,51,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, - 95,95,101,110,116,101,114,95,95,169,0,0,0,115,6,0, - 0,0,12,1,14,1,255,128,122,28,95,77,111,100,117,108, - 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, - 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, - 0,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,0,0,0,0,41,2,114,56,0,0,0,114,44, - 0,0,0,41,3,114,33,0,0,0,218,4,97,114,103,115, - 90,6,107,119,97,114,103,115,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,8,95,95,101,120,105,116,95, - 95,173,0,0,0,115,4,0,0,0,14,1,255,128,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,9, - 0,0,0,114,8,0,0,0,114,1,0,0,0,114,34,0, - 0,0,114,58,0,0,0,114,60,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,54,0,0,0,163,0,0,0,115,10,0,0,0,8,0, - 8,2,8,4,12,4,255,128,114,54,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,8,0, - 0,0,67,0,0,0,115,134,0,0,0,116,0,160,1,161, - 0,1,0,122,114,122,14,116,2,124,0,25,0,131,0,125, - 1,87,0,110,22,4,0,116,3,121,46,1,0,1,0,1, - 0,100,1,125,1,89,0,110,2,48,0,124,1,100,1,117, - 0,114,110,116,4,100,1,117,0,114,74,116,5,124,0,131, - 1,125,1,110,8,116,6,124,0,131,1,125,1,124,0,102, - 1,100,2,100,3,132,1,125,2,116,7,160,8,124,1,124, - 2,161,2,116,2,124,0,60,0,87,0,116,0,160,9,161, - 0,1,0,124,1,83,0,116,0,160,9,161,0,1,0,48, - 0,41,4,122,139,71,101,116,32,111,114,32,99,114,101,97, - 116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,111, - 99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,109, - 111,100,117,108,101,32,110,97,109,101,46,10,10,32,32,32, - 32,65,99,113,117,105,114,101,47,114,101,108,101,97,115,101, - 32,105,110,116,101,114,110,97,108,108,121,32,116,104,101,32, - 103,108,111,98,97,108,32,105,109,112,111,114,116,32,108,111, - 99,107,32,116,111,32,112,114,111,116,101,99,116,10,32,32, - 32,32,95,109,111,100,117,108,101,95,108,111,99,107,115,46, - 78,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,8,0,0,0,83,0,0,0,115,54,0,0,0,116, - 0,160,1,161,0,1,0,122,34,116,2,160,3,124,1,161, - 1,124,0,117,0,114,30,116,2,124,1,61,0,87,0,116, - 0,160,4,161,0,1,0,100,0,83,0,116,0,160,4,161, - 0,1,0,48,0,114,0,0,0,0,41,5,218,4,95,105, - 109,112,218,12,97,99,113,117,105,114,101,95,108,111,99,107, - 218,13,95,109,111,100,117,108,101,95,108,111,99,107,115,114, - 38,0,0,0,218,12,114,101,108,101,97,115,101,95,108,111, - 99,107,41,2,218,3,114,101,102,114,20,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,2,99, - 98,198,0,0,0,115,14,0,0,0,8,1,2,1,14,4, - 6,1,2,128,22,2,255,128,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,61,0,0,0,114,62,0, - 0,0,114,63,0,0,0,218,8,75,101,121,69,114,114,111, - 114,114,26,0,0,0,114,53,0,0,0,114,23,0,0,0, - 218,8,95,119,101,97,107,114,101,102,114,65,0,0,0,114, - 64,0,0,0,41,3,114,20,0,0,0,114,27,0,0,0, - 114,66,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,57,0,0,0,179,0,0,0,115,34,0, - 0,0,8,6,2,1,2,1,14,1,12,1,10,1,8,2, - 8,1,10,1,8,2,12,2,16,11,2,128,8,2,4,2, - 10,254,255,128,114,57,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, - 0,0,115,54,0,0,0,116,0,124,0,131,1,125,1,122, - 12,124,1,160,1,161,0,1,0,87,0,110,20,4,0,116, - 2,121,40,1,0,1,0,1,0,89,0,100,1,83,0,48, - 0,124,1,160,3,161,0,1,0,100,1,83,0,41,2,122, - 189,65,99,113,117,105,114,101,115,32,116,104,101,110,32,114, - 101,108,101,97,115,101,115,32,116,104,101,32,109,111,100,117, - 108,101,32,108,111,99,107,32,102,111,114,32,97,32,103,105, - 118,101,110,32,109,111,100,117,108,101,32,110,97,109,101,46, - 10,10,32,32,32,32,84,104,105,115,32,105,115,32,117,115, - 101,100,32,116,111,32,101,110,115,117,114,101,32,97,32,109, - 111,100,117,108,101,32,105,115,32,99,111,109,112,108,101,116, - 101,108,121,32,105,110,105,116,105,97,108,105,122,101,100,44, - 32,105,110,32,116,104,101,10,32,32,32,32,101,118,101,110, - 116,32,105,116,32,105,115,32,98,101,105,110,103,32,105,109, - 112,111,114,116,101,100,32,98,121,32,97,110,111,116,104,101, - 114,32,116,104,114,101,97,100,46,10,32,32,32,32,78,41, - 4,114,57,0,0,0,114,43,0,0,0,114,22,0,0,0, - 114,44,0,0,0,41,2,114,20,0,0,0,114,27,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,19,95,108,111,99,107,95,117,110,108,111,99,107,95,109, - 111,100,117,108,101,216,0,0,0,115,14,0,0,0,8,6, - 2,1,12,1,12,1,8,3,12,2,255,128,114,69,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,4,0,0,0,79,0,0,0,115,14,0,0,0,124, - 0,124,1,105,0,124,2,164,1,142,1,83,0,41,2,97, - 46,1,0,0,114,101,109,111,118,101,95,105,109,112,111,114, - 116,108,105,98,95,102,114,97,109,101,115,32,105,110,32,105, - 109,112,111,114,116,46,99,32,119,105,108,108,32,97,108,119, - 97,121,115,32,114,101,109,111,118,101,32,115,101,113,117,101, - 110,99,101,115,10,32,32,32,32,111,102,32,105,109,112,111, - 114,116,108,105,98,32,102,114,97,109,101,115,32,116,104,97, - 116,32,101,110,100,32,119,105,116,104,32,97,32,99,97,108, - 108,32,116,111,32,116,104,105,115,32,102,117,110,99,116,105, - 111,110,10,10,32,32,32,32,85,115,101,32,105,116,32,105, - 110,115,116,101,97,100,32,111,102,32,97,32,110,111,114,109, - 97,108,32,99,97,108,108,32,105,110,32,112,108,97,99,101, - 115,32,119,104,101,114,101,32,105,110,99,108,117,100,105,110, - 103,32,116,104,101,32,105,109,112,111,114,116,108,105,98,10, - 32,32,32,32,102,114,97,109,101,115,32,105,110,116,114,111, - 100,117,99,101,115,32,117,110,119,97,110,116,101,100,32,110, - 111,105,115,101,32,105,110,116,111,32,116,104,101,32,116,114, - 97,99,101,98,97,99,107,32,40,101,46,103,46,32,119,104, - 101,110,32,101,120,101,99,117,116,105,110,103,10,32,32,32, - 32,109,111,100,117,108,101,32,99,111,100,101,41,10,32,32, - 32,32,78,114,5,0,0,0,41,3,218,1,102,114,59,0, - 0,0,90,4,107,119,100,115,114,5,0,0,0,114,5,0, - 0,0,114,6,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,233,0,0,0,115,4,0,0,0,14,8,255,128,114, - 71,0,0,0,114,42,0,0,0,41,1,218,9,118,101,114, - 98,111,115,105,116,121,99,1,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,4,0,0,0,71,0,0,0,115, - 58,0,0,0,116,0,106,1,106,2,124,1,107,5,114,54, - 124,0,160,3,100,1,161,1,115,30,100,2,124,0,23,0, - 125,0,116,4,124,0,106,5,124,2,142,0,116,0,106,6, - 100,3,141,2,1,0,100,4,83,0,100,4,83,0,41,5, - 122,61,80,114,105,110,116,32,116,104,101,32,109,101,115,115, - 97,103,101,32,116,111,32,115,116,100,101,114,114,32,105,102, - 32,45,118,47,80,89,84,72,79,78,86,69,82,66,79,83, - 69,32,105,115,32,116,117,114,110,101,100,32,111,110,46,41, - 2,250,1,35,122,7,105,109,112,111,114,116,32,122,2,35, - 32,41,1,90,4,102,105,108,101,78,41,7,114,18,0,0, - 0,218,5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114, - 114,41,3,218,7,109,101,115,115,97,103,101,114,72,0,0, - 0,114,59,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,16,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,244,0,0,0,115,12,0,0,0, - 12,2,10,1,8,1,24,1,4,253,255,128,114,80,0,0, - 0,99,1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99, - 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, - 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108, - 101,32,105,115,32,98,117,105,108,116,45,105,110,46,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,19,0,0,0,115,38,0,0,0,124,1,116,0, - 106,1,118,1,114,28,116,2,100,1,160,3,124,1,161,1, - 124,1,100,2,141,2,130,1,136,0,124,0,124,1,131,2, - 83,0,41,3,78,250,29,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,114,19,0,0,0,41,4,114,18,0,0,0, - 218,20,98,117,105,108,116,105,110,95,109,111,100,117,108,101, - 95,110,97,109,101,115,218,11,73,109,112,111,114,116,69,114, - 114,111,114,114,49,0,0,0,169,2,114,33,0,0,0,218, - 8,102,117,108,108,110,97,109,101,169,1,218,3,102,120,110, - 114,5,0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1, - 10,1,2,1,6,255,10,2,255,128,122,52,95,114,101,113, - 117,105,114,101,115,95,98,117,105,108,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, - 78,169,1,114,17,0,0,0,41,2,114,87,0,0,0,114, - 88,0,0,0,114,5,0,0,0,114,86,0,0,0,114,6, - 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98, - 117,105,108,116,105,110,252,0,0,0,115,8,0,0,0,12, - 2,10,5,4,1,255,128,114,90,0,0,0,99,1,0,0, - 0,0,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,1,83,0,41,4,122,47,68,101,99,111,114,97,116,111, - 114,32,116,111,32,118,101,114,105,102,121,32,116,104,101,32, - 110,97,109,101,100,32,109,111,100,117,108,101,32,105,115,32, - 102,114,111,122,101,110,46,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,4,0,0,0,19,0,0,0, - 115,38,0,0,0,116,0,160,1,124,1,161,1,115,28,116, - 2,100,1,160,3,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,19,0,0,0, - 41,4,114,61,0,0,0,218,9,105,115,95,102,114,111,122, - 101,110,114,83,0,0,0,114,49,0,0,0,114,84,0,0, - 0,114,86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0,115,12, - 0,0,0,10,1,10,1,2,1,6,255,10,2,255,128,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,78,114,89,0,0,0,41,2,114,87,0,0,0, - 114,93,0,0,0,114,5,0,0,0,114,86,0,0,0,114, - 6,0,0,0,218,16,95,114,101,113,117,105,114,101,115,95, - 102,114,111,122,101,110,7,1,0,0,115,8,0,0,0,12, - 2,10,5,4,1,255,128,114,94,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0, - 0,67,0,0,0,115,74,0,0,0,100,1,125,2,116,0, - 160,1,124,2,116,2,161,2,1,0,116,3,124,1,124,0, - 131,2,125,3,124,1,116,4,106,5,118,0,114,66,116,4, - 106,5,124,1,25,0,125,4,116,6,124,3,124,4,131,2, - 1,0,116,4,106,5,124,1,25,0,83,0,116,7,124,3, - 131,1,83,0,41,3,122,128,76,111,97,100,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, - 101,32,105,110,116,111,32,115,121,115,46,109,111,100,117,108, - 101,115,32,97,110,100,32,114,101,116,117,114,110,32,105,116, - 46,10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120, - 101,99,95,109,111,100,117,108,101,32,105,110,115,116,101,97, - 100,46,10,10,32,32,32,32,122,103,116,104,101,32,108,111, - 97,100,95,109,111,100,117,108,101,40,41,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, - 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, - 110,32,51,46,49,50,59,32,117,115,101,32,101,120,101,99, - 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, - 100,78,41,8,218,9,95,119,97,114,110,105,110,103,115,218, - 4,119,97,114,110,218,18,68,101,112,114,101,99,97,116,105, - 111,110,87,97,114,110,105,110,103,218,16,115,112,101,99,95, - 102,114,111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85, - 0,0,0,218,3,109,115,103,218,4,115,112,101,99,218,6, - 109,111,100,117,108,101,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,17,95,108,111,97,100,95,109,111,100, - 117,108,101,95,115,104,105,109,19,1,0,0,115,18,0,0, - 0,4,6,12,2,10,1,10,1,10,1,10,1,10,1,8, - 2,255,128,114,105,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,8,0,0,0,67,0,0, - 0,115,210,0,0,0,116,0,124,0,100,1,100,0,131,3, - 125,1,116,1,124,1,100,2,131,2,114,54,122,12,124,1, - 160,2,124,0,161,1,87,0,83,0,4,0,116,3,121,52, - 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, - 106,4,125,2,87,0,110,18,4,0,116,5,121,82,1,0, - 1,0,1,0,89,0,110,18,48,0,124,2,100,0,117,1, - 114,100,116,6,124,2,131,1,83,0,122,10,124,0,106,7, - 125,3,87,0,110,22,4,0,116,5,121,132,1,0,1,0, - 1,0,100,3,125,3,89,0,110,2,48,0,122,10,124,0, - 106,8,125,4,87,0,110,52,4,0,116,5,121,196,1,0, - 1,0,1,0,124,1,100,0,117,0,114,180,100,4,160,9, - 124,3,161,1,6,0,89,0,83,0,100,5,160,9,124,3, - 124,1,161,2,6,0,89,0,83,0,48,0,100,6,160,9, - 124,3,124,4,161,2,83,0,41,7,78,218,10,95,95,108, - 111,97,100,101,114,95,95,218,11,109,111,100,117,108,101,95, - 114,101,112,114,250,1,63,250,13,60,109,111,100,117,108,101, - 32,123,33,114,125,62,250,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,13,0,0,0,114,11,0,0, - 0,114,107,0,0,0,218,9,69,120,99,101,112,116,105,111, - 110,218,8,95,95,115,112,101,99,95,95,114,2,0,0,0, - 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,9,0,0,0,218,8,95, - 95,102,105,108,101,95,95,114,49,0,0,0,41,5,114,104, - 0,0,0,218,6,108,111,97,100,101,114,114,103,0,0,0, - 114,20,0,0,0,218,8,102,105,108,101,110,97,109,101,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,12, - 95,109,111,100,117,108,101,95,114,101,112,114,38,1,0,0, - 115,48,0,0,0,12,2,10,1,2,4,12,1,12,1,6, - 1,2,1,10,1,12,1,6,1,8,2,8,1,2,4,10, - 1,12,1,10,1,2,1,10,1,12,1,8,1,14,1,18, - 2,12,2,255,128,114,118,0,0,0,99,0,0,0,0,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,132,2,90,4,100,6,100,7,132,0,90,5,100,8, - 100,9,132,0,90,6,101,7,100,10,100,11,132,0,131,1, - 90,8,101,8,106,9,100,12,100,11,132,0,131,1,90,8, - 101,7,100,13,100,14,132,0,131,1,90,10,101,7,100,15, - 100,16,132,0,131,1,90,11,101,11,106,9,100,17,100,16, - 132,0,131,1,90,11,100,2,83,0,41,18,218,10,77,111, - 100,117,108,101,83,112,101,99,97,208,5,0,0,84,104,101, - 32,115,112,101,99,105,102,105,99,97,116,105,111,110,32,102, - 111,114,32,97,32,109,111,100,117,108,101,44,32,117,115,101, - 100,32,102,111,114,32,108,111,97,100,105,110,103,46,10,10, - 32,32,32,32,65,32,109,111,100,117,108,101,39,115,32,115, - 112,101,99,32,105,115,32,116,104,101,32,115,111,117,114,99, - 101,32,102,111,114,32,105,110,102,111,114,109,97,116,105,111, - 110,32,97,98,111,117,116,32,116,104,101,32,109,111,100,117, - 108,101,46,32,32,70,111,114,10,32,32,32,32,100,97,116, - 97,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116, - 104,32,116,104,101,32,109,111,100,117,108,101,44,32,105,110, - 99,108,117,100,105,110,103,32,115,111,117,114,99,101,44,32, - 117,115,101,32,116,104,101,32,115,112,101,99,39,115,10,32, - 32,32,32,108,111,97,100,101,114,46,10,10,32,32,32,32, - 96,110,97,109,101,96,32,105,115,32,116,104,101,32,97,98, - 115,111,108,117,116,101,32,110,97,109,101,32,111,102,32,116, - 104,101,32,109,111,100,117,108,101,46,32,32,96,108,111,97, - 100,101,114,96,32,105,115,32,116,104,101,32,108,111,97,100, - 101,114,10,32,32,32,32,116,111,32,117,115,101,32,119,104, - 101,110,32,108,111,97,100,105,110,103,32,116,104,101,32,109, - 111,100,117,108,101,46,32,32,96,112,97,114,101,110,116,96, - 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, - 116,104,101,10,32,32,32,32,112,97,99,107,97,103,101,32, - 116,104,101,32,109,111,100,117,108,101,32,105,115,32,105,110, - 46,32,32,84,104,101,32,112,97,114,101,110,116,32,105,115, - 32,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104, - 101,32,110,97,109,101,46,10,10,32,32,32,32,96,105,115, - 95,112,97,99,107,97,103,101,96,32,100,101,116,101,114,109, - 105,110,101,115,32,105,102,32,116,104,101,32,109,111,100,117, - 108,101,32,105,115,32,99,111,110,115,105,100,101,114,101,100, - 32,97,32,112,97,99,107,97,103,101,32,111,114,10,32,32, - 32,32,110,111,116,46,32,32,79,110,32,109,111,100,117,108, - 101,115,32,116,104,105,115,32,105,115,32,114,101,102,108,101, - 99,116,101,100,32,98,121,32,116,104,101,32,96,95,95,112, - 97,116,104,95,95,96,32,97,116,116,114,105,98,117,116,101, - 46,10,10,32,32,32,32,96,111,114,105,103,105,110,96,32, - 105,115,32,116,104,101,32,115,112,101,99,105,102,105,99,32, - 108,111,99,97,116,105,111,110,32,117,115,101,100,32,98,121, - 32,116,104,101,32,108,111,97,100,101,114,32,102,114,111,109, - 32,119,104,105,99,104,32,116,111,10,32,32,32,32,108,111, - 97,100,32,116,104,101,32,109,111,100,117,108,101,44,32,105, - 102,32,116,104,97,116,32,105,110,102,111,114,109,97,116,105, - 111,110,32,105,115,32,97,118,97,105,108,97,98,108,101,46, - 32,32,87,104,101,110,32,102,105,108,101,110,97,109,101,32, - 105,115,10,32,32,32,32,115,101,116,44,32,111,114,105,103, - 105,110,32,119,105,108,108,32,109,97,116,99,104,46,10,10, - 32,32,32,32,96,104,97,115,95,108,111,99,97,116,105,111, - 110,96,32,105,110,100,105,99,97,116,101,115,32,116,104,97, - 116,32,97,32,115,112,101,99,39,115,32,34,111,114,105,103, - 105,110,34,32,114,101,102,108,101,99,116,115,32,97,32,108, - 111,99,97,116,105,111,110,46,10,32,32,32,32,87,104,101, - 110,32,116,104,105,115,32,105,115,32,84,114,117,101,44,32, - 96,95,95,102,105,108,101,95,95,96,32,97,116,116,114,105, - 98,117,116,101,32,111,102,32,116,104,101,32,109,111,100,117, - 108,101,32,105,115,32,115,101,116,46,10,10,32,32,32,32, - 96,99,97,99,104,101,100,96,32,105,115,32,116,104,101,32, - 108,111,99,97,116,105,111,110,32,111,102,32,116,104,101,32, - 99,97,99,104,101,100,32,98,121,116,101,99,111,100,101,32, - 102,105,108,101,44,32,105,102,32,97,110,121,46,32,32,73, - 116,10,32,32,32,32,99,111,114,114,101,115,112,111,110,100, - 115,32,116,111,32,116,104,101,32,96,95,95,99,97,99,104, - 101,100,95,95,96,32,97,116,116,114,105,98,117,116,101,46, - 10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,115,101,113,117,101,110, - 99,101,32,111,102,32,112,97,116,104,32,101,110,116,114,105, - 101,115,32,116,111,10,32,32,32,32,115,101,97,114,99,104, - 32,119,104,101,110,32,105,109,112,111,114,116,105,110,103,32, - 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32, - 115,101,116,44,32,105,115,95,112,97,99,107,97,103,101,32, - 115,104,111,117,108,100,32,98,101,10,32,32,32,32,84,114, - 117,101,45,45,97,110,100,32,70,97,108,115,101,32,111,116, - 104,101,114,119,105,115,101,46,10,10,32,32,32,32,80,97, - 99,107,97,103,101,115,32,97,114,101,32,115,105,109,112,108, - 121,32,109,111,100,117,108,101,115,32,116,104,97,116,32,40, - 109,97,121,41,32,104,97,118,101,32,115,117,98,109,111,100, - 117,108,101,115,46,32,32,73,102,32,97,32,115,112,101,99, - 10,32,32,32,32,104,97,115,32,97,32,110,111,110,45,78, - 111,110,101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105, - 109,112,111,114,116,10,32,32,32,32,115,121,115,116,101,109, - 32,119,105,108,108,32,99,111,110,115,105,100,101,114,32,109, - 111,100,117,108,101,115,32,108,111,97,100,101,100,32,102,114, - 111,109,32,116,104,101,32,115,112,101,99,32,97,115,32,112, - 97,99,107,97,103,101,115,46,10,10,32,32,32,32,79,110, - 108,121,32,102,105,110,100,101,114,115,32,40,115,101,101,32, - 105,109,112,111,114,116,108,105,98,46,97,98,99,46,77,101, - 116,97,80,97,116,104,70,105,110,100,101,114,32,97,110,100, - 10,32,32,32,32,105,109,112,111,114,116,108,105,98,46,97, - 98,99,46,80,97,116,104,69,110,116,114,121,70,105,110,100, - 101,114,41,32,115,104,111,117,108,100,32,109,111,100,105,102, - 121,32,77,111,100,117,108,101,83,112,101,99,32,105,110,115, - 116,97,110,99,101,115,46,10,10,32,32,32,32,78,41,3, - 218,6,111,114,105,103,105,110,218,12,108,111,97,100,101,114, - 95,115,116,97,116,101,218,10,105,115,95,112,97,99,107,97, - 103,101,99,3,0,0,0,0,0,0,0,3,0,0,0,6, - 0,0,0,2,0,0,0,67,0,0,0,115,54,0,0,0, - 124,1,124,0,95,0,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,41,2,78,70,41,7,114,20,0,0, - 0,114,116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0,0,0, - 114,116,0,0,0,114,120,0,0,0,114,121,0,0,0,114, - 122,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,34,0,0,0,111,1,0,0,115,16,0,0, - 0,6,2,6,1,6,1,6,1,14,1,6,3,10,1,255, - 128,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, - 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,115, - 102,0,0,0,100,1,160,0,124,0,106,1,161,1,100,2, - 160,0,124,0,106,2,161,1,103,2,125,1,124,0,106,3, - 100,0,117,1,114,52,124,1,160,4,100,3,160,0,124,0, - 106,3,161,1,161,1,1,0,124,0,106,5,100,0,117,1, - 114,80,124,1,160,4,100,4,160,0,124,0,106,5,161,1, - 161,1,1,0,100,5,160,0,124,0,106,6,106,7,100,6, - 160,8,124,1,161,1,161,2,83,0,41,7,78,122,9,110, - 97,109,101,61,123,33,114,125,122,11,108,111,97,100,101,114, - 61,123,33,114,125,122,11,111,114,105,103,105,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, - 49,0,0,0,114,20,0,0,0,114,116,0,0,0,114,120, - 0,0,0,218,6,97,112,112,101,110,100,114,123,0,0,0, - 218,9,95,95,99,108,97,115,115,95,95,114,9,0,0,0, - 218,4,106,111,105,110,41,2,114,33,0,0,0,114,59,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,52,0,0,0,123,1,0,0,115,22,0,0,0,10, - 1,10,1,4,255,10,2,18,1,10,1,8,1,4,1,6, - 255,22,2,255,128,122,19,77,111,100,117,108,101,83,112,101, - 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,102,0,0,0,124,0,106,0,125,2,122,72, - 124,0,106,1,124,1,106,1,107,2,111,76,124,0,106,2, - 124,1,106,2,107,2,111,76,124,0,106,3,124,1,106,3, - 107,2,111,76,124,2,124,1,106,0,107,2,111,76,124,0, - 106,4,124,1,106,4,107,2,111,76,124,0,106,5,124,1, - 106,5,107,2,87,0,83,0,4,0,116,6,121,100,1,0, - 1,0,1,0,116,7,6,0,89,0,83,0,48,0,114,0, - 0,0,0,41,8,114,123,0,0,0,114,20,0,0,0,114, - 116,0,0,0,114,120,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, - 2,0,0,0,218,14,78,111,116,73,109,112,108,101,109,101, - 110,116,101,100,41,3,114,33,0,0,0,90,5,111,116,104, - 101,114,90,4,115,109,115,108,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,6,95,95,101,113,95,95,133, - 1,0,0,115,32,0,0,0,6,1,2,1,12,1,10,1, - 2,255,10,2,2,254,8,3,2,253,10,4,2,252,10,5, - 4,251,12,6,10,1,255,128,122,17,77,111,100,117,108,101, - 83,112,101,99,46,95,95,101,113,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,58,0,0,0,124,0,106,0,100,0,117, - 0,114,52,124,0,106,1,100,0,117,1,114,52,124,0,106, - 2,114,52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114, - 120,0,0,0,114,124,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,51,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,129,0,0,0,145,1,0,0,115,14,0, - 0,0,10,2,16,1,8,1,4,1,14,1,6,1,255,128, - 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,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,0,0,0,0, - 41,1,114,125,0,0,0,41,2,114,33,0,0,0,114,129, + 0,114,44,0,0,0,154,0,0,0,115,8,0,0,0,10, + 1,8,1,18,1,255,128,122,24,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,5,0,0,0,67,0,0,0,115,18,0,0,0,100, + 1,160,0,124,0,106,1,116,2,124,0,131,1,161,2,83, + 0,41,2,78,122,28,95,68,117,109,109,121,77,111,100,117, + 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, + 123,125,114,48,0,0,0,114,51,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,52,0,0,0, + 159,0,0,0,115,4,0,0,0,18,1,255,128,122,25,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, + 95,95,114,101,112,114,95,95,78,41,8,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 34,0,0,0,114,43,0,0,0,114,44,0,0,0,114,52, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,53,0,0,0,142,0,0,0, + 115,14,0,0,0,8,0,4,1,8,3,8,4,8,4,12, + 5,255,128,114,53,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, + 0,115,36,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, + 100,6,132,0,90,5,100,7,83,0,41,8,218,18,95,77, + 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, + 124,0,95,0,100,0,124,0,95,1,100,0,83,0,114,0, + 0,0,0,41,2,218,5,95,110,97,109,101,218,5,95,108, + 111,99,107,114,32,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,34,0,0,0,165,0,0,0, + 115,6,0,0,0,6,1,10,1,255,128,122,27,95,77,111, + 100,117,108,101,76,111,99,107,77,97,110,97,103,101,114,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, + 0,115,26,0,0,0,116,0,124,0,106,1,131,1,124,0, + 95,2,124,0,106,2,160,3,161,0,1,0,100,0,83,0, + 114,0,0,0,0,41,4,218,16,95,103,101,116,95,109,111, + 100,117,108,101,95,108,111,99,107,114,55,0,0,0,114,56, + 0,0,0,114,43,0,0,0,114,51,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,9,95,95, + 101,110,116,101,114,95,95,169,0,0,0,115,6,0,0,0, + 12,1,14,1,255,128,122,28,95,77,111,100,117,108,101,76, + 111,99,107,77,97,110,97,103,101,114,46,95,95,101,110,116, + 101,114,95,95,99,1,0,0,0,0,0,0,0,0,0,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,0,0,0,0,41,2,114,56,0,0,0,114,44,0,0, + 0,41,3,114,33,0,0,0,218,4,97,114,103,115,90,6, + 107,119,97,114,103,115,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,8,95,95,101,120,105,116,95,95,173, + 0,0,0,115,4,0,0,0,14,1,255,128,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,9,0,0, + 0,114,8,0,0,0,114,1,0,0,0,114,34,0,0,0, + 114,58,0,0,0,114,60,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,54, + 0,0,0,163,0,0,0,115,10,0,0,0,8,0,8,2, + 8,4,12,4,255,128,114,54,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, + 67,0,0,0,115,134,0,0,0,116,0,160,1,161,0,1, + 0,122,114,122,14,116,2,124,0,25,0,131,0,125,1,87, + 0,110,22,4,0,116,3,121,46,1,0,1,0,1,0,100, + 1,125,1,89,0,110,2,48,0,124,1,100,1,117,0,114, + 110,116,4,100,1,117,0,114,74,116,5,124,0,131,1,125, + 1,110,8,116,6,124,0,131,1,125,1,124,0,102,1,100, + 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, + 2,116,2,124,0,60,0,87,0,116,0,160,9,161,0,1, + 0,124,1,83,0,116,0,160,9,161,0,1,0,48,0,41, + 4,122,139,71,101,116,32,111,114,32,99,114,101,97,116,101, + 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, + 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, + 117,108,101,32,110,97,109,101,46,10,10,32,32,32,32,65, + 99,113,117,105,114,101,47,114,101,108,101,97,115,101,32,105, + 110,116,101,114,110,97,108,108,121,32,116,104,101,32,103,108, + 111,98,97,108,32,105,109,112,111,114,116,32,108,111,99,107, + 32,116,111,32,112,114,111,116,101,99,116,10,32,32,32,32, + 95,109,111,100,117,108,101,95,108,111,99,107,115,46,78,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 8,0,0,0,83,0,0,0,115,54,0,0,0,116,0,160, + 1,161,0,1,0,122,34,116,2,160,3,124,1,161,1,124, + 0,117,0,114,30,116,2,124,1,61,0,87,0,116,0,160, + 4,161,0,1,0,100,0,83,0,116,0,160,4,161,0,1, + 0,48,0,114,0,0,0,0,41,5,218,4,95,105,109,112, + 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, + 95,109,111,100,117,108,101,95,108,111,99,107,115,114,38,0, + 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, + 41,2,218,3,114,101,102,114,20,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,2,99,98,198, + 0,0,0,115,14,0,0,0,8,1,2,1,14,4,6,1, + 2,128,22,2,255,128,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,61,0,0,0,114,62,0,0,0, + 114,63,0,0,0,218,8,75,101,121,69,114,114,111,114,114, + 26,0,0,0,114,53,0,0,0,114,23,0,0,0,218,8, + 95,119,101,97,107,114,101,102,114,65,0,0,0,114,64,0, + 0,0,41,3,114,20,0,0,0,114,27,0,0,0,114,66, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,129,0,0,0,154,1,0,0,115,4,0,0,0, - 10,2,255,128,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,3,0,0,0,67,0,0,0,115,32,0, - 0,0,124,0,106,0,100,1,117,0,114,26,124,0,106,1, - 160,2,100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41, - 3,114,123,0,0,0,114,20,0,0,0,218,10,114,112,97, - 114,116,105,116,105,111,110,114,51,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,6,112,97,114, - 101,110,116,158,1,0,0,115,8,0,0,0,10,3,16,1, - 6,2,255,128,122,17,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, - 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,0,0,0,0, - 41,1,114,124,0,0,0,114,51,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,130,0,0,0, - 166,1,0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111,108,114, - 124,0,0,0,41,2,114,33,0,0,0,218,5,118,97,108, - 117,101,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,130,0,0,0,170,1,0,0,115,4,0,0,0,14, - 2,255,128,41,12,114,9,0,0,0,114,8,0,0,0,114, - 1,0,0,0,114,10,0,0,0,114,34,0,0,0,114,52, - 0,0,0,114,132,0,0,0,218,8,112,114,111,112,101,114, - 116,121,114,129,0,0,0,218,6,115,101,116,116,101,114,114, - 137,0,0,0,114,130,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,119,0, - 0,0,74,1,0,0,115,36,0,0,0,8,0,4,1,4, - 36,2,1,12,255,8,12,8,10,2,12,10,1,4,8,10, - 1,2,3,10,1,2,7,10,1,4,3,14,1,255,128,114, - 119,0,0,0,169,2,114,120,0,0,0,114,122,0,0,0, - 99,2,0,0,0,0,0,0,0,2,0,0,0,6,0,0, - 0,8,0,0,0,67,0,0,0,115,150,0,0,0,116,0, - 124,1,100,1,131,2,114,74,116,1,100,2,117,0,114,22, - 116,2,130,1,116,1,106,3,125,4,124,3,100,2,117,0, - 114,48,124,4,124,0,124,1,100,3,141,2,83,0,124,3, - 114,56,103,0,110,2,100,2,125,5,124,4,124,0,124,1, - 124,5,100,4,141,3,83,0,124,3,100,2,117,0,114,134, - 116,0,124,1,100,5,131,2,114,130,122,14,124,1,160,4, - 124,0,161,1,125,3,87,0,110,26,4,0,116,5,121,128, - 1,0,1,0,1,0,100,2,125,3,89,0,110,6,48,0, - 100,6,125,3,116,6,124,0,124,1,124,2,124,3,100,7, - 141,4,83,0,41,8,122,53,82,101,116,117,114,110,32,97, - 32,109,111,100,117,108,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,116, - 0,0,0,41,2,114,116,0,0,0,114,123,0,0,0,114, - 122,0,0,0,70,114,142,0,0,0,41,7,114,11,0,0, - 0,114,133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119, - 0,0,0,41,6,114,20,0,0,0,114,116,0,0,0,114, - 120,0,0,0,114,122,0,0,0,114,143,0,0,0,90,6, - 115,101,97,114,99,104,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,98,0,0,0,175,1,0,0,115,38, - 0,0,0,10,2,8,1,4,1,6,1,8,2,12,1,12, - 1,6,1,2,1,6,255,8,3,10,1,2,1,14,1,12, - 1,10,1,4,3,16,2,255,128,114,98,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8, - 0,0,0,67,0,0,0,115,40,1,0,0,122,10,124,0, - 106,0,125,3,87,0,110,18,4,0,116,1,121,28,1,0, - 1,0,1,0,89,0,110,14,48,0,124,3,100,0,117,1, - 114,42,124,3,83,0,124,0,106,2,125,4,124,1,100,0, - 117,0,114,86,122,10,124,0,106,3,125,1,87,0,110,18, - 4,0,116,1,121,84,1,0,1,0,1,0,89,0,110,2, - 48,0,122,10,124,0,106,4,125,5,87,0,110,22,4,0, - 116,1,121,118,1,0,1,0,1,0,100,0,125,5,89,0, - 110,2,48,0,124,2,100,0,117,0,114,174,124,5,100,0, - 117,0,114,170,122,10,124,1,106,5,125,2,87,0,110,26, - 4,0,116,1,121,168,1,0,1,0,1,0,100,0,125,2, - 89,0,110,6,48,0,124,5,125,2,122,10,124,0,106,6, - 125,6,87,0,110,22,4,0,116,1,121,206,1,0,1,0, - 1,0,100,0,125,6,89,0,110,2,48,0,122,14,116,7, - 124,0,106,8,131,1,125,7,87,0,110,22,4,0,116,1, - 121,244,1,0,1,0,1,0,100,0,125,7,89,0,110,2, - 48,0,116,9,124,4,124,1,124,2,100,1,141,3,125,3, - 124,5,100,0,117,0,144,1,114,18,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,120,0,0,0,70,84, - 41,13,114,113,0,0,0,114,2,0,0,0,114,9,0,0, - 0,114,106,0,0,0,114,115,0,0,0,218,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,119,0,0,0,114,124,0,0,0,114,129,0,0,0,114, - 123,0,0,0,41,8,114,104,0,0,0,114,116,0,0,0, - 114,120,0,0,0,114,103,0,0,0,114,20,0,0,0,90, - 8,108,111,99,97,116,105,111,110,114,129,0,0,0,114,123, + 0,0,114,57,0,0,0,179,0,0,0,115,34,0,0,0, + 8,6,2,1,2,1,14,1,12,1,10,1,8,2,8,1, + 10,1,8,2,12,2,16,11,2,128,8,2,4,2,10,254, + 255,128,114,57,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, + 115,54,0,0,0,116,0,124,0,131,1,125,1,122,12,124, + 1,160,1,161,0,1,0,87,0,110,20,4,0,116,2,121, + 40,1,0,1,0,1,0,89,0,100,1,83,0,48,0,124, + 1,160,3,161,0,1,0,100,1,83,0,41,2,122,189,65, + 99,113,117,105,114,101,115,32,116,104,101,110,32,114,101,108, + 101,97,115,101,115,32,116,104,101,32,109,111,100,117,108,101, + 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, + 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, + 32,32,32,32,84,104,105,115,32,105,115,32,117,115,101,100, + 32,116,111,32,101,110,115,117,114,101,32,97,32,109,111,100, + 117,108,101,32,105,115,32,99,111,109,112,108,101,116,101,108, + 121,32,105,110,105,116,105,97,108,105,122,101,100,44,32,105, + 110,32,116,104,101,10,32,32,32,32,101,118,101,110,116,32, + 105,116,32,105,115,32,98,101,105,110,103,32,105,109,112,111, + 114,116,101,100,32,98,121,32,97,110,111,116,104,101,114,32, + 116,104,114,101,97,100,46,10,32,32,32,32,78,41,4,114, + 57,0,0,0,114,43,0,0,0,114,22,0,0,0,114,44, + 0,0,0,41,2,114,20,0,0,0,114,27,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,19, + 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, + 117,108,101,216,0,0,0,115,14,0,0,0,8,6,2,1, + 12,1,12,1,8,3,12,2,255,128,114,69,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 4,0,0,0,79,0,0,0,115,14,0,0,0,124,0,124, + 1,105,0,124,2,164,1,142,1,83,0,41,2,97,46,1, + 0,0,114,101,109,111,118,101,95,105,109,112,111,114,116,108, + 105,98,95,102,114,97,109,101,115,32,105,110,32,105,109,112, + 111,114,116,46,99,32,119,105,108,108,32,97,108,119,97,121, + 115,32,114,101,109,111,118,101,32,115,101,113,117,101,110,99, + 101,115,10,32,32,32,32,111,102,32,105,109,112,111,114,116, + 108,105,98,32,102,114,97,109,101,115,32,116,104,97,116,32, + 101,110,100,32,119,105,116,104,32,97,32,99,97,108,108,32, + 116,111,32,116,104,105,115,32,102,117,110,99,116,105,111,110, + 10,10,32,32,32,32,85,115,101,32,105,116,32,105,110,115, + 116,101,97,100,32,111,102,32,97,32,110,111,114,109,97,108, + 32,99,97,108,108,32,105,110,32,112,108,97,99,101,115,32, + 119,104,101,114,101,32,105,110,99,108,117,100,105,110,103,32, + 116,104,101,32,105,109,112,111,114,116,108,105,98,10,32,32, + 32,32,102,114,97,109,101,115,32,105,110,116,114,111,100,117, + 99,101,115,32,117,110,119,97,110,116,101,100,32,110,111,105, + 115,101,32,105,110,116,111,32,116,104,101,32,116,114,97,99, + 101,98,97,99,107,32,40,101,46,103,46,32,119,104,101,110, + 32,101,120,101,99,117,116,105,110,103,10,32,32,32,32,109, + 111,100,117,108,101,32,99,111,100,101,41,10,32,32,32,32, + 78,114,5,0,0,0,41,3,218,1,102,114,59,0,0,0, + 90,4,107,119,100,115,114,5,0,0,0,114,5,0,0,0, + 114,6,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, + 233,0,0,0,115,4,0,0,0,14,8,255,128,114,71,0, + 0,0,114,42,0,0,0,41,1,218,9,118,101,114,98,111, + 115,105,116,121,99,1,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,4,0,0,0,71,0,0,0,115,58,0, + 0,0,116,0,106,1,106,2,124,1,107,5,114,54,124,0, + 160,3,100,1,161,1,115,30,100,2,124,0,23,0,125,0, + 116,4,124,0,106,5,124,2,142,0,116,0,106,6,100,3, + 141,2,1,0,100,4,83,0,100,4,83,0,41,5,122,61, + 80,114,105,110,116,32,116,104,101,32,109,101,115,115,97,103, + 101,32,116,111,32,115,116,100,101,114,114,32,105,102,32,45, + 118,47,80,89,84,72,79,78,86,69,82,66,79,83,69,32, + 105,115,32,116,117,114,110,101,100,32,111,110,46,41,2,250, + 1,35,122,7,105,109,112,111,114,116,32,122,2,35,32,41, + 1,90,4,102,105,108,101,78,41,7,114,18,0,0,0,218, + 5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114,114,41, + 3,218,7,109,101,115,115,97,103,101,114,72,0,0,0,114, + 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,244,0,0,0,115,12,0,0,0,12,2, + 10,1,8,1,24,1,4,253,255,128,114,80,0,0,0,99, + 1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99,111,114, + 97,116,111,114,32,116,111,32,118,101,114,105,102,121,32,116, + 104,101,32,110,97,109,101,100,32,109,111,100,117,108,101,32, + 105,115,32,98,117,105,108,116,45,105,110,46,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,19,0,0,0,115,38,0,0,0,124,1,116,0,106,1, + 118,1,114,28,116,2,100,1,160,3,124,1,161,1,124,1, + 100,2,141,2,130,1,136,0,124,0,124,1,131,2,83,0, + 41,3,78,250,29,123,33,114,125,32,105,115,32,110,111,116, + 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,114,19,0,0,0,41,4,114,18,0,0,0,218,20, + 98,117,105,108,116,105,110,95,109,111,100,117,108,101,95,110, + 97,109,101,115,218,11,73,109,112,111,114,116,69,114,114,111, + 114,114,49,0,0,0,169,2,114,33,0,0,0,218,8,102, + 117,108,108,110,97,109,101,169,1,218,3,102,120,110,114,5, + 0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1,10,1, + 2,1,6,255,10,2,255,128,122,52,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,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,78,169, + 1,114,17,0,0,0,41,2,114,87,0,0,0,114,88,0, + 0,0,114,5,0,0,0,114,86,0,0,0,114,6,0,0, + 0,218,17,95,114,101,113,117,105,114,101,115,95,98,117,105, + 108,116,105,110,252,0,0,0,115,8,0,0,0,12,2,10, + 5,4,1,255,128,114,90,0,0,0,99,1,0,0,0,0, + 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,1, + 83,0,41,4,122,47,68,101,99,111,114,97,116,111,114,32, + 116,111,32,118,101,114,105,102,121,32,116,104,101,32,110,97, + 109,101,100,32,109,111,100,117,108,101,32,105,115,32,102,114, + 111,122,101,110,46,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,38, + 0,0,0,116,0,160,1,124,1,161,1,115,28,116,2,100, + 1,160,3,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,19,0,0,0,41,4, + 114,61,0,0,0,218,9,105,115,95,102,114,111,122,101,110, + 114,83,0,0,0,114,49,0,0,0,114,84,0,0,0,114, + 86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0,115,12,0,0, + 0,10,1,10,1,2,1,6,255,10,2,255,128,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,78,114,89,0,0,0,41,2,114,87,0,0,0,114,93, + 0,0,0,114,5,0,0,0,114,86,0,0,0,114,6,0, + 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, + 111,122,101,110,7,1,0,0,115,8,0,0,0,12,2,10, + 5,4,1,255,128,114,94,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,67, + 0,0,0,115,74,0,0,0,100,1,125,2,116,0,160,1, + 124,2,116,2,161,2,1,0,116,3,124,1,124,0,131,2, + 125,3,124,1,116,4,106,5,118,0,114,66,116,4,106,5, + 124,1,25,0,125,4,116,6,124,3,124,4,131,2,1,0, + 116,4,106,5,124,1,25,0,83,0,116,7,124,3,131,1, + 83,0,41,3,122,128,76,111,97,100,32,116,104,101,32,115, + 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32, + 105,110,116,111,32,115,121,115,46,109,111,100,117,108,101,115, + 32,97,110,100,32,114,101,116,117,114,110,32,105,116,46,10, + 10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120,101,99, + 95,109,111,100,117,108,101,32,105,110,115,116,101,97,100,46, + 10,10,32,32,32,32,122,103,116,104,101,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,32,109,101,116,104,111,100, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, + 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, + 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, + 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109, + 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78, + 41,8,218,9,95,119,97,114,110,105,110,103,115,218,4,119, + 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, + 87,97,114,110,105,110,103,218,16,115,112,101,99,95,102,114, + 111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85,0,0, + 0,218,3,109,115,103,218,4,115,112,101,99,218,6,109,111, + 100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, + 101,95,115,104,105,109,19,1,0,0,115,18,0,0,0,4, + 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,255, + 128,114,105,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, + 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, + 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, + 124,0,161,1,87,0,83,0,4,0,116,3,121,52,1,0, + 1,0,1,0,89,0,110,2,48,0,122,10,124,0,106,4, + 125,2,87,0,110,18,4,0,116,5,121,82,1,0,1,0, + 1,0,89,0,110,18,48,0,124,2,100,0,117,1,114,100, + 116,6,124,2,131,1,83,0,122,10,124,0,106,7,125,3, + 87,0,110,22,4,0,116,5,121,132,1,0,1,0,1,0, + 100,3,125,3,89,0,110,2,48,0,122,10,124,0,106,8, + 125,4,87,0,110,52,4,0,116,5,121,196,1,0,1,0, + 1,0,124,1,100,0,117,0,114,180,100,4,160,9,124,3, + 161,1,6,0,89,0,83,0,100,5,160,9,124,3,124,1, + 161,2,6,0,89,0,83,0,48,0,100,6,160,9,124,3, + 124,4,161,2,83,0,41,7,78,218,10,95,95,108,111,97, + 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, + 112,114,250,1,63,250,13,60,109,111,100,117,108,101,32,123, + 33,114,125,62,250,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,13,0,0,0,114,11,0,0,0,114, + 107,0,0,0,218,9,69,120,99,101,112,116,105,111,110,218, + 8,95,95,115,112,101,99,95,95,114,2,0,0,0,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,9,0,0,0,218,8,95,95,102, + 105,108,101,95,95,114,49,0,0,0,41,5,114,104,0,0, + 0,218,6,108,111,97,100,101,114,114,103,0,0,0,114,20, + 0,0,0,218,8,102,105,108,101,110,97,109,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,12,95,109, + 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,48, + 0,0,0,12,2,10,1,2,4,12,1,12,1,6,1,2, + 1,10,1,12,1,6,1,8,2,8,1,2,4,10,1,12, + 1,10,1,2,1,10,1,12,1,8,1,14,1,18,2,12, + 2,255,128,114,118,0,0,0,99,0,0,0,0,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, + 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, + 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, + 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, + 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, + 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, + 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,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,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, + 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, + 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, + 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, + 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, + 124,0,95,0,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,41,2,78,70,41,7,114,20,0,0,0,114, + 116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0,0,0,114,116, + 0,0,0,114,120,0,0,0,114,121,0,0,0,114,122,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,34,0,0,0,111,1,0,0,115,16,0,0,0,6, + 2,6,1,6,1,6,1,14,1,6,3,10,1,255,128,122, + 19,77,111,100,117,108,101,83,112,101,99,46,95,95,105,110, + 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,6,0,0,0,67,0,0,0,115,102,0, + 0,0,100,1,160,0,124,0,106,1,161,1,100,2,160,0, + 124,0,106,2,161,1,103,2,125,1,124,0,106,3,100,0, + 117,1,114,52,124,1,160,4,100,3,160,0,124,0,106,3, + 161,1,161,1,1,0,124,0,106,5,100,0,117,1,114,80, + 124,1,160,4,100,4,160,0,124,0,106,5,161,1,161,1, + 1,0,100,5,160,0,124,0,106,6,106,7,100,6,160,8, + 124,1,161,1,161,2,83,0,41,7,78,122,9,110,97,109, + 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123, + 33,114,125,122,11,111,114,105,103,105,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,49,0, + 0,0,114,20,0,0,0,114,116,0,0,0,114,120,0,0, + 0,218,6,97,112,112,101,110,100,114,123,0,0,0,218,9, + 95,95,99,108,97,115,115,95,95,114,9,0,0,0,218,4, + 106,111,105,110,41,2,114,33,0,0,0,114,59,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 52,0,0,0,123,1,0,0,115,22,0,0,0,10,1,10, + 1,4,255,10,2,18,1,10,1,8,1,4,1,6,255,22, + 2,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, + 95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,102,0,0,0,124,0,106,0,125,2,122,72,124,0, + 106,1,124,1,106,1,107,2,111,76,124,0,106,2,124,1, + 106,2,107,2,111,76,124,0,106,3,124,1,106,3,107,2, + 111,76,124,2,124,1,106,0,107,2,111,76,124,0,106,4, + 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, + 107,2,87,0,83,0,4,0,116,6,121,100,1,0,1,0, + 1,0,116,7,6,0,89,0,83,0,48,0,114,0,0,0, + 0,41,8,114,123,0,0,0,114,20,0,0,0,114,116,0, + 0,0,114,120,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,2,0, + 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,41,3,114,33,0,0,0,90,5,111,116,104,101,114, + 90,4,115,109,115,108,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,6,95,95,101,113,95,95,133,1,0, + 0,115,32,0,0,0,6,1,2,1,12,1,10,1,2,255, + 10,2,2,254,8,3,2,253,10,4,2,252,10,5,4,251, + 12,6,10,1,255,128,122,17,77,111,100,117,108,101,83,112, + 101,99,46,95,95,101,113,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,58,0,0,0,124,0,106,0,100,0,117,0,114, + 52,124,0,106,1,100,0,117,1,114,52,124,0,106,2,114, + 52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114,120,0, + 0,0,114,124,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,51, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,17,95,115,112,101,99,95,102,114,111,109,95,109, - 111,100,117,108,101,201,1,0,0,115,74,0,0,0,2,2, - 10,1,12,1,6,1,8,2,4,1,6,2,8,1,2,1, - 10,1,12,1,6,2,2,1,10,1,12,1,10,1,8,1, - 8,1,2,1,10,1,12,1,10,1,4,2,2,1,10,1, - 12,1,10,1,2,1,14,1,12,1,10,1,14,2,20,1, - 6,1,6,1,4,1,255,128,114,149,0,0,0,70,169,1, - 218,8,111,118,101,114,114,105,100,101,99,2,0,0,0,0, - 0,0,0,1,0,0,0,5,0,0,0,8,0,0,0,67, - 0,0,0,115,214,1,0,0,124,2,115,20,116,0,124,1, - 100,1,100,0,131,3,100,0,117,0,114,52,122,12,124,0, - 106,1,124,1,95,2,87,0,110,18,4,0,116,3,121,50, - 1,0,1,0,1,0,89,0,110,2,48,0,124,2,115,72, - 116,0,124,1,100,2,100,0,131,3,100,0,117,0,114,174, - 124,0,106,4,125,3,124,3,100,0,117,0,114,144,124,0, - 106,5,100,0,117,1,114,144,116,6,100,0,117,0,114,108, - 116,7,130,1,116,6,106,8,125,4,124,4,160,9,124,4, - 161,1,125,3,124,0,106,5,124,3,95,10,124,3,124,0, - 95,4,100,0,124,1,95,11,122,10,124,3,124,1,95,12, - 87,0,110,18,4,0,116,3,121,172,1,0,1,0,1,0, - 89,0,110,2,48,0,124,2,115,194,116,0,124,1,100,3, - 100,0,131,3,100,0,117,0,114,226,122,12,124,0,106,13, - 124,1,95,14,87,0,110,18,4,0,116,3,121,224,1,0, - 1,0,1,0,89,0,110,2,48,0,122,10,124,0,124,1, - 95,15,87,0,110,18,4,0,116,3,121,254,1,0,1,0, - 1,0,89,0,110,2,48,0,124,2,144,1,115,24,116,0, - 124,1,100,4,100,0,131,3,100,0,117,0,144,1,114,70, - 124,0,106,5,100,0,117,1,144,1,114,70,122,12,124,0, - 106,5,124,1,95,16,87,0,110,20,4,0,116,3,144,1, - 121,68,1,0,1,0,1,0,89,0,110,2,48,0,124,0, - 106,17,144,1,114,210,124,2,144,1,115,102,116,0,124,1, - 100,5,100,0,131,3,100,0,117,0,144,1,114,136,122,12, - 124,0,106,18,124,1,95,11,87,0,110,20,4,0,116,3, - 144,1,121,134,1,0,1,0,1,0,89,0,110,2,48,0, - 124,2,144,1,115,160,116,0,124,1,100,6,100,0,131,3, - 100,0,117,0,144,1,114,210,124,0,106,19,100,0,117,1, - 144,1,114,210,122,14,124,0,106,19,124,1,95,20,87,0, - 124,1,83,0,4,0,116,3,144,1,121,208,1,0,1,0, - 1,0,89,0,124,1,83,0,48,0,124,1,83,0,41,7, - 78,114,9,0,0,0,114,106,0,0,0,218,11,95,95,112, - 97,99,107,97,103,101,95,95,114,148,0,0,0,114,115,0, - 0,0,114,146,0,0,0,41,21,114,13,0,0,0,114,20, - 0,0,0,114,9,0,0,0,114,2,0,0,0,114,116,0, - 0,0,114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0, - 0,0,114,152,0,0,0,114,113,0,0,0,114,148,0,0, - 0,114,130,0,0,0,114,120,0,0,0,114,129,0,0,0, - 114,146,0,0,0,41,5,114,103,0,0,0,114,104,0,0, - 0,114,151,0,0,0,114,116,0,0,0,114,153,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, - 116,114,115,246,1,0,0,115,104,0,0,0,20,4,2,1, - 12,1,12,1,6,1,20,2,6,1,8,1,10,2,8,1, - 4,1,6,1,10,2,8,1,6,1,6,11,2,1,10,1, - 12,1,6,1,20,2,2,1,12,1,12,1,6,1,2,2, - 10,1,12,1,6,1,24,2,12,1,2,1,12,1,14,1, - 6,1,8,2,24,1,2,1,12,1,14,1,6,1,24,2, - 12,1,2,1,10,1,4,3,14,254,2,1,4,1,2,255, - 4,1,255,128,114,155,0,0,0,99,1,0,0,0,0,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,1,110,20,116,0,124,0,106,1,100,3,131,2,114, - 50,116,3,100,4,131,1,130,1,124,1,100,1,117,0,114, - 68,116,4,124,0,106,5,131,1,125,1,116,6,124,0,124, - 1,131,2,1,0,124,1,83,0,41,5,122,43,67,114,101, - 97,116,101,32,97,32,109,111,100,117,108,101,32,98,97,115, - 101,100,32,111,110,32,116,104,101,32,112,114,111,118,105,100, - 101,100,32,115,112,101,99,46,78,218,13,99,114,101,97,116, - 101,95,109,111,100,117,108,101,218,11,101,120,101,99,95,109, - 111,100,117,108,101,122,66,108,111,97,100,101,114,115,32,116, - 104,97,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,11,0,0,0, - 114,116,0,0,0,114,156,0,0,0,114,83,0,0,0,114, - 21,0,0,0,114,20,0,0,0,114,155,0,0,0,169,2, - 114,103,0,0,0,114,104,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,16,109,111,100,117,108, - 101,95,102,114,111,109,95,115,112,101,99,62,2,0,0,115, - 20,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, - 10,1,10,1,4,1,255,128,114,159,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,67,0,0,0,115,100,0,0,0,124,0,106,0,100, - 1,117,0,114,14,100,2,110,4,124,0,106,0,125,1,124, - 0,106,1,100,1,117,0,114,64,124,0,106,2,100,1,117, - 0,114,50,100,3,160,3,124,1,161,1,83,0,100,4,160, - 3,124,1,124,0,106,2,161,2,83,0,124,0,106,4,114, - 84,100,5,160,3,124,1,124,0,106,1,161,2,83,0,100, - 6,160,3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114, - 109,0,0,0,114,110,0,0,0,114,111,0,0,0,250,18, - 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125, - 41,62,41,5,114,20,0,0,0,114,120,0,0,0,114,116, - 0,0,0,114,49,0,0,0,114,130,0,0,0,41,2,114, - 103,0,0,0,114,20,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,114,0,0,0,79,2,0, - 0,115,18,0,0,0,20,3,10,1,10,1,10,1,14,2, - 6,2,14,1,16,2,255,128,114,114,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,10,0, - 0,0,67,0,0,0,115,26,1,0,0,124,0,106,0,125, - 2,116,1,124,2,131,1,143,246,1,0,116,2,106,3,160, - 4,124,2,161,1,124,1,117,1,114,54,100,1,160,5,124, - 2,161,1,125,3,116,6,124,3,124,2,100,2,141,2,130, - 1,122,160,124,0,106,7,100,3,117,0,114,106,124,0,106, - 8,100,3,117,0,114,90,116,6,100,4,124,0,106,0,100, - 2,141,2,130,1,116,9,124,0,124,1,100,5,100,6,141, - 3,1,0,110,80,116,9,124,0,124,1,100,5,100,6,141, - 3,1,0,116,10,124,0,106,7,100,7,131,2,115,174,116, - 11,124,0,106,7,131,1,155,0,100,8,157,2,125,3,116, - 12,160,13,124,3,116,14,161,2,1,0,124,0,106,7,160, - 15,124,2,161,1,1,0,110,12,124,0,106,7,160,16,124, - 1,161,1,1,0,87,0,116,2,106,3,160,17,124,0,106, - 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, - 0,110,28,116,2,106,3,160,17,124,0,106,0,161,1,125, - 1,124,1,116,2,106,3,124,0,106,0,60,0,48,0,87, - 0,100,3,4,0,4,0,131,3,1,0,124,1,83,0,49, - 0,144,1,115,12,48,0,1,0,1,0,1,0,89,0,1, - 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, - 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, - 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, - 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, - 30,109,111,100,117,108,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, - 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, - 111,97,100,101,114,84,114,150,0,0,0,114,157,0,0,0, - 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, - 114,54,0,0,0,114,18,0,0,0,114,99,0,0,0,114, - 38,0,0,0,114,49,0,0,0,114,83,0,0,0,114,116, - 0,0,0,114,123,0,0,0,114,155,0,0,0,114,11,0, - 0,0,114,7,0,0,0,114,95,0,0,0,114,96,0,0, - 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, - 218,11,108,111,97,100,95,109,111,100,117,108,101,114,157,0, - 0,0,218,3,112,111,112,41,4,114,103,0,0,0,114,104, - 0,0,0,114,20,0,0,0,114,102,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,100,0,0, - 0,96,2,0,0,115,50,0,0,0,6,2,10,1,16,1, - 10,1,12,1,2,1,10,1,10,1,14,1,16,2,14,2, - 12,1,16,1,12,2,14,1,12,2,2,128,14,4,14,1, - 14,255,26,1,4,1,18,255,4,1,255,128,114,100,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,8,0,0,0,67,0,0,0,115,18,1,0,0,122, - 18,124,0,106,0,160,1,124,0,106,2,161,1,1,0,87, - 0,110,46,1,0,1,0,1,0,124,0,106,2,116,3,106, - 4,118,0,114,64,116,3,106,4,160,5,124,0,106,2,161, - 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, - 0,116,3,106,4,160,5,124,0,106,2,161,1,125,1,124, - 1,116,3,106,4,124,0,106,2,60,0,116,6,124,1,100, - 1,100,0,131,3,100,0,117,0,114,140,122,12,124,0,106, - 0,124,1,95,7,87,0,110,18,4,0,116,8,121,138,1, - 0,1,0,1,0,89,0,110,2,48,0,116,6,124,1,100, - 2,100,0,131,3,100,0,117,0,114,216,122,40,124,1,106, - 9,124,1,95,10,116,11,124,1,100,3,131,2,115,194,124, - 0,106,2,160,12,100,4,161,1,100,5,25,0,124,1,95, - 10,87,0,110,18,4,0,116,8,121,214,1,0,1,0,1, - 0,89,0,110,2,48,0,116,6,124,1,100,6,100,0,131, - 3,100,0,117,0,144,1,114,14,122,12,124,0,124,1,95, - 13,87,0,124,1,83,0,4,0,116,8,144,1,121,12,1, - 0,1,0,1,0,89,0,124,1,83,0,48,0,124,1,83, - 0,41,7,78,114,106,0,0,0,114,152,0,0,0,114,148, - 0,0,0,114,135,0,0,0,114,25,0,0,0,114,113,0, - 0,0,41,14,114,116,0,0,0,114,164,0,0,0,114,20, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,165,0, - 0,0,114,13,0,0,0,114,106,0,0,0,114,2,0,0, - 0,114,9,0,0,0,114,152,0,0,0,114,11,0,0,0, - 114,136,0,0,0,114,113,0,0,0,114,158,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,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,126,2,0,0,115,62,0, - 0,0,2,3,18,1,6,1,12,1,14,1,12,1,2,1, - 14,3,12,1,16,1,2,1,12,1,12,1,6,1,16,1, - 2,1,8,4,10,1,22,1,12,1,6,1,18,1,2,1, - 8,1,4,3,14,254,2,1,4,1,2,255,4,1,255,128, - 114,166,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,240, - 0,0,0,124,0,106,0,100,0,117,1,114,58,116,1,124, - 0,106,0,100,1,131,2,115,58,116,2,124,0,106,0,131, - 1,155,0,100,2,157,2,125,1,116,3,160,4,124,1,116, - 5,161,2,1,0,116,6,124,0,131,1,83,0,116,7,124, - 0,131,1,125,2,100,3,124,0,95,8,122,158,124,2,116, - 9,106,10,124,0,106,11,60,0,122,50,124,0,106,0,100, - 0,117,0,114,122,124,0,106,12,100,0,117,0,114,134,116, - 13,100,4,124,0,106,11,100,5,141,2,130,1,124,0,106, - 0,160,14,124,2,161,1,1,0,87,0,110,40,1,0,1, - 0,1,0,122,14,116,9,106,10,124,0,106,11,61,0,87, - 0,130,0,4,0,116,15,121,176,1,0,1,0,1,0,89, - 0,130,0,48,0,116,9,106,10,160,16,124,0,106,11,161, - 1,125,2,124,2,116,9,106,10,124,0,106,11,60,0,116, - 17,100,6,124,0,106,11,124,0,106,0,131,3,1,0,87, - 0,100,7,124,0,95,8,124,2,83,0,100,7,124,0,95, - 8,48,0,41,8,78,114,157,0,0,0,114,162,0,0,0, - 84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7,0,0, - 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, - 114,166,0,0,0,114,159,0,0,0,90,13,95,105,110,105, - 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,99, - 0,0,0,114,20,0,0,0,114,123,0,0,0,114,83,0, - 0,0,114,157,0,0,0,114,67,0,0,0,114,165,0,0, - 0,114,80,0,0,0,41,3,114,103,0,0,0,114,102,0, - 0,0,114,104,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,14,95,108,111,97,100,95,117,110, - 108,111,99,107,101,100,162,2,0,0,115,58,0,0,0,10, - 2,12,2,16,1,12,2,8,1,8,2,6,5,2,1,12, - 1,2,1,10,1,10,1,14,1,16,3,6,1,2,1,12, - 1,2,3,12,254,2,1,2,1,2,255,14,6,12,1,18, - 1,6,2,4,2,8,254,255,128,114,167,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, - 0,0,0,67,0,0,0,115,54,0,0,0,116,0,124,0, - 106,1,131,1,143,24,1,0,116,2,124,0,131,1,87,0, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, - 115,40,48,0,1,0,1,0,1,0,89,0,1,0,100,1, - 83,0,41,2,122,191,82,101,116,117,114,110,32,97,32,110, - 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116, - 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32, - 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10, - 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105, - 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105, - 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32, - 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97, - 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111, - 100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114,20,0, - 0,0,114,167,0,0,0,169,1,114,103,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,101,0, - 0,0,207,2,0,0,115,6,0,0,0,12,9,42,1,255, - 128,114,101,0,0,0,99,0,0,0,0,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, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,20,100,6,100,7,132,1,131,1,90,8,101,7, - 100,21,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,101,12,100,14,100,15,132,0,131,1, - 131,1,90,13,101,7,101,12,100,16,100,17,132,0,131,1, - 131,1,90,14,101,7,101,12,100,18,100,19,132,0,131,1, - 131,1,90,15,101,7,101,16,131,1,90,17,100,5,83,0, - 41,22,218,15,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, - 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, - 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, - 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, - 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, - 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, - 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, - 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 5,0,0,0,67,0,0,0,115,22,0,0,0,100,1,124, - 0,106,0,155,2,100,2,116,1,106,2,155,0,100,3,157, - 5,83,0,41,5,250,115,82,101,116,117,114,110,32,114,101, - 112,114,32,102,111,114,32,116,104,101,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32, - 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,46,32,32,84,104,101,32,105,109,112,111,114, - 116,32,109,97,99,104,105,110,101,114,121,32,100,111,101,115, - 32,116,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,8,60,109,111,100, - 117,108,101,32,122,2,32,40,122,2,41,62,78,41,3,114, - 9,0,0,0,114,169,0,0,0,114,145,0,0,0,169,1, + 0,0,114,129,0,0,0,145,1,0,0,115,14,0,0,0, + 10,2,16,1,8,1,4,1,14,1,6,1,255,128,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,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,0,0,0,0,41,1, + 114,125,0,0,0,41,2,114,33,0,0,0,114,129,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,129,0,0,0,154,1,0,0,115,4,0,0,0,10,2, + 255,128,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,32,0,0,0, + 124,0,106,0,100,1,117,0,114,26,124,0,106,1,160,2, + 100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41,3,114, + 123,0,0,0,114,20,0,0,0,218,10,114,112,97,114,116, + 105,116,105,111,110,114,51,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,6,112,97,114,101,110, + 116,158,1,0,0,115,8,0,0,0,10,3,16,1,6,2, + 255,128,122,17,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,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,0,0,0,0,41,1, + 114,124,0,0,0,114,51,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,130,0,0,0,166,1, + 0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111,108,114,124,0, + 0,0,41,2,114,33,0,0,0,218,5,118,97,108,117,101, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 130,0,0,0,170,1,0,0,115,4,0,0,0,14,2,255, + 128,41,12,114,9,0,0,0,114,8,0,0,0,114,1,0, + 0,0,114,10,0,0,0,114,34,0,0,0,114,52,0,0, + 0,114,132,0,0,0,218,8,112,114,111,112,101,114,116,121, + 114,129,0,0,0,218,6,115,101,116,116,101,114,114,137,0, + 0,0,114,130,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,119,0,0,0, + 74,1,0,0,115,36,0,0,0,8,0,4,1,4,36,2, + 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, + 3,10,1,2,7,10,1,4,3,14,1,255,128,114,119,0, + 0,0,169,2,114,120,0,0,0,114,122,0,0,0,99,2, + 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,8, + 0,0,0,67,0,0,0,115,150,0,0,0,116,0,124,1, + 100,1,131,2,114,74,116,1,100,2,117,0,114,22,116,2, + 130,1,116,1,106,3,125,4,124,3,100,2,117,0,114,48, + 124,4,124,0,124,1,100,3,141,2,83,0,124,3,114,56, + 103,0,110,2,100,2,125,5,124,4,124,0,124,1,124,5, + 100,4,141,3,83,0,124,3,100,2,117,0,114,134,116,0, + 124,1,100,5,131,2,114,130,122,14,124,1,160,4,124,0, + 161,1,125,3,87,0,110,26,4,0,116,5,121,128,1,0, + 1,0,1,0,100,2,125,3,89,0,110,6,48,0,100,6, + 125,3,116,6,124,0,124,1,124,2,124,3,100,7,141,4, + 83,0,41,8,122,53,82,101,116,117,114,110,32,97,32,109, + 111,100,117,108,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,116,0,0, + 0,41,2,114,116,0,0,0,114,123,0,0,0,114,122,0, + 0,0,70,114,142,0,0,0,41,7,114,11,0,0,0,114, + 133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119,0,0, + 0,41,6,114,20,0,0,0,114,116,0,0,0,114,120,0, + 0,0,114,122,0,0,0,114,143,0,0,0,90,6,115,101, + 97,114,99,104,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,98,0,0,0,175,1,0,0,115,38,0,0, + 0,10,2,8,1,4,1,6,1,8,2,12,1,12,1,6, + 1,2,1,6,255,8,3,10,1,2,1,14,1,12,1,10, + 1,4,3,16,2,255,128,114,98,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0, + 0,67,0,0,0,115,40,1,0,0,122,10,124,0,106,0, + 125,3,87,0,110,18,4,0,116,1,121,28,1,0,1,0, + 1,0,89,0,110,14,48,0,124,3,100,0,117,1,114,42, + 124,3,83,0,124,0,106,2,125,4,124,1,100,0,117,0, + 114,86,122,10,124,0,106,3,125,1,87,0,110,18,4,0, + 116,1,121,84,1,0,1,0,1,0,89,0,110,2,48,0, + 122,10,124,0,106,4,125,5,87,0,110,22,4,0,116,1, + 121,118,1,0,1,0,1,0,100,0,125,5,89,0,110,2, + 48,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, + 114,170,122,10,124,1,106,5,125,2,87,0,110,26,4,0, + 116,1,121,168,1,0,1,0,1,0,100,0,125,2,89,0, + 110,6,48,0,124,5,125,2,122,10,124,0,106,6,125,6, + 87,0,110,22,4,0,116,1,121,206,1,0,1,0,1,0, + 100,0,125,6,89,0,110,2,48,0,122,14,116,7,124,0, + 106,8,131,1,125,7,87,0,110,22,4,0,116,1,121,244, + 1,0,1,0,1,0,100,0,125,7,89,0,110,2,48,0, + 116,9,124,4,124,1,124,2,100,1,141,3,125,3,124,5, + 100,0,117,0,144,1,114,18,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,120,0,0,0,70,84,41,13, + 114,113,0,0,0,114,2,0,0,0,114,9,0,0,0,114, + 106,0,0,0,114,115,0,0,0,218,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,119, + 0,0,0,114,124,0,0,0,114,129,0,0,0,114,123,0, + 0,0,41,8,114,104,0,0,0,114,116,0,0,0,114,120, + 0,0,0,114,103,0,0,0,114,20,0,0,0,90,8,108, + 111,99,97,116,105,111,110,114,129,0,0,0,114,123,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, + 117,108,101,201,1,0,0,115,74,0,0,0,2,2,10,1, + 12,1,6,1,8,2,4,1,6,2,8,1,2,1,10,1, + 12,1,6,2,2,1,10,1,12,1,10,1,8,1,8,1, + 2,1,10,1,12,1,10,1,4,2,2,1,10,1,12,1, + 10,1,2,1,14,1,12,1,10,1,14,2,20,1,6,1, + 6,1,4,1,255,128,114,149,0,0,0,70,169,1,218,8, + 111,118,101,114,114,105,100,101,99,2,0,0,0,0,0,0, + 0,1,0,0,0,5,0,0,0,8,0,0,0,67,0,0, + 0,115,214,1,0,0,124,2,115,20,116,0,124,1,100,1, + 100,0,131,3,100,0,117,0,114,52,122,12,124,0,106,1, + 124,1,95,2,87,0,110,18,4,0,116,3,121,50,1,0, + 1,0,1,0,89,0,110,2,48,0,124,2,115,72,116,0, + 124,1,100,2,100,0,131,3,100,0,117,0,114,174,124,0, + 106,4,125,3,124,3,100,0,117,0,114,144,124,0,106,5, + 100,0,117,1,114,144,116,6,100,0,117,0,114,108,116,7, + 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, + 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, + 100,0,124,1,95,11,122,10,124,3,124,1,95,12,87,0, + 110,18,4,0,116,3,121,172,1,0,1,0,1,0,89,0, + 110,2,48,0,124,2,115,194,116,0,124,1,100,3,100,0, + 131,3,100,0,117,0,114,226,122,12,124,0,106,13,124,1, + 95,14,87,0,110,18,4,0,116,3,121,224,1,0,1,0, + 1,0,89,0,110,2,48,0,122,10,124,0,124,1,95,15, + 87,0,110,18,4,0,116,3,121,254,1,0,1,0,1,0, + 89,0,110,2,48,0,124,2,144,1,115,24,116,0,124,1, + 100,4,100,0,131,3,100,0,117,0,144,1,114,70,124,0, + 106,5,100,0,117,1,144,1,114,70,122,12,124,0,106,5, + 124,1,95,16,87,0,110,20,4,0,116,3,144,1,121,68, + 1,0,1,0,1,0,89,0,110,2,48,0,124,0,106,17, + 144,1,114,210,124,2,144,1,115,102,116,0,124,1,100,5, + 100,0,131,3,100,0,117,0,144,1,114,136,122,12,124,0, + 106,18,124,1,95,11,87,0,110,20,4,0,116,3,144,1, + 121,134,1,0,1,0,1,0,89,0,110,2,48,0,124,2, + 144,1,115,160,116,0,124,1,100,6,100,0,131,3,100,0, + 117,0,144,1,114,210,124,0,106,19,100,0,117,1,144,1, + 114,210,122,14,124,0,106,19,124,1,95,20,87,0,124,1, + 83,0,4,0,116,3,144,1,121,208,1,0,1,0,1,0, + 89,0,124,1,83,0,48,0,124,1,83,0,41,7,78,114, + 9,0,0,0,114,106,0,0,0,218,11,95,95,112,97,99, + 107,97,103,101,95,95,114,148,0,0,0,114,115,0,0,0, + 114,146,0,0,0,41,21,114,13,0,0,0,114,20,0,0, + 0,114,9,0,0,0,114,2,0,0,0,114,116,0,0,0, + 114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0,0,0, + 114,152,0,0,0,114,113,0,0,0,114,148,0,0,0,114, + 130,0,0,0,114,120,0,0,0,114,129,0,0,0,114,146, + 0,0,0,41,5,114,103,0,0,0,114,104,0,0,0,114, + 151,0,0,0,114,116,0,0,0,114,153,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,18,95, + 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, + 115,246,1,0,0,115,104,0,0,0,20,4,2,1,12,1, + 12,1,6,1,20,2,6,1,8,1,10,2,8,1,4,1, + 6,1,10,2,8,1,6,1,6,11,2,1,10,1,12,1, + 6,1,20,2,2,1,12,1,12,1,6,1,2,2,10,1, + 12,1,6,1,24,2,12,1,2,1,12,1,14,1,6,1, + 8,2,24,1,2,1,12,1,14,1,6,1,24,2,12,1, + 2,1,10,1,4,3,14,254,2,1,4,1,2,255,4,1, + 255,128,114,155,0,0,0,99,1,0,0,0,0,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, + 1,110,20,116,0,124,0,106,1,100,3,131,2,114,50,116, + 3,100,4,131,1,130,1,124,1,100,1,117,0,114,68,116, + 4,124,0,106,5,131,1,125,1,116,6,124,0,124,1,131, + 2,1,0,124,1,83,0,41,5,122,43,67,114,101,97,116, + 101,32,97,32,109,111,100,117,108,101,32,98,97,115,101,100, + 32,111,110,32,116,104,101,32,112,114,111,118,105,100,101,100, + 32,115,112,101,99,46,78,218,13,99,114,101,97,116,101,95, + 109,111,100,117,108,101,218,11,101,120,101,99,95,109,111,100, + 117,108,101,122,66,108,111,97,100,101,114,115,32,116,104,97, + 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,11,0,0,0,114,116, + 0,0,0,114,156,0,0,0,114,83,0,0,0,114,21,0, + 0,0,114,20,0,0,0,114,155,0,0,0,169,2,114,103, + 0,0,0,114,104,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,109,111,100,117,108,101,95, + 102,114,111,109,95,115,112,101,99,62,2,0,0,115,20,0, + 0,0,4,3,12,1,14,3,12,1,8,1,8,2,10,1, + 10,1,4,1,255,128,114,159,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, + 0,114,14,100,2,110,4,124,0,106,0,125,1,124,0,106, + 1,100,1,117,0,114,64,124,0,106,2,100,1,117,0,114, + 50,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, + 1,124,0,106,2,161,2,83,0,124,0,106,4,114,84,100, + 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, + 3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114,109,0, + 0,0,114,110,0,0,0,114,111,0,0,0,250,18,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, + 41,5,114,20,0,0,0,114,120,0,0,0,114,116,0,0, + 0,114,49,0,0,0,114,130,0,0,0,41,2,114,103,0, + 0,0,114,20,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,114,0,0,0,79,2,0,0,115, + 18,0,0,0,20,3,10,1,10,1,10,1,14,2,6,2, + 14,1,16,2,255,128,114,114,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,10,0,0,0, + 67,0,0,0,115,26,1,0,0,124,0,106,0,125,2,116, + 1,124,2,131,1,143,246,1,0,116,2,106,3,160,4,124, + 2,161,1,124,1,117,1,114,54,100,1,160,5,124,2,161, + 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,122, + 160,124,0,106,7,100,3,117,0,114,106,124,0,106,8,100, + 3,117,0,114,90,116,6,100,4,124,0,106,0,100,2,141, + 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,110,80,116,9,124,0,124,1,100,5,100,6,141,3,1, + 0,116,10,124,0,106,7,100,7,131,2,115,174,116,11,124, + 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, + 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, + 2,161,1,1,0,110,12,124,0,106,7,160,16,124,1,161, + 1,1,0,87,0,116,2,106,3,160,17,124,0,106,0,161, + 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,110, + 28,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, + 1,116,2,106,3,124,0,106,0,60,0,48,0,87,0,100, + 3,4,0,4,0,131,3,1,0,124,1,83,0,49,0,144, + 1,115,12,48,0,1,0,1,0,1,0,89,0,1,0,124, + 1,83,0,41,9,122,70,69,120,101,99,117,116,101,32,116, + 104,101,32,115,112,101,99,39,115,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,117,108,101,32,105,110,32,97,110, + 32,101,120,105,115,116,105,110,103,32,109,111,100,117,108,101, + 39,115,32,110,97,109,101,115,112,97,99,101,46,122,30,109, + 111,100,117,108,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,19,0, + 0,0,78,250,14,109,105,115,115,105,110,103,32,108,111,97, + 100,101,114,84,114,150,0,0,0,114,157,0,0,0,250,55, + 46,101,120,101,99,95,109,111,100,117,108,101,40,41,32,110, + 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, + 103,32,98,97,99,107,32,116,111,32,108,111,97,100,95,109, + 111,100,117,108,101,40,41,41,18,114,20,0,0,0,114,54, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, + 0,0,114,49,0,0,0,114,83,0,0,0,114,116,0,0, + 0,114,123,0,0,0,114,155,0,0,0,114,11,0,0,0, + 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,218, + 13,73,109,112,111,114,116,87,97,114,110,105,110,103,218,11, + 108,111,97,100,95,109,111,100,117,108,101,114,157,0,0,0, + 218,3,112,111,112,41,4,114,103,0,0,0,114,104,0,0, + 0,114,20,0,0,0,114,102,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,100,0,0,0,96, + 2,0,0,115,50,0,0,0,6,2,10,1,16,1,10,1, + 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, + 16,1,12,2,14,1,12,2,2,128,14,4,14,1,14,255, + 26,1,4,1,18,255,4,1,255,128,114,100,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 8,0,0,0,67,0,0,0,115,18,1,0,0,122,18,124, + 0,106,0,160,1,124,0,106,2,161,1,1,0,87,0,110, + 46,1,0,1,0,1,0,124,0,106,2,116,3,106,4,118, + 0,114,64,116,3,106,4,160,5,124,0,106,2,161,1,125, + 1,124,1,116,3,106,4,124,0,106,2,60,0,130,0,116, + 3,106,4,160,5,124,0,106,2,161,1,125,1,124,1,116, + 3,106,4,124,0,106,2,60,0,116,6,124,1,100,1,100, + 0,131,3,100,0,117,0,114,140,122,12,124,0,106,0,124, + 1,95,7,87,0,110,18,4,0,116,8,121,138,1,0,1, + 0,1,0,89,0,110,2,48,0,116,6,124,1,100,2,100, + 0,131,3,100,0,117,0,114,216,122,40,124,1,106,9,124, + 1,95,10,116,11,124,1,100,3,131,2,115,194,124,0,106, + 2,160,12,100,4,161,1,100,5,25,0,124,1,95,10,87, + 0,110,18,4,0,116,8,121,214,1,0,1,0,1,0,89, + 0,110,2,48,0,116,6,124,1,100,6,100,0,131,3,100, + 0,117,0,144,1,114,14,122,12,124,0,124,1,95,13,87, + 0,124,1,83,0,4,0,116,8,144,1,121,12,1,0,1, + 0,1,0,89,0,124,1,83,0,48,0,124,1,83,0,41, + 7,78,114,106,0,0,0,114,152,0,0,0,114,148,0,0, + 0,114,135,0,0,0,114,25,0,0,0,114,113,0,0,0, + 41,14,114,116,0,0,0,114,164,0,0,0,114,20,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,165,0,0,0, + 114,13,0,0,0,114,106,0,0,0,114,2,0,0,0,114, + 9,0,0,0,114,152,0,0,0,114,11,0,0,0,114,136, + 0,0,0,114,113,0,0,0,114,158,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,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,126,2,0,0,115,62,0,0,0, + 2,3,18,1,6,1,12,1,14,1,12,1,2,1,14,3, + 12,1,16,1,2,1,12,1,12,1,6,1,16,1,2,1, + 8,4,10,1,22,1,12,1,6,1,18,1,2,1,8,1, + 4,3,14,254,2,1,4,1,2,255,4,1,255,128,114,166, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,11,0,0,0,67,0,0,0,115,240,0,0, + 0,124,0,106,0,100,0,117,1,114,58,116,1,124,0,106, + 0,100,1,131,2,115,58,116,2,124,0,106,0,131,1,155, + 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, + 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, + 1,125,2,100,3,124,0,95,8,122,158,124,2,116,9,106, + 10,124,0,106,11,60,0,122,50,124,0,106,0,100,0,117, + 0,114,122,124,0,106,12,100,0,117,0,114,134,116,13,100, + 4,124,0,106,11,100,5,141,2,130,1,124,0,106,0,160, + 14,124,2,161,1,1,0,87,0,110,40,1,0,1,0,1, + 0,122,14,116,9,106,10,124,0,106,11,61,0,87,0,130, + 0,4,0,116,15,121,176,1,0,1,0,1,0,89,0,130, + 0,48,0,116,9,106,10,160,16,124,0,106,11,161,1,125, + 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, + 6,124,0,106,11,124,0,106,0,131,3,1,0,87,0,100, + 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,48, + 0,41,8,78,114,157,0,0,0,114,162,0,0,0,84,114, + 161,0,0,0,114,19,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,18, + 114,116,0,0,0,114,11,0,0,0,114,7,0,0,0,114, + 95,0,0,0,114,96,0,0,0,114,163,0,0,0,114,166, + 0,0,0,114,159,0,0,0,90,13,95,105,110,105,116,105, + 97,108,105,122,105,110,103,114,18,0,0,0,114,99,0,0, + 0,114,20,0,0,0,114,123,0,0,0,114,83,0,0,0, + 114,157,0,0,0,114,67,0,0,0,114,165,0,0,0,114, + 80,0,0,0,41,3,114,103,0,0,0,114,102,0,0,0, 114,104,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,107,0,0,0,233,2,0,0,115,4,0, - 0,0,22,7,255,128,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,0,0,0,0, - 0,4,0,0,0,5,0,0,0,67,0,0,0,115,42,0, - 0,0,124,2,100,0,117,1,114,12,100,0,83,0,116,0, - 160,1,124,1,161,1,114,38,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,169,2,78,114, - 144,0,0,0,41,4,114,61,0,0,0,90,10,105,115,95, - 98,117,105,108,116,105,110,114,98,0,0,0,114,145,0,0, - 0,169,4,218,3,99,108,115,114,85,0,0,0,218,4,112, - 97,116,104,218,6,116,97,114,103,101,116,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,9,102,105,110,100, - 95,115,112,101,99,242,2,0,0,115,12,0,0,0,8,2, - 4,1,10,1,16,1,4,2,255,128,122,25,66,117,105,108, - 116,105,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,0,0,0, - 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, - 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, - 3,100,1,117,1,114,26,124,3,106,1,83,0,100,1,83, - 0,41,2,122,175,70,105,110,100,32,116,104,101,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,73,102,32,39,112,97,116,104, - 39,32,105,115,32,101,118,101,114,32,115,112,101,99,105,102, - 105,101,100,32,116,104,101,110,32,116,104,101,32,115,101,97, - 114,99,104,32,105,115,32,99,111,110,115,105,100,101,114,101, - 100,32,97,32,102,97,105,108,117,114,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0, - 0,41,4,114,174,0,0,0,114,85,0,0,0,114,175,0, - 0,0,114,103,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,251,2,0,0,115,6,0,0,0,12,9,18,1, - 255,128,122,27,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,102,105,110,100,95,109,111,100,117,108,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 4,0,0,0,67,0,0,0,115,46,0,0,0,124,0,106, - 0,116,1,106,2,118,1,114,34,116,3,100,1,160,4,124, - 0,106,0,161,1,124,0,106,0,100,2,141,2,130,1,116, - 5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0, - 0,78,41,8,114,20,0,0,0,114,18,0,0,0,114,82, - 0,0,0,114,83,0,0,0,114,49,0,0,0,114,71,0, - 0,0,114,61,0,0,0,90,14,99,114,101,97,116,101,95, - 98,117,105,108,116,105,110,114,168,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,156,0,0,0, - 7,3,0,0,115,12,0,0,0,12,3,12,1,4,1,6, - 255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,3,0,0,0,67,0,0,0,115,16,0, - 0,0,116,0,116,1,106,2,124,0,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, - 71,0,0,0,114,61,0,0,0,90,12,101,120,101,99,95, - 98,117,105,108,116,105,110,114,171,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,157,0,0,0, - 15,3,0,0,115,4,0,0,0,16,3,255,128,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, - 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,122,57, - 82,101,116,117,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,5,0,0,0,169, - 2,114,174,0,0,0,114,85,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,8,103,101,116,95, - 99,111,100,101,20,3,0,0,115,4,0,0,0,4,4,255, - 128,122,24,66,117,105,108,116,105,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,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,122, - 56,82,101,116,117,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,115,111,117, - 114,99,101,32,99,111,100,101,46,78,114,5,0,0,0,114, - 179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,26, - 3,0,0,115,4,0,0,0,4,4,255,128,122,26,66,117, - 105,108,116,105,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,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,3,122,52,82,101, - 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,78,114,5,0,0,0,114,179,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,122,0, - 0,0,32,3,0,0,115,4,0,0,0,4,4,255,128,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,18,114,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,145,0,0,0,218,12,115, - 116,97,116,105,99,109,101,116,104,111,100,114,107,0,0,0, - 218,11,99,108,97,115,115,109,101,116,104,111,100,114,177,0, - 0,0,114,178,0,0,0,114,156,0,0,0,114,157,0,0, - 0,114,90,0,0,0,114,180,0,0,0,114,181,0,0,0, - 114,122,0,0,0,114,105,0,0,0,114,164,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,169,0,0,0,222,2,0,0,115,48,0,0, - 0,8,0,4,2,4,7,2,2,10,1,2,8,12,1,2, - 8,12,1,2,11,10,1,2,7,10,1,2,4,2,1,12, - 1,2,4,2,1,12,1,2,4,2,1,12,1,12,4,255, - 128,114,169,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, - 144,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,101,5,100,3,100,4,132,0,131,1,90,6, - 101,7,100,22,100,6,100,7,132,1,131,1,90,8,101,7, - 100,23,100,8,100,9,132,1,131,1,90,9,101,5,100,10, - 100,11,132,0,131,1,90,10,101,5,100,12,100,13,132,0, - 131,1,90,11,101,7,100,14,100,15,132,0,131,1,90,12, - 101,7,101,13,100,16,100,17,132,0,131,1,131,1,90,14, - 101,7,101,13,100,18,100,19,132,0,131,1,131,1,90,15, - 101,7,101,13,100,20,100,21,132,0,131,1,131,1,90,16, - 100,5,83,0,41,24,218,14,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,122,142,77,101,116,97,32,112,97,116, - 104,32,105,109,112,111,114,116,32,102,111,114,32,102,114,111, - 122,101,110,32,109,111,100,117,108,101,115,46,10,10,32,32, - 32,32,65,108,108,32,109,101,116,104,111,100,115,32,97,114, - 101,32,101,105,116,104,101,114,32,99,108,97,115,115,32,111, - 114,32,115,116,97,116,105,99,32,109,101,116,104,111,100,115, - 32,116,111,32,97,118,111,105,100,32,116,104,101,32,110,101, - 101,100,32,116,111,10,32,32,32,32,105,110,115,116,97,110, - 116,105,97,116,101,32,116,104,101,32,99,108,97,115,115,46, - 10,10,32,32,32,32,90,6,102,114,111,122,101,110,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, - 0,0,0,67,0,0,0,115,16,0,0,0,100,1,160,0, - 124,0,106,1,116,2,106,3,161,2,83,0,41,3,114,170, - 0,0,0,114,160,0,0,0,78,41,4,114,49,0,0,0, - 114,9,0,0,0,114,184,0,0,0,114,145,0,0,0,41, - 1,218,1,109,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,107,0,0,0,52,3,0,0,115,4,0,0, - 0,16,7,255,128,122,26,70,114,111,122,101,110,73,109,112, + 6,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,162,2,0,0,115,58,0,0,0,10,2,12, + 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, + 1,10,1,10,1,14,1,16,3,6,1,2,1,12,1,2, + 3,12,254,2,1,2,1,2,255,14,6,12,1,18,1,6, + 2,4,2,8,254,255,128,114,167,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, + 0,67,0,0,0,115,54,0,0,0,116,0,124,0,106,1, + 131,1,143,24,1,0,116,2,124,0,131,1,87,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,40, + 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, + 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, + 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, + 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, + 101,99,39,115,32,108,111,97,100,101,114,46,10,10,32,32, + 32,32,84,104,101,32,109,111,100,117,108,101,32,105,115,32, + 110,111,116,32,97,100,100,101,100,32,116,111,32,105,116,115, + 32,112,97,114,101,110,116,46,10,10,32,32,32,32,73,102, + 32,97,32,109,111,100,117,108,101,32,105,115,32,97,108,114, + 101,97,100,121,32,105,110,32,115,121,115,46,109,111,100,117, + 108,101,115,44,32,116,104,97,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,54,0,0,0,114,20,0,0,0, + 114,167,0,0,0,169,1,114,103,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,101,0,0,0, + 207,2,0,0,115,6,0,0,0,12,9,42,1,255,128,114, + 101,0,0,0,99,0,0,0,0,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,100,2, + 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, + 100,20,100,6,100,7,132,1,131,1,90,8,101,7,100,21, + 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, + 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, + 90,11,101,7,101,12,100,14,100,15,132,0,131,1,131,1, + 90,13,101,7,101,12,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,12,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,16,131,1,90,17,100,5,83,0,41,22, + 218,15,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,122,144,77,101,116,97,32,112,97,116,104,32,105,109,112, + 111,114,116,32,102,111,114,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, + 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, + 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, + 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, + 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, + 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, + 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, + 32,32,32,122,8,98,117,105,108,116,45,105,110,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0, + 0,0,67,0,0,0,115,22,0,0,0,100,1,124,0,106, + 0,155,2,100,2,116,1,106,2,155,0,100,3,157,5,83, + 0,41,5,250,115,82,101,116,117,114,110,32,114,101,112,114, + 32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,84,104,101,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,46,32,32,84,104,101,32,105,109,112,111,114,116,32, + 109,97,99,104,105,110,101,114,121,32,100,111,101,115,32,116, + 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,8,60,109,111,100,117,108, + 101,32,122,2,32,40,122,2,41,62,78,41,3,114,9,0, + 0,0,114,169,0,0,0,114,145,0,0,0,169,1,114,104, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,107,0,0,0,233,2,0,0,115,4,0,0,0, + 22,7,255,128,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,0,0,0,0,0,4, - 0,0,0,5,0,0,0,67,0,0,0,115,30,0,0,0, - 116,0,160,1,124,1,161,1,114,26,116,2,124,1,124,0, - 124,0,106,3,100,1,141,3,83,0,100,0,83,0,114,172, - 0,0,0,41,4,114,61,0,0,0,114,92,0,0,0,114, - 98,0,0,0,114,145,0,0,0,114,173,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,177,0, - 0,0,61,3,0,0,115,8,0,0,0,10,2,16,1,4, - 2,255,128,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,0,0,0,0,0,3,0,0,0,3,0, - 0,0,67,0,0,0,115,18,0,0,0,116,0,160,1,124, - 1,161,1,114,14,124,0,83,0,100,1,83,0,41,2,122, - 93,70,105,110,100,32,97,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,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, - 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,61,0,0,0,114,92,0,0,0,41,3,114,174,0, - 0,0,114,85,0,0,0,114,175,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,178,0,0,0, - 68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114, - 168,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,156,0,0,0,77,3,0,0,115,4,0,0, - 0,4,0,255,128,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,0,0,0,0,0,0, - 3,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, - 0,124,0,106,0,106,1,125,1,116,2,160,3,124,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,91,0,0,0,41,10,114,113,0,0,0,114,20,0, - 0,0,114,61,0,0,0,114,92,0,0,0,114,83,0,0, - 0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0, - 114,20,0,0,0,218,4,99,111,100,101,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,157,0,0,0,81, - 3,0,0,115,16,0,0,0,8,2,10,1,10,1,2,1, - 6,255,12,2,16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,67,0,0,0,115,10,0, - 0,0,116,0,124,0,124,1,131,2,83,0,41,2,122,95, - 76,111,97,100,32,97,32,102,114,111,122,101,110,32,109,111, - 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,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,78, - 41,1,114,105,0,0,0,114,179,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,164,0,0,0, - 90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0,67,0, - 0,0,115,10,0,0,0,116,0,160,1,124,1,161,1,83, - 0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0,0,114, - 179,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,180,0,0,0,100,3,0,0,115,4,0,0, - 0,10,4,255,128,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,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,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,5,0,0,0, - 114,179,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,181,0,0,0,106,3,0,0,115,4,0, - 0,0,4,4,255,128,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,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,115,10,0,0,0,116, - 0,160,1,124,1,161,1,83,0,41,2,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,78,41,2,114,61, - 0,0,0,90,17,105,115,95,102,114,111,122,101,110,95,112, - 97,99,107,97,103,101,114,179,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,122,0,0,0,112, - 3,0,0,115,4,0,0,0,10,4,255,128,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,17, + 0,0,0,5,0,0,0,67,0,0,0,115,42,0,0,0, + 124,2,100,0,117,1,114,12,100,0,83,0,116,0,160,1, + 124,1,161,1,114,38,116,2,124,1,124,0,124,0,106,3, + 100,1,141,3,83,0,100,0,83,0,169,2,78,114,144,0, + 0,0,41,4,114,61,0,0,0,90,10,105,115,95,98,117, + 105,108,116,105,110,114,98,0,0,0,114,145,0,0,0,169, + 4,218,3,99,108,115,114,85,0,0,0,218,4,112,97,116, + 104,218,6,116,97,114,103,101,116,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,9,102,105,110,100,95,115, + 112,101,99,242,2,0,0,115,12,0,0,0,8,2,4,1, + 10,1,16,1,4,2,255,128,122,25,66,117,105,108,116,105, + 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,0,0,0,0,0, + 4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0, + 0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100, + 1,117,1,114,26,124,3,106,1,83,0,100,1,83,0,41, + 2,122,175,70,105,110,100,32,116,104,101,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,73,102,32,39,112,97,116,104,39,32, + 105,115,32,101,118,101,114,32,115,112,101,99,105,102,105,101, + 100,32,116,104,101,110,32,116,104,101,32,115,101,97,114,99, + 104,32,105,115,32,99,111,110,115,105,100,101,114,101,100,32, + 97,32,102,97,105,108,117,114,101,46,10,10,32,32,32,32, + 32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0,0,41, + 4,114,174,0,0,0,114,85,0,0,0,114,175,0,0,0, + 114,103,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,11,102,105,110,100,95,109,111,100,117,108, + 101,251,2,0,0,115,6,0,0,0,12,9,18,1,255,128, + 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,46,0,0,0,124,0,106,0,116, + 1,106,2,118,1,114,34,116,3,100,1,160,4,124,0,106, + 0,161,1,124,0,106,0,100,2,141,2,130,1,116,5,116, + 6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0,0,78, + 41,8,114,20,0,0,0,114,18,0,0,0,114,82,0,0, + 0,114,83,0,0,0,114,49,0,0,0,114,71,0,0,0, + 114,61,0,0,0,90,14,99,114,101,97,116,101,95,98,117, + 105,108,116,105,110,114,168,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,156,0,0,0,7,3, + 0,0,115,12,0,0,0,12,3,12,1,4,1,6,255,12, + 2,255,128,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,117, + 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,16,0,0,0, + 116,0,116,1,106,2,124,0,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,71,0, + 0,0,114,61,0,0,0,90,12,101,120,101,99,95,98,117, + 105,108,116,105,110,114,171,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,157,0,0,0,15,3, + 0,0,115,4,0,0,0,16,3,255,128,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,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,122,57,82,101, + 116,117,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,5,0,0,0,169,2,114, + 174,0,0,0,114,85,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,8,103,101,116,95,99,111, + 100,101,20,3,0,0,115,4,0,0,0,4,4,255,128,122, + 24,66,117,105,108,116,105,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,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,122,56,82, + 101,116,117,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,115,111,117,114,99, + 101,32,99,111,100,101,46,78,114,5,0,0,0,114,179,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,26,3,0, + 0,115,4,0,0,0,4,4,255,128,122,26,66,117,105,108, + 116,105,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,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,3,122,52,82,101,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,78,114,5,0,0,0,114,179,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,122,0,0,0, + 32,3,0,0,115,4,0,0,0,4,4,255,128,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,18,114,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,145,0,0,0,218,12,115,116,97, + 116,105,99,109,101,116,104,111,100,114,107,0,0,0,218,11, + 99,108,97,115,115,109,101,116,104,111,100,114,177,0,0,0, + 114,178,0,0,0,114,156,0,0,0,114,157,0,0,0,114, + 90,0,0,0,114,180,0,0,0,114,181,0,0,0,114,122, + 0,0,0,114,105,0,0,0,114,164,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,169,0,0,0,222,2,0,0,115,48,0,0,0,8, + 0,4,2,4,7,2,2,10,1,2,8,12,1,2,8,12, + 1,2,11,10,1,2,7,10,1,2,4,2,1,12,1,2, + 4,2,1,12,1,2,4,2,1,12,1,12,4,255,128,114, + 169,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,64,0,0,0,115,144,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, + 100,22,100,6,100,7,132,1,131,1,90,8,101,7,100,23, + 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, + 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, + 90,11,101,7,100,14,100,15,132,0,131,1,90,12,101,7, + 101,13,100,16,100,17,132,0,131,1,131,1,90,14,101,7, + 101,13,100,18,100,19,132,0,131,1,131,1,90,15,101,7, + 101,13,100,20,100,21,132,0,131,1,131,1,90,16,100,5, + 83,0,41,24,218,14,70,114,111,122,101,110,73,109,112,111, + 114,116,101,114,122,142,77,101,116,97,32,112,97,116,104,32, + 105,109,112,111,114,116,32,102,111,114,32,102,114,111,122,101, + 110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,32, + 65,108,108,32,109,101,116,104,111,100,115,32,97,114,101,32, + 101,105,116,104,101,114,32,99,108,97,115,115,32,111,114,32, + 115,116,97,116,105,99,32,109,101,116,104,111,100,115,32,116, + 111,32,97,118,111,105,100,32,116,104,101,32,110,101,101,100, + 32,116,111,10,32,32,32,32,105,110,115,116,97,110,116,105, + 97,116,101,32,116,104,101,32,99,108,97,115,115,46,10,10, + 32,32,32,32,90,6,102,114,111,122,101,110,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, + 0,67,0,0,0,115,16,0,0,0,100,1,160,0,124,0, + 106,1,116,2,106,3,161,2,83,0,41,3,114,170,0,0, + 0,114,160,0,0,0,78,41,4,114,49,0,0,0,114,9, + 0,0,0,114,184,0,0,0,114,145,0,0,0,41,1,218, + 1,109,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,107,0,0,0,52,3,0,0,115,4,0,0,0,16, + 7,255,128,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,0,0,0,0,0,0,0,0,4,0,0, + 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, + 160,1,124,1,161,1,114,26,116,2,124,1,124,0,124,0, + 106,3,100,1,141,3,83,0,100,0,83,0,114,172,0,0, + 0,41,4,114,61,0,0,0,114,92,0,0,0,114,98,0, + 0,0,114,145,0,0,0,114,173,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,177,0,0,0, + 61,3,0,0,115,8,0,0,0,10,2,16,1,4,2,255, + 128,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,0,0,0,0,0,3,0,0,0,3,0,0,0, + 67,0,0,0,115,18,0,0,0,116,0,160,1,124,1,161, + 1,114,14,124,0,83,0,100,1,83,0,41,2,122,93,70, + 105,110,100,32,97,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 105,115,32,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,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, + 61,0,0,0,114,92,0,0,0,41,3,114,174,0,0,0, + 114,85,0,0,0,114,175,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,178,0,0,0,68,3, + 0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114,168,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,156,0,0,0,77,3,0,0,115,4,0,0,0,4, + 0,255,128,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,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,124, + 0,106,0,106,1,125,1,116,2,160,3,124,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, + 91,0,0,0,41,10,114,113,0,0,0,114,20,0,0,0, + 114,61,0,0,0,114,92,0,0,0,114,83,0,0,0,114, + 49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0,114,20, + 0,0,0,218,4,99,111,100,101,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,157,0,0,0,81,3,0, + 0,115,16,0,0,0,8,2,10,1,10,1,2,1,6,255, + 12,2,16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, + 116,0,124,0,124,1,131,2,83,0,41,2,122,95,76,111, + 97,100,32,97,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,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,78,41,1, + 114,105,0,0,0,114,179,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,164,0,0,0,90,3, + 0,0,115,4,0,0,0,10,8,255,128,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, + 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, + 115,10,0,0,0,116,0,160,1,124,1,161,1,83,0,41, + 2,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, + 78,41,2,114,61,0,0,0,114,186,0,0,0,114,179,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,180,0,0,0,100,3,0,0,115,4,0,0,0,10, + 4,255,128,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,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, + 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,5,0,0,0,114,179, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,181,0,0,0,106,3,0,0,115,4,0,0,0, + 4,4,255,128,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,0,0,0,0,2,0,0,0, + 3,0,0,0,67,0,0,0,115,10,0,0,0,116,0,160, + 1,124,1,161,1,83,0,41,2,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,78,41,2,114,61,0,0, + 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,114,179,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,122,0,0,0,112,3,0, + 0,115,4,0,0,0,10,4,255,128,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,17,114,9, + 0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0, + 0,0,114,145,0,0,0,114,182,0,0,0,114,107,0,0, + 0,114,183,0,0,0,114,177,0,0,0,114,178,0,0,0, + 114,156,0,0,0,114,157,0,0,0,114,164,0,0,0,114, + 94,0,0,0,114,180,0,0,0,114,181,0,0,0,114,122, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,184,0,0,0,41,3,0,0, + 115,50,0,0,0,8,0,4,2,4,7,2,2,10,1,2, + 8,12,1,2,6,12,1,2,8,10,1,2,3,10,1,2, + 8,10,1,2,9,2,1,12,1,2,4,2,1,12,1,2, + 4,2,1,16,1,255,128,114,184,0,0,0,99,0,0,0, + 0,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,83,0,41,7,218,18,95,73, + 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, + 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, + 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, + 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,2,0,0,0,67,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, + 61,0,0,0,114,62,0,0,0,114,51,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,58,0, + 0,0,125,3,0,0,115,4,0,0,0,12,2,255,128,122, + 28,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, + 101,120,116,46,95,95,101,110,116,101,114,95,95,99,4,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,0, + 0,0,67,0,0,0,115,12,0,0,0,116,0,160,1,161, + 0,1,0,100,1,83,0,41,2,122,60,82,101,108,101,97, + 115,101,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,61,0,0,0,114, + 64,0,0,0,41,4,114,33,0,0,0,218,8,101,120,99, + 95,116,121,112,101,218,9,101,120,99,95,118,97,108,117,101, + 218,13,101,120,99,95,116,114,97,99,101,98,97,99,107,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,60, + 0,0,0,129,3,0,0,115,4,0,0,0,12,2,255,128, + 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,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, - 10,0,0,0,114,145,0,0,0,114,182,0,0,0,114,107, - 0,0,0,114,183,0,0,0,114,177,0,0,0,114,178,0, - 0,0,114,156,0,0,0,114,157,0,0,0,114,164,0,0, - 0,114,94,0,0,0,114,180,0,0,0,114,181,0,0,0, - 114,122,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,184,0,0,0,41,3, - 0,0,115,50,0,0,0,8,0,4,2,4,7,2,2,10, - 1,2,8,12,1,2,6,12,1,2,8,10,1,2,3,10, - 1,2,8,10,1,2,9,2,1,12,1,2,4,2,1,12, - 1,2,4,2,1,16,1,255,128,114,184,0,0,0,99,0, - 0,0,0,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,83,0,41,7,218,18, - 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, - 120,116,122,36,67,111,110,116,101,120,116,32,109,97,110,97, - 103,101,114,32,102,111,114,32,116,104,101,32,105,109,112,111, - 114,116,32,108,111,99,107,46,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,2,0,0,0,67,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,61,0,0,0,114,62,0,0,0,114,51,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 58,0,0,0,125,3,0,0,115,4,0,0,0,12,2,255, - 128,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, - 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 2,0,0,0,67,0,0,0,115,12,0,0,0,116,0,160, - 1,161,0,1,0,100,1,83,0,41,2,122,60,82,101,108, - 101,97,115,101,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,61,0,0, - 0,114,64,0,0,0,41,4,114,33,0,0,0,218,8,101, - 120,99,95,116,121,112,101,218,9,101,120,99,95,118,97,108, - 117,101,218,13,101,120,99,95,116,114,97,99,101,98,97,99, - 107,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,60,0,0,0,129,3,0,0,115,4,0,0,0,12,2, - 255,128,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,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,58,0,0,0,114,60,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,189,0,0,0,121,3,0,0,115,10,0, - 0,0,8,0,4,2,8,2,12,4,255,128,114,189,0,0, - 0,99,3,0,0,0,0,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,3,131, - 1,130,1,124,3,100,4,25,0,125,4,124,0,114,60,100, - 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, - 7,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,135,0,0,0,114,42,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,99,107, - 97,103,101,114,25,0,0,0,250,5,123,125,46,123,125,78, - 41,4,218,6,114,115,112,108,105,116,218,3,108,101,110,114, - 83,0,0,0,114,49,0,0,0,41,5,114,20,0,0,0, - 218,7,112,97,99,107,97,103,101,218,5,108,101,118,101,108, - 90,4,98,105,116,115,90,4,98,97,115,101,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,13,95,114,101, - 115,111,108,118,101,95,110,97,109,101,134,3,0,0,115,12, - 0,0,0,16,2,12,1,8,1,8,1,20,1,255,128,114, - 198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1,124,3, - 131,2,83,0,114,0,0,0,0,41,2,114,178,0,0,0, - 114,98,0,0,0,41,4,218,6,102,105,110,100,101,114,114, - 20,0,0,0,114,175,0,0,0,114,116,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, - 102,105,110,100,95,115,112,101,99,95,108,101,103,97,99,121, - 143,3,0,0,115,10,0,0,0,12,3,8,1,4,1,10, - 1,255,128,114,200,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,10,0,0,0,10,0,0,0,67,0,0, - 0,115,28,1,0,0,116,0,106,1,125,3,124,3,100,1, - 117,0,114,22,116,2,100,2,131,1,130,1,124,3,115,38, - 116,3,160,4,100,3,116,5,161,2,1,0,124,0,116,0, - 106,6,118,0,125,4,124,3,68,0,93,226,125,5,116,7, - 131,0,143,94,1,0,122,10,124,5,106,8,125,6,87,0, - 110,54,4,0,116,9,121,128,1,0,1,0,1,0,116,10, - 124,5,124,0,124,1,131,3,125,7,124,7,100,1,117,0, - 114,124,89,0,87,0,100,1,4,0,4,0,131,3,1,0, - 113,52,89,0,110,14,48,0,124,6,124,0,124,1,124,2, - 131,3,125,7,87,0,100,1,4,0,4,0,131,3,1,0, - 110,16,49,0,115,162,48,0,1,0,1,0,1,0,89,0, - 1,0,124,7,100,1,117,1,114,52,124,4,144,1,115,16, - 124,0,116,0,106,6,118,0,144,1,114,16,116,0,106,6, - 124,0,25,0,125,8,122,10,124,8,106,11,125,9,87,0, - 110,26,4,0,116,9,121,244,1,0,1,0,1,0,124,7, - 6,0,89,0,2,0,1,0,83,0,48,0,124,9,100,1, - 117,0,144,1,114,8,124,7,2,0,1,0,83,0,124,9, - 2,0,1,0,83,0,124,7,2,0,1,0,83,0,100,1, - 83,0,41,4,122,21,70,105,110,100,32,97,32,109,111,100, - 117,108,101,39,115,32,115,112,101,99,46,78,122,53,115,121, - 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,78, - 111,110,101,44,32,80,121,116,104,111,110,32,105,115,32,108, - 105,107,101,108,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,18,0, - 0,0,218,9,109,101,116,97,95,112,97,116,104,114,83,0, - 0,0,114,95,0,0,0,114,96,0,0,0,114,163,0,0, - 0,114,99,0,0,0,114,189,0,0,0,114,177,0,0,0, - 114,2,0,0,0,114,200,0,0,0,114,113,0,0,0,41, - 10,114,20,0,0,0,114,175,0,0,0,114,176,0,0,0, - 114,201,0,0,0,90,9,105,115,95,114,101,108,111,97,100, - 114,199,0,0,0,114,177,0,0,0,114,103,0,0,0,114, - 104,0,0,0,114,113,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,10,95,102,105,110,100,95, - 115,112,101,99,152,3,0,0,115,56,0,0,0,6,2,8, - 1,8,2,4,3,12,1,10,5,8,1,8,1,2,1,10, - 1,12,1,12,1,8,1,22,1,42,2,8,1,18,2,10, - 1,2,1,10,1,12,1,14,4,10,2,8,1,8,2,8, - 2,4,2,255,128,114,202,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,67, - 0,0,0,115,110,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,0,114,44,116,5,100,3, - 131,1,130,1,124,2,100,2,107,4,114,82,116,0,124,1, - 116,1,131,2,115,70,116,2,100,4,131,1,130,1,124,1, - 115,82,116,6,100,5,131,1,130,1,124,0,115,106,124,2, - 100,2,107,2,114,102,116,5,100,6,131,1,130,1,100,7, - 83,0,100,7,83,0,41,8,122,28,86,101,114,105,102,121, - 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34, - 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110, - 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44, - 32,110,111,116,32,123,125,114,25,0,0,0,122,18,108,101, - 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, - 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111, - 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110, - 103,122,54,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,119,105,116, - 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110, - 116,32,112,97,99,107,97,103,101,122,17,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,49,0,0,0, - 114,3,0,0,0,218,10,86,97,108,117,101,69,114,114,111, - 114,114,83,0,0,0,169,3,114,20,0,0,0,114,196,0, - 0,0,114,197,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,13,95,115,97,110,105,116,121,95, - 99,104,101,99,107,199,3,0,0,115,26,0,0,0,10,2, - 18,1,8,1,8,1,8,1,10,1,8,1,4,1,8,1, - 12,2,8,1,8,255,255,128,114,208,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,0,0, - 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,20, - 1,0,0,100,0,125,2,124,0,160,0,100,1,161,1,100, - 2,25,0,125,3,124,3,114,128,124,3,116,1,106,2,118, - 1,114,42,116,3,124,1,124,3,131,2,1,0,124,0,116, - 1,106,2,118,0,114,62,116,1,106,2,124,0,25,0,83, - 0,116,1,106,2,124,3,25,0,125,4,122,10,124,4,106, - 4,125,2,87,0,110,44,4,0,116,5,121,126,1,0,1, - 0,1,0,116,6,100,3,23,0,160,7,124,0,124,3,161, - 2,125,5,116,8,124,5,124,0,100,4,141,2,100,0,130, - 2,48,0,116,9,124,0,124,2,131,2,125,6,124,6,100, - 0,117,0,114,164,116,8,116,6,160,7,124,0,161,1,124, - 0,100,4,141,2,130,1,116,10,124,6,131,1,125,7,124, - 3,144,1,114,16,116,1,106,2,124,3,25,0,125,4,124, - 0,160,0,100,1,161,1,100,5,25,0,125,8,122,18,116, - 11,124,4,124,8,124,7,131,3,1,0,87,0,124,7,83, - 0,4,0,116,5,144,1,121,14,1,0,1,0,1,0,100, - 6,124,3,155,2,100,7,124,8,155,2,157,4,125,5,116, - 12,160,13,124,5,116,14,161,2,1,0,89,0,124,7,83, - 0,48,0,124,7,83,0,41,8,78,114,135,0,0,0,114, - 25,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,19,0, - 0,0,233,2,0,0,0,122,27,67,97,110,110,111,116,32, - 115,101,116,32,97,110,32,97,116,116,114,105,98,117,116,101, - 32,111,110,32,122,18,32,102,111,114,32,99,104,105,108,100, - 32,109,111,100,117,108,101,32,41,15,114,136,0,0,0,114, - 18,0,0,0,114,99,0,0,0,114,71,0,0,0,114,148, - 0,0,0,114,2,0,0,0,218,8,95,69,82,82,95,77, - 83,71,114,49,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,202,0,0, - 0,114,167,0,0,0,114,12,0,0,0,114,95,0,0,0, - 114,96,0,0,0,114,163,0,0,0,41,9,114,20,0,0, - 0,218,7,105,109,112,111,114,116,95,114,175,0,0,0,114, - 137,0,0,0,90,13,112,97,114,101,110,116,95,109,111,100, - 117,108,101,114,102,0,0,0,114,103,0,0,0,114,104,0, - 0,0,90,5,99,104,105,108,100,114,5,0,0,0,114,5, - 0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1,14,1,4,1, - 10,1,10,1,10,2,10,1,10,1,2,1,10,1,12,1, - 16,1,16,1,10,1,8,1,18,1,8,2,6,1,10,2, - 14,1,2,1,14,1,4,4,14,253,16,1,14,1,4,1, - 2,255,4,1,255,128,114,213,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0, - 67,0,0,0,115,128,0,0,0,116,0,124,0,131,1,143, - 62,1,0,116,1,106,2,160,3,124,0,116,4,161,2,125, - 2,124,2,116,4,117,0,114,56,116,5,124,0,124,1,131, - 2,87,0,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,87,0,100,1,4,0,4,0,131,3,1,0,110,16,49, - 0,115,76,48,0,1,0,1,0,1,0,89,0,1,0,124, - 2,100,1,117,0,114,116,100,2,160,6,124,0,161,1,125, - 3,116,7,124,3,124,0,100,3,141,2,130,1,116,8,124, - 0,131,1,1,0,124,2,83,0,41,4,122,25,70,105,110, - 100,32,97,110,100,32,108,111,97,100,32,116,104,101,32,109, - 111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0,0,114,18,0, - 0,0,114,99,0,0,0,114,38,0,0,0,218,14,95,78, - 69,69,68,83,95,76,79,65,68,73,78,71,114,213,0,0, - 0,114,49,0,0,0,114,211,0,0,0,114,69,0,0,0, - 41,4,114,20,0,0,0,114,212,0,0,0,114,104,0,0, - 0,114,79,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,14,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,253,3,0,0,115,24,0,0,0,10,2, - 14,1,8,1,54,1,8,2,4,1,2,1,4,255,12,2, - 8,2,4,1,255,128,114,215,0,0,0,114,25,0,0,0, - 99,3,0,0,0,0,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,3,125,0,116,2, - 124,0,116,3,131,2,83,0,41,3,97,50,1,0,0,73, - 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110, - 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101, - 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116, - 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99, - 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103, - 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32, - 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116, - 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32, - 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101, - 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116, - 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97, - 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97, - 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110, - 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97, - 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84, - 104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0,0,0,114,198, - 0,0,0,114,215,0,0,0,218,11,95,103,99,100,95,105, - 109,112,111,114,116,114,207,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,216,0,0,0,13,4, - 0,0,115,10,0,0,0,12,9,8,1,12,1,10,1,255, - 128,114,216,0,0,0,169,1,218,9,114,101,99,117,114,115, - 105,118,101,99,3,0,0,0,0,0,0,0,1,0,0,0, - 8,0,0,0,11,0,0,0,67,0,0,0,115,216,0,0, - 0,124,1,68,0,93,204,125,4,116,0,124,4,116,1,131, - 2,115,64,124,3,114,34,124,0,106,2,100,1,23,0,125, - 5,110,4,100,2,125,5,116,3,100,3,124,5,155,0,100, - 4,116,4,124,4,131,1,106,2,155,0,157,4,131,1,130, - 1,124,4,100,5,107,2,114,106,124,3,115,4,116,5,124, - 0,100,6,131,2,114,4,116,6,124,0,124,0,106,7,124, - 2,100,7,100,8,141,4,1,0,113,4,116,5,124,0,124, - 4,131,2,115,4,100,9,160,8,124,0,106,2,124,4,161, - 2,125,6,122,14,116,9,124,2,124,6,131,2,1,0,87, - 0,113,4,4,0,116,10,121,214,1,0,125,7,1,0,122, - 42,124,7,106,11,124,6,107,2,114,200,116,12,106,13,160, - 14,124,6,116,15,161,2,100,10,117,1,114,200,87,0,89, - 0,100,10,125,7,126,7,113,4,130,0,100,10,125,7,126, - 7,48,0,124,0,83,0,48,0,41,11,122,238,70,105,103, - 117,114,101,32,111,117,116,32,119,104,97,116,32,95,95,105, - 109,112,111,114,116,95,95,32,115,104,111,117,108,100,32,114, - 101,116,117,114,110,46,10,10,32,32,32,32,84,104,101,32, - 105,109,112,111,114,116,95,32,112,97,114,97,109,101,116,101, - 114,32,105,115,32,97,32,99,97,108,108,97,98,108,101,32, - 119,104,105,99,104,32,116,97,107,101,115,32,116,104,101,32, - 110,97,109,101,32,111,102,32,109,111,100,117,108,101,32,116, - 111,10,32,32,32,32,105,109,112,111,114,116,46,32,73,116, - 32,105,115,32,114,101,113,117,105,114,101,100,32,116,111,32, - 100,101,99,111,117,112,108,101,32,116,104,101,32,102,117,110, - 99,116,105,111,110,32,102,114,111,109,32,97,115,115,117,109, - 105,110,103,32,105,109,112,111,114,116,108,105,98,39,115,10, - 32,32,32,32,105,109,112,111,114,116,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,105,115,32,100,101,115, - 105,114,101,100,46,10,10,32,32,32,32,122,8,46,95,95, - 97,108,108,95,95,122,13,96,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, - 217,0,0,0,114,193,0,0,0,78,41,16,114,203,0,0, - 0,114,204,0,0,0,114,9,0,0,0,114,205,0,0,0, - 114,3,0,0,0,114,11,0,0,0,218,16,95,104,97,110, - 100,108,101,95,102,114,111,109,108,105,115,116,114,220,0,0, - 0,114,49,0,0,0,114,71,0,0,0,114,211,0,0,0, - 114,20,0,0,0,114,18,0,0,0,114,99,0,0,0,114, - 38,0,0,0,114,214,0,0,0,41,8,114,104,0,0,0, - 218,8,102,114,111,109,108,105,115,116,114,212,0,0,0,114, - 218,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,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,221,0, - 0,0,28,4,0,0,115,54,0,0,0,8,10,10,1,4, - 1,12,1,4,2,10,1,8,1,8,255,8,2,14,1,10, - 1,2,1,8,255,10,2,14,1,2,1,14,1,14,1,10, - 4,16,1,2,255,12,2,2,1,8,128,4,1,2,248,255, - 128,114,221,0,0,0,99,1,0,0,0,0,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,117,1,114,82, - 124,2,100,3,117,1,114,78,124,1,124,2,106,1,107,3, - 114,78,116,2,106,3,100,4,124,1,155,2,100,5,124,2, - 106,1,155,2,100,6,157,5,116,4,100,7,100,8,141,3, - 1,0,124,1,83,0,124,2,100,3,117,1,114,96,124,2, - 106,1,83,0,116,2,106,3,100,9,116,4,100,7,100,8, - 141,3,1,0,124,0,100,10,25,0,125,1,100,11,124,0, - 118,1,114,142,124,1,160,5,100,12,161,1,100,13,25,0, - 125,1,124,1,83,0,41,14,122,167,67,97,108,99,117,108, - 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, - 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, - 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, - 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, - 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, - 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, - 32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108,122,89,99,97,110,39, - 116,32,114,101,115,111,108,118,101,32,112,97,99,107,97,103, - 101,32,102,114,111,109,32,95,95,115,112,101,99,95,95,32, - 111,114,32,95,95,112,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,9,0,0,0,114,148,0,0,0,114, - 135,0,0,0,114,25,0,0,0,41,6,114,38,0,0,0, - 114,137,0,0,0,114,95,0,0,0,114,96,0,0,0,114, - 163,0,0,0,114,136,0,0,0,41,3,218,7,103,108,111, - 98,97,108,115,114,196,0,0,0,114,103,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,17,95, - 99,97,108,99,95,95,95,112,97,99,107,97,103,101,95,95, - 65,4,0,0,115,44,0,0,0,10,7,10,1,8,1,18, - 1,6,1,2,1,4,255,4,1,6,255,4,2,6,254,4, - 3,8,1,6,1,6,2,4,2,6,254,8,3,8,1,14, - 1,4,1,255,128,114,227,0,0,0,114,5,0,0,0,99, - 5,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 5,0,0,0,67,0,0,0,115,174,0,0,0,124,4,100, - 1,107,2,114,18,116,0,124,0,131,1,125,5,110,36,124, - 1,100,2,117,1,114,30,124,1,110,2,105,0,125,6,116, - 1,124,6,131,1,125,7,116,0,124,0,124,7,124,4,131, - 3,125,5,124,3,115,148,124,4,100,1,107,2,114,84,116, - 0,124,0,160,2,100,3,161,1,100,1,25,0,131,1,83, - 0,124,0,115,92,124,5,83,0,116,3,124,0,131,1,116, - 3,124,0,160,2,100,3,161,1,100,1,25,0,131,1,24, - 0,125,8,116,4,106,5,124,5,106,6,100,2,116,3,124, - 5,106,6,131,1,124,8,24,0,133,2,25,0,25,0,83, - 0,116,7,124,5,100,4,131,2,114,170,116,8,124,5,124, - 3,116,0,131,3,83,0,124,5,83,0,41,5,97,215,1, - 0,0,73,109,112,111,114,116,32,97,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,84,104,101,32,39,103,108,111, - 98,97,108,115,39,32,97,114,103,117,109,101,110,116,32,105, - 115,32,117,115,101,100,32,116,111,32,105,110,102,101,114,32, - 119,104,101,114,101,32,116,104,101,32,105,109,112,111,114,116, - 32,105,115,32,111,99,99,117,114,114,105,110,103,32,102,114, - 111,109,10,32,32,32,32,116,111,32,104,97,110,100,108,101, - 32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,116, - 115,46,32,84,104,101,32,39,108,111,99,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, - 114,101,100,46,32,84,104,101,10,32,32,32,32,39,102,114, - 111,109,108,105,115,116,39,32,97,114,103,117,109,101,110,116, - 32,115,112,101,99,105,102,105,101,115,32,119,104,97,116,32, - 115,104,111,117,108,100,32,101,120,105,115,116,32,97,115,32, - 97,116,116,114,105,98,117,116,101,115,32,111,110,32,116,104, - 101,32,109,111,100,117,108,101,10,32,32,32,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,32,40,101,46,103, - 46,32,96,96,102,114,111,109,32,109,111,100,117,108,101,32, - 105,109,112,111,114,116,32,60,102,114,111,109,108,105,115,116, - 62,96,96,41,46,32,32,84,104,101,32,39,108,101,118,101, - 108,39,10,32,32,32,32,97,114,103,117,109,101,110,116,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,112, - 97,99,107,97,103,101,32,108,111,99,97,116,105,111,110,32, - 116,111,32,105,109,112,111,114,116,32,102,114,111,109,32,105, - 110,32,97,32,114,101,108,97,116,105,118,101,10,32,32,32, - 32,105,109,112,111,114,116,32,40,101,46,103,46,32,96,96, - 102,114,111,109,32,46,46,112,107,103,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,25,0,0,0,78,114, - 135,0,0,0,114,148,0,0,0,41,9,114,216,0,0,0, - 114,227,0,0,0,218,9,112,97,114,116,105,116,105,111,110, - 114,195,0,0,0,114,18,0,0,0,114,99,0,0,0,114, - 9,0,0,0,114,11,0,0,0,114,221,0,0,0,41,9, - 114,20,0,0,0,114,226,0,0,0,218,6,108,111,99,97, - 108,115,114,222,0,0,0,114,197,0,0,0,114,104,0,0, - 0,90,8,103,108,111,98,97,108,115,95,114,196,0,0,0, - 90,7,99,117,116,95,111,102,102,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,10,95,95,105,109,112,111, - 114,116,95,95,92,4,0,0,115,32,0,0,0,8,11,10, - 1,16,2,8,1,12,1,4,1,8,3,18,1,4,1,4, - 1,26,4,30,3,10,1,12,1,4,2,255,128,114,230,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, + 10,0,0,0,114,58,0,0,0,114,60,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,189,0,0,0,121,3,0,0,115,10,0,0,0, + 8,0,4,2,8,2,12,4,255,128,114,189,0,0,0,99, + 3,0,0,0,0,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,3,131,1,130, + 1,124,3,100,4,25,0,125,4,124,0,114,60,100,5,160, + 3,124,4,124,0,161,2,83,0,124,4,83,0,41,7,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,135,0,0,0,114,42,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,99,107,97,103, + 101,114,25,0,0,0,250,5,123,125,46,123,125,78,41,4, + 218,6,114,115,112,108,105,116,218,3,108,101,110,114,83,0, + 0,0,114,49,0,0,0,41,5,114,20,0,0,0,218,7, + 112,97,99,107,97,103,101,218,5,108,101,118,101,108,90,4, + 98,105,116,115,90,4,98,97,115,101,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,13,95,114,101,115,111, + 108,118,101,95,110,97,109,101,134,3,0,0,115,12,0,0, + 0,16,2,12,1,8,1,8,1,20,1,255,128,114,198,0, + 0,0,99,3,0,0,0,0,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, + 117,0,114,24,100,0,83,0,116,1,124,1,124,3,131,2, + 83,0,114,0,0,0,0,41,2,114,178,0,0,0,114,98, + 0,0,0,41,4,218,6,102,105,110,100,101,114,114,20,0, + 0,0,114,175,0,0,0,114,116,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,17,95,102,105, + 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, + 0,0,115,10,0,0,0,12,3,8,1,4,1,10,1,255, + 128,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, + 0,0,0,10,0,0,0,10,0,0,0,67,0,0,0,115, + 28,1,0,0,116,0,106,1,125,3,124,3,100,1,117,0, + 114,22,116,2,100,2,131,1,130,1,124,3,115,38,116,3, + 160,4,100,3,116,5,161,2,1,0,124,0,116,0,106,6, + 118,0,125,4,124,3,68,0,93,226,125,5,116,7,131,0, + 143,94,1,0,122,10,124,5,106,8,125,6,87,0,110,54, + 4,0,116,9,121,128,1,0,1,0,1,0,116,10,124,5, + 124,0,124,1,131,3,125,7,124,7,100,1,117,0,114,124, + 89,0,87,0,100,1,4,0,4,0,131,3,1,0,113,52, + 89,0,110,14,48,0,124,6,124,0,124,1,124,2,131,3, + 125,7,87,0,100,1,4,0,4,0,131,3,1,0,110,16, + 49,0,115,162,48,0,1,0,1,0,1,0,89,0,1,0, + 124,7,100,1,117,1,114,52,124,4,144,1,115,16,124,0, + 116,0,106,6,118,0,144,1,114,16,116,0,106,6,124,0, + 25,0,125,8,122,10,124,8,106,11,125,9,87,0,110,26, + 4,0,116,9,121,244,1,0,1,0,1,0,124,7,6,0, + 89,0,2,0,1,0,83,0,48,0,124,9,100,1,117,0, + 144,1,114,8,124,7,2,0,1,0,83,0,124,9,2,0, + 1,0,83,0,124,7,2,0,1,0,83,0,100,1,83,0, + 41,4,122,21,70,105,110,100,32,97,32,109,111,100,117,108, + 101,39,115,32,115,112,101,99,46,78,122,53,115,121,115,46, + 109,101,116,97,95,112,97,116,104,32,105,115,32,78,111,110, + 101,44,32,80,121,116,104,111,110,32,105,115,32,108,105,107, + 101,108,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,18,0,0,0, + 218,9,109,101,116,97,95,112,97,116,104,114,83,0,0,0, + 114,95,0,0,0,114,96,0,0,0,114,163,0,0,0,114, + 99,0,0,0,114,189,0,0,0,114,177,0,0,0,114,2, + 0,0,0,114,200,0,0,0,114,113,0,0,0,41,10,114, + 20,0,0,0,114,175,0,0,0,114,176,0,0,0,114,201, + 0,0,0,90,9,105,115,95,114,101,108,111,97,100,114,199, + 0,0,0,114,177,0,0,0,114,103,0,0,0,114,104,0, + 0,0,114,113,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,10,95,102,105,110,100,95,115,112, + 101,99,152,3,0,0,115,56,0,0,0,6,2,8,1,8, + 2,4,3,12,1,10,5,8,1,8,1,2,1,10,1,12, + 1,12,1,8,1,22,1,42,2,8,1,18,2,10,1,2, + 1,10,1,12,1,14,4,10,2,8,1,8,2,8,2,4, + 2,255,128,114,202,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,5,0,0,0,67,0,0, + 0,115,110,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,0,114,44,116,5,100,3,131,1, + 130,1,124,2,100,2,107,4,114,82,116,0,124,1,116,1, + 131,2,115,70,116,2,100,4,131,1,130,1,124,1,115,82, + 116,6,100,5,131,1,130,1,124,0,115,106,124,2,100,2, + 107,2,114,102,116,5,100,6,131,1,130,1,100,7,83,0, + 100,7,83,0,41,8,122,28,86,101,114,105,102,121,32,97, + 114,103,117,109,101,110,116,115,32,97,114,101,32,34,115,97, + 110,101,34,46,122,31,109,111,100,117,108,101,32,110,97,109, + 101,32,109,117,115,116,32,98,101,32,115,116,114,44,32,110, + 111,116,32,123,125,114,25,0,0,0,122,18,108,101,118,101, + 108,32,109,117,115,116,32,98,101,32,62,61,32,48,122,31, + 95,95,112,97,99,107,97,103,101,95,95,32,110,111,116,32, + 115,101,116,32,116,111,32,97,32,115,116,114,105,110,103,122, + 54,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,119,105,116,104,32, + 110,111,32,107,110,111,119,110,32,112,97,114,101,110,116,32, + 112,97,99,107,97,103,101,122,17,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,49,0,0,0,114,3, + 0,0,0,218,10,86,97,108,117,101,69,114,114,111,114,114, + 83,0,0,0,169,3,114,20,0,0,0,114,196,0,0,0, + 114,197,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104, + 101,99,107,199,3,0,0,115,26,0,0,0,10,2,18,1, + 8,1,8,1,8,1,10,1,8,1,4,1,8,1,12,2, + 8,1,8,255,255,128,114,208,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,0,0,0,0, + 9,0,0,0,8,0,0,0,67,0,0,0,115,20,1,0, + 0,100,0,125,2,124,0,160,0,100,1,161,1,100,2,25, + 0,125,3,124,3,114,128,124,3,116,1,106,2,118,1,114, + 42,116,3,124,1,124,3,131,2,1,0,124,0,116,1,106, + 2,118,0,114,62,116,1,106,2,124,0,25,0,83,0,116, + 1,106,2,124,3,25,0,125,4,122,10,124,4,106,4,125, + 2,87,0,110,44,4,0,116,5,121,126,1,0,1,0,1, + 0,116,6,100,3,23,0,160,7,124,0,124,3,161,2,125, + 5,116,8,124,5,124,0,100,4,141,2,100,0,130,2,48, + 0,116,9,124,0,124,2,131,2,125,6,124,6,100,0,117, + 0,114,164,116,8,116,6,160,7,124,0,161,1,124,0,100, + 4,141,2,130,1,116,10,124,6,131,1,125,7,124,3,144, + 1,114,16,116,1,106,2,124,3,25,0,125,4,124,0,160, + 0,100,1,161,1,100,5,25,0,125,8,122,18,116,11,124, + 4,124,8,124,7,131,3,1,0,87,0,124,7,83,0,4, + 0,116,5,144,1,121,14,1,0,1,0,1,0,100,6,124, + 3,155,2,100,7,124,8,155,2,157,4,125,5,116,12,160, + 13,124,5,116,14,161,2,1,0,89,0,124,7,83,0,48, + 0,124,7,83,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0, + 233,2,0,0,0,122,27,67,97,110,110,111,116,32,115,101, + 116,32,97,110,32,97,116,116,114,105,98,117,116,101,32,111, + 110,32,122,18,32,102,111,114,32,99,104,105,108,100,32,109, + 111,100,117,108,101,32,41,15,114,136,0,0,0,114,18,0, + 0,0,114,99,0,0,0,114,71,0,0,0,114,148,0,0, + 0,114,2,0,0,0,218,8,95,69,82,82,95,77,83,71, + 114,49,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,202,0,0,0,114, + 167,0,0,0,114,12,0,0,0,114,95,0,0,0,114,96, + 0,0,0,114,163,0,0,0,41,9,114,20,0,0,0,218, + 7,105,109,112,111,114,116,95,114,175,0,0,0,114,137,0, + 0,0,90,13,112,97,114,101,110,116,95,109,111,100,117,108, + 101,114,102,0,0,0,114,103,0,0,0,114,104,0,0,0, + 90,5,99,104,105,108,100,114,5,0,0,0,114,5,0,0, + 0,114,6,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,218, + 3,0,0,115,60,0,0,0,4,1,14,1,4,1,10,1, + 10,1,10,2,10,1,10,1,2,1,10,1,12,1,16,1, + 16,1,10,1,8,1,18,1,8,2,6,1,10,2,14,1, + 2,1,14,1,4,4,14,253,16,1,14,1,4,1,2,255, + 4,1,255,128,114,213,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,8,0,0,0,67,0, + 0,0,115,128,0,0,0,116,0,124,0,131,1,143,62,1, + 0,116,1,106,2,160,3,124,0,116,4,161,2,125,2,124, + 2,116,4,117,0,114,56,116,5,124,0,124,1,131,2,87, + 0,2,0,100,1,4,0,4,0,131,3,1,0,83,0,87, + 0,100,1,4,0,4,0,131,3,1,0,110,16,49,0,115, + 76,48,0,1,0,1,0,1,0,89,0,1,0,124,2,100, + 1,117,0,114,116,100,2,160,6,124,0,161,1,125,3,116, + 7,124,3,124,0,100,3,141,2,130,1,116,8,124,0,131, + 1,1,0,124,2,83,0,41,4,122,25,70,105,110,100,32, + 97,110,100,32,108,111,97,100,32,116,104,101,32,109,111,100, + 117,108,101,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, + 19,0,0,0,41,9,114,54,0,0,0,114,18,0,0,0, + 114,99,0,0,0,114,38,0,0,0,218,14,95,78,69,69, + 68,83,95,76,79,65,68,73,78,71,114,213,0,0,0,114, + 49,0,0,0,114,211,0,0,0,114,69,0,0,0,41,4, + 114,20,0,0,0,114,212,0,0,0,114,104,0,0,0,114, + 79,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,14,95,102,105,110,100,95,97,110,100,95,108, + 111,97,100,253,3,0,0,115,24,0,0,0,10,2,14,1, + 8,1,54,1,8,2,4,1,2,1,4,255,12,2,8,2, + 4,1,255,128,114,215,0,0,0,114,25,0,0,0,99,3, + 0,0,0,0,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,3,125,0,116,2,124,0, + 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, + 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, + 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, + 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, + 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, + 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, + 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, + 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, + 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, + 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, + 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, + 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, + 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, + 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, + 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, + 115,32,105,110,99,108,117,100,101,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, + 25,0,0,0,78,41,4,114,208,0,0,0,114,198,0,0, + 0,114,215,0,0,0,218,11,95,103,99,100,95,105,109,112, + 111,114,116,114,207,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,216,0,0,0,13,4,0,0, + 115,10,0,0,0,12,9,8,1,12,1,10,1,255,128,114, + 216,0,0,0,169,1,218,9,114,101,99,117,114,115,105,118, + 101,99,3,0,0,0,0,0,0,0,1,0,0,0,8,0, + 0,0,11,0,0,0,67,0,0,0,115,216,0,0,0,124, + 1,68,0,93,204,125,4,116,0,124,4,116,1,131,2,115, + 64,124,3,114,34,124,0,106,2,100,1,23,0,125,5,110, + 4,100,2,125,5,116,3,100,3,124,5,155,0,100,4,116, + 4,124,4,131,1,106,2,155,0,157,4,131,1,130,1,124, + 4,100,5,107,2,114,106,124,3,115,4,116,5,124,0,100, + 6,131,2,114,4,116,6,124,0,124,0,106,7,124,2,100, + 7,100,8,141,4,1,0,113,4,116,5,124,0,124,4,131, + 2,115,4,100,9,160,8,124,0,106,2,124,4,161,2,125, + 6,122,14,116,9,124,2,124,6,131,2,1,0,87,0,113, + 4,4,0,116,10,121,214,1,0,125,7,1,0,122,42,124, + 7,106,11,124,6,107,2,114,200,116,12,106,13,160,14,124, + 6,116,15,161,2,100,10,117,1,114,200,87,0,89,0,100, + 10,125,7,126,7,113,4,130,0,100,10,125,7,126,7,48, + 0,124,0,83,0,48,0,41,11,122,238,70,105,103,117,114, + 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, + 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, + 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, + 112,111,114,116,95,32,112,97,114,97,109,101,116,101,114,32, + 105,115,32,97,32,99,97,108,108,97,98,108,101,32,119,104, + 105,99,104,32,116,97,107,101,115,32,116,104,101,32,110,97, + 109,101,32,111,102,32,109,111,100,117,108,101,32,116,111,10, + 32,32,32,32,105,109,112,111,114,116,46,32,73,116,32,105, + 115,32,114,101,113,117,105,114,101,100,32,116,111,32,100,101, + 99,111,117,112,108,101,32,116,104,101,32,102,117,110,99,116, + 105,111,110,32,102,114,111,109,32,97,115,115,117,109,105,110, + 103,32,105,109,112,111,114,116,108,105,98,39,115,10,32,32, + 32,32,105,109,112,111,114,116,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,105,115,32,100,101,115,105,114, + 101,100,46,10,10,32,32,32,32,122,8,46,95,95,97,108, + 108,95,95,122,13,96,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,217,0, + 0,0,114,193,0,0,0,78,41,16,114,203,0,0,0,114, + 204,0,0,0,114,9,0,0,0,114,205,0,0,0,114,3, + 0,0,0,114,11,0,0,0,218,16,95,104,97,110,100,108, + 101,95,102,114,111,109,108,105,115,116,114,220,0,0,0,114, + 49,0,0,0,114,71,0,0,0,114,211,0,0,0,114,20, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, + 0,0,114,214,0,0,0,41,8,114,104,0,0,0,218,8, + 102,114,111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,221,0,0,0, + 28,4,0,0,115,54,0,0,0,8,10,10,1,4,1,12, + 1,4,2,10,1,8,1,8,255,8,2,14,1,10,1,2, + 1,8,255,10,2,14,1,2,1,14,1,14,1,10,4,16, + 1,2,255,12,2,2,1,8,128,4,1,2,248,255,128,114, + 221,0,0,0,99,1,0,0,0,0,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,117,1,114,82,124,2, + 100,3,117,1,114,78,124,1,124,2,106,1,107,3,114,78, + 116,2,106,3,100,4,124,1,155,2,100,5,124,2,106,1, + 155,2,100,6,157,5,116,4,100,7,100,8,141,3,1,0, + 124,1,83,0,124,2,100,3,117,1,114,96,124,2,106,1, + 83,0,116,2,106,3,100,9,116,4,100,7,100,8,141,3, + 1,0,124,0,100,10,25,0,125,1,100,11,124,0,118,1, + 114,142,124,1,160,5,100,12,161,1,100,13,25,0,125,1, + 124,1,83,0,41,14,122,167,67,97,108,99,117,108,97,116, + 101,32,119,104,97,116,32,95,95,112,97,99,107,97,103,101, + 95,95,32,115,104,111,117,108,100,32,98,101,46,10,10,32, + 32,32,32,95,95,112,97,99,107,97,103,101,95,95,32,105, + 115,32,110,111,116,32,103,117,97,114,97,110,116,101,101,100, + 32,116,111,32,98,101,32,100,101,102,105,110,101,100,32,111, + 114,32,99,111,117,108,100,32,98,101,32,115,101,116,32,116, + 111,32,78,111,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, + 152,0,0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32, + 114,101,115,111,108,118,101,32,112,97,99,107,97,103,101,32, + 102,114,111,109,32,95,95,115,112,101,99,95,95,32,111,114, + 32,95,95,112,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,9,0,0,0,114,148,0,0,0,114,135,0, + 0,0,114,25,0,0,0,41,6,114,38,0,0,0,114,137, + 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, + 0,0,114,136,0,0,0,41,3,218,7,103,108,111,98,97, + 108,115,114,196,0,0,0,114,103,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,17,95,99,97, + 108,99,95,95,95,112,97,99,107,97,103,101,95,95,65,4, + 0,0,115,44,0,0,0,10,7,10,1,8,1,18,1,6, + 1,2,1,4,255,4,1,6,255,4,2,6,254,4,3,8, + 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, + 1,255,128,114,227,0,0,0,114,5,0,0,0,99,5,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,5,0, + 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, + 2,114,18,116,0,124,0,131,1,125,5,110,36,124,1,100, + 2,117,1,114,30,124,1,110,2,105,0,125,6,116,1,124, + 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, + 5,124,3,115,148,124,4,100,1,107,2,114,84,116,0,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, + 0,115,92,124,5,83,0,116,3,124,0,131,1,116,3,124, + 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, + 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, + 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, + 7,124,5,100,4,131,2,114,170,116,8,124,5,124,3,116, + 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, + 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, + 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, + 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, + 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, + 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, + 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, + 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, + 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, + 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, + 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, + 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, + 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, + 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, + 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, + 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, + 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, + 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, + 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, + 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, + 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, + 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, + 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, + 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, + 111,109,32,46,46,112,107,103,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,25,0,0,0,78,114,135,0, + 0,0,114,148,0,0,0,41,9,114,216,0,0,0,114,227, + 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,195, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, + 0,0,114,11,0,0,0,114,221,0,0,0,41,9,114,20, + 0,0,0,114,226,0,0,0,218,6,108,111,99,97,108,115, + 114,222,0,0,0,114,197,0,0,0,114,104,0,0,0,90, + 8,103,108,111,98,97,108,115,95,114,196,0,0,0,90,7, + 99,117,116,95,111,102,102,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,10,95,95,105,109,112,111,114,116, + 95,95,92,4,0,0,115,32,0,0,0,8,11,10,1,16, + 2,8,1,12,1,4,1,8,3,18,1,4,1,4,1,26, + 4,30,3,10,1,12,1,4,2,255,128,114,230,0,0,0, + 99,1,0,0,0,0,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,117,0,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,169,0,0,0,114,177,0,0,0,114,83, + 0,0,0,114,167,0,0,0,41,2,114,20,0,0,0,114, + 103,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,18,95,98,117,105,108,116,105,110,95,102,114, + 111,109,95,110,97,109,101,129,4,0,0,115,10,0,0,0, + 10,1,8,1,12,1,8,1,255,128,114,231,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, + 5,0,0,0,67,0,0,0,115,162,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,0,68,0,93,68,92,2,125,3,125,4,116, + 5,124,4,124,2,131,2,114,26,124,3,116,1,106,6,118, + 0,114,60,116,7,125,5,110,14,116,0,160,8,124,3,161, + 1,114,26,116,9,125,5,116,10,124,4,124,5,131,2,125, + 6,116,11,124,6,124,4,131,2,1,0,113,26,116,1,106, + 3,116,12,25,0,125,7,100,1,68,0,93,46,125,8,124, + 8,116,1,106,3,118,1,114,134,116,13,124,8,131,1,125, + 9,110,10,116,1,106,3,124,8,25,0,125,9,116,14,124, + 7,124,8,124,9,131,3,1,0,113,110,100,2,83,0,41, + 3,122,250,83,101,116,117,112,32,105,109,112,111,114,116,108, + 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32, + 110,101,101,100,101,100,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,32,97,110,100,32,105,110,106,101, + 99,116,105,110,103,32,116,104,101,109,10,32,32,32,32,105, + 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110, + 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,65, + 115,32,115,121,115,32,105,115,32,110,101,101,100,101,100,32, + 102,111,114,32,115,121,115,46,109,111,100,117,108,101,115,32, + 97,99,99,101,115,115,32,97,110,100,32,95,105,109,112,32, + 105,115,32,110,101,101,100,101,100,32,116,111,32,108,111,97, + 100,32,98,117,105,108,116,45,105,110,10,32,32,32,32,109, + 111,100,117,108,101,115,44,32,116,104,111,115,101,32,116,119, + 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, + 26,0,0,0,114,95,0,0,0,114,68,0,0,0,78,41, + 15,114,61,0,0,0,114,18,0,0,0,114,3,0,0,0, + 114,99,0,0,0,218,5,105,116,101,109,115,114,203,0,0, + 0,114,82,0,0,0,114,169,0,0,0,114,92,0,0,0, + 114,184,0,0,0,114,149,0,0,0,114,155,0,0,0,114, + 9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0, + 114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,6,95,115,101,116,117,112,136,4,0,0, + 115,40,0,0,0,4,9,4,1,8,3,18,1,10,1,10, + 1,6,1,10,1,4,1,10,3,10,1,2,128,10,3,8, + 1,10,1,10,1,10,2,14,1,4,251,255,128,114,235,0, + 0,0,99,2,0,0,0,0,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,117,0, - 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,169,0,0,0,114,177,0,0,0, - 114,83,0,0,0,114,167,0,0,0,41,2,114,20,0,0, - 0,114,103,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,18,95,98,117,105,108,116,105,110,95, - 102,114,111,109,95,110,97,109,101,129,4,0,0,115,10,0, - 0,0,10,1,8,1,12,1,8,1,255,128,114,231,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,5,0,0,0,67,0,0,0,115,162,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,0,68,0,93,68,92,2,125,3,125, - 4,116,5,124,4,124,2,131,2,114,26,124,3,116,1,106, - 6,118,0,114,60,116,7,125,5,110,14,116,0,160,8,124, - 3,161,1,114,26,116,9,125,5,116,10,124,4,124,5,131, - 2,125,6,116,11,124,6,124,4,131,2,1,0,113,26,116, - 1,106,3,116,12,25,0,125,7,100,1,68,0,93,46,125, - 8,124,8,116,1,106,3,118,1,114,134,116,13,124,8,131, - 1,125,9,110,10,116,1,106,3,124,8,25,0,125,9,116, - 14,124,7,124,8,124,9,131,3,1,0,113,110,100,2,83, - 0,41,3,122,250,83,101,116,117,112,32,105,109,112,111,114, - 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, - 103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,110, - 106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,32, - 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, - 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, - 32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,101, - 100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,101, - 115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,109, - 112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,108, - 111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,32, - 32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,32, - 116,119,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,26,0,0,0,114,95,0,0,0,114,68,0,0,0, - 78,41,15,114,61,0,0,0,114,18,0,0,0,114,3,0, - 0,0,114,99,0,0,0,218,5,105,116,101,109,115,114,203, - 0,0,0,114,82,0,0,0,114,169,0,0,0,114,92,0, - 0,0,114,184,0,0,0,114,149,0,0,0,114,155,0,0, - 0,114,9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0, - 0,0,114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,6,95,115,101,116,117,112,136,4, - 0,0,115,40,0,0,0,4,9,4,1,8,3,18,1,10, - 1,10,1,6,1,10,1,4,1,10,3,10,1,2,128,10, - 3,8,1,10,1,10,1,10,2,14,1,4,251,255,128,114, - 235,0,0,0,99,2,0,0,0,0,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,106,2,160,3,116,5, - 161,1,1,0,100,1,83,0,41,2,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, - 235,0,0,0,114,18,0,0,0,114,201,0,0,0,114,126, - 0,0,0,114,169,0,0,0,114,184,0,0,0,41,2,114, - 233,0,0,0,114,234,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,8,95,105,110,115,116,97, - 108,108,171,4,0,0,115,8,0,0,0,10,2,12,2,16, - 1,255,128,114,236,0,0,0,99,0,0,0,0,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, - 1,0,100,2,83,0,41,3,122,57,73,110,115,116,97,108, - 108,32,105,109,112,111,114,116,101,114,115,32,116,104,97,116, - 32,114,101,113,117,105,114,101,32,101,120,116,101,114,110,97, - 108,32,102,105,108,101,115,121,115,116,101,109,32,97,99,99, - 101,115,115,114,25,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,133,0,0,0,114,236,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, - 41,1,114,237,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,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,179,4,0,0,115,8,0,0,0,8,3,4,1, - 20,1,255,128,114,238,0,0,0,41,2,78,78,41,1,78, - 41,2,78,114,25,0,0,0,41,4,78,78,114,5,0,0, - 0,114,25,0,0,0,41,54,114,10,0,0,0,114,7,0, - 0,0,114,26,0,0,0,114,95,0,0,0,114,68,0,0, - 0,114,133,0,0,0,114,17,0,0,0,114,21,0,0,0, - 114,63,0,0,0,114,37,0,0,0,114,47,0,0,0,114, - 22,0,0,0,114,23,0,0,0,114,53,0,0,0,114,54, - 0,0,0,114,57,0,0,0,114,69,0,0,0,114,71,0, - 0,0,114,80,0,0,0,114,90,0,0,0,114,94,0,0, - 0,114,105,0,0,0,114,118,0,0,0,114,119,0,0,0, - 114,98,0,0,0,114,149,0,0,0,114,155,0,0,0,114, - 159,0,0,0,114,114,0,0,0,114,100,0,0,0,114,166, - 0,0,0,114,167,0,0,0,114,101,0,0,0,114,169,0, - 0,0,114,184,0,0,0,114,189,0,0,0,114,198,0,0, - 0,114,200,0,0,0,114,202,0,0,0,114,208,0,0,0, - 90,15,95,69,82,82,95,77,83,71,95,80,82,69,70,73, - 88,114,210,0,0,0,114,213,0,0,0,218,6,111,98,106, - 101,99,116,114,214,0,0,0,114,215,0,0,0,114,216,0, - 0,0,114,221,0,0,0,114,227,0,0,0,114,230,0,0, - 0,114,231,0,0,0,114,235,0,0,0,114,236,0,0,0, - 114,238,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,106,0,0,0,4,0,8,22, - 4,9,4,1,4,1,4,3,8,3,8,8,4,8,4,2, - 16,3,14,4,14,77,14,21,8,16,8,37,8,17,14,11, - 8,8,8,11,8,12,8,19,14,36,16,101,10,26,14,45, - 8,72,8,17,8,17,8,30,8,36,8,45,14,15,14,75, - 14,80,8,13,8,9,10,9,8,47,4,16,8,1,8,2, - 6,32,8,3,10,16,14,15,8,37,10,27,8,37,8,7, - 8,35,12,8,255,128, + 116,0,124,0,124,1,131,2,1,0,116,1,106,2,160,3, + 116,4,161,1,1,0,116,1,106,2,160,3,116,5,161,1, + 1,0,100,1,83,0,41,2,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,235,0, + 0,0,114,18,0,0,0,114,201,0,0,0,114,126,0,0, + 0,114,169,0,0,0,114,184,0,0,0,41,2,114,233,0, + 0,0,114,234,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,8,95,105,110,115,116,97,108,108, + 171,4,0,0,115,8,0,0,0,10,2,12,2,16,1,255, + 128,114,236,0,0,0,99,0,0,0,0,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,1,0, + 100,2,83,0,41,3,122,57,73,110,115,116,97,108,108,32, + 105,109,112,111,114,116,101,114,115,32,116,104,97,116,32,114, + 101,113,117,105,114,101,32,101,120,116,101,114,110,97,108,32, + 102,105,108,101,115,121,115,116,101,109,32,97,99,99,101,115, + 115,114,25,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,133,0,0,0,114,236,0,0,0,114, + 18,0,0,0,114,99,0,0,0,114,9,0,0,0,41,1, + 114,237,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,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,179,4,0,0,115,8,0,0,0,8,3,4,1,20,1, + 255,128,114,238,0,0,0,41,2,78,78,41,1,78,41,2, + 78,114,25,0,0,0,41,4,78,78,114,5,0,0,0,114, + 25,0,0,0,41,54,114,10,0,0,0,114,7,0,0,0, + 114,26,0,0,0,114,95,0,0,0,114,68,0,0,0,114, + 133,0,0,0,114,17,0,0,0,114,21,0,0,0,114,63, + 0,0,0,114,37,0,0,0,114,47,0,0,0,114,22,0, + 0,0,114,23,0,0,0,114,53,0,0,0,114,54,0,0, + 0,114,57,0,0,0,114,69,0,0,0,114,71,0,0,0, + 114,80,0,0,0,114,90,0,0,0,114,94,0,0,0,114, + 105,0,0,0,114,118,0,0,0,114,119,0,0,0,114,98, + 0,0,0,114,149,0,0,0,114,155,0,0,0,114,159,0, + 0,0,114,114,0,0,0,114,100,0,0,0,114,166,0,0, + 0,114,167,0,0,0,114,101,0,0,0,114,169,0,0,0, + 114,184,0,0,0,114,189,0,0,0,114,198,0,0,0,114, + 200,0,0,0,114,202,0,0,0,114,208,0,0,0,90,15, + 95,69,82,82,95,77,83,71,95,80,82,69,70,73,88,114, + 210,0,0,0,114,213,0,0,0,218,6,111,98,106,101,99, + 116,114,214,0,0,0,114,215,0,0,0,114,216,0,0,0, + 114,221,0,0,0,114,227,0,0,0,114,230,0,0,0,114, + 231,0,0,0,114,235,0,0,0,114,236,0,0,0,114,238, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,8,60,109,111,100,117,108,101, + 62,1,0,0,0,115,106,0,0,0,4,0,8,22,4,9, + 4,1,4,1,4,3,8,3,8,8,4,8,4,2,16,3, + 14,4,14,77,14,21,8,16,8,37,8,17,14,11,8,8, + 8,11,8,12,8,19,14,36,16,101,10,26,14,45,8,72, + 8,17,8,17,8,30,8,36,8,45,14,15,14,75,14,80, + 8,13,8,9,10,9,8,47,4,16,8,1,8,2,6,32, + 8,3,10,16,14,15,8,37,10,27,8,37,8,7,8,35, + 12,8,255,128, }; From webhook-mailer at python.org Wed Dec 16 09:08:32 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 14:08:32 -0000 Subject: [Python-checkins] Add symbols of the stable ABI to python3dll.c (GH-23598) Message-ID: https://github.com/python/cpython/commit/fcc6935384b933fbe1a1ef659ed455a3b74c849a commit: fcc6935384b933fbe1a1ef659ed455a3b74c849a branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T15:08:23+01:00 summary: Add symbols of the stable ABI to python3dll.c (GH-23598) Add the following symbols to python3dll.c: * PyFrame_GetCode (bpo-40421) * PyFrame_GetLineNumber (bpo-40421) * PyModule_AddObjectRef (bpo-1635741) * PyObject_CallNoArgs (bpo-37194) * PyThreadState_GetFrame (bpo-39947) * PyThreadState_GetID (bpo-39947) * PyThreadState_GetInterpreter (bpo-39947) files: M PC/python3dll.c diff --git a/PC/python3dll.c b/PC/python3dll.c index 9eb81e36af001..fa44a46fb7622 100644 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -257,6 +257,8 @@ EXPORT_FUNC(PyFloat_FromString) EXPORT_FUNC(PyFloat_GetInfo) EXPORT_FUNC(PyFloat_GetMax) EXPORT_FUNC(PyFloat_GetMin) +EXPORT_FUNC(PyFrame_GetLineNumber) +EXPORT_FUNC(PyFrame_GetCode) EXPORT_FUNC(PyFrozenSet_New) EXPORT_FUNC(PyGC_Collect) EXPORT_FUNC(PyGILState_Ensure) @@ -405,6 +407,7 @@ EXPORT_FUNC(PyObject_CallFunction) EXPORT_FUNC(PyObject_CallFunctionObjArgs) EXPORT_FUNC(PyObject_CallMethod) EXPORT_FUNC(PyObject_CallMethodObjArgs) +EXPORT_FUNC(PyObject_CallNoArgs) EXPORT_FUNC(PyObject_CallObject) EXPORT_FUNC(PyObject_Calloc) EXPORT_FUNC(PyObject_ClearWeakRefs) @@ -535,6 +538,9 @@ EXPORT_FUNC(PyThreadState_Delete) EXPORT_FUNC(PyThreadState_DeleteCurrent) EXPORT_FUNC(PyThreadState_Get) EXPORT_FUNC(PyThreadState_GetDict) +EXPORT_FUNC(PyThreadState_GetFrame) +EXPORT_FUNC(PyThreadState_GetID) +EXPORT_FUNC(PyThreadState_GetInterpreter) EXPORT_FUNC(PyThreadState_New) EXPORT_FUNC(PyThreadState_SetAsyncExc) EXPORT_FUNC(PyThreadState_Swap) @@ -791,6 +797,7 @@ EXPORT_DATA(PyMemoryView_Type) EXPORT_DATA(PyMethodDescr_Type) EXPORT_DATA(PyModule_Type) EXPORT_DATA(PyModuleDef_Type) +EXPORT_DATA(PyModule_AddObjectRef) EXPORT_DATA(PyNullImporter_Type) EXPORT_DATA(PyODict_Type) EXPORT_DATA(PyODictItems_Type) From webhook-mailer at python.org Wed Dec 16 10:22:31 2020 From: webhook-mailer at python.org (JulienPalard) Date: Wed, 16 Dec 2020 15:22:31 -0000 Subject: [Python-checkins] Fix reStructuredText typo in NEWS.d. (GH-23800) Message-ID: https://github.com/python/cpython/commit/37caeb172b1d51340c1b0db9c4c75f138bda6537 commit: 37caeb172b1d51340c1b0db9c4c75f138bda6537 branch: master author: Julien Palard committer: JulienPalard date: 2020-12-16T16:22:19+01:00 summary: Fix reStructuredText typo in NEWS.d. (GH-23800) files: M Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst index ac52a008e352f..fec4b7f81cb45 100644 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst @@ -6,6 +6,6 @@ for :class:`collections.abc.Callable` are now flattened while ``collections.abc.Callable``'s ``__class_getitem__`` will now return a subclass of ``types.GenericAlias``. Tests for typing were also updated to not subclass things like ``Callable[..., T]`` as that is not a valid base class. Finally, -both ``Callable``s no longer validate their ``argtypes``, in +both ``Callable``\ s no longer validate their ``argtypes``, in ``Callable[[argtypes], resulttype]`` to prepare for :pep:`612`. Patch by Ken Jin. From webhook-mailer at python.org Wed Dec 16 10:26:27 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 15:26:27 -0000 Subject: [Python-checkins] bpo-40686: Fix compiler warnings on _zoneinfo.c (GH-23614) Message-ID: https://github.com/python/cpython/commit/aefb69b23f056c61e82ad228d950f348de090c70 commit: aefb69b23f056c61e82ad228d950f348de090c70 branch: master author: Victor Stinner committer: vstinner date: 2020-12-16T16:26:15+01:00 summary: bpo-40686: Fix compiler warnings on _zoneinfo.c (GH-23614) "uint8_t day" is unsigned and so "day < 0" test is always true. Remove the test to fix the following warnings on Windows: modules\_zoneinfo.c(1224): warning C4068: unknown pragma modules\_zoneinfo.c(1225): warning C4068: unknown pragma modules\_zoneinfo.c(1227): warning C4068: unknown pragma files: M Modules/_zoneinfo.c diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index 7888cf86de0a5..bb32b1496683e 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -172,7 +172,7 @@ static void update_strong_cache(const PyTypeObject *const type, PyObject *key, PyObject *zone); static PyObject * -zone_from_strong_cache(const PyTypeObject *const type, PyObject *key); +zone_from_strong_cache(const PyTypeObject *const type, PyObject *const key); static PyObject * zoneinfo_new_instance(PyTypeObject *type, PyObject *key) @@ -1214,15 +1214,9 @@ calendarrule_new(uint8_t month, uint8_t week, uint8_t day, int8_t hour, return -1; } - // day is an unsigned integer, so day < 0 should always return false, but - // if day's type changes to a signed integer *without* changing this value, - // it may create a bug. Considering that the compiler should be able to - // optimize out the first comparison if day is an unsigned integer anyway, - // we will leave this comparison in place and disable the compiler warning. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wtype-limits" - if (day < 0 || day > 6) { -#pragma GCC diagnostic pop + // If the 'day' parameter type is changed to a signed type, + // "day < 0" check must be added. + if (/* day < 0 || */ day > 6) { PyErr_Format(PyExc_ValueError, "Day must be in [0, 6]"); return -1; } From webhook-mailer at python.org Wed Dec 16 10:45:29 2020 From: webhook-mailer at python.org (JulienPalard) Date: Wed, 16 Dec 2020 15:45:29 -0000 Subject: [Python-checkins] Clarify eval() doc from library/functions. (GH-22700) Message-ID: https://github.com/python/cpython/commit/fc3dca3e16a62690707dcdc923a577e5167a8e2a commit: fc3dca3e16a62690707dcdc923a577e5167a8e2a branch: master author: Antoine <43954001+awecx at users.noreply.github.com> committer: JulienPalard date: 2020-12-16T16:45:19+01:00 summary: Clarify eval() doc from library/functions. (GH-22700) files: M Doc/library/functions.rst diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index a8a4ca42007c6..24dc65d563c66 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -478,14 +478,15 @@ are always available. They are listed here in alphabetical order. dictionaries as global and local namespace. If the *globals* dictionary is present and does not contain a value for the key ``__builtins__``, a reference to the dictionary of the built-in module :mod:`builtins` is - inserted under that key before *expression* is parsed. This means that - *expression* normally has full access to the standard :mod:`builtins` - module and restricted environments are propagated. If the *locals* - dictionary is omitted it defaults to the *globals* dictionary. If both - dictionaries are omitted, the expression is executed with the *globals* and - *locals* in the environment where :func:`eval` is called. Note, *eval()* - does not have access to the :term:`nested scopes ` (non-locals) in the - enclosing environment. + inserted under that key before *expression* is parsed. That way you can + control what builtins are available to the executed code by inserting your + own ``__builtins__`` dictionary into *globals* before passing it to + :func:`eval`. If the *locals* dictionary is omitted it defaults to the + *globals* dictionary. If both dictionaries are omitted, the expression is + executed with the *globals* and *locals* in the environment where + :func:`eval` is called. Note, *eval()* does not have access to the + :term:`nested scopes ` (non-locals) in the enclosing + environment. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example: From webhook-mailer at python.org Wed Dec 16 11:03:42 2020 From: webhook-mailer at python.org (JulienPalard) Date: Wed, 16 Dec 2020 16:03:42 -0000 Subject: [Python-checkins] bpo-23915: update and elucidate documentation of with_traceback (GH-23680) Message-ID: https://github.com/python/cpython/commit/c590c2338e5a36cf3ce5b55e6d366a0675ed1db5 commit: c590c2338e5a36cf3ce5b55e6d366a0675ed1db5 branch: master author: Irit Katriel committer: JulienPalard date: 2020-12-16T17:03:32+01:00 summary: bpo-23915: update and elucidate documentation of with_traceback (GH-23680) files: M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 8fb25a50e2d40..1028213699d63 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -90,8 +90,13 @@ The following exceptions are used mostly as base classes for other exceptions. .. method:: with_traceback(tb) This method sets *tb* as the new traceback for the exception and returns - the exception object. It is usually used in exception handling code like - this:: + the exception object. It was more commonly used before the exception + chaining features of :pep:`3134` became available. The following example + shows how we can convert an instance of ``SomeException`` into an + instance of ``OtherException`` while preserving the traceback. Once + raised, the current frame is pushed onto the traceback of the + ``OtherException``, as would have happened to the traceback of the + original ``SomeException`` had we allowed it to propagate to the caller. try: ... From webhook-mailer at python.org Wed Dec 16 11:33:15 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 16:33:15 -0000 Subject: [Python-checkins] bpo-40686: Fix compiler warnings on _zoneinfo.c (GH-23614) (GH-23804) Message-ID: https://github.com/python/cpython/commit/7492b55ea0ca993c353b6373341b92e40faa9c4d commit: 7492b55ea0ca993c353b6373341b92e40faa9c4d branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2020-12-16T17:33:05+01:00 summary: bpo-40686: Fix compiler warnings on _zoneinfo.c (GH-23614) (GH-23804) "uint8_t day" is unsigned and so "day < 0" test is always true. Remove the test to fix the following warnings on Windows: modules\_zoneinfo.c(1224): warning C4068: unknown pragma modules\_zoneinfo.c(1225): warning C4068: unknown pragma modules\_zoneinfo.c(1227): warning C4068: unknown pragma (cherry picked from commit aefb69b23f056c61e82ad228d950f348de090c70) Co-authored-by: Victor Stinner Co-authored-by: Victor Stinner files: M Modules/_zoneinfo.c diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index 2cee65fac6dd0..fafb6b01df371 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -171,7 +171,7 @@ static void update_strong_cache(const PyTypeObject *const type, PyObject *key, PyObject *zone); static PyObject * -zone_from_strong_cache(const PyTypeObject *const type, PyObject *key); +zone_from_strong_cache(const PyTypeObject *const type, PyObject *const key); static PyObject * zoneinfo_new_instance(PyTypeObject *type, PyObject *key) @@ -1219,15 +1219,9 @@ calendarrule_new(uint8_t month, uint8_t week, uint8_t day, int8_t hour, return -1; } - // day is an unsigned integer, so day < 0 should always return false, but - // if day's type changes to a signed integer *without* changing this value, - // it may create a bug. Considering that the compiler should be able to - // optimize out the first comparison if day is an unsigned integer anyway, - // we will leave this comparison in place and disable the compiler warning. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wtype-limits" - if (day < 0 || day > 6) { -#pragma GCC diagnostic pop + // If the 'day' parameter type is changed to a signed type, + // "day < 0" check must be added. + if (/* day < 0 || */ day > 6) { PyErr_Format(PyExc_ValueError, "Day must be in [0, 6]"); return -1; } From webhook-mailer at python.org Wed Dec 16 12:50:43 2020 From: webhook-mailer at python.org (asvetlov) Date: Wed, 16 Dec 2020 17:50:43 -0000 Subject: [Python-checkins] bpo-38323: Add guard clauses in MultiLoopChildWatcher. (#22756) Message-ID: https://github.com/python/cpython/commit/66d3b589c44fcbcf9afe1e442d9beac3bd8bcd34 commit: 66d3b589c44fcbcf9afe1e442d9beac3bd8bcd34 branch: master author: Chris Jerdonek committer: asvetlov date: 2020-12-16T19:50:25+02:00 summary: bpo-38323: Add guard clauses in MultiLoopChildWatcher. (#22756) This is a trivial refactor in preparation for a fix for bpo-38323. files: M Lib/asyncio/unix_events.py diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 33a6732941fc3..e4f445e95026b 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -1226,13 +1226,15 @@ def is_active(self): def close(self): self._callbacks.clear() - if self._saved_sighandler is not None: - handler = signal.getsignal(signal.SIGCHLD) - if handler != self._sig_chld: - logger.warning("SIGCHLD handler was changed by outside code") - else: - signal.signal(signal.SIGCHLD, self._saved_sighandler) - self._saved_sighandler = None + if self._saved_sighandler is None: + return + + handler = signal.getsignal(signal.SIGCHLD) + if handler != self._sig_chld: + logger.warning("SIGCHLD handler was changed by outside code") + else: + signal.signal(signal.SIGCHLD, self._saved_sighandler) + self._saved_sighandler = None def __enter__(self): return self @@ -1259,15 +1261,17 @@ def attach_loop(self, loop): # The reason to do it here is that attach_loop() is called from # unix policy only for the main thread. # Main thread is required for subscription on SIGCHLD signal + if self._saved_sighandler is not None: + return + + self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) if self._saved_sighandler is None: - self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) - if self._saved_sighandler is None: - logger.warning("Previous SIGCHLD handler was set by non-Python code, " - "restore to default handler on watcher close.") - self._saved_sighandler = signal.SIG_DFL + logger.warning("Previous SIGCHLD handler was set by non-Python code, " + "restore to default handler on watcher close.") + self._saved_sighandler = signal.SIG_DFL - # Set SA_RESTART to limit EINTR occurrences. - signal.siginterrupt(signal.SIGCHLD, False) + # Set SA_RESTART to limit EINTR occurrences. + signal.siginterrupt(signal.SIGCHLD, False) def _do_waitpid_all(self): for pid in list(self._callbacks): From webhook-mailer at python.org Wed Dec 16 12:56:22 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 17:56:22 -0000 Subject: [Python-checkins] bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (GH-22654) Message-ID: https://github.com/python/cpython/commit/9d409d6b474c188feca6213b9601e06f97715b72 commit: 9d409d6b474c188feca6213b9601e06f97715b72 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T09:56:10-08:00 summary: bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (GH-22654) (cherry picked from commit 8374d2ee1589791be8892b00f4bbf8121dde24bd) Co-authored-by: Lisa Roach files: A Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst M Lib/unittest/async_case.py M Lib/unittest/test/test_async_case.py diff --git a/Lib/unittest/async_case.py b/Lib/unittest/async_case.py index 1bc1312c8c2ee..520213c372755 100644 --- a/Lib/unittest/async_case.py +++ b/Lib/unittest/async_case.py @@ -102,9 +102,9 @@ async def _asyncioLoopRunner(self, fut): ret = await awaitable if not fut.cancelled(): fut.set_result(ret) - except asyncio.CancelledError: + except (SystemExit, KeyboardInterrupt): raise - except Exception as ex: + except (BaseException, asyncio.CancelledError) as ex: if not fut.cancelled(): fut.set_exception(ex) diff --git a/Lib/unittest/test/test_async_case.py b/Lib/unittest/test/test_async_case.py index 2db441da202a0..d01864b6936ca 100644 --- a/Lib/unittest/test/test_async_case.py +++ b/Lib/unittest/test/test_async_case.py @@ -190,6 +190,33 @@ async def on_async_cleanup(self, val): 'async_cleanup 2', 'sync_cleanup 1']) + def test_base_exception_from_async_method(self): + events = [] + class Test(unittest.IsolatedAsyncioTestCase): + async def test_base(self): + events.append("test_base") + raise BaseException() + events.append("not it") + + async def test_no_err(self): + events.append("test_no_err") + + async def test_cancel(self): + raise asyncio.CancelledError() + + test = Test("test_base") + output = test.run() + self.assertFalse(output.wasSuccessful()) + + test = Test("test_no_err") + test.run() + self.assertEqual(events, ['test_base', 'test_no_err']) + + test = Test("test_cancel") + output = test.run() + self.assertFalse(output.wasSuccessful()) + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst b/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst new file mode 100644 index 0000000000000..a571e8343cde1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst @@ -0,0 +1 @@ +Fixed tests using IsolatedAsyncioTestCase from hanging on BaseExceptions. \ No newline at end of file From webhook-mailer at python.org Wed Dec 16 12:57:31 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 17:57:31 -0000 Subject: [Python-checkins] bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (GH-22654) Message-ID: https://github.com/python/cpython/commit/d549d0b5575b390431b7b26999151f79f74d4516 commit: d549d0b5575b390431b7b26999151f79f74d4516 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T09:57:23-08:00 summary: bpo-39101: Fixes BaseException hang in IsolatedAsyncioTestCase. (GH-22654) (cherry picked from commit 8374d2ee1589791be8892b00f4bbf8121dde24bd) Co-authored-by: Lisa Roach files: A Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst M Lib/unittest/async_case.py M Lib/unittest/test/test_async_case.py diff --git a/Lib/unittest/async_case.py b/Lib/unittest/async_case.py index 1bc1312c8c2ee..520213c372755 100644 --- a/Lib/unittest/async_case.py +++ b/Lib/unittest/async_case.py @@ -102,9 +102,9 @@ async def _asyncioLoopRunner(self, fut): ret = await awaitable if not fut.cancelled(): fut.set_result(ret) - except asyncio.CancelledError: + except (SystemExit, KeyboardInterrupt): raise - except Exception as ex: + except (BaseException, asyncio.CancelledError) as ex: if not fut.cancelled(): fut.set_exception(ex) diff --git a/Lib/unittest/test/test_async_case.py b/Lib/unittest/test/test_async_case.py index 2db441da202a0..d01864b6936ca 100644 --- a/Lib/unittest/test/test_async_case.py +++ b/Lib/unittest/test/test_async_case.py @@ -190,6 +190,33 @@ async def on_async_cleanup(self, val): 'async_cleanup 2', 'sync_cleanup 1']) + def test_base_exception_from_async_method(self): + events = [] + class Test(unittest.IsolatedAsyncioTestCase): + async def test_base(self): + events.append("test_base") + raise BaseException() + events.append("not it") + + async def test_no_err(self): + events.append("test_no_err") + + async def test_cancel(self): + raise asyncio.CancelledError() + + test = Test("test_base") + output = test.run() + self.assertFalse(output.wasSuccessful()) + + test = Test("test_no_err") + test.run() + self.assertEqual(events, ['test_base', 'test_no_err']) + + test = Test("test_cancel") + output = test.run() + self.assertFalse(output.wasSuccessful()) + + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst b/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst new file mode 100644 index 0000000000000..a571e8343cde1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst @@ -0,0 +1 @@ +Fixed tests using IsolatedAsyncioTestCase from hanging on BaseExceptions. \ No newline at end of file From webhook-mailer at python.org Wed Dec 16 13:10:55 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 18:10:55 -0000 Subject: [Python-checkins] bpo-38323: Add guard clauses in MultiLoopChildWatcher. (GH-22756) Message-ID: https://github.com/python/cpython/commit/bf0eed3e60acc7e4969a4fae940bc615fa924c30 commit: bf0eed3e60acc7e4969a4fae940bc615fa924c30 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T10:10:37-08:00 summary: bpo-38323: Add guard clauses in MultiLoopChildWatcher. (GH-22756) This is a trivial refactor in preparation for a fix for bpo-38323. (cherry picked from commit 66d3b589c44fcbcf9afe1e442d9beac3bd8bcd34) Co-authored-by: Chris Jerdonek files: M Lib/asyncio/unix_events.py diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index f34a5b4b44373..3efa6698b89ce 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -1230,13 +1230,15 @@ def is_active(self): def close(self): self._callbacks.clear() - if self._saved_sighandler is not None: - handler = signal.getsignal(signal.SIGCHLD) - if handler != self._sig_chld: - logger.warning("SIGCHLD handler was changed by outside code") - else: - signal.signal(signal.SIGCHLD, self._saved_sighandler) - self._saved_sighandler = None + if self._saved_sighandler is None: + return + + handler = signal.getsignal(signal.SIGCHLD) + if handler != self._sig_chld: + logger.warning("SIGCHLD handler was changed by outside code") + else: + signal.signal(signal.SIGCHLD, self._saved_sighandler) + self._saved_sighandler = None def __enter__(self): return self @@ -1263,15 +1265,17 @@ def attach_loop(self, loop): # The reason to do it here is that attach_loop() is called from # unix policy only for the main thread. # Main thread is required for subscription on SIGCHLD signal + if self._saved_sighandler is not None: + return + + self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) if self._saved_sighandler is None: - self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) - if self._saved_sighandler is None: - logger.warning("Previous SIGCHLD handler was set by non-Python code, " - "restore to default handler on watcher close.") - self._saved_sighandler = signal.SIG_DFL + logger.warning("Previous SIGCHLD handler was set by non-Python code, " + "restore to default handler on watcher close.") + self._saved_sighandler = signal.SIG_DFL - # Set SA_RESTART to limit EINTR occurrences. - signal.siginterrupt(signal.SIGCHLD, False) + # Set SA_RESTART to limit EINTR occurrences. + signal.siginterrupt(signal.SIGCHLD, False) def _do_waitpid_all(self): for pid in list(self._callbacks): From webhook-mailer at python.org Wed Dec 16 13:12:04 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 18:12:04 -0000 Subject: [Python-checkins] bpo-38323: Add guard clauses in MultiLoopChildWatcher. (GH-22756) Message-ID: https://github.com/python/cpython/commit/dd262ef46d2e2fff4c413cfa5faa9e72cd36220e commit: dd262ef46d2e2fff4c413cfa5faa9e72cd36220e branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T10:11:51-08:00 summary: bpo-38323: Add guard clauses in MultiLoopChildWatcher. (GH-22756) This is a trivial refactor in preparation for a fix for bpo-38323. (cherry picked from commit 66d3b589c44fcbcf9afe1e442d9beac3bd8bcd34) Co-authored-by: Chris Jerdonek files: M Lib/asyncio/unix_events.py diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py index 1ff8c427da4a6..0420529c5b822 100644 --- a/Lib/asyncio/unix_events.py +++ b/Lib/asyncio/unix_events.py @@ -1152,13 +1152,15 @@ def is_active(self): def close(self): self._callbacks.clear() - if self._saved_sighandler is not None: - handler = signal.getsignal(signal.SIGCHLD) - if handler != self._sig_chld: - logger.warning("SIGCHLD handler was changed by outside code") - else: - signal.signal(signal.SIGCHLD, self._saved_sighandler) - self._saved_sighandler = None + if self._saved_sighandler is None: + return + + handler = signal.getsignal(signal.SIGCHLD) + if handler != self._sig_chld: + logger.warning("SIGCHLD handler was changed by outside code") + else: + signal.signal(signal.SIGCHLD, self._saved_sighandler) + self._saved_sighandler = None def __enter__(self): return self @@ -1185,15 +1187,17 @@ def attach_loop(self, loop): # The reason to do it here is that attach_loop() is called from # unix policy only for the main thread. # Main thread is required for subscription on SIGCHLD signal + if self._saved_sighandler is not None: + return + + self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) if self._saved_sighandler is None: - self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld) - if self._saved_sighandler is None: - logger.warning("Previous SIGCHLD handler was set by non-Python code, " - "restore to default handler on watcher close.") - self._saved_sighandler = signal.SIG_DFL + logger.warning("Previous SIGCHLD handler was set by non-Python code, " + "restore to default handler on watcher close.") + self._saved_sighandler = signal.SIG_DFL - # Set SA_RESTART to limit EINTR occurrences. - signal.siginterrupt(signal.SIGCHLD, False) + # Set SA_RESTART to limit EINTR occurrences. + signal.siginterrupt(signal.SIGCHLD, False) def _do_waitpid_all(self): for pid in list(self._callbacks): From webhook-mailer at python.org Wed Dec 16 16:38:53 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 16 Dec 2020 21:38:53 -0000 Subject: [Python-checkins] bpo-37961: Fix regression in tracemalloc.Traceback.__repr__ (GH-23805) Message-ID: https://github.com/python/cpython/commit/051b9818671625d125dee8198e0d2af5ad4c85b8 commit: 051b9818671625d125dee8198e0d2af5ad4c85b8 branch: master author: Daniel Hahler committer: vstinner date: 2020-12-16T22:38:32+01:00 summary: bpo-37961: Fix regression in tracemalloc.Traceback.__repr__ (GH-23805) Regression in 8d59eb1b66c51b2b918da9881c57d07d08df43b7. files: A Misc/NEWS.d/next/Library/2020-12-16-16-16-33.bpo-37961.jrESEq.rst M Lib/test/test_tracemalloc.py M Lib/tracemalloc.py diff --git a/Lib/test/test_tracemalloc.py b/Lib/test/test_tracemalloc.py index a0037f81b88f2..556656747bbcb 100644 --- a/Lib/test/test_tracemalloc.py +++ b/Lib/test/test_tracemalloc.py @@ -85,6 +85,25 @@ def traceback_filename(filename): return traceback_lineno(filename, 0) +class TestTraceback(unittest.TestCase): + def test_repr(self): + def get_repr(*args) -> str: + return repr(tracemalloc.Traceback(*args)) + + self.assertEqual(get_repr(()), "") + self.assertEqual(get_repr((), 0), "") + + frames = (("f1", 1), ("f2", 2)) + exp_repr_frames = ( + "(," + " )" + ) + self.assertEqual(get_repr(frames), + f"") + self.assertEqual(get_repr(frames, 2), + f"") + + class TestTracemallocEnabled(unittest.TestCase): def setUp(self): if tracemalloc.is_tracing(): @@ -1065,6 +1084,7 @@ def test_stop_untrack(self): def test_main(): support.run_unittest( + TestTraceback, TestTracemallocEnabled, TestSnapshot, TestFilters, diff --git a/Lib/tracemalloc.py b/Lib/tracemalloc.py index 69b4170ec8246..cec99c59700fe 100644 --- a/Lib/tracemalloc.py +++ b/Lib/tracemalloc.py @@ -226,7 +226,7 @@ def __str__(self): return str(self[0]) def __repr__(self): - s = " https://github.com/python/cpython/commit/166286849048eccadecf02b242dbc4042b780944 commit: 166286849048eccadecf02b242dbc4042b780944 branch: 3.9 author: Victor Stinner committer: vstinner date: 2020-12-16T22:41:47+01:00 summary: Add symbols of the stable ABI to python3dll.c (GH-23598) (GH-23801) Add the following symbols to python3dll.c: * PyFrame_GetCode (bpo-40421) * PyFrame_GetLineNumber (bpo-40421) * PyObject_CallNoArgs (bpo-37194) * PyThreadState_GetFrame (bpo-39947) * PyThreadState_GetID (bpo-39947) * PyThreadState_GetInterpreter (bpo-39947) (cherry picked from commit fcc6935384b933fbe1a1ef659ed455a3b74c849a) files: M PC/python3.def diff --git a/PC/python3.def b/PC/python3.def index 66d1595c943ed..fce01249758e2 100644 --- a/PC/python3.def +++ b/PC/python3.def @@ -266,6 +266,8 @@ EXPORTS PyFloat_GetMax=python39.PyFloat_GetMax PyFloat_GetMin=python39.PyFloat_GetMin PyFloat_Type=python39.PyFloat_Type DATA + PyFrame_GetCode=python39.PyFrame_GetCode + PyFrame_GetLineNumber=python39.PyFrame_GetLineNumber PyFrozenSet_New=python39.PyFrozenSet_New PyFrozenSet_Type=python39.PyFrozenSet_Type DATA PyGC_Collect=python39.PyGC_Collect @@ -453,6 +455,7 @@ EXPORTS PyObject_CallFunctionObjArgs=python39.PyObject_CallFunctionObjArgs PyObject_CallMethod=python39.PyObject_CallMethod PyObject_CallMethodObjArgs=python39.PyObject_CallMethodObjArgs + PyObject_CallNoArgs=python39.PyObject_CallNoArgs PyObject_CallObject=python39.PyObject_CallObject PyObject_Calloc=python39.PyObject_Calloc PyObject_CheckReadBuffer=python39.PyObject_CheckReadBuffer @@ -569,6 +572,9 @@ EXPORTS PyThreadState_DeleteCurrent=python39.PyThreadState_DeleteCurrent PyThreadState_Get=python39.PyThreadState_Get PyThreadState_GetDict=python39.PyThreadState_GetDict + PyThreadState_GetFrame=python39.PyThreadState_GetFrame + PyThreadState_GetID=python39.PyThreadState_GetID + PyThreadState_GetInterpreter=python39.PyThreadState_GetInterpreter PyThreadState_New=python39.PyThreadState_New PyThreadState_SetAsyncExc=python39.PyThreadState_SetAsyncExc PyThreadState_Swap=python39.PyThreadState_Swap From webhook-mailer at python.org Wed Dec 16 17:01:24 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 16 Dec 2020 22:01:24 -0000 Subject: [Python-checkins] bpo-37961: Fix regression in tracemalloc.Traceback.__repr__ (GH-23805) Message-ID: https://github.com/python/cpython/commit/78062e07bc7c3b47ffdcdec786b259dda376370c commit: 78062e07bc7c3b47ffdcdec786b259dda376370c branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T14:01:14-08:00 summary: bpo-37961: Fix regression in tracemalloc.Traceback.__repr__ (GH-23805) Regression in 8d59eb1b66c51b2b918da9881c57d07d08df43b7. (cherry picked from commit 051b9818671625d125dee8198e0d2af5ad4c85b8) Co-authored-by: Daniel Hahler files: A Misc/NEWS.d/next/Library/2020-12-16-16-16-33.bpo-37961.jrESEq.rst M Lib/test/test_tracemalloc.py M Lib/tracemalloc.py diff --git a/Lib/test/test_tracemalloc.py b/Lib/test/test_tracemalloc.py index c5ae4e6d653bf..b10d1798c2977 100644 --- a/Lib/test/test_tracemalloc.py +++ b/Lib/test/test_tracemalloc.py @@ -84,6 +84,25 @@ def traceback_filename(filename): return traceback_lineno(filename, 0) +class TestTraceback(unittest.TestCase): + def test_repr(self): + def get_repr(*args) -> str: + return repr(tracemalloc.Traceback(*args)) + + self.assertEqual(get_repr(()), "") + self.assertEqual(get_repr((), 0), "") + + frames = (("f1", 1), ("f2", 2)) + exp_repr_frames = ( + "(," + " )" + ) + self.assertEqual(get_repr(frames), + f"") + self.assertEqual(get_repr(frames, 2), + f"") + + class TestTracemallocEnabled(unittest.TestCase): def setUp(self): if tracemalloc.is_tracing(): @@ -1064,6 +1083,7 @@ def test_stop_untrack(self): def test_main(): support.run_unittest( + TestTraceback, TestTracemallocEnabled, TestSnapshot, TestFilters, diff --git a/Lib/tracemalloc.py b/Lib/tracemalloc.py index 69b4170ec8246..cec99c59700fe 100644 --- a/Lib/tracemalloc.py +++ b/Lib/tracemalloc.py @@ -226,7 +226,7 @@ def __str__(self): return str(self[0]) def __repr__(self): - s = " https://github.com/python/cpython/commit/a6ba2b901543f3006ecdb2ad8b18cb00439ff9b2 commit: a6ba2b901543f3006ecdb2ad8b18cb00439ff9b2 branch: master author: Matthew Suozzo committer: berkerpeksag date: 2020-12-17T01:17:22+02:00 summary: Fix indentation for get_stats_profile() docs (GH-23618) The existing method is indented one too many times which makes it look like a sub-method of print_callees(). files: M Doc/library/profile.rst diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index 34525a96f55c4..7edabfde0d7f1 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -525,7 +525,7 @@ Analysis of the profiler data is done using the :class:`~pstats.Stats` class. ordering are identical to the :meth:`~pstats.Stats.print_callers` method. - .. method:: get_stats_profile() + .. method:: get_stats_profile() This method returns an instance of StatsProfile, which contains a mapping of function names to instances of FunctionProfile. Each FunctionProfile From webhook-mailer at python.org Wed Dec 16 18:18:48 2020 From: webhook-mailer at python.org (berkerpeksag) Date: Wed, 16 Dec 2020 23:18:48 -0000 Subject: [Python-checkins] Fix indentation for get_stats_profile() docs (GH-23618) Message-ID: https://github.com/python/cpython/commit/2fba8445a4f31cb96d98bfcc5d5075e6c617187c commit: 2fba8445a4f31cb96d98bfcc5d5075e6c617187c branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: berkerpeksag date: 2020-12-17T01:18:39+02:00 summary: Fix indentation for get_stats_profile() docs (GH-23618) The existing method is indented one too many times which makes it look like a sub-method of print_callees(). (cherry picked from commit a6ba2b901543f3006ecdb2ad8b18cb00439ff9b2) Co-authored-by: Matthew Suozzo files: M Doc/library/profile.rst diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index 34525a96f55c4..7edabfde0d7f1 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -525,7 +525,7 @@ Analysis of the profiler data is done using the :class:`~pstats.Stats` class. ordering are identical to the :meth:`~pstats.Stats.print_callers` method. - .. method:: get_stats_profile() + .. method:: get_stats_profile() This method returns an instance of StatsProfile, which contains a mapping of function names to instances of FunctionProfile. Each FunctionProfile From webhook-mailer at python.org Wed Dec 16 20:34:28 2020 From: webhook-mailer at python.org (ethanfurman) Date: Thu, 17 Dec 2020 01:34:28 -0000 Subject: [Python-checkins] Correct referenced RFC number in cgi module (GH-22827) Message-ID: https://github.com/python/cpython/commit/c143cc379c7411598e7b7b652bac7935e4687d07 commit: c143cc379c7411598e7b7b652bac7935e4687d07 branch: master author: Mike Lei committer: ethanfurman date: 2020-12-16T17:34:19-08:00 summary: Correct referenced RFC number in cgi module (GH-22827) The quoted sentence can be found from the last paragraph of RFC 2046, Section 5.1, while the content of RFC 2026 is unrelated to this module. files: M Lib/cgi.py diff --git a/Lib/cgi.py b/Lib/cgi.py index 77ab703cc0360..6018c3608697a 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -194,7 +194,7 @@ def parse_multipart(fp, pdict, encoding="utf-8", errors="replace"): value is a list of values for that field. For non-file fields, the value is a list of strings. """ - # RFC 2026, Section 5.1 : The "multipart" boundary delimiters are always + # RFC 2046, Section 5.1 : The "multipart" boundary delimiters are always # represented as 7bit US-ASCII. boundary = pdict['boundary'].decode('ascii') ctype = "multipart/form-data; boundary={}".format(boundary) From webhook-mailer at python.org Wed Dec 16 20:37:36 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 01:37:36 -0000 Subject: [Python-checkins] [doc] Fix erroneous backslashes in signatures and names (GH-23658) Message-ID: https://github.com/python/cpython/commit/dcc997cd28ab33ebac44182ee55533c1b37689f7 commit: dcc997cd28ab33ebac44182ee55533c1b37689f7 branch: master author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-16T17:37:28-08:00 summary: [doc] Fix erroneous backslashes in signatures and names (GH-23658) The issue being resolved is shown in the 3.10 docs (if you select docs for older versions you won't see a visual glitch). The newer sphinx version that produces the 3.10 docs doesn't treat the backslash to escape things in some situations it previously did. files: M Doc/library/asyncio-eventloop.rst M Doc/library/asyncio-future.rst M Doc/library/asyncio-policy.rst M Doc/library/asyncio-stream.rst M Doc/library/asyncio-subprocess.rst M Doc/library/asyncio-task.rst M Doc/library/base64.rst M Doc/library/compileall.rst M Doc/library/concurrent.futures.rst M Doc/library/contextvars.rst M Doc/library/ctypes.rst M Doc/library/difflib.rst M Doc/library/email.header.rst M Doc/library/email.policy.rst M Doc/library/functions.rst M Doc/library/http.cookies.rst M Doc/library/importlib.rst M Doc/library/inspect.rst M Doc/library/io.rst M Doc/library/lzma.rst M Doc/library/os.rst M Doc/library/pickle.rst M Doc/library/plistlib.rst M Doc/library/shutil.rst M Doc/library/stdtypes.rst M Doc/library/subprocess.rst M Doc/library/sysconfig.rst M Doc/library/tarfile.rst M Doc/library/test.rst M Doc/library/warnings.rst M Doc/library/winreg.rst M Doc/library/xml.dom.minidom.rst diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index 15b5b3fe822ce..7de5a0ab2595c 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -321,7 +321,7 @@ Creating Futures and Tasks .. versionadded:: 3.5.2 -.. method:: loop.create_task(coro, \*, name=None) +.. method:: loop.create_task(coro, *, name=None) Schedule the execution of a :ref:`coroutine`. Return a :class:`Task` object. @@ -356,7 +356,7 @@ Opening network connections ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_connection(protocol_factory, \ - host=None, port=None, \*, ssl=None, \ + host=None, port=None, *, ssl=None, \ family=0, proto=0, flags=0, sock=None, \ local_addr=None, server_hostname=None, \ ssl_handshake_timeout=None, \ @@ -482,7 +482,7 @@ Opening network connections that can be used directly in async/await code. .. coroutinemethod:: loop.create_datagram_endpoint(protocol_factory, \ - local_addr=None, remote_addr=None, \*, \ + local_addr=None, remote_addr=None, *, \ family=0, proto=0, flags=0, \ reuse_address=None, reuse_port=None, \ allow_broadcast=None, sock=None) @@ -559,7 +559,7 @@ Opening network connections Added support for Windows. .. coroutinemethod:: loop.create_unix_connection(protocol_factory, \ - path=None, \*, ssl=None, sock=None, \ + path=None, *, ssl=None, sock=None, \ server_hostname=None, ssl_handshake_timeout=None) Create a Unix connection. @@ -592,7 +592,7 @@ Creating network servers ^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_server(protocol_factory, \ - host=None, port=None, \*, \ + host=None, port=None, *, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, \ sock=None, backlog=100, ssl=None, \ @@ -683,7 +683,7 @@ Creating network servers .. coroutinemethod:: loop.create_unix_server(protocol_factory, path=None, \ - \*, sock=None, backlog=100, ssl=None, \ + *, sock=None, backlog=100, ssl=None, \ ssl_handshake_timeout=None, start_serving=True) Similar to :meth:`loop.create_server` but works with the @@ -708,7 +708,7 @@ Creating network servers The *path* parameter can now be a :class:`~pathlib.Path` object. .. coroutinemethod:: loop.connect_accepted_socket(protocol_factory, \ - sock, \*, ssl=None, ssl_handshake_timeout=None) + sock, *, ssl=None, ssl_handshake_timeout=None) Wrap an already accepted connection into a transport/protocol pair. @@ -773,7 +773,7 @@ TLS Upgrade ^^^^^^^^^^^ .. coroutinemethod:: loop.start_tls(transport, protocol, \ - sslcontext, \*, server_side=False, \ + sslcontext, *, server_side=False, \ server_hostname=None, ssl_handshake_timeout=None) Upgrade an existing transport-based connection to TLS. @@ -806,7 +806,7 @@ TLS Upgrade Watching file descriptors ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. method:: loop.add_reader(fd, callback, \*args) +.. method:: loop.add_reader(fd, callback, *args) Start monitoring the *fd* file descriptor for read availability and invoke *callback* with the specified arguments once *fd* is available for @@ -816,7 +816,7 @@ Watching file descriptors Stop monitoring the *fd* file descriptor for read availability. -.. method:: loop.add_writer(fd, callback, \*args) +.. method:: loop.add_writer(fd, callback, *args) Start monitoring the *fd* file descriptor for write availability and invoke *callback* with the specified arguments once *fd* is available for @@ -930,7 +930,7 @@ convenient. :meth:`loop.create_server` and :func:`start_server`. .. coroutinemethod:: loop.sock_sendfile(sock, file, offset=0, count=None, \ - \*, fallback=True) + *, fallback=True) Send a file using high-performance :mod:`os.sendfile` if possible. Return the total number of bytes sent. @@ -964,7 +964,7 @@ convenient. DNS ^^^ -.. coroutinemethod:: loop.getaddrinfo(host, port, \*, family=0, \ +.. coroutinemethod:: loop.getaddrinfo(host, port, *, family=0, \ type=0, proto=0, flags=0) Asynchronous version of :meth:`socket.getaddrinfo`. @@ -1029,7 +1029,7 @@ Working with pipes Unix signals ^^^^^^^^^^^^ -.. method:: loop.add_signal_handler(signum, callback, \*args) +.. method:: loop.add_signal_handler(signum, callback, *args) Set *callback* as the handler for the *signum* signal. @@ -1064,7 +1064,7 @@ Unix signals Executing code in thread or process pools ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. awaitablemethod:: loop.run_in_executor(executor, func, \*args) +.. awaitablemethod:: loop.run_in_executor(executor, func, *args) Arrange for *func* to be called in the specified executor. @@ -1237,9 +1237,9 @@ async/await code consider using the high-level subprocesses. See :ref:`Subprocess Support on Windows ` for details. -.. coroutinemethod:: loop.subprocess_exec(protocol_factory, \*args, \ +.. coroutinemethod:: loop.subprocess_exec(protocol_factory, *args, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from one or more string arguments specified by *args*. @@ -1319,9 +1319,9 @@ async/await code consider using the high-level conforms to the :class:`asyncio.SubprocessTransport` base class and *protocol* is an object instantiated by the *protocol_factory*. -.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, \*, \ +.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, *, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from *cmd*, which can be a :class:`str` or a :class:`bytes` string encoded to the diff --git a/Doc/library/asyncio-future.rst b/Doc/library/asyncio-future.rst index e1ac18eaf0988..939d4c1a84523 100644 --- a/Doc/library/asyncio-future.rst +++ b/Doc/library/asyncio-future.rst @@ -31,7 +31,7 @@ Future Functions .. versionadded:: 3.5 -.. function:: ensure_future(obj, \*, loop=None) +.. function:: ensure_future(obj, *, loop=None) Return: @@ -58,7 +58,7 @@ Future Functions The function accepts any :term:`awaitable` object. -.. function:: wrap_future(future, \*, loop=None) +.. function:: wrap_future(future, *, loop=None) Wrap a :class:`concurrent.futures.Future` object in a :class:`asyncio.Future` object. @@ -67,7 +67,7 @@ Future Functions Future Object ============= -.. class:: Future(\*, loop=None) +.. class:: Future(*, loop=None) A Future represents an eventual result of an asynchronous operation. Not thread-safe. diff --git a/Doc/library/asyncio-policy.rst b/Doc/library/asyncio-policy.rst index 5e69525e90dd2..ef6a0588506b5 100644 --- a/Doc/library/asyncio-policy.rst +++ b/Doc/library/asyncio-policy.rst @@ -159,7 +159,7 @@ implementation used by the asyncio event loop: .. class:: AbstractChildWatcher - .. method:: add_child_handler(pid, callback, \*args) + .. method:: add_child_handler(pid, callback, *args) Register a new child handler. diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index bee47bcdcbf21..9b456c14351e4 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -48,7 +48,7 @@ The following top-level asyncio functions can be used to create and work with streams: -.. coroutinefunction:: open_connection(host=None, port=None, \*, \ +.. coroutinefunction:: open_connection(host=None, port=None, *, \ limit=None, ssl=None, family=0, proto=0, \ flags=0, sock=None, local_addr=None, \ server_hostname=None, ssl_handshake_timeout=None) @@ -71,7 +71,7 @@ and work with streams: The *ssl_handshake_timeout* parameter. .. coroutinefunction:: start_server(client_connected_cb, host=None, \ - port=None, \*, limit=None, \ + port=None, *, limit=None, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, sock=None, \ backlog=100, ssl=None, reuse_address=None, \ @@ -103,7 +103,7 @@ and work with streams: .. rubric:: Unix Sockets -.. coroutinefunction:: open_unix_connection(path=None, \*, limit=None, \ +.. coroutinefunction:: open_unix_connection(path=None, *, limit=None, \ ssl=None, sock=None, server_hostname=None, \ ssl_handshake_timeout=None) @@ -126,7 +126,7 @@ and work with streams: .. coroutinefunction:: start_unix_server(client_connected_cb, path=None, \ - \*, limit=None, sock=None, backlog=100, ssl=None, \ + *, limit=None, sock=None, backlog=100, ssl=None, \ ssl_handshake_timeout=None, start_serving=True) Start a Unix socket server. @@ -185,7 +185,7 @@ StreamReader can be read. Use the :attr:`IncompleteReadError.partial` attribute to get the partially read data. - .. coroutinemethod:: readuntil(separator=b'\\n') + .. coroutinemethod:: readuntil(separator=b'\n') Read data from the stream until *separator* is found. diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index ea674302bd9d6..f955a292e15d0 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -61,8 +61,8 @@ See also the `Examples`_ subsection. Creating Subprocesses ===================== -.. coroutinefunction:: create_subprocess_exec(program, \*args, stdin=None, \ - stdout=None, stderr=None, limit=None, \*\*kwds) +.. coroutinefunction:: create_subprocess_exec(program, *args, stdin=None, \ + stdout=None, stderr=None, limit=None, **kwds) Create a subprocess. @@ -77,7 +77,7 @@ Creating Subprocesses .. coroutinefunction:: create_subprocess_shell(cmd, stdin=None, \ - stdout=None, stderr=None, limit=None, \*\*kwds) + stdout=None, stderr=None, limit=None, **kwds) Run the *cmd* shell command. diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index 73ada0e2f006c..45e58437e0366 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -210,7 +210,7 @@ is :meth:`loop.run_in_executor`. Running an asyncio Program ========================== -.. function:: run(coro, \*, debug=False) +.. function:: run(coro, *, debug=False) Execute the :term:`coroutine` *coro* and return the result. @@ -247,7 +247,7 @@ Running an asyncio Program Creating Tasks ============== -.. function:: create_task(coro, \*, name=None) +.. function:: create_task(coro, *, name=None) Wrap the *coro* :ref:`coroutine ` into a :class:`Task` and schedule its execution. Return the Task object. @@ -316,7 +316,7 @@ Sleeping Running Tasks Concurrently ========================== -.. awaitablefunction:: gather(\*aws, return_exceptions=False) +.. awaitablefunction:: gather(*aws, return_exceptions=False) Run :ref:`awaitable objects ` in the *aws* sequence *concurrently*. @@ -488,7 +488,7 @@ Timeouts Waiting Primitives ================== -.. coroutinefunction:: wait(aws, \*, timeout=None, return_when=ALL_COMPLETED) +.. coroutinefunction:: wait(aws, *, timeout=None, return_when=ALL_COMPLETED) Run :ref:`awaitable objects ` in the *aws* iterable concurrently and block until the condition specified @@ -573,7 +573,7 @@ Waiting Primitives deprecated. -.. function:: as_completed(aws, \*, timeout=None) +.. function:: as_completed(aws, *, timeout=None) Run :ref:`awaitable objects ` in the *aws* iterable concurrently. Return an iterator of coroutines. @@ -593,7 +593,7 @@ Waiting Primitives Running in Threads ================== -.. coroutinefunction:: to_thread(func, /, \*args, \*\*kwargs) +.. coroutinefunction:: to_thread(func, /, *args, **kwargs) Asynchronously run function *func* in a separate thread. @@ -723,7 +723,7 @@ Introspection Task Object =========== -.. class:: Task(coro, \*, loop=None, name=None) +.. class:: Task(coro, *, loop=None, name=None) A :class:`Future-like ` object that runs a Python :ref:`coroutine `. Not thread-safe. @@ -889,7 +889,7 @@ Task Object See the documentation of :meth:`Future.remove_done_callback` for more details. - .. method:: get_stack(\*, limit=None) + .. method:: get_stack(*, limit=None) Return the list of stack frames for this Task. @@ -910,7 +910,7 @@ Task Object stack are returned, but the oldest frames of a traceback are returned. (This matches the behavior of the traceback module.) - .. method:: print_stack(\*, limit=None, file=None) + .. method:: print_stack(*, limit=None, file=None) Print the stack or traceback for this Task. diff --git a/Doc/library/base64.rst b/Doc/library/base64.rst index 2f24bb63912fb..25b3a4ca2967c 100644 --- a/Doc/library/base64.rst +++ b/Doc/library/base64.rst @@ -199,7 +199,7 @@ The modern interface provides: .. versionadded:: 3.4 -.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \\t\\n\\r\\v') +.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v') Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and return the decoded :class:`bytes`. diff --git a/Doc/library/compileall.rst b/Doc/library/compileall.rst index 9b914b1f0d9c6..5c6e68f930475 100644 --- a/Doc/library/compileall.rst +++ b/Doc/library/compileall.rst @@ -148,7 +148,7 @@ runtime. Public functions ---------------- -.. function:: compile_dir(dir, maxlevels=sys.getrecursionlimit(), ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1, invalidation_mode=None, \*, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) +.. function:: compile_dir(dir, maxlevels=sys.getrecursionlimit(), ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) Recursively descend the directory tree named by *dir*, compiling all :file:`.py` files along the way. Return a true value if all the files compiled successfully, @@ -231,7 +231,7 @@ Public functions Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* arguments. Default value of *maxlevels* was changed from ``10`` to ``sys.getrecursionlimit()`` -.. function:: compile_file(fullname, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, invalidation_mode=None, \*, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) +.. function:: compile_file(fullname, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) Compile the file with path *fullname*. Return a true value if the file compiled successfully, and a false value otherwise. diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst index 61d6c1143cfdd..d57f8ce23d12c 100644 --- a/Doc/library/concurrent.futures.rst +++ b/Doc/library/concurrent.futures.rst @@ -67,7 +67,7 @@ Executor Objects .. versionchanged:: 3.5 Added the *chunksize* argument. - .. method:: shutdown(wait=True, \*, cancel_futures=False) + .. method:: shutdown(wait=True, *, cancel_futures=False) Signal the executor that it should free any resources that it is using when the currently pending futures are done executing. Calls to diff --git a/Doc/library/contextvars.rst b/Doc/library/contextvars.rst index 8805661c456ed..14ac47f4c9eb1 100644 --- a/Doc/library/contextvars.rst +++ b/Doc/library/contextvars.rst @@ -26,7 +26,7 @@ See also :pep:`567` for additional details. Context Variables ----------------- -.. class:: ContextVar(name, [\*, default]) +.. class:: ContextVar(name, [*, default]) This class is used to declare a new Context Variable, e.g.:: @@ -146,7 +146,7 @@ Manual Context Management Context implements the :class:`collections.abc.Mapping` interface. - .. method:: run(callable, \*args, \*\*kwargs) + .. method:: run(callable, *args, **kwargs) Execute ``callable(*args, **kwargs)`` code in the context object the *run* method is called on. Return the result of the execution diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index bf32d3e549b48..7313148721dac 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -2508,7 +2508,7 @@ other data types containing pointer type fields. Arrays and pointers ^^^^^^^^^^^^^^^^^^^ -.. class:: Array(\*args) +.. class:: Array(*args) Abstract base class for arrays. diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index aa08988c8b36f..a5ee0fb538979 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -149,7 +149,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. contains a good example of its use. -.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in context diff format. @@ -279,7 +279,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. emu -.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in unified diff format. @@ -321,7 +321,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. See :ref:`difflib-interface` for a more detailed example. -.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\\n') +.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\n') Compare *a* and *b* (lists of bytes objects) using *dfunc*; yield a sequence of delta lines (also bytes) in the format returned by *dfunc*. diff --git a/Doc/library/email.header.rst b/Doc/library/email.header.rst index 07152c224f2ff..e093f138936b3 100644 --- a/Doc/library/email.header.rst +++ b/Doc/library/email.header.rst @@ -116,7 +116,7 @@ Here is the :class:`Header` class description: if *s* is a byte string. - .. method:: encode(splitchars=';, \\t', maxlinelen=None, linesep='\\n') + .. method:: encode(splitchars=';, \t', maxlinelen=None, linesep='\n') Encode a message header into an RFC-compliant format, possibly wrapping long lines and encapsulating non-ASCII parts in base64 or quoted-printable diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index 8e7076259810f..bf53b9520fc72 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -210,7 +210,7 @@ added matters. To illustrate:: :meth:`register_defect` method. - .. attribute:: mangle_from\_ + .. attribute:: mangle_from_ If :const:`True`, lines starting with *"From "* in the body are escaped by putting a ``>`` in front of them. This parameter is used when diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 24dc65d563c66..0598a6ce9415e 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1334,7 +1334,7 @@ are always available. They are listed here in alphabetical order. supported. -.. function:: print(*objects, sep=' ', end='\\n', file=sys.stdout, flush=False) +.. function:: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) Print *objects* to the text stream *file*, separated by *sep* and followed by *end*. *sep*, *end*, *file* and *flush*, if present, must be given as keyword diff --git a/Doc/library/http.cookies.rst b/Doc/library/http.cookies.rst index 17792b200599b..a2c1eb00d8b33 100644 --- a/Doc/library/http.cookies.rst +++ b/Doc/library/http.cookies.rst @@ -93,7 +93,7 @@ Cookie Objects :meth:`value_decode` are inverses on the range of *value_decode*. -.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\\r\\n') +.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\r\n') Return a string representation suitable to be sent as HTTP headers. *attrs* and *header* are sent to each :class:`Morsel`'s :meth:`output` method. *sep* is used diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index 45b62aec9ef53..f1c444fe8232c 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -1138,7 +1138,7 @@ find and load modules. directory for ``''`` (i.e. the empty string). -.. class:: FileFinder(path, \*loader_details) +.. class:: FileFinder(path, *loader_details) A concrete implementation of :class:`importlib.abc.PathEntryFinder` which caches results from the file system. @@ -1181,7 +1181,7 @@ find and load modules. Clear out the internal cache. - .. classmethod:: path_hook(\*loader_details) + .. classmethod:: path_hook(*loader_details) A class method which returns a closure for use on :attr:`sys.path_hooks`. An instance of :class:`FileFinder` is returned by the closure using the diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index d00a30ff00406..b53a9421fbca6 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -556,7 +556,7 @@ The Signature object represents the call signature of a callable object and its return annotation. To retrieve a Signature object, use the :func:`signature` function. -.. function:: signature(callable, \*, follow_wrapped=True) +.. function:: signature(callable, *, follow_wrapped=True) Return a :class:`Signature` object for the given ``callable``:: @@ -597,7 +597,7 @@ function. C provide no metadata about their arguments. -.. class:: Signature(parameters=None, \*, return_annotation=Signature.empty) +.. class:: Signature(parameters=None, *, return_annotation=Signature.empty) A Signature object represents the call signature of a function and its return annotation. For each parameter accepted by the function it stores a @@ -668,7 +668,7 @@ function. >>> str(new_sig) "(a, b) -> 'new return anno'" - .. classmethod:: Signature.from_callable(obj, \*, follow_wrapped=True) + .. classmethod:: Signature.from_callable(obj, *, follow_wrapped=True) Return a :class:`Signature` (or its subclass) object for a given callable ``obj``. Pass ``follow_wrapped=False`` to get a signature of ``obj`` @@ -684,7 +684,7 @@ function. .. versionadded:: 3.5 -.. class:: Parameter(name, kind, \*, default=Parameter.empty, annotation=Parameter.empty) +.. class:: Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty) Parameter objects are *immutable*. Instead of modifying a Parameter object, you can use :meth:`Parameter.replace` to create a modified copy. diff --git a/Doc/library/io.rst b/Doc/library/io.rst index aecbec56866d7..048cb2a7ff692 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -964,7 +964,7 @@ Text I/O .. versionadded:: 3.7 -.. class:: StringIO(initial_value='', newline='\\n') +.. class:: StringIO(initial_value='', newline='\n') A text stream using an in-memory text buffer. It inherits :class:`TextIOBase`. diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst index 4bfff9c6147ed..633c87873cd8c 100644 --- a/Doc/library/lzma.rst +++ b/Doc/library/lzma.rst @@ -33,7 +33,7 @@ from multiple threads, it is necessary to protect it with a lock. Reading and writing compressed files ------------------------------------ -.. function:: open(filename, mode="rb", \*, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) +.. function:: open(filename, mode="rb", *, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) Open an LZMA-compressed file in binary or text mode, returning a :term:`file object`. @@ -69,7 +69,7 @@ Reading and writing compressed files Accepts a :term:`path-like object`. -.. class:: LZMAFile(filename=None, mode="r", \*, format=None, check=-1, preset=None, filters=None) +.. class:: LZMAFile(filename=None, mode="r", *, format=None, check=-1, preset=None, filters=None) Open an LZMA-compressed file in binary mode. diff --git a/Doc/library/os.rst b/Doc/library/os.rst index b309988688959..ab1a615b6ea2a 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1991,7 +1991,7 @@ features: Accepts a :term:`path-like object`. -.. function:: lstat(path, \*, dir_fd=None) +.. function:: lstat(path, *, dir_fd=None) Perform the equivalent of an :c:func:`lstat` system call on the given path. Similar to :func:`~os.stat`, but does not follow symbolic links. Return a @@ -2498,7 +2498,7 @@ features: On the first, uncached call, a system call is required on Windows but not on Unix. - .. method:: is_dir(\*, follow_symlinks=True) + .. method:: is_dir(*, follow_symlinks=True) Return ``True`` if this entry is a directory or a symbolic link pointing to a directory; return ``False`` if the entry is or points to any other @@ -2522,7 +2522,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: is_file(\*, follow_symlinks=True) + .. method:: is_file(*, follow_symlinks=True) Return ``True`` if this entry is a file or a symbolic link pointing to a file; return ``False`` if the entry is or points to a directory or other @@ -2552,7 +2552,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: stat(\*, follow_symlinks=True) + .. method:: stat(*, follow_symlinks=True) Return a :class:`stat_result` object for this entry. This method follows symbolic links by default; to stat a symbolic link add the @@ -2584,7 +2584,7 @@ features: for :class:`bytes` paths on Windows. -.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True) +.. function:: stat(path, *, dir_fd=None, follow_symlinks=True) Get the status of a file or a file descriptor. Perform the equivalent of a :c:func:`stat` system call on the given path. *path* may be specified as diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index b7c3452771948..be48561ed10ac 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -213,7 +213,7 @@ The :mod:`pickle` module provides the following constants: The :mod:`pickle` module provides the following functions to make the pickling process more convenient: -.. function:: dump(obj, file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None) Write the pickled representation of the object *obj* to the open :term:`file object` *file*. This is equivalent to @@ -225,7 +225,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: dumps(obj, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None) Return the pickled representation of the object *obj* as a :class:`bytes` object, instead of writing it to a file. @@ -236,7 +236,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: load(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: load(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Read the pickled representation of an object from the open :term:`file object` *file* and return the reconstituted object hierarchy specified therein. @@ -252,7 +252,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffers* argument was added. -.. function:: loads(data, /, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: loads(data, /, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Return the reconstituted object hierarchy of the pickled representation *data* of an object. *data* must be a :term:`bytes-like object`. @@ -296,7 +296,7 @@ The :mod:`pickle` module defines three exceptions: The :mod:`pickle` module exports three classes, :class:`Pickler`, :class:`Unpickler` and :class:`PickleBuffer`: -.. class:: Pickler(file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. class:: Pickler(file, protocol=None, *, fix_imports=True, buffer_callback=None) This takes a binary file for writing a pickle data stream. @@ -391,7 +391,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`, Use :func:`pickletools.optimize` if you need more compact pickles. -.. class:: Unpickler(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. class:: Unpickler(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) This takes a binary file for reading a pickle data stream. diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst index 6def72b3736b9..ce6d4a85bf5e9 100644 --- a/Doc/library/plistlib.rst +++ b/Doc/library/plistlib.rst @@ -52,7 +52,7 @@ or :class:`datetime.datetime` objects. This module defines the following functions: -.. function:: load(fp, \*, fmt=None, dict_type=dict) +.. function:: load(fp, *, fmt=None, dict_type=dict) Read a plist file. *fp* should be a readable and binary file object. Return the unpacked root object (which usually is a @@ -80,7 +80,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: loads(data, \*, fmt=None, dict_type=dict) +.. function:: loads(data, *, fmt=None, dict_type=dict) Load a plist from a bytes object. See :func:`load` for an explanation of the keyword arguments. @@ -88,7 +88,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dump(value, fp, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Write *value* to a plist file. *Fp* should be a writable, binary file object. @@ -116,7 +116,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dumps(value, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Return *value* as a plist-formatted bytes object. See the documentation for :func:`dump` for an explanation of the keyword diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index 3f5122760ee16..435787c27661d 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -218,7 +218,7 @@ Directory and files operations copy the file more efficiently. See :ref:`shutil-platform-dependent-efficient-copy-operations` section. -.. function:: ignore_patterns(\*patterns) +.. function:: ignore_patterns(*patterns) This factory function creates a function that can be used as a callable for :func:`copytree`\'s *ignore* argument, ignoring files and directories that diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 59c2b84b52719..e48f67bfb9636 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -499,7 +499,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.10 -.. method:: int.to_bytes(length, byteorder, \*, signed=False) +.. method:: int.to_bytes(length, byteorder, *, signed=False) Return an array of bytes representing an integer. @@ -531,7 +531,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.2 -.. classmethod:: int.from_bytes(bytes, byteorder, \*, signed=False) +.. classmethod:: int.from_bytes(bytes, byteorder, *, signed=False) Return the integer represented by the given array of bytes. diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index 7f947efcb6766..4ac3f80a319f8 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -339,7 +339,7 @@ functions. stderr=None, preexec_fn=None, close_fds=True, shell=False, \ cwd=None, env=None, universal_newlines=None, \ startupinfo=None, creationflags=0, restore_signals=True, \ - start_new_session=False, pass_fds=(), \*, group=None, \ + start_new_session=False, pass_fds=(), *, group=None, \ extra_groups=None, user=None, umask=-1, \ encoding=None, errors=None, text=None, pipesize=-1) diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst index 78a1dfce9ae05..c9306e9bf9de1 100644 --- a/Doc/library/sysconfig.rst +++ b/Doc/library/sysconfig.rst @@ -32,7 +32,7 @@ can be accessed using :func:`get_config_vars` or :func:`get_config_var`. Notice that on Windows, it's a much smaller set. -.. function:: get_config_vars(\*args) +.. function:: get_config_vars(*args) With no arguments, return a dictionary of all configuration variables relevant for the current platform. diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index 7a114fdf5d54b..13088a10d77c5 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -37,7 +37,7 @@ Some facts and figures: Added support for :mod:`lzma` compression. -.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, \*\*kwargs) +.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs) Return a :class:`TarFile` object for the pathname *name*. For detailed information on :class:`TarFile` objects and the keyword arguments that are diff --git a/Doc/library/test.rst b/Doc/library/test.rst index ce6b868458ea4..e4f779bd83eb8 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -453,7 +453,7 @@ The :mod:`test.support` module defines the following functions: Define match test with regular expression *patterns*. -.. function:: run_unittest(\*classes) +.. function:: run_unittest(*classes) Execute :class:`unittest.TestCase` subclasses passed to the function. The function scans the classes for methods starting with the prefix ``test_`` @@ -1599,7 +1599,7 @@ The :mod:`test.support.warnings_helper` module provides support for warnings tes .. versionadded:: 3.8 -.. function:: check_warnings(\*filters, quiet=True) +.. function:: check_warnings(*filters, quiet=True) A convenience wrapper for :func:`warnings.catch_warnings()` that makes it easier to test that a warning was correctly raised. It is approximately diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst index a481a3509d4ec..9c1743cad23cb 100644 --- a/Doc/library/warnings.rst +++ b/Doc/library/warnings.rst @@ -491,7 +491,7 @@ Available Functions Available Context Managers -------------------------- -.. class:: catch_warnings(\*, record=False, module=None) +.. class:: catch_warnings(*, record=False, module=None) A context manager that copies and, upon exit, restores the warnings filter and the :func:`showwarning` function. diff --git a/Doc/library/winreg.rst b/Doc/library/winreg.rst index dccb7db27e90c..487856a3ac6c6 100644 --- a/Doc/library/winreg.rst +++ b/Doc/library/winreg.rst @@ -791,7 +791,7 @@ integer handle, and also disconnect the Windows handle from the handle object. .. method:: PyHKEY.__enter__() - PyHKEY.__exit__(\*exc_info) + PyHKEY.__exit__(*exc_info) The HKEY object implements :meth:`~object.__enter__` and :meth:`~object.__exit__` and thus supports the context protocol for the diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index bf72c46561b7c..e1cc96794221a 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -174,7 +174,7 @@ module documentation. This section lists the differences between the API and The :meth:`toxml` method now preserves the attribute order specified by the user. -.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, \ +.. method:: Node.toprettyxml(indent="\t", newl="\n", encoding=None, \ standalone=None) Return a pretty-printed version of the document. *indent* specifies the From webhook-mailer at python.org Thu Dec 17 03:03:59 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 08:03:59 -0000 Subject: [Python-checkins] bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) Message-ID: https://github.com/python/cpython/commit/e962e3ad225a211b9f9689742db6e9771d07c505 commit: e962e3ad225a211b9f9689742db6e9771d07c505 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T00:03:50-08:00 summary: bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) Use shorter timeout and replace send() with sendall(). (cherry picked from commit 79782fe4f8cf73d7fdf8db02073bbadf7ff817b6) Co-authored-by: Victor Stinner files: M Lib/test/test_epoll.py diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py index 10f148fe5cdb4..b623852f9eb4e 100644 --- a/Lib/test/test_epoll.py +++ b/Lib/test/test_epoll.py @@ -160,44 +160,42 @@ def test_fromfd(self): self.fail("epoll on closed fd didn't raise EBADF") def test_control_and_wait(self): + # create the epoll object client, server = self._connected_pair() - ep = select.epoll(16) ep.register(server.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) ep.register(client.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) + # EPOLLOUT now = time.monotonic() events = ep.poll(1, 4) then = time.monotonic() self.assertFalse(then - now > 0.1, then - now) - events.sort() expected = [(client.fileno(), select.EPOLLOUT), (server.fileno(), select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) - events = ep.poll(timeout=2.1, maxevents=4) + # no event + events = ep.poll(timeout=0.1, maxevents=4) self.assertFalse(events) - client.send(b"Hello!") - server.send(b"world!!!") + # send: EPOLLIN and EPOLLOUT + client.sendall(b"Hello!") + server.sendall(b"world!!!") now = time.monotonic() - events = ep.poll(1, 4) + events = ep.poll(1.0, 4) then = time.monotonic() self.assertFalse(then - now > 0.01) - events.sort() expected = [(client.fileno(), select.EPOLLIN | select.EPOLLOUT), (server.fileno(), select.EPOLLIN | select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) + # unregister, modify ep.unregister(client.fileno()) ep.modify(server.fileno(), select.EPOLLOUT) now = time.monotonic() From webhook-mailer at python.org Thu Dec 17 05:05:02 2020 From: webhook-mailer at python.org (asvetlov) Date: Thu, 17 Dec 2020 10:05:02 -0000 Subject: [Python-checkins] bpo-31904: Skip some asyncio tests on VxWorks (#23815) Message-ID: https://github.com/python/cpython/commit/ba760f3710eccdfae2b680a5f94fe0160ddb1536 commit: ba760f3710eccdfae2b680a5f94fe0160ddb1536 branch: master author: pxinwr committer: asvetlov date: 2020-12-17T12:04:47+02:00 summary: bpo-31904: Skip some asyncio tests on VxWorks (#23815) files: A Misc/NEWS.d/next/Tests/2020-12-17-15-42-44.bpo-31904.d8g3l0d5.rst M Lib/test/test_asyncio/test_base_events.py M Lib/test/test_asyncio/test_events.py diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index 8d048c87d0050..e40e7999b64d1 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -1745,6 +1745,8 @@ class FakeSock: MyDatagramProto, allow_broadcast=True, sock=FakeSock()) self.assertRaises(ValueError, self.loop.run_until_complete, fut) + @unittest.skipIf(sys.platform == 'vxworks', + "SO_BROADCAST is enabled by default on VxWorks") def test_create_datagram_endpoint_sockopts(self): # Socket options should not be applied unless asked for. # SO_REUSEPORT is not available on all platforms. diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index ce615606db7e3..6523a79b4a634 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -22,7 +22,7 @@ from unittest import mock import weakref -if sys.platform != 'win32': +if sys.platform not in ('win32', 'vxworks'): import tty import asyncio @@ -465,6 +465,8 @@ def my_handler(): self.assertFalse(self.loop.remove_signal_handler(signal.SIGINT)) @unittest.skipUnless(hasattr(signal, 'SIGALRM'), 'No SIGALRM') + @unittest.skipUnless(hasattr(signal, 'setitimer'), + 'need signal.setitimer()') def test_signal_handling_while_selecting(self): # Test with a signal actually arriving during a select() call. caught = 0 @@ -482,6 +484,8 @@ def my_handler(): self.assertEqual(caught, 1) @unittest.skipUnless(hasattr(signal, 'SIGALRM'), 'No SIGALRM') + @unittest.skipUnless(hasattr(signal, 'setitimer'), + 'need signal.setitimer()') def test_signal_handling_args(self): some_args = (42,) caught = 0 @@ -1371,6 +1375,7 @@ async def connect(): @unittest.skipUnless(sys.platform != 'win32', "Don't support pipes for Windows") + @unittest.skipUnless(hasattr(os, 'openpty'), 'need os.openpty()') def test_read_pty_output(self): proto = MyReadPipeProto(loop=self.loop) @@ -1468,6 +1473,7 @@ def test_write_pipe_disconnect_on_close(self): @unittest.skipUnless(sys.platform != 'win32', "Don't support pipes for Windows") + @unittest.skipUnless(hasattr(os, 'openpty'), 'need os.openpty()') # select, poll and kqueue don't support character devices (PTY) on Mac OS X # older than 10.6 (Snow Leopard) @support.requires_mac_ver(10, 6) @@ -1512,6 +1518,7 @@ def reader(data): @unittest.skipUnless(sys.platform != 'win32', "Don't support pipes for Windows") + @unittest.skipUnless(hasattr(os, 'openpty'), 'need os.openpty()') # select, poll and kqueue don't support character devices (PTY) on Mac OS X # older than 10.6 (Snow Leopard) @support.requires_mac_ver(10, 6) diff --git a/Misc/NEWS.d/next/Tests/2020-12-17-15-42-44.bpo-31904.d8g3l0d5.rst b/Misc/NEWS.d/next/Tests/2020-12-17-15-42-44.bpo-31904.d8g3l0d5.rst new file mode 100644 index 0000000000000..d74e4666853b5 --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-12-17-15-42-44.bpo-31904.d8g3l0d5.rst @@ -0,0 +1 @@ +Skip some asyncio tests on VxWorks. From webhook-mailer at python.org Thu Dec 17 06:14:56 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 11:14:56 -0000 Subject: [Python-checkins] bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) (GH-23814) Message-ID: https://github.com/python/cpython/commit/718bf1a7a1a39ca6f2381a299d00d8318732104a commit: 718bf1a7a1a39ca6f2381a299d00d8318732104a branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2020-12-17T12:14:25+01:00 summary: bpo-41804: Enhance test_epoll.test_control_and_wait() (GH-23795) (GH-23814) Use shorter timeout and replace send() with sendall(). (cherry picked from commit 79782fe4f8cf73d7fdf8db02073bbadf7ff817b6) Co-authored-by: Victor Stinner Co-authored-by: Victor Stinner files: M Lib/test/test_epoll.py diff --git a/Lib/test/test_epoll.py b/Lib/test/test_epoll.py index 8ac0f31d8051c..e7d58350df86f 100644 --- a/Lib/test/test_epoll.py +++ b/Lib/test/test_epoll.py @@ -160,44 +160,42 @@ def test_fromfd(self): self.fail("epoll on closed fd didn't raise EBADF") def test_control_and_wait(self): + # create the epoll object client, server = self._connected_pair() - ep = select.epoll(16) ep.register(server.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) ep.register(client.fileno(), select.EPOLLIN | select.EPOLLOUT | select.EPOLLET) + # EPOLLOUT now = time.monotonic() events = ep.poll(1, 4) then = time.monotonic() self.assertFalse(then - now > 0.1, then - now) - events.sort() expected = [(client.fileno(), select.EPOLLOUT), (server.fileno(), select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) - events = ep.poll(timeout=2.1, maxevents=4) + # no event + events = ep.poll(timeout=0.1, maxevents=4) self.assertFalse(events) - client.send(b"Hello!") - server.send(b"world!!!") + # send: EPOLLIN and EPOLLOUT + client.sendall(b"Hello!") + server.sendall(b"world!!!") now = time.monotonic() - events = ep.poll(1, 4) + events = ep.poll(1.0, 4) then = time.monotonic() self.assertFalse(then - now > 0.01) - events.sort() expected = [(client.fileno(), select.EPOLLIN | select.EPOLLOUT), (server.fileno(), select.EPOLLIN | select.EPOLLOUT)] - expected.sort() - - self.assertEqual(events, expected) + self.assertEqual(sorted(events), sorted(expected)) + # unregister, modify ep.unregister(client.fileno()) ep.modify(server.fileno(), select.EPOLLOUT) now = time.monotonic() From webhook-mailer at python.org Thu Dec 17 06:15:27 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 11:15:27 -0000 Subject: [Python-checkins] bpo-42375: subprocess DragonFlyBSD build update. (GH-23320) (GH-23388) Message-ID: https://github.com/python/cpython/commit/8d0a01c99b2a810bfe13d654b294c25a10151aa4 commit: 8d0a01c99b2a810bfe13d654b294c25a10151aa4 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2020-12-17T12:15:20+01:00 summary: bpo-42375: subprocess DragonFlyBSD build update. (GH-23320) (GH-23388) Same as FreeBSD, file descriptors in /dev/fd id from 0 to 63. (cherry picked from commit 13b865f0e17c88b081c23f7f05cf91166d220a50) Co-authored-by: David CARLIER Co-authored-by: David CARLIER files: A Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst M Modules/_posixsubprocess.c diff --git a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst new file mode 100644 index 0000000000000..6d8c80c2f2c0a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst @@ -0,0 +1 @@ +subprocess module update for DragonFlyBSD support. \ No newline at end of file diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index 5356417dd7037..c266fd1ec1756 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -46,7 +46,7 @@ # endif #endif -#if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__)) +#if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__DragonFly__) # define FD_DIR "/dev/fd" #else # define FD_DIR "/proc/self/fd" @@ -116,9 +116,9 @@ _pos_int_from_ascii(const char *name) } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) /* When /dev/fd isn't mounted it is often a static directory populated - * with 0 1 2 or entries for 0 .. 63 on FreeBSD, NetBSD and OpenBSD. + * with 0 1 2 or entries for 0 .. 63 on FreeBSD, NetBSD, OpenBSD and DragonFlyBSD. * NetBSD and OpenBSD have a /proc fs available (though not necessarily * mounted) and do not have fdescfs for /dev/fd. MacOS X has a devfs * that properly supports /dev/fd. @@ -377,7 +377,7 @@ _close_open_fds_maybe_unsafe(long start_fd, PyObject* py_fds_to_keep) ++start_fd; #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) if (!_is_fdescfs_mounted_on_dev_fd()) proc_fd_dir = NULL; else From webhook-mailer at python.org Thu Dec 17 06:16:04 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 11:16:04 -0000 Subject: [Python-checkins] bpo-42375: subprocess DragonFlyBSD build update. (GH-23320) (GH-23389) Message-ID: https://github.com/python/cpython/commit/4f65907f38339809532bc06ffc1382c2c09180e2 commit: 4f65907f38339809532bc06ffc1382c2c09180e2 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2020-12-17T12:16:00+01:00 summary: bpo-42375: subprocess DragonFlyBSD build update. (GH-23320) (GH-23389) Same as FreeBSD, file descriptors in /dev/fd id from 0 to 63. (cherry picked from commit 13b865f0e17c88b081c23f7f05cf91166d220a50) Co-authored-by: David CARLIER Co-authored-by: David CARLIER files: A Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst M Modules/_posixsubprocess.c diff --git a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst new file mode 100644 index 0000000000000..6d8c80c2f2c0a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst @@ -0,0 +1 @@ +subprocess module update for DragonFlyBSD support. \ No newline at end of file diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index e693e53206907..05c051c6125f4 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -41,7 +41,7 @@ # endif #endif -#if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__)) +#if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__DragonFly__) # define FD_DIR "/dev/fd" #else # define FD_DIR "/proc/self/fd" @@ -88,9 +88,9 @@ _pos_int_from_ascii(const char *name) } -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) /* When /dev/fd isn't mounted it is often a static directory populated - * with 0 1 2 or entries for 0 .. 63 on FreeBSD, NetBSD and OpenBSD. + * with 0 1 2 or entries for 0 .. 63 on FreeBSD, NetBSD, OpenBSD and DragonFlyBSD. * NetBSD and OpenBSD have a /proc fs available (though not necessarily * mounted) and do not have fdescfs for /dev/fd. MacOS X has a devfs * that properly supports /dev/fd. @@ -343,7 +343,7 @@ _close_open_fds_maybe_unsafe(long start_fd, PyObject* py_fds_to_keep) ++start_fd; #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) if (!_is_fdescfs_mounted_on_dev_fd()) proc_fd_dir = NULL; else From webhook-mailer at python.org Thu Dec 17 06:40:44 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 11:40:44 -0000 Subject: [Python-checkins] bpo-42613: Fix freeze.py config directory (GH-23792) Message-ID: https://github.com/python/cpython/commit/829272e67bbd4b2cc76c01cd20265eb114b392a2 commit: 829272e67bbd4b2cc76c01cd20265eb114b392a2 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T03:40:26-08:00 summary: bpo-42613: Fix freeze.py config directory (GH-23792) Fix freeze.py tool to use the prope config and library directories. (cherry picked from commit 1c653f17cb84d81df3a74ab0b42140d2bb68c5c4) Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst M Tools/freeze/freeze.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst new file mode 100644 index 0000000000000..140ff8255b96b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst @@ -0,0 +1,2 @@ +Fix ``freeze.py`` tool to use the prope config and library directories. +Patch by Victor Stinner. diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py index 83aa508a46a93..d66e1e2708e75 100755 --- a/Tools/freeze/freeze.py +++ b/Tools/freeze/freeze.py @@ -93,6 +93,7 @@ import getopt import os import sys +import sysconfig # Import the freeze-private modules @@ -226,7 +227,7 @@ def main(): extensions_c = 'frozen_extensions.c' if ishome: print("(Using Python source directory)") - binlib = exec_prefix + configdir = exec_prefix incldir = os.path.join(prefix, 'Include') config_h_dir = exec_prefix config_c_in = os.path.join(prefix, 'Modules', 'config.c.in') @@ -235,22 +236,21 @@ def main(): if win: frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c') else: - binlib = os.path.join(exec_prefix, - 'lib', 'python%s' % version, - 'config-%s' % flagged_version) + configdir = sysconfig.get_config_var('LIBPL') incldir = os.path.join(prefix, 'include', 'python%s' % flagged_version) config_h_dir = os.path.join(exec_prefix, 'include', 'python%s' % flagged_version) - config_c_in = os.path.join(binlib, 'config.c.in') - frozenmain_c = os.path.join(binlib, 'frozenmain.c') - makefile_in = os.path.join(binlib, 'Makefile') - frozendllmain_c = os.path.join(binlib, 'frozen_dllmain.c') + config_c_in = os.path.join(configdir, 'config.c.in') + frozenmain_c = os.path.join(configdir, 'frozenmain.c') + makefile_in = os.path.join(configdir, 'Makefile') + frozendllmain_c = os.path.join(configdir, 'frozen_dllmain.c') + libdir = sysconfig.get_config_var('LIBDIR') supp_sources = [] defines = [] includes = ['-I' + incldir, '-I' + config_h_dir] # sanity check of directories and files - check_dirs = [prefix, exec_prefix, binlib, incldir] + check_dirs = [prefix, exec_prefix, configdir, incldir] if not win: # These are not directories on Windows. check_dirs = check_dirs + extensions @@ -457,7 +457,7 @@ def main(): cflags = ['$(OPT)'] cppflags = defines + includes - libs = [os.path.join(binlib, '$(LDLIBRARY)')] + libs = [os.path.join(libdir, '$(LDLIBRARY)')] somevars = {} if os.path.exists(makefile_in): From webhook-mailer at python.org Thu Dec 17 07:33:45 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 12:33:45 -0000 Subject: [Python-checkins] bpo-26564: fix obsolete comment in traceback.c (GH-23819) Message-ID: https://github.com/python/cpython/commit/40125ab3252453bf205ed906e46bf9741c27bf9d commit: 40125ab3252453bf205ed906e46bf9741c27bf9d branch: master author: Irit Katriel committer: vstinner date: 2020-12-17T13:33:07+01:00 summary: bpo-26564: fix obsolete comment in traceback.c (GH-23819) files: M Python/traceback.c diff --git a/Python/traceback.c b/Python/traceback.c index 708678facf7c3..b82cfd3665ce1 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -622,7 +622,8 @@ PyTraceBack_Print(PyObject *v, PyObject *f) return err; } -/* Reverse a string. For example, "abcd" becomes "dcba". +/* Format an integer in range [0; 0xffffffff] to decimal and write it + into the file fd. This function is signal safe. */ From webhook-mailer at python.org Thu Dec 17 08:19:59 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 13:19:59 -0000 Subject: [Python-checkins] bpo-26564: fix obsolete comment in traceback.c (GH-23819) Message-ID: https://github.com/python/cpython/commit/cecbaa3a80d5ae28cdd4129d6d2c4395c12a89e4 commit: cecbaa3a80d5ae28cdd4129d6d2c4395c12a89e4 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T05:19:49-08:00 summary: bpo-26564: fix obsolete comment in traceback.c (GH-23819) (cherry picked from commit 40125ab3252453bf205ed906e46bf9741c27bf9d) Co-authored-by: Irit Katriel files: M Python/traceback.c diff --git a/Python/traceback.c b/Python/traceback.c index 8e2f15e85d6b5..0aa51ad37f49e 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -623,7 +623,8 @@ PyTraceBack_Print(PyObject *v, PyObject *f) return err; } -/* Reverse a string. For example, "abcd" becomes "dcba". +/* Format an integer in range [0; 0xffffffff] to decimal and write it + into the file fd. This function is signal safe. */ From webhook-mailer at python.org Thu Dec 17 08:20:07 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 13:20:07 -0000 Subject: [Python-checkins] bpo-26564: fix obsolete comment in traceback.c (GH-23819) Message-ID: https://github.com/python/cpython/commit/1c70d40e94741578ce28b8851fb65372ac2e7942 commit: 1c70d40e94741578ce28b8851fb65372ac2e7942 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T05:19:58-08:00 summary: bpo-26564: fix obsolete comment in traceback.c (GH-23819) (cherry picked from commit 40125ab3252453bf205ed906e46bf9741c27bf9d) Co-authored-by: Irit Katriel files: M Python/traceback.c diff --git a/Python/traceback.c b/Python/traceback.c index 99b63af11f8be..5d3a65cc160e0 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -622,7 +622,8 @@ PyTraceBack_Print(PyObject *v, PyObject *f) return err; } -/* Reverse a string. For example, "abcd" becomes "dcba". +/* Format an integer in range [0; 0xffffffff] to decimal and write it + into the file fd. This function is signal safe. */ From webhook-mailer at python.org Thu Dec 17 08:55:39 2020 From: webhook-mailer at python.org (markshannon) Date: Thu, 17 Dec 2020 13:55:39 -0000 Subject: [Python-checkins] bpo-42246: Make sure that `f_lasti`, and thus `f_lineno`, is set correctly after raising or reraising an exception (GH-23803) Message-ID: https://github.com/python/cpython/commit/bf353f3c2d937772a8cf30b15fd8eb7b82665ccb commit: bf353f3c2d937772a8cf30b15fd8eb7b82665ccb branch: master author: Mark Shannon committer: markshannon date: 2020-12-17T13:55:28Z summary: bpo-42246: Make sure that `f_lasti`, and thus `f_lineno`, is set correctly after raising or reraising an exception (GH-23803) * Ensure that f_lasti is set correctly after an exception is raised to conform to PEP 626. * Update importlib * Add NEWS. files: A Misc/NEWS.d/next/Core and Builtins/2020-12-16-14-44-21.bpo-42246.RtIEY7.rst M Doc/library/dis.rst M Include/opcode.h M Lib/importlib/_bootstrap_external.py M Lib/opcode.py M Lib/test/test_dis.py M Lib/test/test_exceptions.py M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/opcode_targets.h diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index ec64d3daf003a..c09d8338d2c3b 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -708,7 +708,8 @@ iterations of the loop. .. opcode:: RERAISE - Re-raises the exception currently on top of the stack. + Re-raises the exception currently on top of the stack. If oparg is non-zero, + restores ``f_lasti`` of the current frame to its value when the exception was raised. .. versionadded:: 3.9 diff --git a/Include/opcode.h b/Include/opcode.h index 420c87aa0f24f..998a5ce492d03 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -30,7 +30,6 @@ extern "C" { #define BINARY_TRUE_DIVIDE 27 #define INPLACE_FLOOR_DIVIDE 28 #define INPLACE_TRUE_DIVIDE 29 -#define RERAISE 48 #define WITH_EXCEPT_START 49 #define GET_AITER 50 #define GET_ANEXT 51 @@ -96,6 +95,7 @@ extern "C" { #define LOAD_GLOBAL 116 #define IS_OP 117 #define CONTAINS_OP 118 +#define RERAISE 119 #define JUMP_IF_NOT_EXC_MATCH 121 #define SETUP_FINALLY 122 #define LOAD_FAST 124 diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index d9e44df409062..354650011e1d9 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -312,6 +312,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.10a1 3430 (Make 'annotations' future by default) # Python 3.10a1 3431 (New line number table format -- PEP 626) # Python 3.10a2 3432 (Function annotation for MAKE_FUNCTION is changed from dict to tuple bpo-42202) +# Python 3.10a2 3433 (RERAISE restores f_lasti if oparg != 0) # # MAGIC must change whenever the bytecode emitted by the compiler may no @@ -321,7 +322,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3432).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3433).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/opcode.py b/Lib/opcode.py index ac1aa535f66ff..cc321166e7926 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -83,7 +83,6 @@ def jabs_op(name, op): def_op('INPLACE_FLOOR_DIVIDE', 28) def_op('INPLACE_TRUE_DIVIDE', 29) -def_op('RERAISE', 48) def_op('WITH_EXCEPT_START', 49) def_op('GET_AITER', 50) def_op('GET_ANEXT', 51) @@ -161,6 +160,7 @@ def jabs_op(name, op): def_op('IS_OP', 117) def_op('CONTAINS_OP', 118) +def_op('RERAISE', 119) jabs_op('JUMP_IF_NOT_EXC_MATCH', 121) jrel_op('SETUP_FINALLY', 122) # Distance to target address diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index f279f75c9614d..786744923eb46 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -313,9 +313,9 @@ def bug42562(): >> 50 LOAD_CONST 0 (None) 52 STORE_FAST 0 (e) 54 DELETE_FAST 0 (e) - 56 RERAISE + 56 RERAISE 1 -%3d >> 58 RERAISE +%3d >> 58 RERAISE 0 """ % (TRACEBACK_CODE.co_firstlineno + 1, TRACEBACK_CODE.co_firstlineno + 2, TRACEBACK_CODE.co_firstlineno + 5, @@ -370,7 +370,7 @@ def _tryfinallyconst(b): >> 14 LOAD_FAST 1 (b) 16 CALL_FUNCTION 0 18 POP_TOP - 20 RERAISE + 20 RERAISE 0 """ % (_tryfinally.__code__.co_firstlineno + 1, _tryfinally.__code__.co_firstlineno + 2, _tryfinally.__code__.co_firstlineno + 4, @@ -389,7 +389,7 @@ def _tryfinallyconst(b): >> 14 LOAD_FAST 0 (b) 16 CALL_FUNCTION 0 18 POP_TOP - 20 RERAISE + 20 RERAISE 0 """ % (_tryfinallyconst.__code__.co_firstlineno + 1, _tryfinallyconst.__code__.co_firstlineno + 2, _tryfinallyconst.__code__.co_firstlineno + 4, @@ -1076,7 +1076,7 @@ def jumpy(): Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False), Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), Instruction(opname='JUMP_FORWARD', opcode=110, arg=46, argval=188, argrepr='to 188', offset=140, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=142, starts_line=None, is_jump_target=True), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=142, starts_line=None, is_jump_target=True), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), @@ -1093,7 +1093,7 @@ def jumpy(): Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=True), Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=178, argval=178, argrepr='', offset=174, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=176, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=True), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), @@ -1110,7 +1110,7 @@ def jumpy(): Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=204, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=206, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=208, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=48, arg=None, argval=None, argrepr='', offset=210, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=210, starts_line=None, is_jump_target=False), ] # One last piece of inspect fodder to check the default line number handling diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index e752ab72ccff3..864422390ad30 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1488,5 +1488,88 @@ def test_copy_pickle(self): self.assertEqual(exc.path, orig.path) +class PEP626Tests(unittest.TestCase): + + def lineno_after_raise(self, f, line): + try: + f() + except Exception as ex: + t = ex.__traceback__ + while t.tb_next: + t = t.tb_next + frame = t.tb_frame + self.assertEqual(frame.f_lineno-frame.f_code.co_firstlineno, line) + + def test_lineno_after_raise_simple(self): + def simple(): + 1/0 + pass + self.lineno_after_raise(simple, 1) + + def test_lineno_after_raise_in_except(self): + def in_except(): + try: + 1/0 + except: + 1/0 + pass + self.lineno_after_raise(in_except, 4) + + def test_lineno_after_other_except(self): + def other_except(): + try: + 1/0 + except TypeError as ex: + pass + self.lineno_after_raise(other_except, 3) + + def test_lineno_in_named_except(self): + def in_named_except(): + try: + 1/0 + except Exception as ex: + 1/0 + pass + self.lineno_after_raise(in_named_except, 4) + + def test_lineno_in_try(self): + def in_try(): + try: + 1/0 + finally: + pass + self.lineno_after_raise(in_try, 4) + + def test_lineno_in_finally_normal(self): + def in_finally_normal(): + try: + pass + finally: + 1/0 + pass + self.lineno_after_raise(in_finally_normal, 4) + + def test_lineno_in_finally_except(self): + def in_finally_except(): + try: + 1/0 + finally: + 1/0 + pass + self.lineno_after_raise(in_finally_except, 4) + + def test_lineno_after_with(self): + class Noop: + def __enter__(self): + return self + def __exit__(self, *args): + pass + def after_with(): + with Noop(): + 1/0 + pass + self.lineno_after_raise(after_with, 2) + + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-16-14-44-21.bpo-42246.RtIEY7.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-16-14-44-21.bpo-42246.RtIEY7.rst new file mode 100644 index 0000000000000..a3814b6419e4c --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-16-14-44-21.bpo-42246.RtIEY7.rst @@ -0,0 +1,3 @@ +Make sure that the ``f_lasti`` and ``f_lineno`` attributes of a frame are +set correctly when an exception is raised or re-raised. Required for PEP +626. diff --git a/Python/ceval.c b/Python/ceval.c index 9de925780e407..f0f39539c97bb 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2430,6 +2430,10 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } case TARGET(RERAISE): { + assert(f->f_iblock > 0); + if (oparg) { + f->f_lasti = f->f_blockstack[f->f_iblock-1].b_handler; + } PyObject *exc = POP(); PyObject *val = POP(); PyObject *tb = POP(); @@ -4039,7 +4043,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) int handler = b->b_handler; _PyErr_StackItem *exc_info = tstate->exc_info; /* Beware, this invalidates all b->b_* fields */ - PyFrame_BlockSetup(f, EXCEPT_HANDLER, -1, STACK_LEVEL()); + PyFrame_BlockSetup(f, EXCEPT_HANDLER, f->f_lasti, STACK_LEVEL()); PUSH(exc_info->exc_traceback); PUSH(exc_info->exc_value); if (exc_info->exc_type != NULL) { diff --git a/Python/compile.c b/Python/compile.c index 2871ffc476f8d..d4dbaf7b6aa77 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2981,7 +2981,7 @@ compiler_try_finally(struct compiler *c, stmt_ty s) return 0; VISIT_SEQ(c, stmt, s->v.Try.finalbody); compiler_pop_fblock(c, FINALLY_END, end); - ADDOP(c, RERAISE); + ADDOP_I(c, RERAISE, 0); compiler_use_next_block(c, exit); return 1; } @@ -3107,7 +3107,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) compiler_nameop(c, handler->v.ExceptHandler.name, Store); compiler_nameop(c, handler->v.ExceptHandler.name, Del); - ADDOP(c, RERAISE); + ADDOP_I(c, RERAISE, 1); } else { basicblock *cleanup_body; @@ -3129,7 +3129,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) compiler_use_next_block(c, except); } compiler_pop_fblock(c, EXCEPTION_HANDLER, NULL); - ADDOP(c, RERAISE); + ADDOP_I(c, RERAISE, 0); compiler_use_next_block(c, orelse); VISIT_SEQ(c, stmt, s->v.Try.orelse); compiler_use_next_block(c, end); @@ -4759,7 +4759,7 @@ compiler_with_except_finish(struct compiler *c) { return 0; ADDOP_JUMP(c, POP_JUMP_IF_TRUE, exit); NEXT_BLOCK(c); - ADDOP(c, RERAISE); + ADDOP_I(c, RERAISE, 1); compiler_use_next_block(c, exit); ADDOP(c, POP_TOP); ADDOP(c, POP_TOP); diff --git a/Python/importlib.h b/Python/importlib.h index 1caf2f4f742d2..87b8c63ce85a8 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -57,7 +57,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,67,0,0,0,115,38,0,0,0,122,8,124,0, 106,0,87,0,83,0,4,0,116,1,121,36,1,0,1,0, 1,0,116,2,124,0,131,1,106,0,6,0,89,0,83,0, - 48,0,169,1,78,41,3,218,12,95,95,113,117,97,108,110, + 119,0,169,1,78,41,3,218,12,95,95,113,117,97,108,110, 97,109,101,95,95,218,14,65,116,116,114,105,98,117,116,101, 69,114,114,111,114,218,4,116,121,112,101,41,1,218,3,111, 98,106,169,0,114,5,0,0,0,250,29,60,102,114,111,122, @@ -159,10 +159,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 161,0,114,112,116,7,100,5,124,0,22,0,131,1,130,1, 124,0,106,8,160,9,100,6,161,1,114,138,124,0,4,0, 106,10,100,3,55,0,2,0,95,10,87,0,100,4,4,0, - 4,0,131,3,1,0,110,16,49,0,115,158,48,0,1,0, + 4,0,131,3,1,0,110,16,49,0,115,158,119,1,1,0, 1,0,1,0,89,0,1,0,124,0,106,8,160,9,161,0, 1,0,124,0,106,8,160,11,161,0,1,0,113,20,116,2, - 124,1,61,0,48,0,41,7,122,185,10,32,32,32,32,32, + 124,1,61,0,119,0,41,7,122,185,10,32,32,32,32,32, 32,32,32,65,99,113,117,105,114,101,32,116,104,101,32,109, 111,100,117,108,101,32,108,111,99,107,46,32,32,73,102,32, 97,32,112,111,116,101,110,116,105,97,108,32,100,101,97,100, @@ -197,7 +197,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,106,6,114,108,124,0,4,0,106,6,100,3,56,0,2, 0,95,6,124,0,106,7,160,8,161,0,1,0,87,0,100, 0,4,0,4,0,131,3,1,0,100,0,83,0,49,0,115, - 130,48,0,1,0,1,0,1,0,89,0,1,0,100,0,83, + 130,119,1,1,0,1,0,1,0,89,0,1,0,100,0,83, 0,41,4,78,250,31,99,97,110,110,111,116,32,114,101,108, 101,97,115,101,32,117,110,45,97,99,113,117,105,114,101,100, 32,108,111,99,107,114,25,0,0,0,114,42,0,0,0,41, @@ -323,12 +323,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 67,0,0,0,115,134,0,0,0,116,0,160,1,161,0,1, 0,122,114,122,14,116,2,124,0,25,0,131,0,125,1,87, 0,110,22,4,0,116,3,121,46,1,0,1,0,1,0,100, - 1,125,1,89,0,110,2,48,0,124,1,100,1,117,0,114, + 1,125,1,89,0,110,2,119,0,124,1,100,1,117,0,114, 110,116,4,100,1,117,0,114,74,116,5,124,0,131,1,125, 1,110,8,116,6,124,0,131,1,125,1,124,0,102,1,100, 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, 2,116,2,124,0,60,0,87,0,116,0,160,9,161,0,1, - 0,124,1,83,0,116,0,160,9,161,0,1,0,48,0,41, + 0,124,1,83,0,116,0,160,9,161,0,1,0,119,0,41, 4,122,139,71,101,116,32,111,114,32,99,114,101,97,116,101, 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, @@ -343,7 +343,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,161,0,1,0,122,34,116,2,160,3,124,1,161,1,124, 0,117,0,114,30,116,2,124,1,61,0,87,0,116,0,160, 4,161,0,1,0,100,0,83,0,116,0,160,4,161,0,1, - 0,48,0,114,0,0,0,0,41,5,218,4,95,105,109,112, + 0,119,0,114,0,0,0,0,41,5,218,4,95,105,109,112, 218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,13, 95,109,111,100,117,108,101,95,108,111,99,107,115,114,38,0, 0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,107, @@ -365,7 +365,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, 115,54,0,0,0,116,0,124,0,131,1,125,1,122,12,124, 1,160,1,161,0,1,0,87,0,110,20,4,0,116,2,121, - 40,1,0,1,0,1,0,89,0,100,1,83,0,48,0,124, + 40,1,0,1,0,1,0,89,0,100,1,83,0,119,0,124, 1,160,3,161,0,1,0,100,1,83,0,41,2,122,189,65, 99,113,117,105,114,101,115,32,116,104,101,110,32,114,101,108, 101,97,115,101,115,32,116,104,101,32,109,111,100,117,108,101, @@ -527,16 +527,16 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, 124,0,161,1,87,0,83,0,4,0,116,3,121,52,1,0, - 1,0,1,0,89,0,110,2,48,0,122,10,124,0,106,4, + 1,0,1,0,89,0,110,2,119,0,122,10,124,0,106,4, 125,2,87,0,110,18,4,0,116,5,121,82,1,0,1,0, - 1,0,89,0,110,18,48,0,124,2,100,0,117,1,114,100, + 1,0,89,0,110,18,119,0,124,2,100,0,117,1,114,100, 116,6,124,2,131,1,83,0,122,10,124,0,106,7,125,3, 87,0,110,22,4,0,116,5,121,132,1,0,1,0,1,0, - 100,3,125,3,89,0,110,2,48,0,122,10,124,0,106,8, + 100,3,125,3,89,0,110,2,119,0,122,10,124,0,106,8, 125,4,87,0,110,52,4,0,116,5,121,196,1,0,1,0, 1,0,124,1,100,0,117,0,114,180,100,4,160,9,124,3, 161,1,6,0,89,0,83,0,100,5,160,9,124,3,124,1, - 161,2,6,0,89,0,83,0,48,0,100,6,160,9,124,3, + 161,2,6,0,89,0,83,0,119,0,100,6,160,9,124,3, 124,4,161,2,83,0,41,7,78,218,10,95,95,108,111,97, 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, 112,114,250,1,63,250,13,60,109,111,100,117,108,101,32,123, @@ -708,7 +708,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,76,124,2,124,1,106,0,107,2,111,76,124,0,106,4, 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, 107,2,87,0,83,0,4,0,116,6,121,100,1,0,1,0, - 1,0,116,7,6,0,89,0,83,0,48,0,114,0,0,0, + 1,0,116,7,6,0,89,0,83,0,119,0,114,0,0,0, 0,41,8,114,123,0,0,0,114,20,0,0,0,114,116,0, 0,0,114,120,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,2,0, @@ -785,7 +785,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 100,4,141,3,83,0,124,3,100,2,117,0,114,134,116,0, 124,1,100,5,131,2,114,130,122,14,124,1,160,4,124,0, 161,1,125,3,87,0,110,26,4,0,116,5,121,128,1,0, - 1,0,1,0,100,2,125,3,89,0,110,6,48,0,100,6, + 1,0,1,0,100,2,125,3,89,0,110,6,119,0,100,6, 125,3,116,6,124,0,124,1,124,2,124,3,100,7,141,4, 83,0,41,8,122,53,82,101,116,117,114,110,32,97,32,109, 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, @@ -807,20 +807,20 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0, 0,67,0,0,0,115,40,1,0,0,122,10,124,0,106,0, 125,3,87,0,110,18,4,0,116,1,121,28,1,0,1,0, - 1,0,89,0,110,14,48,0,124,3,100,0,117,1,114,42, + 1,0,89,0,110,14,119,0,124,3,100,0,117,1,114,42, 124,3,83,0,124,0,106,2,125,4,124,1,100,0,117,0, 114,86,122,10,124,0,106,3,125,1,87,0,110,18,4,0, - 116,1,121,84,1,0,1,0,1,0,89,0,110,2,48,0, + 116,1,121,84,1,0,1,0,1,0,89,0,110,2,119,0, 122,10,124,0,106,4,125,5,87,0,110,22,4,0,116,1, 121,118,1,0,1,0,1,0,100,0,125,5,89,0,110,2, - 48,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, + 119,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, 114,170,122,10,124,1,106,5,125,2,87,0,110,26,4,0, 116,1,121,168,1,0,1,0,1,0,100,0,125,2,89,0, - 110,6,48,0,124,5,125,2,122,10,124,0,106,6,125,6, + 110,6,119,0,124,5,125,2,122,10,124,0,106,6,125,6, 87,0,110,22,4,0,116,1,121,206,1,0,1,0,1,0, - 100,0,125,6,89,0,110,2,48,0,122,14,116,7,124,0, + 100,0,125,6,89,0,110,2,119,0,122,14,116,7,124,0, 106,8,131,1,125,7,87,0,110,22,4,0,116,1,121,244, - 1,0,1,0,1,0,100,0,125,7,89,0,110,2,48,0, + 1,0,1,0,1,0,100,0,125,7,89,0,110,2,119,0, 116,9,124,4,124,1,124,2,100,1,141,3,125,3,124,5, 100,0,117,0,144,1,114,18,100,2,110,2,100,3,124,3, 95,10,124,6,124,3,95,11,124,7,124,3,95,12,124,3, @@ -846,7 +846,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,115,214,1,0,0,124,2,115,20,116,0,124,1,100,1, 100,0,131,3,100,0,117,0,114,52,122,12,124,0,106,1, 124,1,95,2,87,0,110,18,4,0,116,3,121,50,1,0, - 1,0,1,0,89,0,110,2,48,0,124,2,115,72,116,0, + 1,0,1,0,89,0,110,2,119,0,124,2,115,72,116,0, 124,1,100,2,100,0,131,3,100,0,117,0,114,174,124,0, 106,4,125,3,124,3,100,0,117,0,114,144,124,0,106,5, 100,0,117,1,114,144,116,6,100,0,117,0,114,108,116,7, @@ -854,25 +854,25 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, 100,0,124,1,95,11,122,10,124,3,124,1,95,12,87,0, 110,18,4,0,116,3,121,172,1,0,1,0,1,0,89,0, - 110,2,48,0,124,2,115,194,116,0,124,1,100,3,100,0, + 110,2,119,0,124,2,115,194,116,0,124,1,100,3,100,0, 131,3,100,0,117,0,114,226,122,12,124,0,106,13,124,1, 95,14,87,0,110,18,4,0,116,3,121,224,1,0,1,0, - 1,0,89,0,110,2,48,0,122,10,124,0,124,1,95,15, + 1,0,89,0,110,2,119,0,122,10,124,0,124,1,95,15, 87,0,110,18,4,0,116,3,121,254,1,0,1,0,1,0, - 89,0,110,2,48,0,124,2,144,1,115,24,116,0,124,1, + 89,0,110,2,119,0,124,2,144,1,115,24,116,0,124,1, 100,4,100,0,131,3,100,0,117,0,144,1,114,70,124,0, 106,5,100,0,117,1,144,1,114,70,122,12,124,0,106,5, 124,1,95,16,87,0,110,20,4,0,116,3,144,1,121,68, - 1,0,1,0,1,0,89,0,110,2,48,0,124,0,106,17, + 1,0,1,0,1,0,89,0,110,2,119,0,124,0,106,17, 144,1,114,210,124,2,144,1,115,102,116,0,124,1,100,5, 100,0,131,3,100,0,117,0,144,1,114,136,122,12,124,0, 106,18,124,1,95,11,87,0,110,20,4,0,116,3,144,1, - 121,134,1,0,1,0,1,0,89,0,110,2,48,0,124,2, + 121,134,1,0,1,0,1,0,89,0,110,2,119,0,124,2, 144,1,115,160,116,0,124,1,100,6,100,0,131,3,100,0, 117,0,144,1,114,210,124,0,106,19,100,0,117,1,144,1, 114,210,122,14,124,0,106,19,124,1,95,20,87,0,124,1, 83,0,4,0,116,3,144,1,121,208,1,0,1,0,1,0, - 89,0,124,1,83,0,48,0,124,1,83,0,41,7,78,114, + 89,0,124,1,83,0,119,0,124,1,83,0,41,7,78,114, 9,0,0,0,114,106,0,0,0,218,11,95,95,112,97,99, 107,97,103,101,95,95,114,148,0,0,0,114,115,0,0,0, 114,146,0,0,0,41,21,114,13,0,0,0,114,20,0,0, @@ -953,9 +953,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,1,0,87,0,116,2,106,3,160,17,124,0,106,0,161, 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,110, 28,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,48,0,87,0,100, + 1,116,2,106,3,124,0,106,0,60,0,119,0,87,0,100, 3,4,0,4,0,131,3,1,0,124,1,83,0,49,0,144, - 1,115,12,48,0,1,0,1,0,1,0,89,0,1,0,124, + 1,115,12,119,1,1,0,1,0,1,0,89,0,1,0,124, 1,83,0,41,9,122,70,69,120,101,99,117,116,101,32,116, 104,101,32,115,112,101,99,39,115,32,115,112,101,99,105,102, 105,101,100,32,109,111,100,117,108,101,32,105,110,32,97,110, @@ -992,15 +992,15 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 3,106,4,124,0,106,2,60,0,116,6,124,1,100,1,100, 0,131,3,100,0,117,0,114,140,122,12,124,0,106,0,124, 1,95,7,87,0,110,18,4,0,116,8,121,138,1,0,1, - 0,1,0,89,0,110,2,48,0,116,6,124,1,100,2,100, + 0,1,0,89,0,110,2,119,0,116,6,124,1,100,2,100, 0,131,3,100,0,117,0,114,216,122,40,124,1,106,9,124, 1,95,10,116,11,124,1,100,3,131,2,115,194,124,0,106, 2,160,12,100,4,161,1,100,5,25,0,124,1,95,10,87, 0,110,18,4,0,116,8,121,214,1,0,1,0,1,0,89, - 0,110,2,48,0,116,6,124,1,100,6,100,0,131,3,100, + 0,110,2,119,0,116,6,124,1,100,6,100,0,131,3,100, 0,117,0,144,1,114,14,122,12,124,0,124,1,95,13,87, 0,124,1,83,0,4,0,116,8,144,1,121,12,1,0,1, - 0,1,0,89,0,124,1,83,0,48,0,124,1,83,0,41, + 0,1,0,89,0,124,1,83,0,119,0,124,1,83,0,41, 7,78,114,106,0,0,0,114,152,0,0,0,114,148,0,0, 0,114,135,0,0,0,114,25,0,0,0,114,113,0,0,0, 41,14,114,116,0,0,0,114,164,0,0,0,114,20,0,0, @@ -1028,10 +1028,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 14,124,2,161,1,1,0,87,0,110,40,1,0,1,0,1, 0,122,14,116,9,106,10,124,0,106,11,61,0,87,0,130, 0,4,0,116,15,121,176,1,0,1,0,1,0,89,0,130, - 0,48,0,116,9,106,10,160,16,124,0,106,11,161,1,125, + 0,119,0,116,9,106,10,160,16,124,0,106,11,161,1,125, 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, 6,124,0,106,11,124,0,106,0,131,3,1,0,87,0,100, - 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,48, + 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,119, 0,41,8,78,114,157,0,0,0,114,162,0,0,0,84,114, 161,0,0,0,114,19,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,18, @@ -1053,7 +1053,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,67,0,0,0,115,54,0,0,0,116,0,124,0,106,1, 131,1,143,24,1,0,116,2,124,0,131,1,87,0,2,0, 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,40, - 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, + 119,1,1,0,1,0,1,0,89,0,1,0,100,1,83,0, 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, @@ -1429,14 +1429,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 4,0,116,9,121,128,1,0,1,0,1,0,116,10,124,5, 124,0,124,1,131,3,125,7,124,7,100,1,117,0,114,124, 89,0,87,0,100,1,4,0,4,0,131,3,1,0,113,52, - 89,0,110,14,48,0,124,6,124,0,124,1,124,2,131,3, + 89,0,110,14,119,0,124,6,124,0,124,1,124,2,131,3, 125,7,87,0,100,1,4,0,4,0,131,3,1,0,110,16, - 49,0,115,162,48,0,1,0,1,0,1,0,89,0,1,0, + 49,0,115,162,119,1,1,0,1,0,1,0,89,0,1,0, 124,7,100,1,117,1,114,52,124,4,144,1,115,16,124,0, 116,0,106,6,118,0,144,1,114,16,116,0,106,6,124,0, 25,0,125,8,122,10,124,8,106,11,125,9,87,0,110,26, 4,0,116,9,121,244,1,0,1,0,1,0,124,7,6,0, - 89,0,2,0,1,0,83,0,48,0,124,9,100,1,117,0, + 89,0,2,0,1,0,83,0,119,0,124,9,100,1,117,0, 144,1,114,8,124,7,2,0,1,0,83,0,124,9,2,0, 1,0,83,0,124,7,2,0,1,0,83,0,100,1,83,0, 41,4,122,21,70,105,110,100,32,97,32,109,111,100,117,108, @@ -1500,7 +1500,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,106,2,124,3,25,0,125,4,122,10,124,4,106,4,125, 2,87,0,110,44,4,0,116,5,121,126,1,0,1,0,1, 0,116,6,100,3,23,0,160,7,124,0,124,3,161,2,125, - 5,116,8,124,5,124,0,100,4,141,2,100,0,130,2,48, + 5,116,8,124,5,124,0,100,4,141,2,100,0,130,2,119, 0,116,9,124,0,124,2,131,2,125,6,124,6,100,0,117, 0,114,164,116,8,116,6,160,7,124,0,161,1,124,0,100, 4,141,2,130,1,116,10,124,6,131,1,125,7,124,3,144, @@ -1509,7 +1509,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 4,124,8,124,7,131,3,1,0,87,0,124,7,83,0,4, 0,116,5,144,1,121,14,1,0,1,0,1,0,100,6,124, 3,155,2,100,7,124,8,155,2,157,4,125,5,116,12,160, - 13,124,5,116,14,161,2,1,0,89,0,124,7,83,0,48, + 13,124,5,116,14,161,2,1,0,89,0,124,7,83,0,119, 0,124,7,83,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0, @@ -1540,7 +1540,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,116,4,117,0,114,56,116,5,124,0,124,1,131,2,87, 0,2,0,100,1,4,0,4,0,131,3,1,0,83,0,87, 0,100,1,4,0,4,0,131,3,1,0,110,16,49,0,115, - 76,48,0,1,0,1,0,1,0,89,0,1,0,124,2,100, + 76,119,1,1,0,1,0,1,0,89,0,1,0,124,2,100, 1,117,0,114,116,100,2,160,6,124,0,161,1,125,3,116, 7,124,3,124,0,100,3,141,2,130,1,116,8,124,0,131, 1,1,0,124,2,83,0,41,4,122,25,70,105,110,100,32, @@ -1602,8 +1602,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 4,4,0,116,10,121,214,1,0,125,7,1,0,122,42,124, 7,106,11,124,6,107,2,114,200,116,12,106,13,160,14,124, 6,116,15,161,2,100,10,117,1,114,200,87,0,89,0,100, - 10,125,7,126,7,113,4,130,0,100,10,125,7,126,7,48, - 0,124,0,83,0,48,0,41,11,122,238,70,105,103,117,114, + 10,125,7,126,7,113,4,130,0,100,10,125,7,126,7,119, + 1,124,0,83,0,119,0,41,11,122,238,70,105,103,117,114, 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index fee8f44f79cdb..e420ef86662a9 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -230,7 +230,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, 0,0,0,122,12,116,0,124,0,131,1,125,2,87,0,110, 20,4,0,116,1,121,32,1,0,1,0,1,0,89,0,100, - 1,83,0,48,0,124,2,106,2,100,2,64,0,124,1,107, + 1,83,0,119,0,124,2,106,2,100,2,64,0,124,1,107, 2,83,0,41,4,122,49,84,101,115,116,32,119,104,101,116, 104,101,114,32,116,104,101,32,112,97,116,104,32,105,115,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, @@ -287,12 +287,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,66,0,124,2,100,2,64,0,161,3,125,4,122,72,116, 7,160,8,124,4,100,3,161,2,143,26,125,5,124,5,160, 9,124,1,161,1,1,0,87,0,100,4,4,0,4,0,131, - 3,1,0,110,16,49,0,115,94,48,0,1,0,1,0,1, + 3,1,0,110,16,49,0,115,94,119,1,1,0,1,0,1, 0,89,0,1,0,116,2,160,10,124,3,124,0,161,2,1, 0,87,0,100,4,83,0,4,0,116,11,121,168,1,0,1, 0,1,0,122,14,116,2,160,12,124,3,161,1,1,0,87, 0,130,0,4,0,116,11,121,166,1,0,1,0,1,0,89, - 0,130,0,48,0,48,0,41,5,122,162,66,101,115,116,45, + 0,130,0,119,0,119,0,41,5,122,162,66,101,115,116,45, 101,102,102,111,114,116,32,102,117,110,99,116,105,111,110,32, 116,111,32,119,114,105,116,101,32,100,97,116,97,32,116,111, 32,97,32,112,97,116,104,32,97,116,111,109,105,99,97,108, @@ -317,7 +317,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,115,36,0,0,0,16,5,6,1,22,1,4,255, 2,2,14,3,40,1,18,1,12,1,2,1,12,1,2,3, 12,254,2,1,2,1,2,255,2,1,255,128,114,77,0,0, - 0,105,104,13,0,0,114,39,0,0,0,114,29,0,0,0, + 0,105,105,13,0,0,114,39,0,0,0,114,29,0,0,0, 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, @@ -431,7 +431,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,108,109,111,115,116,95,102,105,108,101,110,97,109,101,218, 8,102,105,108,101,110,97,109,101,114,7,0,0,0,114,7, 0,0,0,114,8,0,0,0,218,17,99,97,99,104,101,95, - 102,114,111,109,95,115,111,117,114,99,101,84,1,0,0,115, + 102,114,111,109,95,115,111,117,114,99,101,85,1,0,0,115, 74,0,0,0,8,18,6,1,2,1,4,255,8,2,4,1, 8,1,12,1,10,1,12,1,16,1,8,1,8,1,8,1, 24,1,8,1,12,1,6,1,8,2,8,1,8,1,8,1, @@ -512,7 +512,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,9,111,112,116,95,108,101,118,101,108,90,13,98,97,115, 101,95,102,105,108,101,110,97,109,101,114,7,0,0,0,114, 7,0,0,0,114,8,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,155,1,0,0, + 101,95,102,114,111,109,95,99,97,99,104,101,156,1,0,0, 115,62,0,0,0,12,9,8,1,10,1,12,1,4,1,10, 1,12,1,14,1,16,1,4,1,4,1,12,1,8,1,8, 1,2,1,8,255,10,2,8,1,14,1,10,1,16,1,10, @@ -526,7 +526,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 83,0,122,12,116,3,124,0,131,1,125,4,87,0,110,34, 4,0,116,4,116,5,102,2,121,106,1,0,1,0,1,0, 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,2, - 48,0,116,6,124,4,131,1,114,120,124,4,83,0,124,0, + 119,0,116,6,124,4,131,1,114,120,124,4,83,0,124,0, 83,0,41,7,122,188,67,111,110,118,101,114,116,32,97,32, 98,121,116,101,99,111,100,101,32,102,105,108,101,32,112,97, 116,104,32,116,111,32,97,32,115,111,117,114,99,101,32,112, @@ -548,26 +548,26 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 120,116,101,110,115,105,111,110,218,11,115,111,117,114,99,101, 95,112,97,116,104,114,7,0,0,0,114,7,0,0,0,114, 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, - 101,102,105,108,101,195,1,0,0,115,22,0,0,0,12,7, + 101,102,105,108,101,196,1,0,0,115,22,0,0,0,12,7, 4,1,16,1,24,1,4,1,2,1,12,1,16,1,18,1, 16,1,255,128,114,113,0,0,0,99,1,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0, 0,0,115,68,0,0,0,124,0,160,0,116,1,116,2,131, 1,161,1,114,46,122,10,116,3,124,0,131,1,87,0,83, 0,4,0,116,4,121,44,1,0,1,0,1,0,89,0,100, - 0,83,0,48,0,124,0,160,0,116,1,116,5,131,1,161, + 0,83,0,119,0,124,0,160,0,116,1,116,5,131,1,161, 1,114,64,124,0,83,0,100,0,83,0,169,1,78,41,6, 218,8,101,110,100,115,119,105,116,104,218,5,116,117,112,108, 101,114,106,0,0,0,114,102,0,0,0,114,88,0,0,0, 114,94,0,0,0,41,1,114,101,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,214,1,0,0,115,18,0,0, + 116,95,99,97,99,104,101,100,215,1,0,0,115,18,0,0, 0,14,1,2,1,10,1,12,1,8,1,14,1,4,1,4, 2,255,128,114,117,0,0,0,99,1,0,0,0,0,0,0, 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, 0,115,50,0,0,0,122,14,116,0,124,0,131,1,106,1, 125,1,87,0,110,22,4,0,116,2,121,36,1,0,1,0, - 1,0,100,1,125,1,89,0,110,2,48,0,124,1,100,2, + 1,0,100,1,125,1,89,0,110,2,119,0,124,1,100,2, 79,0,125,1,124,1,83,0,41,4,122,51,67,97,108,99, 117,108,97,116,101,32,116,104,101,32,109,111,100,101,32,112, 101,114,109,105,115,115,105,111,110,115,32,102,111,114,32,97, @@ -576,7 +576,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,59,0,0,0,114,58,0,0,0,41,2,114,52,0, 0,0,114,60,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,10,95,99,97,108,99,95,109,111, - 100,101,226,1,0,0,115,14,0,0,0,2,2,14,1,12, + 100,101,227,1,0,0,115,14,0,0,0,2,2,14,1,12, 1,10,1,8,3,4,1,255,128,114,119,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, 0,0,0,3,0,0,0,115,52,0,0,0,100,6,135,0, @@ -613,7 +613,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,218,4,97,114,103,115,218,6,107,119,97,114,103, 115,169,1,218,6,109,101,116,104,111,100,114,7,0,0,0, 114,8,0,0,0,218,19,95,99,104,101,99,107,95,110,97, - 109,101,95,119,114,97,112,112,101,114,246,1,0,0,115,20, + 109,101,95,119,114,97,112,112,101,114,247,1,0,0,115,20, 0,0,0,8,1,8,1,10,1,4,1,8,1,2,255,2, 1,6,255,24,2,255,128,122,40,95,99,104,101,99,107,95, 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99, @@ -631,7 +631,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,116,97,116,116,114,218,8,95,95,100,105,99,116,95,95, 218,6,117,112,100,97,116,101,41,3,90,3,110,101,119,90, 3,111,108,100,114,75,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,5,95,119,114,97,112,3, + 0,0,0,114,8,0,0,0,218,5,95,119,114,97,112,4, 2,0,0,115,12,0,0,0,8,1,10,1,18,1,2,128, 18,1,255,128,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, @@ -639,7 +639,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 112,114,138,0,0,0,41,3,114,127,0,0,0,114,128,0, 0,0,114,138,0,0,0,114,7,0,0,0,114,126,0,0, 0,114,8,0,0,0,218,11,95,99,104,101,99,107,95,110, - 97,109,101,238,1,0,0,115,14,0,0,0,14,8,8,10, + 97,109,101,239,1,0,0,115,14,0,0,0,14,8,8,10, 8,1,8,2,10,6,4,1,255,128,114,140,0,0,0,99, 2,0,0,0,0,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, @@ -667,7 +667,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 6,108,111,97,100,101,114,218,8,112,111,114,116,105,111,110, 115,218,3,109,115,103,114,7,0,0,0,114,7,0,0,0, 114,8,0,0,0,218,17,95,102,105,110,100,95,109,111,100, - 117,108,101,95,115,104,105,109,13,2,0,0,115,12,0,0, + 117,108,101,95,115,104,105,109,14,2,0,0,115,12,0,0, 0,14,10,16,1,4,1,22,1,4,1,255,128,114,147,0, 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,6, 0,0,0,4,0,0,0,67,0,0,0,115,166,0,0,0, @@ -734,7 +734,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 218,11,101,120,99,95,100,101,116,97,105,108,115,90,5,109, 97,103,105,99,114,98,0,0,0,114,16,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,95, - 99,108,97,115,115,105,102,121,95,112,121,99,30,2,0,0, + 99,108,97,115,115,105,102,121,95,112,121,99,31,2,0,0, 115,30,0,0,0,12,16,8,1,16,1,12,1,16,1,12, 1,10,1,12,1,8,1,16,1,8,2,16,1,16,1,4, 1,255,128,114,156,0,0,0,99,5,0,0,0,0,0,0, @@ -790,7 +790,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 155,0,0,0,114,98,0,0,0,114,7,0,0,0,114,7, 0,0,0,114,8,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,63,2,0,0,115,20,0,0,0,24,19,10,1,12,1, + 99,64,2,0,0,115,20,0,0,0,24,19,10,1,12,1, 16,1,8,1,22,1,2,255,22,2,8,254,255,128,114,160, 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0, 4,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, @@ -836,7 +836,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,111,117,114,99,101,95,104,97,115,104,114,121,0,0,0, 114,155,0,0,0,114,7,0,0,0,114,7,0,0,0,114, 8,0,0,0,218,18,95,118,97,108,105,100,97,116,101,95, - 104,97,115,104,95,112,121,99,91,2,0,0,115,16,0,0, + 104,97,115,104,95,112,121,99,92,2,0,0,115,16,0,0, 0,16,17,2,1,8,1,4,255,2,2,6,254,4,255,255, 128,114,162,0,0,0,99,4,0,0,0,0,0,0,0,0, 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, @@ -860,7 +860,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,121,0,0,0,114,111,0,0,0,114,112,0,0,0, 218,4,99,111,100,101,114,7,0,0,0,114,7,0,0,0, 114,8,0,0,0,218,17,95,99,111,109,112,105,108,101,95, - 98,121,116,101,99,111,100,101,115,2,0,0,115,20,0,0, + 98,121,116,101,99,111,100,101,116,2,0,0,115,20,0,0, 0,10,2,10,1,12,1,8,1,12,1,4,1,10,2,4, 1,6,255,255,128,114,169,0,0,0,99,3,0,0,0,0, 0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,67, @@ -878,7 +878,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,168,0,0,0,218,5,109,116,105,109,101,114,159,0,0, 0,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, 114,8,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,128,2,0, + 116,105,109,101,115,116,97,109,112,95,112,121,99,129,2,0, 0,115,14,0,0,0,8,2,14,1,14,1,14,1,16,1, 4,1,255,128,114,174,0,0,0,84,99,3,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, @@ -897,7 +897,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,104,101,99,107,101,100,114,37,0,0,0,114,16,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, 218,17,95,99,111,100,101,95,116,111,95,104,97,115,104,95, - 112,121,99,138,2,0,0,115,16,0,0,0,8,2,12,1, + 112,121,99,139,2,0,0,115,16,0,0,0,8,2,12,1, 14,1,16,1,10,1,16,1,4,1,255,128,114,175,0,0, 0,99,1,0,0,0,0,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, @@ -924,7 +924,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 13,100,101,99,111,100,101,95,115,111,117,114,99,101,149,2, + 13,100,101,99,111,100,101,95,115,111,117,114,99,101,150,2, 0,0,115,12,0,0,0,8,5,12,1,10,1,12,1,20, 1,255,128,114,180,0,0,0,169,2,114,144,0,0,0,218, 26,115,117,98,109,111,100,117,108,101,95,115,101,97,114,99, @@ -933,7 +933,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 67,0,0,0,115,8,1,0,0,124,1,100,1,117,0,114, 56,100,2,125,1,116,0,124,2,100,3,131,2,114,66,122, 14,124,2,160,1,124,0,161,1,125,1,87,0,110,28,4, - 0,116,2,121,54,1,0,1,0,1,0,89,0,110,12,48, + 0,116,2,121,54,1,0,1,0,1,0,89,0,110,12,119, 0,116,3,160,4,124,1,161,1,125,1,116,5,106,6,124, 0,124,2,124,1,100,4,141,3,125,4,100,5,124,4,95, 7,124,2,100,1,117,0,114,148,116,8,131,0,68,0,93, @@ -942,7 +942,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 2,124,4,95,11,1,0,113,148,100,1,83,0,124,3,116, 12,117,0,114,212,116,0,124,2,100,6,131,2,114,218,122, 14,124,2,160,13,124,0,161,1,125,7,87,0,110,18,4, - 0,116,2,121,198,1,0,1,0,1,0,89,0,110,20,48, + 0,116,2,121,198,1,0,1,0,1,0,89,0,110,20,119, 0,124,7,114,218,103,0,124,4,95,14,110,6,124,3,124, 4,95,14,124,4,106,14,103,0,107,2,144,1,114,4,124, 1,144,1,114,4,116,15,124,1,131,1,100,7,25,0,125, @@ -986,7 +986,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,90,7,100,105,114,110,97,109,101,114,7,0,0,0, 114,7,0,0,0,114,8,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,166,2,0,0,115,64,0,0,0,8,12,4,4, + 105,111,110,167,2,0,0,115,64,0,0,0,8,12,4,4, 10,1,2,2,14,1,12,1,6,1,10,2,16,8,6,1, 8,3,14,1,14,1,10,1,6,1,4,1,4,2,8,3, 10,2,2,1,14,1,12,1,6,1,4,2,8,1,6,2, @@ -1017,14 +1017,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,50,0,0,0,122,16,116,0,160,1,116,0,106,2, 124,0,161,2,87,0,83,0,4,0,116,3,121,48,1,0, 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, - 6,0,89,0,83,0,48,0,114,114,0,0,0,41,5,218, + 6,0,89,0,83,0,119,0,114,114,0,0,0,41,5,218, 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, 83,69,82,114,58,0,0,0,90,18,72,75,69,89,95,76, 79,67,65,76,95,77,65,67,72,73,78,69,114,19,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 246,2,0,0,115,10,0,0,0,2,2,16,1,12,1,20, + 247,2,0,0,115,10,0,0,0,2,2,16,1,12,1,20, 1,255,128,122,36,87,105,110,100,111,119,115,82,101,103,105, 115,116,114,121,70,105,110,100,101,114,46,95,111,112,101,110, 95,114,101,103,105,115,116,114,121,99,2,0,0,0,0,0, @@ -1035,9 +1035,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,100,3,141,2,125,3,122,60,124,0,160,6,124,3,161, 1,143,28,125,4,116,7,160,8,124,4,100,4,161,2,125, 5,87,0,100,0,4,0,4,0,131,3,1,0,110,16,49, - 0,115,94,48,0,1,0,1,0,1,0,89,0,1,0,87, + 0,115,94,119,1,1,0,1,0,1,0,89,0,1,0,87, 0,124,5,83,0,4,0,116,9,121,128,1,0,1,0,1, - 0,89,0,100,0,83,0,48,0,41,5,78,122,5,37,100, + 0,89,0,100,0,83,0,119,0,41,5,78,122,5,37,100, 46,37,100,114,39,0,0,0,41,2,114,143,0,0,0,90, 11,115,121,115,95,118,101,114,115,105,111,110,114,10,0,0, 0,41,10,218,11,68,69,66,85,71,95,66,85,73,76,68, @@ -1051,7 +1051,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 20,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, 112,97,116,104,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,253,2,0,0,115,26,0,0,0,6,2, + 105,115,116,114,121,254,2,0,0,115,26,0,0,0,6,2, 8,1,6,2,6,1,16,1,6,255,2,2,12,1,44,1, 4,3,12,254,8,1,255,128,122,38,87,105,110,100,111,119, 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,46, @@ -1061,7 +1061,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, 22,100,0,83,0,122,12,116,1,124,4,131,1,1,0,87, 0,110,20,4,0,116,2,121,54,1,0,1,0,1,0,89, - 0,100,0,83,0,48,0,116,3,131,0,68,0,93,50,92, + 0,100,0,83,0,119,0,116,3,131,0,68,0,93,50,92, 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, 1,114,62,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, @@ -1073,7 +1073,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,52,0,0,0,218,6,116,97,114,103,101,116,114,203,0, 0,0,114,144,0,0,0,114,193,0,0,0,114,191,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,9,102,105,110,100,95,115,112,101,99,12,3,0,0,115, + 218,9,102,105,110,100,95,115,112,101,99,13,3,0,0,115, 32,0,0,0,10,2,8,1,4,1,2,1,12,1,12,1, 8,1,14,1,14,1,6,1,8,1,2,1,6,254,8,3, 4,251,255,128,122,31,87,105,110,100,111,119,115,82,101,103, @@ -1093,7 +1093,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 28,3,0,0,115,10,0,0,0,12,7,8,1,6,1,4, + 29,3,0,0,115,10,0,0,0,12,7,8,1,6,1,4, 2,255,128,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,2,78,78,41,1,78,41,15,114, @@ -1105,7 +1105,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,114,197,0,0,0,218,11,99,108,97,115,115,109,101,116, 104,111,100,114,204,0,0,0,114,207,0,0,0,114,210,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,195,0,0,0,234,2,0,0,115, + 0,114,8,0,0,0,114,195,0,0,0,235,2,0,0,115, 32,0,0,0,8,0,4,2,2,3,2,255,2,4,2,255, 12,3,2,2,10,1,2,6,10,1,2,14,12,1,2,15, 16,1,255,128,114,195,0,0,0,99,0,0,0,0,0,0, @@ -1142,7 +1142,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,186,0,0,0, - 47,3,0,0,115,10,0,0,0,18,3,16,1,14,1,16, + 48,3,0,0,115,10,0,0,0,18,3,16,1,14,1,16, 1,255,128,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,0,0,0,0,0,0,0,2,0,0,0,1,0, @@ -1152,7 +1152,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 117,108,101,32,99,114,101,97,116,105,111,110,46,78,114,7, 0,0,0,169,2,114,123,0,0,0,114,191,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,13, - 99,114,101,97,116,101,95,109,111,100,117,108,101,55,3,0, + 99,114,101,97,116,101,95,109,111,100,117,108,101,56,3,0, 0,115,4,0,0,0,4,0,255,128,122,27,95,76,111,97, 100,101,114,66,97,115,105,99,115,46,99,114,101,97,116,101, 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, @@ -1173,7 +1173,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,3,114,123,0,0,0,218,6,109,111,100,117,108,101, 114,168,0,0,0,114,7,0,0,0,114,7,0,0,0,114, 8,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108, - 101,58,3,0,0,115,14,0,0,0,12,2,8,1,6,1, + 101,59,3,0,0,115,14,0,0,0,12,2,8,1,6,1, 4,1,6,255,20,2,255,128,122,25,95,76,111,97,100,101, 114,66,97,115,105,99,115,46,101,120,101,99,95,109,111,100, 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, @@ -1184,14 +1184,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,123,0,0,0,114,143,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,66,3, + 0,218,11,108,111,97,100,95,109,111,100,117,108,101,67,3, 0,0,115,4,0,0,0,12,3,255,128,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,130,0,0,0,114,129, 0,0,0,114,131,0,0,0,114,132,0,0,0,114,186,0, 0,0,114,219,0,0,0,114,224,0,0,0,114,227,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,215,0,0,0,42,3,0,0,115,14, + 114,8,0,0,0,114,215,0,0,0,43,3,0,0,115,14, 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,255, 128,114,215,0,0,0,99,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, @@ -1216,7 +1216,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,32,32,32,32,32,32,32,32,78,41,1,114,58,0,0, 0,169,2,114,123,0,0,0,114,52,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,218,10,112,97, - 116,104,95,109,116,105,109,101,74,3,0,0,115,4,0,0, + 116,104,95,109,116,105,109,101,75,3,0,0,115,4,0,0, 0,4,6,255,128,122,23,83,111,117,114,99,101,76,111,97, 100,101,114,46,112,97,116,104,95,109,116,105,109,101,99,2, 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, @@ -1250,7 +1250,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,114, 173,0,0,0,78,41,1,114,230,0,0,0,114,229,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,10,112,97,116,104,95,115,116,97,116,115,82,3,0,0, + 218,10,112,97,116,104,95,115,116,97,116,115,83,3,0,0, 115,4,0,0,0,14,12,255,128,122,23,83,111,117,114,99, 101,76,111,97,100,101,114,46,112,97,116,104,95,115,116,97, 116,115,99,4,0,0,0,0,0,0,0,0,0,0,0,4, @@ -1274,7 +1274,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,41,4,114,123,0,0,0,114,112,0,0,0,90,10,99, 97,99,104,101,95,112,97,116,104,114,37,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,15,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,96,3, + 99,97,99,104,101,95,98,121,116,101,99,111,100,101,97,3, 0,0,115,4,0,0,0,12,8,255,128,122,28,83,111,117, 114,99,101,76,111,97,100,101,114,46,95,99,97,99,104,101, 95,98,121,116,101,99,111,100,101,99,3,0,0,0,0,0, @@ -1292,7 +1292,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,32,32,32,32,78,114,7,0,0,0,41,3,114,123,0, 0,0,114,52,0,0,0,114,37,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,232,0,0,0, - 106,3,0,0,115,4,0,0,0,4,0,255,128,122,21,83, + 107,3,0,0,115,4,0,0,0,4,0,255,128,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,0,0,0, 0,5,0,0,0,10,0,0,0,67,0,0,0,115,70,0, @@ -1300,7 +1300,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 160,1,124,2,161,1,125,3,87,0,116,4,124,3,131,1, 83,0,4,0,116,2,121,68,1,0,125,4,1,0,122,14, 116,3,100,1,124,1,100,2,141,2,124,4,130,2,100,3, - 125,4,126,4,48,0,48,0,41,4,122,52,67,111,110,99, + 125,4,126,4,119,1,119,0,41,4,122,52,67,111,110,99, 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,46, @@ -1312,7 +1312,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 5,114,123,0,0,0,114,143,0,0,0,114,52,0,0,0, 114,178,0,0,0,218,3,101,120,99,114,7,0,0,0,114, 7,0,0,0,114,8,0,0,0,218,10,103,101,116,95,115, - 111,117,114,99,101,113,3,0,0,115,26,0,0,0,10,2, + 111,117,114,99,101,114,3,0,0,115,26,0,0,0,10,2, 2,1,12,1,8,4,14,253,4,1,2,1,4,255,2,1, 2,255,8,128,2,255,255,128,122,23,83,111,117,114,99,101, 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, @@ -1335,7 +1335,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,123,0,0,0,114,37,0,0,0,114,52,0,0,0,114, 237,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,14,115,111,117,114,99,101,95,116,111,95,99, - 111,100,101,123,3,0,0,115,8,0,0,0,12,5,4,1, + 111,100,101,124,3,0,0,115,8,0,0,0,12,5,4,1, 6,255,255,128,122,27,83,111,117,114,99,101,76,111,97,100, 101,114,46,115,111,117,114,99,101,95,116,111,95,99,111,100, 101,99,2,0,0,0,0,0,0,0,0,0,0,0,15,0, @@ -1344,12 +1344,12 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,100,1,125,5,100,2,125,6,100,3,125,7,122,12,116, 1,124,2,131,1,125,8,87,0,110,24,4,0,116,2,121, 66,1,0,1,0,1,0,100,1,125,8,89,0,144,1,110, - 42,48,0,122,14,124,0,160,3,124,2,161,1,125,9,87, + 42,119,0,122,14,124,0,160,3,124,2,161,1,125,9,87, 0,110,20,4,0,116,4,121,102,1,0,1,0,1,0,89, - 0,144,1,110,6,48,0,116,5,124,9,100,4,25,0,131, + 0,144,1,110,6,119,0,116,5,124,9,100,4,25,0,131, 1,125,3,122,14,124,0,160,6,124,8,161,1,125,10,87, 0,110,18,4,0,116,4,121,148,1,0,1,0,1,0,89, - 0,110,216,48,0,124,1,124,8,100,5,156,2,125,11,122, + 0,110,216,119,0,124,1,124,8,100,5,156,2,125,11,122, 148,116,7,124,10,124,1,124,11,131,3,125,12,116,8,124, 10,131,1,100,6,100,1,133,2,25,0,125,13,124,12,100, 7,64,0,100,8,107,3,125,6,124,6,144,1,114,30,124, @@ -1360,7 +1360,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,124,5,124,1,124,11,131,4,1,0,110,20,116,14,124, 10,124,3,124,9,100,12,25,0,124,1,124,11,131,5,1, 0,87,0,110,24,4,0,116,15,116,16,102,2,144,1,121, - 76,1,0,1,0,1,0,89,0,110,32,48,0,116,17,160, + 76,1,0,1,0,1,0,89,0,110,32,119,0,116,17,160, 18,100,13,124,8,124,2,161,3,1,0,116,19,124,13,124, 1,124,8,124,2,100,14,141,4,83,0,124,4,100,1,117, 0,144,1,114,128,124,0,160,6,124,2,161,1,125,4,124, @@ -1373,7 +1373,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,116,25,124,4,131,1,131,3,125,10,122,20,124,0,160, 26,124,2,124,8,124,10,161,3,1,0,87,0,124,14,83, 0,4,0,116,2,144,2,121,22,1,0,1,0,1,0,89, - 0,124,14,83,0,48,0,124,14,83,0,41,16,122,190,67, + 0,124,14,83,0,119,0,124,14,83,0,41,16,122,190,67, 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, @@ -1412,7 +1412,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,155,0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,220,0,0,0,131,3,0,0,115,160,0,0,0, + 0,0,114,220,0,0,0,132,3,0,0,115,160,0,0,0, 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, 12,1,12,1,2,2,14,1,12,1,8,1,12,2,2,1, 14,1,12,1,6,1,2,3,2,1,6,254,2,4,12,1, @@ -1429,7 +1429,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,233,0,0,0,114,232,0,0,0,114,236,0, 0,0,114,240,0,0,0,114,220,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,228,0,0,0,72,3,0,0,115,18,0,0,0,8,0, + 114,228,0,0,0,73,3,0,0,115,18,0,0,0,8,0, 8,2,8,8,8,14,8,10,8,7,14,10,12,8,255,128, 114,228,0,0,0,99,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,92, @@ -1456,7 +1456,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,101,10,32,32,32,32,32,32,32,32,102,105,110,100, 101,114,46,78,114,163,0,0,0,41,3,114,123,0,0,0, 114,143,0,0,0,114,52,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,216,0,0,0,221,3, + 7,0,0,0,114,8,0,0,0,114,216,0,0,0,222,3, 0,0,115,6,0,0,0,6,3,10,1,255,128,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,0,0,0,0,2, @@ -1466,7 +1466,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 9,95,95,99,108,97,115,115,95,95,114,136,0,0,0,169, 2,114,123,0,0,0,90,5,111,116,104,101,114,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,218,6,95,95, - 101,113,95,95,227,3,0,0,115,8,0,0,0,12,1,10, + 101,113,95,95,228,3,0,0,115,8,0,0,0,12,1,10, 1,2,255,255,128,122,17,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,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, @@ -1475,7 +1475,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,218,4,104,97,115,104,114,121,0,0,0,114,52,0,0, 0,169,1,114,123,0,0,0,114,7,0,0,0,114,7,0, 0,0,114,8,0,0,0,218,8,95,95,104,97,115,104,95, - 95,231,3,0,0,115,4,0,0,0,20,1,255,128,122,19, + 95,232,3,0,0,115,4,0,0,0,20,1,255,128,122,19, 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,0,0,0,0, 2,0,0,0,3,0,0,0,3,0,0,0,115,16,0,0, @@ -1489,7 +1489,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,32,32,32,32,32,32,32,32,78,41,3,218,5,115,117, 112,101,114,114,246,0,0,0,114,227,0,0,0,114,226,0, 0,0,169,1,114,248,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,227,0,0,0,234,3,0,0,115,4,0,0, + 0,0,0,114,227,0,0,0,235,3,0,0,115,4,0,0, 0,16,10,255,128,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,0,0,0,0,2,0,0,0,1,0, @@ -1499,7 +1499,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,78, 114,56,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,183,0,0,0,246,3, + 7,0,0,0,114,8,0,0,0,114,183,0,0,0,247,3, 0,0,115,4,0,0,0,6,3,255,128,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,0,0,0, @@ -1507,11 +1507,11 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,116,0,124,0,116,1,116,2,102,2,131,2,114,72, 116,3,160,4,116,5,124,1,131,1,161,1,143,24,125,2, 124,2,160,6,161,0,87,0,2,0,100,1,4,0,4,0, - 131,3,1,0,83,0,49,0,115,58,48,0,1,0,1,0, + 131,3,1,0,83,0,49,0,115,58,119,1,1,0,1,0, 1,0,89,0,1,0,100,1,83,0,116,3,160,7,124,1, 100,2,161,2,143,24,125,2,124,2,160,6,161,0,87,0, 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, - 115,114,48,0,1,0,1,0,1,0,89,0,1,0,100,1, + 115,114,119,1,1,0,1,0,1,0,89,0,1,0,100,1, 83,0,41,3,122,39,82,101,116,117,114,110,32,116,104,101, 32,100,97,116,97,32,102,114,111,109,32,112,97,116,104,32, 97,115,32,114,97,119,32,98,121,116,101,115,46,78,218,1, @@ -1521,7 +1521,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,101,114,90,0,0,0,90,4,114,101,97,100,114,73,0, 0,0,41,3,114,123,0,0,0,114,52,0,0,0,114,76, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,234,0,0,0,251,3,0,0,115,14,0,0,0, + 0,0,114,234,0,0,0,252,3,0,0,115,14,0,0,0, 14,2,16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0, @@ -1533,7 +1533,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,4,1,0,0,41,3,114,123,0,0,0,114,223,0,0, 0,114,4,1,0,0,114,7,0,0,0,114,7,0,0,0, 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,4,4,0,0,115,6, + 114,99,101,95,114,101,97,100,101,114,5,4,0,0,115,6, 0,0,0,12,2,8,1,255,128,122,30,70,105,108,101,76, 111,97,100,101,114,46,103,101,116,95,114,101,115,111,117,114, 99,101,95,114,101,97,100,101,114,41,13,114,130,0,0,0, @@ -1542,7 +1542,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,227,0,0,0,114,183,0,0,0,114,234,0, 0,0,114,5,1,0,0,90,13,95,95,99,108,97,115,115, 99,101,108,108,95,95,114,7,0,0,0,114,7,0,0,0, - 114,0,1,0,0,114,8,0,0,0,114,246,0,0,0,216, + 114,0,1,0,0,114,8,0,0,0,114,246,0,0,0,217, 3,0,0,115,26,0,0,0,8,0,4,2,8,3,8,6, 8,4,2,3,14,1,2,11,10,1,8,4,2,9,18,1, 255,128,114,246,0,0,0,99,0,0,0,0,0,0,0,0, @@ -1565,7 +1565,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 57,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,123,0,0,0,114,52, 0,0,0,114,245,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,231,0,0,0,14,4,0,0, + 0,0,114,8,0,0,0,114,231,0,0,0,15,4,0,0, 115,6,0,0,0,8,2,14,1,255,128,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,0,0,0,0,0, @@ -1576,7 +1576,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,232,0,0,0,41,5,114,123,0,0,0,114,112,0, 0,0,114,111,0,0,0,114,37,0,0,0,114,60,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,233,0,0,0,19,4,0,0,115,6,0,0,0,8,2, + 114,233,0,0,0,20,4,0,0,115,6,0,0,0,8,2, 16,1,255,128,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,68,0,0,0,114,8,1,0,0, @@ -1592,13 +1592,13 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 113,70,4,0,116,8,144,1,121,2,1,0,125,8,1,0, 122,30,116,9,160,10,100,1,124,4,124,8,161,3,1,0, 87,0,89,0,100,2,125,8,126,8,1,0,100,2,83,0, - 100,2,125,8,126,8,48,0,122,30,116,11,124,1,124,2, + 100,2,125,8,126,8,119,1,122,30,116,11,124,1,124,2, 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, 1,0,87,0,100,2,83,0,4,0,116,8,121,252,1,0, 125,8,1,0,122,28,116,9,160,10,100,1,124,1,124,8, 161,3,1,0,87,0,89,0,100,2,125,8,126,8,100,2, - 83,0,100,2,125,8,126,8,48,0,48,0,100,2,83,0, - 48,0,41,4,122,27,87,114,105,116,101,32,98,121,116,101, + 83,0,100,2,125,8,126,8,119,1,119,0,100,2,83,0, + 119,0,41,4,122,27,87,114,105,116,101,32,98,121,116,101, 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101, 46,122,27,99,111,117,108,100,32,110,111,116,32,99,114,101, 97,116,101,32,123,33,114,125,58,32,123,33,114,125,78,122, @@ -1611,7 +1611,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,52,0,0,0,114,37,0,0,0,114,9,1,0,0,218, 6,112,97,114,101,110,116,114,101,0,0,0,114,47,0,0, 0,114,43,0,0,0,114,235,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,232,0,0,0,24, + 114,7,0,0,0,114,8,0,0,0,114,232,0,0,0,25, 4,0,0,115,60,0,0,0,12,2,4,1,12,2,12,1, 10,1,12,254,12,4,10,1,2,1,14,1,12,1,4,2, 16,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, @@ -1621,7 +1621,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 41,7,114,130,0,0,0,114,129,0,0,0,114,131,0,0, 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,6,1,0,0,10,4, + 7,0,0,0,114,8,0,0,0,114,6,1,0,0,11,4, 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, 5,255,128,114,6,1,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, @@ -1644,7 +1644,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, - 0,0,59,4,0,0,115,24,0,0,0,10,1,10,1,2, + 0,0,60,4,0,0,115,24,0,0,0,10,1,10,1,2, 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, 253,255,128,122,29,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,99,111, @@ -1654,14 +1654,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,236,0,0,0,75,4, + 7,0,0,0,114,8,0,0,0,114,236,0,0,0,76,4, 0,0,115,4,0,0,0,4,2,255,128,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, 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,12,1,0,0,55,4,0,0,115,10,0,0,0,8, + 0,114,12,1,0,0,56,4,0,0,115,10,0,0,0,8, 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, 0,0,0,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, @@ -1682,7 +1682,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 95,0,124,2,124,0,95,1,100,0,83,0,114,114,0,0, 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,216,0,0,0,88,4,0,0,115, + 0,114,8,0,0,0,114,216,0,0,0,89,4,0,0,115, 6,0,0,0,6,1,10,1,255,128,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, @@ -1691,7 +1691,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 111,22,124,0,106,1,124,1,106,1,107,2,83,0,114,114, 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, - 0,92,4,0,0,115,8,0,0,0,12,1,10,1,2,255, + 0,93,4,0,0,115,8,0,0,0,12,1,10,1,2,255, 255,128,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,0,0,0,0,1,0,0,0,3, @@ -1699,7 +1699,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 106,1,131,1,116,0,124,0,106,2,131,1,65,0,83,0, 114,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, - 0,0,0,96,4,0,0,115,4,0,0,0,20,1,255,128, + 0,0,0,97,4,0,0,115,4,0,0,0,20,1,255,128, 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,0,0,0,0,3,0,0,0,5, @@ -1716,7 +1716,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,219,0,0,0,99,4,0,0,115,16,0,0, + 0,0,0,114,219,0,0,0,100,4,0,0,115,16,0,0, 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, 128,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, @@ -1734,7 +1734,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, - 0,107,4,0,0,115,10,0,0,0,14,2,6,1,8,1, + 0,108,4,0,0,115,10,0,0,0,14,2,6,1,8,1, 8,255,255,128,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,0,0,0, @@ -1752,14 +1752,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, - 0,116,4,0,0,115,8,0,0,0,4,0,2,1,20,255, + 0,117,4,0,0,115,8,0,0,0,4,0,2,1,20,255, 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, - 114,186,0,0,0,113,4,0,0,115,10,0,0,0,14,2, + 114,186,0,0,0,114,4,0,0,115,10,0,0,0,14,2, 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,0,0, @@ -1770,7 +1770,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7, 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,220,0,0,0,119,4,0,0, + 0,0,114,8,0,0,0,114,220,0,0,0,120,4,0,0, 115,4,0,0,0,4,2,255,128,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,0,0,0, @@ -1781,14 +1781,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 118,101,32,110,111,32,115,111,117,114,99,101,32,99,111,100, 101,46,78,114,7,0,0,0,114,226,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, - 0,123,4,0,0,115,4,0,0,0,4,2,255,128,122,30, + 0,124,4,0,0,115,4,0,0,0,4,2,255,128,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,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,1,1,0,0,114,56,0,0,0,114,226,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,183,0,0,0,127,4,0,0,115,4,0,0,0,6,3, + 114,183,0,0,0,128,4,0,0,115,4,0,0,0,6,3, 255,128,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,130,0,0,0,114,129,0,0, @@ -1797,7 +1797,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,3,1,0,0,80,4,0,0,115,26,0,0,0,8, + 0,114,3,1,0,0,81,4,0,0,115,26,0,0,0,8, 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, @@ -1840,7 +1840,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,140,4,0,0,115,10,0,0,0,6,1,6,1,14, + 0,0,141,4,0,0,115,10,0,0,0,6,1,6,1,14, 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, @@ -1857,7 +1857,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, 114,8,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,146,4, + 101,110,116,95,112,97,116,104,95,110,97,109,101,115,147,4, 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, @@ -1871,7 +1871,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, - 0,156,4,0,0,115,6,0,0,0,12,1,16,1,255,128, + 0,157,4,0,0,115,6,0,0,0,12,1,16,1,255,128, 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,0,0,0,0,3,0, @@ -1887,7 +1887,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, - 108,97,116,101,160,4,0,0,115,18,0,0,0,12,2,10, + 108,97,116,101,161,4,0,0,115,18,0,0,0,12,2,10, 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, @@ -1896,7 +1896,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 161,0,131,1,83,0,114,114,0,0,0,41,2,218,4,105, 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, - 105,116,101,114,95,95,173,4,0,0,115,4,0,0,0,12, + 105,116,101,114,95,95,174,4,0,0,115,4,0,0,0,12, 1,255,128,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,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, @@ -1904,7 +1904,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,103,101,116,105,116,101,109,95,95,176,4,0,0, + 11,95,95,103,101,116,105,116,101,109,95,95,177,4,0,0, 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, 116,101,109,95,95,99,3,0,0,0,0,0,0,0,0,0, @@ -1913,7 +1913,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,114,0,0,0,41,1,114,20,1,0,0,41,3,114, 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 95,115,101,116,105,116,101,109,95,95,179,4,0,0,115,4, + 95,115,101,116,105,116,101,109,95,95,180,4,0,0,115,4, 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, 109,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, @@ -1921,7 +1921,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,116,0,124,0,160,1,161,0,131,1,83,0,114,114,0, 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,7,95,95,108,101,110,95,95,182,4,0,0,115, + 0,0,218,7,95,95,108,101,110,95,95,183,4,0,0,115, 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, @@ -1930,7 +1930,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,97,109,101,115,112,97,99,101,80,97,116,104,40,123,33, 114,125,41,41,2,114,70,0,0,0,114,20,1,0,0,114, 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,114,101,112,114,95,95,185,4,0, + 0,0,0,218,8,95,95,114,101,112,114,95,95,186,4,0, 0,115,4,0,0,0,12,1,255,128,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,0,0,0,0, @@ -1939,7 +1939,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,188,4,0,0,115,4,0,0,0,12,1,255,128,122,27, + 95,189,4,0,0,115,4,0,0,0,12,1,255,128,122,27, 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, @@ -1947,7 +1947,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,161,1,1,0,100,0,83,0,114,114,0,0,0,41,2, 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, - 0,0,0,191,4,0,0,115,4,0,0,0,16,1,255,128, + 0,0,0,192,4,0,0,115,4,0,0,0,16,1,255,128, 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,15,114,130,0,0,0,114, 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, @@ -1955,7 +1955,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,18,1,0,0,133,4, + 7,0,0,0,114,8,0,0,0,114,18,1,0,0,134,4, 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, 3,255,128,114,18,1,0,0,99,0,0,0,0,0,0,0, @@ -1972,7 +1972,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 131,3,124,0,95,1,100,0,83,0,114,114,0,0,0,41, 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 216,0,0,0,197,4,0,0,115,4,0,0,0,18,1,255, + 216,0,0,0,198,4,0,0,115,4,0,0,0,18,1,255, 128,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,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, @@ -1989,21 +1989,21 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 101,115,112,97,99,101,41,62,78,41,2,114,70,0,0,0, 114,130,0,0,0,41,1,114,223,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,200,4,0,0,115,4,0,0, + 117,108,101,95,114,101,112,114,201,4,0,0,115,4,0,0, 0,12,7,255,128,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,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,7,0,0,0,114,226, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,186,0,0,0,209,4,0,0,115,4,0,0,0, + 0,0,114,186,0,0,0,210,4,0,0,115,4,0,0,0, 4,1,255,128,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,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,10,0,0,0,114,7,0,0,0, 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,236,0,0,0,212,4,0,0,115,4,0, + 8,0,0,0,114,236,0,0,0,213,4,0,0,115,4,0, 0,0,4,1,255,128,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,0,0,0,0, @@ -2013,20 +2013,20 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,103,62,114,222,0,0,0,84,41,1,114,238,0,0,0, 41,1,114,239,0,0,0,114,226,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, - 215,4,0,0,115,4,0,0,0,16,1,255,128,122,25,95, + 216,4,0,0,115,4,0,0,0,16,1,255,128,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,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,217,0,0,0,114, 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,219,0,0,0,218,4,0, + 0,0,0,114,8,0,0,0,114,219,0,0,0,219,4,0, 0,115,4,0,0,0,4,0,255,128,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,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,114,0,0, 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,221, + 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,222, 4,0,0,115,4,0,0,0,4,1,255,128,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, @@ -2045,7 +2045,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, - 224,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, + 225,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131, @@ -2053,7 +2053,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,40,1,0,0,196,4,0,0,115,22,0, + 8,0,0,0,114,40,1,0,0,197,4,0,0,115,22,0, 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, @@ -2090,7 +2090,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,99,104,101,218,5,105,116,101,109,115,114,133,0,0,0, 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,43,1,0,0,243,4,0,0,115,16,0,0, + 0,0,0,114,43,1,0,0,244,4,0,0,115,16,0,0, 0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,255, 128,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, @@ -2100,7 +2100,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, 36,125,1,122,14,124,1,124,0,131,1,87,0,2,0,1, 0,83,0,4,0,116,5,121,70,1,0,1,0,1,0,89, - 0,113,34,48,0,100,1,83,0,41,3,122,46,83,101,97, + 0,113,34,119,0,100,1,83,0,41,3,122,46,83,101,97, 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, 102,111,114,32,39,112,97,116,104,39,46,78,122,23,115,121, @@ -2110,18 +2110,18 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,142,0,0,0,114,122,0,0,0,41,2,114,52, 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, - 104,111,111,107,115,253,4,0,0,115,18,0,0,0,16,3, + 104,111,111,107,115,254,4,0,0,115,18,0,0,0,16,3, 12,1,10,1,2,1,14,1,12,1,6,1,4,2,255,128, 122,22,80,97,116,104,70,105,110,100,101,114,46,95,112,97, 116,104,95,104,111,111,107,115,99,2,0,0,0,0,0,0, 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, 0,115,100,0,0,0,124,1,100,1,107,2,114,42,122,12, 116,0,160,1,161,0,125,1,87,0,110,20,4,0,116,2, - 121,40,1,0,1,0,1,0,89,0,100,2,83,0,48,0, + 121,40,1,0,1,0,1,0,89,0,100,2,83,0,119,0, 122,16,116,3,106,4,124,1,25,0,125,2,87,0,124,2, 83,0,4,0,116,5,121,98,1,0,1,0,1,0,124,0, 160,6,124,1,161,1,125,2,124,2,116,3,106,4,124,1, - 60,0,89,0,124,2,83,0,48,0,41,3,122,210,71,101, + 60,0,89,0,124,2,83,0,119,0,41,3,122,210,71,101, 116,32,116,104,101,32,102,105,110,100,101,114,32,102,111,114, 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32, 102,114,111,109,32,115,121,115,46,112,97,116,104,95,105,109, @@ -2142,7 +2142,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,202,0,0,0,114,52,0,0,0,114,47,1,0,0,114, 7,0,0,0,114,7,0,0,0,114,8,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,10,5,0,0,115,28,0,0,0,8,8,2, + 97,99,104,101,11,5,0,0,115,28,0,0,0,8,8,2, 1,12,1,12,1,8,3,2,1,12,1,4,4,12,253,10, 1,12,1,4,1,2,255,255,128,122,31,80,97,116,104,70, 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, @@ -2160,7 +2160,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,0,114,47,1,0,0,114,144,0,0,0,114,145,0, 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,32,5,0,0,115,20,0,0, + 103,101,116,95,115,112,101,99,33,5,0,0,115,20,0,0, 0,10,4,16,1,10,2,4,1,8,1,12,1,12,1,6, 1,4,1,255,128,122,27,80,97,116,104,70,105,110,100,101, 114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112, @@ -2192,7 +2192,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 90,5,101,110,116,114,121,114,47,1,0,0,114,191,0,0, 0,114,145,0,0,0,114,7,0,0,0,114,7,0,0,0, 114,8,0,0,0,218,9,95,103,101,116,95,115,112,101,99, - 47,5,0,0,115,44,0,0,0,4,5,8,1,14,1,2, + 48,5,0,0,115,44,0,0,0,4,5,8,1,14,1,2, 1,10,1,8,1,10,1,14,1,12,2,8,1,2,1,10, 1,8,1,6,1,8,1,8,1,10,5,2,128,12,2,6, 1,4,1,255,128,122,20,80,97,116,104,70,105,110,100,101, @@ -2219,7 +2219,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, 206,0,0,0,114,191,0,0,0,114,55,1,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,207,0, - 0,0,79,5,0,0,115,28,0,0,0,8,6,6,1,14, + 0,0,80,5,0,0,115,28,0,0,0,8,6,6,1,14, 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, 1,4,2,4,2,255,128,122,20,80,97,116,104,70,105,110, 100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, @@ -2239,7 +2239,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,208,0,0,0,114,209,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,210,0,0,0,103,5,0,0,115,10,0,0,0,12, + 0,114,210,0,0,0,104,5,0,0,115,10,0,0,0,12, 8,8,1,4,1,6,1,255,128,122,22,80,97,116,104,70, 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, 101,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, @@ -2271,7 +2271,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, 124,0,0,0,114,125,0,0,0,114,57,1,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,58,1, - 0,0,116,5,0,0,115,6,0,0,0,12,10,16,1,255, + 0,0,117,5,0,0,115,6,0,0,0,12,10,16,1,255, 128,122,29,80,97,116,104,70,105,110,100,101,114,46,102,105, 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, 41,1,78,41,2,78,78,41,1,78,41,14,114,130,0,0, @@ -2280,7 +2280,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 214,0,0,0,114,52,1,0,0,114,53,1,0,0,114,56, 1,0,0,114,207,0,0,0,114,210,0,0,0,114,58,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,42,1,0,0,239,4,0,0,115, + 0,114,8,0,0,0,114,42,1,0,0,240,4,0,0,115, 38,0,0,0,8,0,4,2,2,2,10,1,2,9,10,1, 2,12,10,1,2,21,10,1,2,14,12,1,2,31,12,1, 2,23,12,1,2,12,14,1,255,128,114,42,1,0,0,99, @@ -2325,7 +2325,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,93,14,125,1,124,1,136,0,102,2,86,0,1, 0,113,2,100,0,83,0,114,114,0,0,0,114,7,0,0, 0,114,14,1,0,0,169,1,114,144,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,9,0,0,0,145,5,0,0, + 0,0,114,8,0,0,0,114,9,0,0,0,146,5,0,0, 115,4,0,0,0,22,0,255,128,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, @@ -2338,7 +2338,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 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,193,0,0,0, 114,7,0,0,0,114,60,1,0,0,114,8,0,0,0,114, - 216,0,0,0,139,5,0,0,115,18,0,0,0,4,4,12, + 216,0,0,0,140,5,0,0,115,18,0,0,0,4,4,12, 1,26,1,6,1,10,2,6,1,8,1,12,1,255,128,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,0,0,0, @@ -2348,7 +2348,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 105,114,101,99,116,111,114,121,32,109,116,105,109,101,46,114, 109,0,0,0,78,41,1,114,62,1,0,0,114,253,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,43,1,0,0,153,5,0,0,115,4,0,0,0,10,2, + 114,43,1,0,0,154,5,0,0,115,4,0,0,0,10,2, 255,128,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,0,0,0,0,0,0,3,0,0, @@ -2371,7 +2371,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 32,78,41,3,114,207,0,0,0,114,144,0,0,0,114,182, 0,0,0,41,3,114,123,0,0,0,114,143,0,0,0,114, 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,141,0,0,0,159,5,0,0,115,10,0,0, + 0,0,0,114,141,0,0,0,160,5,0,0,115,10,0,0, 0,10,7,8,1,8,1,16,1,255,128,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,0,0,0,0, @@ -2382,7 +2382,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,114,192,0,0,0,114,143,0,0,0,114,52,0,0,0, 90,4,115,109,115,108,114,206,0,0,0,114,144,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 56,1,0,0,171,5,0,0,115,10,0,0,0,10,1,8, + 56,1,0,0,172,5,0,0,115,10,0,0,0,10,1,8, 1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14,0,0,0,8, @@ -2390,7 +2390,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,1,160,0,100,2,161,1,100,3,25,0,125,4,122,24, 116,1,124,0,106,2,112,34,116,3,160,4,161,0,131,1, 106,5,125,5,87,0,110,22,4,0,116,6,121,64,1,0, - 1,0,1,0,100,4,125,5,89,0,110,2,48,0,124,5, + 1,0,1,0,100,4,125,5,89,0,110,2,119,0,124,5, 124,0,106,7,107,3,114,90,124,0,160,8,161,0,1,0, 124,5,124,0,95,7,116,9,131,0,114,112,124,0,106,10, 125,6,124,4,160,11,161,0,125,7,110,10,124,0,106,12, @@ -2436,7 +2436,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,207,0,0,0,176,5,0,0,115,74, + 114,8,0,0,0,114,207,0,0,0,177,5,0,0,115,74, 0,0,0,4,5,14,1,2,1,24,1,12,1,10,1,10, 1,8,1,6,1,6,2,6,1,10,1,6,2,4,1,8, 2,12,1,14,1,8,1,10,1,8,1,24,1,8,4,14, @@ -2448,7 +2448,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,124,0,106,0,125,1,122,22,116,1,160,2,124,1,112, 22,116,1,160,3,161,0,161,1,125,2,87,0,110,28,4, 0,116,4,116,5,116,6,102,3,121,56,1,0,1,0,1, - 0,103,0,125,2,89,0,110,2,48,0,116,7,106,8,160, + 0,103,0,125,2,89,0,110,2,119,0,116,7,106,8,160, 9,100,1,161,1,115,82,116,10,124,2,131,1,124,0,95, 11,110,74,116,10,131,0,125,3,124,2,68,0,93,56,125, 4,124,4,160,12,100,2,161,1,92,3,125,5,125,6,125, @@ -2468,7 +2468,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 160,0,161,0,146,2,113,4,83,0,114,7,0,0,0,41, 1,114,110,0,0,0,41,2,114,5,0,0,0,90,2,102, 110,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,13,0,0,0,253,5,0,0,115,4,0,0,0,20,0, + 114,13,0,0,0,254,5,0,0,115,4,0,0,0,20,0, 255,128,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, @@ -2485,7 +2485,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 110,116,101,110,116,115,114,38,1,0,0,114,121,0,0,0, 114,25,1,0,0,114,15,1,0,0,90,8,110,101,119,95, 110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,67,1,0,0,224,5,0,0,115,38,0,0, + 0,0,0,114,67,1,0,0,225,5,0,0,115,38,0,0, 0,6,2,2,1,22,1,18,1,10,3,12,3,12,1,6, 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, 1,20,1,4,255,255,128,122,22,70,105,108,101,70,105,110, @@ -2524,14 +2524,14 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 56,0,0,0,169,2,114,202,0,0,0,114,66,1,0,0, 114,7,0,0,0,114,8,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,9,6,0,0,115,8,0,0,0,8,2,12, + 110,100,101,114,10,6,0,0,115,8,0,0,0,8,2,12, 1,16,1,255,128,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,78,114,7, 0,0,0,41,3,114,202,0,0,0,114,66,1,0,0,114, 72,1,0,0,114,7,0,0,0,114,71,1,0,0,114,8, - 0,0,0,218,9,112,97,116,104,95,104,111,111,107,255,5, + 0,0,0,218,9,112,97,116,104,95,104,111,111,107,0,6, 0,0,115,6,0,0,0,14,10,4,6,255,128,122,20,70, 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, 111,111,107,99,1,0,0,0,0,0,0,0,0,0,0,0, @@ -2540,7 +2540,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114, 125,41,41,2,114,70,0,0,0,114,52,0,0,0,114,253, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,36,1,0,0,17,6,0,0,115,4,0,0,0, + 0,0,114,36,1,0,0,18,6,0,0,115,4,0,0,0, 12,1,255,128,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,130, 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, @@ -2549,7 +2549,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,207,0,0,0,114,67,1,0,0,114,214,0,0,0,114, 73,1,0,0,114,36,1,0,0,114,7,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,59,1, - 0,0,130,5,0,0,115,26,0,0,0,8,0,4,2,8, + 0,0,131,5,0,0,115,26,0,0,0,8,0,4,2,8, 7,8,14,4,4,8,2,8,12,10,5,8,48,2,31,10, 1,12,17,255,128,114,59,1,0,0,99,4,0,0,0,0, 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, @@ -2562,7 +2562,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 124,0,100,2,60,0,124,4,124,0,100,1,60,0,124,2, 124,0,100,4,60,0,124,3,124,0,100,5,60,0,87,0, 100,0,83,0,4,0,116,5,121,142,1,0,1,0,1,0, - 89,0,100,0,83,0,48,0,41,6,78,218,10,95,95,108, + 89,0,100,0,83,0,119,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,60,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, @@ -2572,7 +2572,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,116,104,110,97,109,101,90,9,99,112,97,116,104,110,97, 109,101,114,144,0,0,0,114,191,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,23,6,0,0,115, + 120,95,117,112,95,109,111,100,117,108,101,24,6,0,0,115, 36,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, 14,1,12,1,8,2,255,128,114,78,1,0,0,99,0,0, @@ -2592,7 +2592,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 12,1,0,0,114,94,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,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,188,0,0,0,46,6,0, + 0,0,0,114,8,0,0,0,114,188,0,0,0,47,6,0, 0,115,10,0,0,0,12,5,8,1,8,1,10,1,255,128, 114,188,0,0,0,99,1,0,0,0,0,0,0,0,0,0, 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,8, @@ -2601,7 +2601,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 115,116,114,97,112,95,109,111,100,117,108,101,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,21,95,115,101, 116,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, - 108,101,57,6,0,0,115,4,0,0,0,8,2,255,128,114, + 108,101,58,6,0,0,115,4,0,0,0,8,2,255,128,114, 81,1,0,0,99,1,0,0,0,0,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, @@ -2616,7 +2616,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,104,114,190,0,0,0,114,42,1,0,0,41,2,114,80, 1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,108, 111,97,100,101,114,115,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,105,110,115,116,97,108,108,62, + 114,8,0,0,0,218,8,95,105,110,115,116,97,108,108,63, 6,0,0,115,10,0,0,0,8,2,6,1,20,1,16,1, 255,128,114,83,1,0,0,41,1,114,68,0,0,0,41,1, 78,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, @@ -2659,7 +2659,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 1,8,2,4,3,10,1,6,2,22,2,8,1,10,1,14, 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, 3,8,5,8,5,8,6,8,6,8,12,8,10,8,9,8, - 5,8,7,10,9,10,22,0,127,16,23,12,1,4,2,4, + 5,8,7,10,9,10,22,0,127,16,24,12,1,4,2,4, 1,6,2,6,1,10,1,8,2,6,2,8,2,16,2,8, 71,8,40,8,19,8,12,8,12,8,31,8,17,8,33,8, 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 2058a9e354873..38f148ea78382 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -128,11 +128,11 @@ const unsigned char _Py_M__zipimport[] = { 12,124,1,161,1,92,2,125,5,125,6,124,5,124,1,107, 2,114,132,116,4,100,5,124,1,100,3,141,2,130,1,124, 5,125,1,124,3,160,13,124,6,161,1,1,0,89,0,110, - 28,48,0,124,4,106,14,100,6,64,0,100,7,107,3,114, + 28,119,0,124,4,106,14,100,6,64,0,100,7,107,3,114, 180,116,4,100,5,124,1,100,3,141,2,130,1,113,66,122, 12,116,15,124,1,25,0,125,7,87,0,110,34,4,0,116, 16,121,226,1,0,1,0,1,0,116,17,124,1,131,1,125, - 7,124,7,116,15,124,1,60,0,89,0,110,2,48,0,124, + 7,124,7,116,15,124,1,60,0,89,0,110,2,119,0,124, 7,124,0,95,18,124,1,124,0,95,19,116,8,106,20,124, 3,100,0,100,0,100,8,133,3,25,0,142,0,124,0,95, 21,124,0,106,21,144,1,114,32,124,0,4,0,106,21,116, @@ -319,7 +319,7 @@ const unsigned char _Py_M__zipimport[] = { 0,106,4,116,2,23,0,131,1,100,1,133,2,25,0,125, 2,122,14,124,0,106,6,124,2,25,0,125,3,87,0,110, 26,4,0,116,7,121,98,1,0,1,0,1,0,116,8,100, - 2,100,3,124,2,131,3,130,1,48,0,116,9,124,0,106, + 2,100,3,124,2,131,3,130,1,119,0,116,9,124,0,106, 4,124,3,131,2,83,0,41,4,122,154,103,101,116,95,100, 97,116,97,40,112,97,116,104,110,97,109,101,41,32,45,62, 32,115,116,114,105,110,103,32,119,105,116,104,32,102,105,108, @@ -365,7 +365,7 @@ const unsigned char _Py_M__zipimport[] = { 160,4,124,3,100,4,161,2,125,4,110,10,124,3,155,0, 100,5,157,2,125,4,122,14,124,0,106,5,124,4,25,0, 125,5,87,0,110,20,4,0,116,6,121,108,1,0,1,0, - 1,0,89,0,100,1,83,0,48,0,116,7,124,0,106,8, + 1,0,89,0,100,1,83,0,119,0,116,7,124,0,106,8, 124,5,131,2,160,9,161,0,83,0,41,6,122,253,103,101, 116,95,115,111,117,114,99,101,40,102,117,108,108,110,97,109, 101,41,32,45,62,32,115,111,117,114,99,101,32,115,116,114, @@ -434,7 +434,7 @@ const unsigned char _Py_M__zipimport[] = { 16,1,0,1,0,1,0,116,4,106,5,124,1,61,0,130, 0,122,14,116,4,106,5,124,1,25,0,125,6,87,0,110, 30,4,0,116,20,121,232,1,0,1,0,1,0,116,21,100, - 4,124,1,155,2,100,5,157,3,131,1,130,1,48,0,116, + 4,124,1,155,2,100,5,157,3,131,1,130,1,119,0,116, 22,160,23,100,6,124,1,124,5,161,3,1,0,124,6,83, 0,41,7,97,55,1,0,0,108,111,97,100,95,109,111,100, 117,108,101,40,102,117,108,108,110,97,109,101,41,32,45,62, @@ -496,7 +496,7 @@ const unsigned char _Py_M__zipimport[] = { 3,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, 0,122,20,124,0,160,0,124,1,161,1,115,18,87,0,100, 1,83,0,87,0,110,20,4,0,116,1,121,40,1,0,1, - 0,1,0,89,0,100,1,83,0,48,0,100,2,100,3,108, + 0,1,0,89,0,100,1,83,0,119,0,100,2,100,3,108, 2,109,3,125,2,1,0,124,2,124,0,124,1,131,2,83, 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, @@ -578,23 +578,23 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,115,232,4,0,0,122,14,116,0,160,1,124,0, 161,1,125,1,87,0,110,32,4,0,116,2,121,46,1,0, 1,0,1,0,116,3,100,1,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,48,0,124,1,144,4,143,142,1,0, + 100,2,141,2,130,1,119,0,124,1,144,4,143,142,1,0, 122,36,124,1,160,4,116,5,11,0,100,3,161,2,1,0, 124,1,160,6,161,0,125,2,124,1,160,7,116,5,161,1, 125,3,87,0,110,32,4,0,116,2,121,124,1,0,1,0, 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,48,0,116,8,124,3,131,1,116,5,107,3, + 141,2,130,1,119,0,116,8,124,3,131,1,116,5,107,3, 114,156,116,3,100,4,124,0,155,2,157,2,124,0,100,2, 141,2,130,1,124,3,100,0,100,5,133,2,25,0,116,9, 107,3,144,1,114,154,122,24,124,1,160,4,100,6,100,3, 161,2,1,0,124,1,160,6,161,0,125,4,87,0,110,32, 4,0,116,2,121,230,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, 116,10,124,4,116,11,24,0,116,5,24,0,100,6,131,2, 125,5,122,22,124,1,160,4,124,5,161,1,1,0,124,1, 160,7,161,0,125,6,87,0,110,34,4,0,116,2,144,1, 121,50,1,0,1,0,1,0,116,3,100,4,124,0,155,2, - 157,2,124,0,100,2,141,2,130,1,48,0,124,6,160,12, + 157,2,124,0,100,2,141,2,130,1,119,0,124,6,160,12, 116,9,161,1,125,7,124,7,100,6,107,0,144,1,114,90, 116,3,100,7,124,0,155,2,157,2,124,0,100,2,141,2, 130,1,124,6,124,7,124,7,116,5,23,0,133,2,25,0, @@ -612,7 +612,7 @@ const unsigned char _Py_M__zipimport[] = { 100,2,141,2,130,1,105,0,125,11,100,6,125,12,122,14, 124,1,160,4,124,2,161,1,1,0,87,0,110,34,4,0, 116,2,144,2,121,86,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, 9,0,124,1,160,7,100,16,161,1,125,3,116,8,124,3, 131,1,100,5,107,0,144,2,114,122,116,14,100,17,131,1, 130,1,124,3,100,0,100,5,133,2,25,0,100,18,107,3, @@ -634,7 +634,7 @@ const unsigned char _Py_M__zipimport[] = { 100,2,141,2,130,1,124,22,124,10,55,0,125,22,122,14, 124,1,160,7,124,19,161,1,125,23,87,0,110,34,4,0, 116,2,144,3,121,182,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,48,0, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, 116,8,124,23,131,1,124,19,107,3,144,3,114,216,116,3, 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, 122,50,116,8,124,1,160,7,124,8,124,19,24,0,161,1, @@ -642,17 +642,17 @@ const unsigned char _Py_M__zipimport[] = { 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, 87,0,110,34,4,0,116,2,144,4,121,44,1,0,1,0, 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,48,0,124,13,100,29,64,0,144,4,114,66, + 141,2,130,1,119,0,124,13,100,29,64,0,144,4,114,66, 124,23,160,16,161,0,125,23,110,52,122,14,124,23,160,16, 100,30,161,1,125,23,87,0,110,36,4,0,116,17,144,4, 121,116,1,0,1,0,1,0,124,23,160,16,100,31,161,1, - 160,18,116,19,161,1,125,23,89,0,110,2,48,0,124,23, + 160,18,116,19,161,1,125,23,89,0,110,2,119,0,124,23, 160,20,100,32,116,21,161,2,125,23,116,22,160,23,124,0, 124,23,161,2,125,24,124,24,124,14,124,18,124,4,124,22, 124,15,124,16,124,17,102,8,125,25,124,25,124,11,124,23, 60,0,124,12,100,33,55,0,125,12,144,2,113,90,87,0, 100,0,4,0,4,0,131,3,1,0,110,18,49,0,144,4, - 115,204,48,0,1,0,1,0,1,0,89,0,1,0,116,24, + 115,204,119,1,1,0,1,0,1,0,89,0,1,0,116,24, 160,25,100,34,124,12,124,0,161,3,1,0,124,11,83,0, 41,35,78,122,21,99,97,110,39,116,32,111,112,101,110,32, 90,105,112,32,102,105,108,101,58,32,114,12,0,0,0,114, @@ -758,8 +758,8 @@ const unsigned char _Py_M__zipimport[] = { 100,3,97,0,122,58,122,16,100,4,100,5,108,4,109,5, 125,0,1,0,87,0,110,32,4,0,116,6,121,76,1,0, 1,0,1,0,116,1,160,2,100,1,161,1,1,0,116,3, - 100,2,131,1,130,1,48,0,87,0,100,6,97,0,110,6, - 100,6,97,0,48,0,116,1,160,2,100,7,161,1,1,0, + 100,2,131,1,130,1,119,0,87,0,100,6,97,0,110,6, + 100,6,97,0,119,0,116,1,160,2,100,7,161,1,1,0, 124,0,83,0,41,8,78,122,27,122,105,112,105,109,112,111, 114,116,58,32,122,108,105,98,32,85,78,65,86,65,73,76, 65,66,76,69,250,41,99,97,110,39,116,32,100,101,99,111, @@ -784,7 +784,7 @@ const unsigned char _Py_M__zipimport[] = { 2,124,0,161,1,144,1,143,6,125,10,122,14,124,10,160, 3,124,6,161,1,1,0,87,0,110,32,4,0,116,4,121, 96,1,0,1,0,1,0,116,0,100,3,124,0,155,2,157, - 2,124,0,100,4,141,2,130,1,48,0,124,10,160,5,100, + 2,124,0,100,4,141,2,130,1,119,0,124,10,160,5,100, 5,161,1,125,11,116,6,124,11,131,1,100,5,107,3,114, 128,116,7,100,6,131,1,130,1,124,11,100,0,100,7,133, 2,25,0,100,8,107,3,114,162,116,0,100,9,124,0,155, @@ -794,15 +794,15 @@ const unsigned char _Py_M__zipimport[] = { 0,124,13,23,0,125,14,124,6,124,14,55,0,125,6,122, 14,124,10,160,3,124,6,161,1,1,0,87,0,110,34,4, 0,116,4,144,1,121,6,1,0,1,0,1,0,116,0,100, - 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,48, + 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,119, 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, 1,124,4,107,3,144,1,114,40,116,4,100,12,131,1,130, 1,87,0,100,0,4,0,4,0,131,3,1,0,110,18,49, - 0,144,1,115,62,48,0,1,0,1,0,1,0,89,0,1, + 0,144,1,115,62,119,1,1,0,1,0,1,0,89,0,1, 0,124,3,100,1,107,2,144,1,114,86,124,15,83,0,122, 10,116,9,131,0,125,16,87,0,110,24,4,0,116,10,144, 1,121,120,1,0,1,0,1,0,116,0,100,13,131,1,130, - 1,48,0,124,16,124,15,100,14,131,2,83,0,41,15,78, + 1,119,0,124,16,124,15,100,14,131,2,83,0,41,15,78, 114,0,0,0,0,122,18,110,101,103,97,116,105,118,101,32, 100,97,116,97,32,115,105,122,101,114,94,0,0,0,114,12, 0,0,0,114,106,0,0,0,114,100,0,0,0,114,95,0, @@ -839,7 +839,7 @@ const unsigned char _Py_M__zipimport[] = { 0,124,3,124,2,100,1,156,2,125,5,122,18,116,0,160, 1,124,4,124,3,124,5,161,3,125,6,87,0,110,20,4, 0,116,2,121,48,1,0,1,0,1,0,89,0,100,0,83, - 0,48,0,124,6,100,2,64,0,100,3,107,3,125,7,124, + 0,119,0,124,6,100,2,64,0,100,3,107,3,125,7,124, 7,114,182,124,6,100,4,64,0,100,3,107,3,125,8,116, 3,106,4,100,5,107,3,144,1,114,10,124,8,115,106,116, 3,106,4,100,6,107,2,144,1,114,10,116,5,124,0,124, @@ -847,7 +847,7 @@ const unsigned char _Py_M__zipimport[] = { 3,160,6,116,0,106,7,124,9,161,2,125,10,122,20,116, 0,160,8,124,4,124,10,124,3,124,5,161,4,1,0,87, 0,110,104,4,0,116,2,121,180,1,0,1,0,1,0,89, - 0,100,0,83,0,48,0,116,9,124,0,124,2,131,2,92, + 0,100,0,83,0,119,0,116,9,124,0,124,2,131,2,92, 2,125,11,125,12,124,11,144,1,114,10,116,10,116,11,124, 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, 246,116,11,124,4,100,8,100,9,133,2,25,0,131,1,124, @@ -936,7 +936,7 @@ const unsigned char _Py_M__zipimport[] = { 100,4,25,0,125,4,124,2,100,5,25,0,125,5,116,1, 124,4,124,3,131,2,124,5,102,2,87,0,83,0,4,0, 116,2,116,3,116,4,102,3,121,108,1,0,1,0,1,0, - 89,0,100,6,83,0,48,0,41,7,78,114,14,0,0,0, + 89,0,100,6,83,0,119,0,41,7,78,114,14,0,0,0, 169,2,218,1,99,218,1,111,114,165,0,0,0,233,6,0, 0,0,233,3,0,0,0,41,2,114,0,0,0,0,114,0, 0,0,0,41,5,114,28,0,0,0,114,171,0,0,0,114, @@ -953,7 +953,7 @@ const unsigned char _Py_M__zipimport[] = { 2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100, 0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124, 1,25,0,125,2,87,0,110,20,4,0,116,1,121,66,1, - 0,1,0,1,0,89,0,100,0,83,0,48,0,116,2,124, + 0,1,0,1,0,89,0,100,0,83,0,119,0,116,2,124, 0,106,3,124,2,131,2,83,0,41,3,78,114,14,0,0, 0,114,172,0,0,0,41,4,114,28,0,0,0,114,26,0, 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32, @@ -968,7 +968,7 @@ const unsigned char _Py_M__zipimport[] = { 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141, 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87, 0,110,18,4,0,116,7,121,86,1,0,1,0,1,0,89, - 0,113,14,48,0,124,7,100,4,25,0,125,8,116,8,124, + 0,113,14,119,0,124,7,100,4,25,0,125,8,116,8,124, 0,106,4,124,7,131,2,125,9,124,4,114,130,116,9,124, 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116, 10,124,8,124,9,131,2,125,10,124,10,100,0,117,0,114, diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 538fdbe3e0b5a..8495871e21313 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -47,7 +47,7 @@ static void *opcode_targets[256] = { &&_unknown_opcode, &&_unknown_opcode, &&_unknown_opcode, - &&TARGET_RERAISE, + &&_unknown_opcode, &&TARGET_WITH_EXCEPT_START, &&TARGET_GET_AITER, &&TARGET_GET_ANEXT, @@ -118,7 +118,7 @@ static void *opcode_targets[256] = { &&TARGET_LOAD_GLOBAL, &&TARGET_IS_OP, &&TARGET_CONTAINS_OP, - &&_unknown_opcode, + &&TARGET_RERAISE, &&_unknown_opcode, &&TARGET_JUMP_IF_NOT_EXC_MATCH, &&TARGET_SETUP_FINALLY, From webhook-mailer at python.org Thu Dec 17 09:29:46 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 14:29:46 -0000 Subject: [Python-checkins] bpo-42613: Fix freeze.py config directory (GH-23792) (GH-23817) Message-ID: https://github.com/python/cpython/commit/79c535796da4a1377364910e309b97e53c3e51ef commit: 79c535796da4a1377364910e309b97e53c3e51ef branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: vstinner date: 2020-12-17T15:29:36+01:00 summary: bpo-42613: Fix freeze.py config directory (GH-23792) (GH-23817) Fix freeze.py tool to use the prope config and library directories. (cherry picked from commit 1c653f17cb84d81df3a74ab0b42140d2bb68c5c4) Co-authored-by: Victor Stinner Co-authored-by: Victor Stinner files: A Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst M Tools/freeze/freeze.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst new file mode 100644 index 0000000000000..140ff8255b96b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst @@ -0,0 +1,2 @@ +Fix ``freeze.py`` tool to use the prope config and library directories. +Patch by Victor Stinner. diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py index 83aa508a46a93..d66e1e2708e75 100755 --- a/Tools/freeze/freeze.py +++ b/Tools/freeze/freeze.py @@ -93,6 +93,7 @@ import getopt import os import sys +import sysconfig # Import the freeze-private modules @@ -226,7 +227,7 @@ def main(): extensions_c = 'frozen_extensions.c' if ishome: print("(Using Python source directory)") - binlib = exec_prefix + configdir = exec_prefix incldir = os.path.join(prefix, 'Include') config_h_dir = exec_prefix config_c_in = os.path.join(prefix, 'Modules', 'config.c.in') @@ -235,22 +236,21 @@ def main(): if win: frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c') else: - binlib = os.path.join(exec_prefix, - 'lib', 'python%s' % version, - 'config-%s' % flagged_version) + configdir = sysconfig.get_config_var('LIBPL') incldir = os.path.join(prefix, 'include', 'python%s' % flagged_version) config_h_dir = os.path.join(exec_prefix, 'include', 'python%s' % flagged_version) - config_c_in = os.path.join(binlib, 'config.c.in') - frozenmain_c = os.path.join(binlib, 'frozenmain.c') - makefile_in = os.path.join(binlib, 'Makefile') - frozendllmain_c = os.path.join(binlib, 'frozen_dllmain.c') + config_c_in = os.path.join(configdir, 'config.c.in') + frozenmain_c = os.path.join(configdir, 'frozenmain.c') + makefile_in = os.path.join(configdir, 'Makefile') + frozendllmain_c = os.path.join(configdir, 'frozen_dllmain.c') + libdir = sysconfig.get_config_var('LIBDIR') supp_sources = [] defines = [] includes = ['-I' + incldir, '-I' + config_h_dir] # sanity check of directories and files - check_dirs = [prefix, exec_prefix, binlib, incldir] + check_dirs = [prefix, exec_prefix, configdir, incldir] if not win: # These are not directories on Windows. check_dirs = check_dirs + extensions @@ -457,7 +457,7 @@ def main(): cflags = ['$(OPT)'] cppflags = defines + includes - libs = [os.path.join(binlib, '$(LDLIBRARY)')] + libs = [os.path.join(libdir, '$(LDLIBRARY)')] somevars = {} if os.path.exists(makefile_in): From webhook-mailer at python.org Thu Dec 17 12:26:18 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 17:26:18 -0000 Subject: [Python-checkins] [doc] Fix a few margins due to bad markup (GH-23619) Message-ID: https://github.com/python/cpython/commit/96a09df64483b70c4215c7025a19b9d2f1636c55 commit: 96a09df64483b70c4215c7025a19b9d2f1636c55 branch: master author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T09:25:55-08:00 summary: [doc] Fix a few margins due to bad markup (GH-23619) files: M Doc/library/dialog.rst M Doc/library/enum.rst M Doc/library/logging.config.rst M Doc/library/os.rst M Doc/library/platform.rst M Doc/library/profile.rst M Doc/library/socket.rst M Doc/library/symtable.rst M Doc/library/trace.rst M Doc/library/turtle.rst M Doc/reference/datamodel.rst diff --git a/Doc/library/dialog.rst b/Doc/library/dialog.rst index dc82a974ce095..53f98c1018988 100644 --- a/Doc/library/dialog.rst +++ b/Doc/library/dialog.rst @@ -198,7 +198,7 @@ These do not emulate the native look-and-feel of the platform. A subclass of FileDialog that creates a dialog window for selecting a destination file. - .. method:: ok_command() + .. method:: ok_command() Test whether or not the selection points to a valid file that is not a directory. Confirmation is required if an already existing file is diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index a0b078c971706..c532e2caec466 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -61,7 +61,7 @@ helper, :class:`auto`. the bitwise operations without losing their :class:`Flag` membership. .. function:: unique - :noindex: + :noindex: Enum class decorator that ensures only one name is bound to any one value. diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index 683d6ed5e8ba5..0b5e2fc2a658d 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -35,45 +35,45 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. function:: dictConfig(config) - Takes the logging configuration from a dictionary. The contents of - this dictionary are described in :ref:`logging-config-dictschema` - below. - - If an error is encountered during configuration, this function will - raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` - or :exc:`ImportError` with a suitably descriptive message. The - following is a (possibly incomplete) list of conditions which will - raise an error: - - * A ``level`` which is not a string or which is a string not - corresponding to an actual logging level. - * A ``propagate`` value which is not a boolean. - * An id which does not have a corresponding destination. - * A non-existent handler id found during an incremental call. - * An invalid logger name. - * Inability to resolve to an internal or external object. - - Parsing is performed by the :class:`DictConfigurator` class, whose - constructor is passed the dictionary used for configuration, and - has a :meth:`configure` method. The :mod:`logging.config` module - has a callable attribute :attr:`dictConfigClass` - which is initially set to :class:`DictConfigurator`. - You can replace the value of :attr:`dictConfigClass` with a - suitable implementation of your own. - - :func:`dictConfig` calls :attr:`dictConfigClass` passing - the specified dictionary, and then calls the :meth:`configure` method on - the returned object to put the configuration into effect:: - - def dictConfig(config): - dictConfigClass(config).configure() - - For example, a subclass of :class:`DictConfigurator` could call - ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then - set up custom prefixes which would be usable in the subsequent - :meth:`configure` call. :attr:`dictConfigClass` would be bound to - this new subclass, and then :func:`dictConfig` could be called exactly as - in the default, uncustomized state. + Takes the logging configuration from a dictionary. The contents of + this dictionary are described in :ref:`logging-config-dictschema` + below. + + If an error is encountered during configuration, this function will + raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` + or :exc:`ImportError` with a suitably descriptive message. The + following is a (possibly incomplete) list of conditions which will + raise an error: + + * A ``level`` which is not a string or which is a string not + corresponding to an actual logging level. + * A ``propagate`` value which is not a boolean. + * An id which does not have a corresponding destination. + * A non-existent handler id found during an incremental call. + * An invalid logger name. + * Inability to resolve to an internal or external object. + + Parsing is performed by the :class:`DictConfigurator` class, whose + constructor is passed the dictionary used for configuration, and + has a :meth:`configure` method. The :mod:`logging.config` module + has a callable attribute :attr:`dictConfigClass` + which is initially set to :class:`DictConfigurator`. + You can replace the value of :attr:`dictConfigClass` with a + suitable implementation of your own. + + :func:`dictConfig` calls :attr:`dictConfigClass` passing + the specified dictionary, and then calls the :meth:`configure` method on + the returned object to put the configuration into effect:: + + def dictConfig(config): + dictConfigClass(config).configure() + + For example, a subclass of :class:`DictConfigurator` could call + ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then + set up custom prefixes which would be usable in the subsequent + :meth:`configure` call. :attr:`dictConfigClass` would be bound to + this new subclass, and then :func:`dictConfig` could be called exactly as + in the default, uncustomized state. .. versionadded:: 3.2 diff --git a/Doc/library/os.rst b/Doc/library/os.rst index ab1a615b6ea2a..35cf7c0a0ba5c 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1323,12 +1323,12 @@ or `the MSDN `_ on Windo .. data:: RWF_APPEND - Provide a per-write equivalent of the :data:`O_APPEND` :func:`os.open` - flag. This flag is meaningful only for :func:`os.pwritev`, and its - effect applies only to the data range written by the system call. The - *offset* argument does not affect the write operation; the data is always - appended to the end of the file. However, if the *offset* argument is - ``-1``, the current file *offset* is updated. + Provide a per-write equivalent of the :data:`O_APPEND` :func:`os.open` + flag. This flag is meaningful only for :func:`os.pwritev`, and its + effect applies only to the data range written by the system call. The + *offset* argument does not affect the write operation; the data is always + appended to the end of the file. However, if the *offset* argument is + ``-1``, the current file *offset* is updated. .. availability:: Linux 4.16 and newer. diff --git a/Doc/library/platform.rst b/Doc/library/platform.rst index fc51b5de881cc..be86e568c180b 100644 --- a/Doc/library/platform.rst +++ b/Doc/library/platform.rst @@ -290,4 +290,4 @@ Linux Platforms ids.extend(info["ID_LIKE"].split()) return ids - .. versionadded:: 3.10 + .. versionadded:: 3.10 diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index 7edabfde0d7f1..774d46d0e9624 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -532,9 +532,9 @@ Analysis of the profiler data is done using the :class:`~pstats.Stats` class. instance holds information related to the function's profile such as how long the function took to run, how many times it was called, etc... - .. versionadded:: 3.9 - Added the following dataclasses: StatsProfile, FunctionProfile. - Added the following function: get_stats_profile. + .. versionadded:: 3.9 + Added the following dataclasses: StatsProfile, FunctionProfile. + Added the following function: get_stats_profile. .. _deterministic-profiling: diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index d52b84f610ed6..4511ff9ea4a51 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -56,12 +56,12 @@ created. Socket addresses are represented as follows: bytes-like object can be used for either type of address when passing it as an argument. - .. versionchanged:: 3.3 - Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 - encoding. + .. versionchanged:: 3.3 + Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 + encoding. - .. versionchanged:: 3.5 - Writable :term:`bytes-like object` is now accepted. + .. versionchanged:: 3.5 + Writable :term:`bytes-like object` is now accepted. .. _host_port: diff --git a/Doc/library/symtable.rst b/Doc/library/symtable.rst index c9521d649b893..40c1795b083a2 100644 --- a/Doc/library/symtable.rst +++ b/Doc/library/symtable.rst @@ -156,7 +156,7 @@ Examining Symbol Tables Return ``True`` if the symbol is local to its block. - .. method:: is_annotated() + .. method:: is_annotated() Return ``True`` if the symbol is annotated. diff --git a/Doc/library/trace.rst b/Doc/library/trace.rst index c2732d900bc13..40cf198f1287d 100644 --- a/Doc/library/trace.rst +++ b/Doc/library/trace.rst @@ -153,47 +153,47 @@ Programmatic Interface count information. *timing* enables a timestamp relative to when tracing was started to be displayed. - .. method:: run(cmd) + .. method:: run(cmd) - Execute the command and gather statistics from the execution with - the current tracing parameters. *cmd* must be a string or code object, - suitable for passing into :func:`exec`. + Execute the command and gather statistics from the execution with + the current tracing parameters. *cmd* must be a string or code object, + suitable for passing into :func:`exec`. - .. method:: runctx(cmd, globals=None, locals=None) + .. method:: runctx(cmd, globals=None, locals=None) - Execute the command and gather statistics from the execution with the - current tracing parameters, in the defined global and local - environments. If not defined, *globals* and *locals* default to empty - dictionaries. + Execute the command and gather statistics from the execution with the + current tracing parameters, in the defined global and local + environments. If not defined, *globals* and *locals* default to empty + dictionaries. - .. method:: runfunc(func, /, *args, **kwds) + .. method:: runfunc(func, /, *args, **kwds) - Call *func* with the given arguments under control of the :class:`Trace` - object with the current tracing parameters. + Call *func* with the given arguments under control of the :class:`Trace` + object with the current tracing parameters. - .. method:: results() + .. method:: results() - Return a :class:`CoverageResults` object that contains the cumulative - results of all previous calls to ``run``, ``runctx`` and ``runfunc`` - for the given :class:`Trace` instance. Does not reset the accumulated - trace results. + Return a :class:`CoverageResults` object that contains the cumulative + results of all previous calls to ``run``, ``runctx`` and ``runfunc`` + for the given :class:`Trace` instance. Does not reset the accumulated + trace results. .. class:: CoverageResults A container for coverage results, created by :meth:`Trace.results`. Should not be created directly by the user. - .. method:: update(other) + .. method:: update(other) - Merge in data from another :class:`CoverageResults` object. + Merge in data from another :class:`CoverageResults` object. - .. method:: write_results(show_missing=True, summary=False, coverdir=None) + .. method:: write_results(show_missing=True, summary=False, coverdir=None) - Write coverage results. Set *show_missing* to show lines that had no - hits. Set *summary* to include in the output the coverage summary per - module. *coverdir* specifies the directory into which the coverage - result files will be output. If ``None``, the results for each source - file are placed in its directory. + Write coverage results. Set *show_missing* to show lines that had no + hits. Set *summary* to include in the output the coverage summary per + module. *coverdir* specifies the directory into which the coverage + result files will be output. If ``None``, the results for each source + file are placed in its directory. A simple example demonstrating the use of the programmatic interface:: diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index d3487537df99a..2084d75b3a57a 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -913,8 +913,8 @@ Color control Set pencolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the outline of that polygon is drawn with the - newly set pencolor. + If turtleshape is a polygon, the outline of that polygon is drawn with the + newly set pencolor. .. doctest:: :skipif: _tkinter is None @@ -962,8 +962,8 @@ Color control Set fillcolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the interior of that polygon is drawn - with the newly set fillcolor. + If turtleshape is a polygon, the interior of that polygon is drawn + with the newly set fillcolor. .. doctest:: :skipif: _tkinter is None @@ -1001,8 +1001,8 @@ Color control Equivalent to ``pencolor(colorstring1)`` and ``fillcolor(colorstring2)`` and analogously if the other input format is used. - If turtleshape is a polygon, outline and interior of that polygon is drawn - with the newly set colors. + If turtleshape is a polygon, outline and interior of that polygon is drawn + with the newly set colors. .. doctest:: :skipif: _tkinter is None diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index c882301ad3a4a..62f852953623c 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -217,7 +217,6 @@ Ellipsis There are two types of integers: Integers (:class:`int`) - These represent numbers in an unlimited range, subject to available (virtual) memory only. For the purpose of shift and mask operations, a binary representation is assumed, and negative numbers are represented in a variant of From webhook-mailer at python.org Thu Dec 17 14:22:39 2020 From: webhook-mailer at python.org (vstinner) Date: Thu, 17 Dec 2020 19:22:39 -0000 Subject: [Python-checkins] bpo-31904: posixpath.expanduser() handles None user home on VxWorks (GH-23530) Message-ID: https://github.com/python/cpython/commit/75dabfe7a8324a16687959cc401deb72b104a575 commit: 75dabfe7a8324a16687959cc401deb72b104a575 branch: master author: pxinwr committer: vstinner date: 2020-12-17T20:22:29+01:00 summary: bpo-31904: posixpath.expanduser() handles None user home on VxWorks (GH-23530) files: A Misc/NEWS.d/next/Library/2020-11-27-18-09-59.bpo-31904.g8k43d.rst M Lib/posixpath.py diff --git a/Lib/posixpath.py b/Lib/posixpath.py index ecb4e5a8f7072..62afbd0ccf0f0 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -262,6 +262,9 @@ def expanduser(path): # password database, return the path unchanged return path userhome = pwent.pw_dir + # if no user home, return the path unchanged on VxWorks + if userhome is None and sys.platform == "vxworks": + return path if isinstance(path, bytes): userhome = os.fsencode(userhome) root = b'/' diff --git a/Misc/NEWS.d/next/Library/2020-11-27-18-09-59.bpo-31904.g8k43d.rst b/Misc/NEWS.d/next/Library/2020-11-27-18-09-59.bpo-31904.g8k43d.rst new file mode 100644 index 0000000000000..5a687d1eb32de --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-27-18-09-59.bpo-31904.g8k43d.rst @@ -0,0 +1,2 @@ +:func:`posixpath.expanduser` returns the input *path* unchanged if +user home directory is None on VxWorks. From webhook-mailer at python.org Thu Dec 17 15:24:52 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 17 Dec 2020 20:24:52 -0000 Subject: [Python-checkins] bpo-42670: Fix a missing word in the itertools.product() docs (GH-23823) Message-ID: https://github.com/python/cpython/commit/074ad5123f18923bdb5fa0b6e4bf24de45e32ba9 commit: 074ad5123f18923bdb5fa0b6e4bf24de45e32ba9 branch: master author: Zackery Spytz committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-17T12:24:43-08:00 summary: bpo-42670: Fix a missing word in the itertools.product() docs (GH-23823) files: M Doc/library/itertools.rst diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 44728b42287bc..612a66f25371d 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -582,7 +582,7 @@ loops that truncate the stream. Before :func:`product` runs, it completely consumes the input iterables, keeping pools of values in memory to generate the products. Accordingly, - it only useful with finite inputs. + it is only useful with finite inputs. .. function:: repeat(object[, times]) From webhook-mailer at python.org Thu Dec 17 19:30:40 2020 From: webhook-mailer at python.org (DinoV) Date: Fri, 18 Dec 2020 00:30:40 -0000 Subject: [Python-checkins] bpo-42199: Fix bytecode_helper assertNotInBytecode (#23031) Message-ID: https://github.com/python/cpython/commit/6e799be0a18d0bb5bbbdc77cd3c30a229d31dfb4 commit: 6e799be0a18d0bb5bbbdc77cd3c30a229d31dfb4 branch: master author: Max Bernstein committer: DinoV date: 2020-12-17T16:30:29-08:00 summary: bpo-42199: Fix bytecode_helper assertNotInBytecode (#23031) * bpo-42199: Fix bytecode_helper assertNotInBytecode Add tests. * ?? Added by blurb_it. Co-authored-by: Dino Viehland Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> files: A Misc/NEWS.d/next/Tests/2020-10-29-21-26-46.bpo-42199.KksGCV.rst M Lib/test/support/bytecode_helper.py M Lib/test/test_dis.py diff --git a/Lib/test/support/bytecode_helper.py b/Lib/test/support/bytecode_helper.py index 348e277c16588..471d4a68f915a 100644 --- a/Lib/test/support/bytecode_helper.py +++ b/Lib/test/support/bytecode_helper.py @@ -35,7 +35,8 @@ def assertNotInBytecode(self, x, opname, argval=_UNSPECIFIED): disassembly = self.get_disassembly_as_string(x) if argval is _UNSPECIFIED: msg = '%s occurs in bytecode:\n%s' % (opname, disassembly) + self.fail(msg) elif instr.argval == argval: msg = '(%s,%r) occurs in bytecode:\n%s' msg = msg % (opname, argval, disassembly) - self.fail(msg) + self.fail(msg) diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 786744923eb46..d5d815dc5dc55 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -1212,5 +1212,24 @@ def test_from_traceback_dis(self): b = dis.Bytecode.from_traceback(tb) self.assertEqual(b.dis(), dis_traceback) + +class TestBytecodeTestCase(BytecodeTestCase): + def test_assert_not_in_with_op_not_in_bytecode(self): + code = compile("a = 1", "", "exec") + self.assertInBytecode(code, "LOAD_CONST", 1) + self.assertNotInBytecode(code, "LOAD_NAME") + self.assertNotInBytecode(code, "LOAD_NAME", "a") + + def test_assert_not_in_with_arg_not_in_bytecode(self): + code = compile("a = 1", "", "exec") + self.assertInBytecode(code, "LOAD_CONST") + self.assertInBytecode(code, "LOAD_CONST", 1) + self.assertNotInBytecode(code, "LOAD_CONST", 2) + + def test_assert_not_in_with_arg_in_bytecode(self): + code = compile("a = 1", "", "exec") + with self.assertRaises(AssertionError): + self.assertNotInBytecode(code, "LOAD_CONST", 1) + if __name__ == "__main__": unittest.main() diff --git a/Misc/NEWS.d/next/Tests/2020-10-29-21-26-46.bpo-42199.KksGCV.rst b/Misc/NEWS.d/next/Tests/2020-10-29-21-26-46.bpo-42199.KksGCV.rst new file mode 100644 index 0000000000000..4426f336368bf --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2020-10-29-21-26-46.bpo-42199.KksGCV.rst @@ -0,0 +1 @@ +Fix bytecode helper assertNotInBytecode. \ No newline at end of file From webhook-mailer at python.org Thu Dec 17 19:39:09 2020 From: webhook-mailer at python.org (vstinner) Date: Fri, 18 Dec 2020 00:39:09 -0000 Subject: [Python-checkins] bpo-1635741: Port _thread to multiphase init (GH-23811) Message-ID: https://github.com/python/cpython/commit/6104013838e181e3c698cb07316f449a0c31ea96 commit: 6104013838e181e3c698cb07316f449a0c31ea96 branch: master author: Victor Stinner committer: vstinner date: 2020-12-18T01:39:00+01:00 summary: bpo-1635741: Port _thread to multiphase init (GH-23811) Port the _thread extension module to the multiphase initialization API (PEP 489) and convert its static types to heap types. Add a traverse function to the lock type, so the garbage collector can break reference cycles. files: A Misc/NEWS.d/next/Library/2020-12-16-23-28-52.bpo-1635741.Quy3zn.rst M Modules/_threadmodule.c diff --git a/Misc/NEWS.d/next/Library/2020-12-16-23-28-52.bpo-1635741.Quy3zn.rst b/Misc/NEWS.d/next/Library/2020-12-16-23-28-52.bpo-1635741.Quy3zn.rst new file mode 100644 index 0000000000000..3412c204b05ca --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-16-23-28-52.bpo-1635741.Quy3zn.rst @@ -0,0 +1,2 @@ +Port the :mod:`_thread` extension module to the multiphase initialization +API (:pep:`489`) and convert its static types to heap types. diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index bd4331c6108bd..9b8757715a0b9 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -7,6 +7,7 @@ #include "pycore_interp.h" // _PyInterpreterState.num_threads #include "pycore_pystate.h" // _PyThreadState_Init() #include // offsetof() +#include "structmember.h" // PyMemberDef // ThreadError is just an alias to PyExc_RuntimeError #define ThreadError PyExc_RuntimeError @@ -17,6 +18,25 @@ _Py_IDENTIFIER(stderr); _Py_IDENTIFIER(flush); +// Forward declarations +static struct PyModuleDef thread_module; + + +typedef struct { + PyTypeObject *lock_type; + PyTypeObject *local_type; + PyTypeObject *local_dummy_type; +} thread_module_state; + +static inline thread_module_state* +get_thread_state(PyObject *module) +{ + void *state = PyModule_GetState(module); + assert(state != NULL); + return (thread_module_state *)state; +} + + /* Lock objects */ typedef struct { @@ -26,6 +46,13 @@ typedef struct { char locked; /* for sanity checking */ } lockobject; +static int +lock_traverse(lockobject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + return 0; +} + static void lock_dealloc(lockobject *self) { @@ -38,7 +65,9 @@ lock_dealloc(lockobject *self) PyThread_release_lock(self->lock_lock); PyThread_free_lock(self->lock_lock); } - PyObject_Free(self); + PyTypeObject *tp = Py_TYPE(self); + tp->tp_free((PyObject*)self); + Py_DECREF(tp); } /* Helper to acquire an interruptible lock with a timeout. If the lock acquire @@ -260,16 +289,26 @@ A lock is not owned by the thread that locked it; another thread may\n\ unlock it. A thread attempting to lock a lock that it has already locked\n\ will block until another thread unlocks it. Deadlocks may ensue."); -static PyTypeObject Locktype = { - PyVarObject_HEAD_INIT(&PyType_Type, 0) - .tp_name = "_thread.lock", - .tp_basicsize = sizeof(lockobject), - .tp_dealloc = (destructor)lock_dealloc, - .tp_repr = (reprfunc)lock_repr, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_doc = lock_doc, - .tp_weaklistoffset = offsetof(lockobject, in_weakreflist), - .tp_methods = lock_methods, +static PyMemberDef lock_type_members[] = { + {"__weaklistoffset__", T_PYSSIZET, offsetof(lockobject, in_weakreflist), READONLY}, + {NULL}, +}; + +static PyType_Slot lock_type_slots[] = { + {Py_tp_dealloc, (destructor)lock_dealloc}, + {Py_tp_repr, (reprfunc)lock_repr}, + {Py_tp_doc, (void *)lock_doc}, + {Py_tp_methods, lock_methods}, + {Py_tp_traverse, lock_traverse}, + {Py_tp_members, lock_type_members}, + {0, 0} +}; + +static PyType_Spec lock_type_spec = { + .name = "_thread.lock", + .basicsize = sizeof(lockobject), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, + .slots = lock_type_slots, }; /* Recursive lock objects */ @@ -296,7 +335,9 @@ rlock_dealloc(rlockobject *self) PyThread_free_lock(self->rlock_lock); } - Py_TYPE(self)->tp_free(self); + PyTypeObject *tp = Py_TYPE(self); + tp->tp_free(self); + Py_DECREF(tp); } static PyObject * @@ -520,23 +561,35 @@ static PyMethodDef rlock_methods[] = { }; -static PyTypeObject RLocktype = { - PyVarObject_HEAD_INIT(&PyType_Type, 0) - .tp_name = "_thread.RLock", - .tp_basicsize = sizeof(rlockobject), - .tp_dealloc = (destructor)rlock_dealloc, - .tp_repr = (reprfunc)rlock_repr, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - .tp_weaklistoffset = offsetof(rlockobject, in_weakreflist), - .tp_methods = rlock_methods, - .tp_alloc = PyType_GenericAlloc, - .tp_new = rlock_new, +static PyMemberDef rlock_type_members[] = { + {"__weaklistoffset__", T_PYSSIZET, offsetof(rlockobject, in_weakreflist), READONLY}, + {NULL}, +}; + +static PyType_Slot rlock_type_slots[] = { + {Py_tp_dealloc, (destructor)rlock_dealloc}, + {Py_tp_repr, (reprfunc)rlock_repr}, + {Py_tp_methods, rlock_methods}, + {Py_tp_alloc, PyType_GenericAlloc}, + {Py_tp_new, rlock_new}, + {Py_tp_members, rlock_type_members}, + {0, 0}, +}; + +static PyType_Spec rlock_type_spec = { + .name = "_thread.RLock", + .basicsize = sizeof(rlockobject), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .slots = rlock_type_slots, }; static lockobject * -newlockobject(void) +newlockobject(PyObject *module) { - lockobject *self = PyObject_New(lockobject, &Locktype); + thread_module_state *state = get_thread_state(module); + + PyTypeObject *type = state->lock_type; + lockobject *self = (lockobject *)type->tp_alloc(type, 0); if (self == NULL) { return NULL; } @@ -605,17 +658,28 @@ localdummy_dealloc(localdummyobject *self) { if (self->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *) self); - Py_TYPE(self)->tp_free((PyObject*)self); + PyTypeObject *tp = Py_TYPE(self); + tp->tp_free((PyObject*)self); + Py_DECREF(tp); } -static PyTypeObject localdummytype = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "_thread._localdummy", - .tp_basicsize = sizeof(localdummyobject), - .tp_dealloc = (destructor)localdummy_dealloc, - .tp_flags = Py_TPFLAGS_DEFAULT, - .tp_doc = "Thread-local dummy", - .tp_weaklistoffset = offsetof(localdummyobject, weakreflist), +static PyMemberDef local_dummy_type_members[] = { + {"__weaklistoffset__", T_PYSSIZET, offsetof(localdummyobject, weakreflist), READONLY}, + {NULL}, +}; + +static PyType_Slot local_dummy_type_slots[] = { + {Py_tp_dealloc, (destructor)localdummy_dealloc}, + {Py_tp_doc, "Thread-local dummy"}, + {Py_tp_members, local_dummy_type_members}, + {0, 0} +}; + +static PyType_Spec local_dummy_type_spec = { + .name = "_thread._localdummy", + .basicsize = sizeof(localdummyobject), + .flags = Py_TPFLAGS_DEFAULT, + .slots = local_dummy_type_slots, }; @@ -632,16 +696,17 @@ typedef struct { } localobject; /* Forward declaration */ -static PyObject *_ldict(localobject *self); +static PyObject *_ldict(localobject *self, thread_module_state *state); static PyObject *_localdummy_destroyed(PyObject *meth_self, PyObject *dummyweakref); /* Create and register the dummy for the current thread. Returns a borrowed reference of the corresponding local dict */ static PyObject * -_local_create_dummy(localobject *self) +_local_create_dummy(localobject *self, thread_module_state *state) { PyObject *ldict = NULL, *wr = NULL; localdummyobject *dummy = NULL; + PyTypeObject *type = state->local_dummy_type; PyObject *tdict = PyThreadState_GetDict(); if (tdict == NULL) { @@ -654,7 +719,7 @@ _local_create_dummy(localobject *self) if (ldict == NULL) { goto err; } - dummy = (localdummyobject *) localdummytype.tp_alloc(&localdummytype, 0); + dummy = (localdummyobject *) type->tp_alloc(type, 0); if (dummy == NULL) { goto err; } @@ -690,7 +755,6 @@ _local_create_dummy(localobject *self) static PyObject * local_new(PyTypeObject *type, PyObject *args, PyObject *kw) { - localobject *self; static PyMethodDef wr_callback_def = { "_localdummy_destroyed", (PyCFunction) _localdummy_destroyed, METH_O }; @@ -710,7 +774,10 @@ local_new(PyTypeObject *type, PyObject *args, PyObject *kw) } } - self = (localobject *)type->tp_alloc(type, 0); + PyObject *module = _PyType_GetModuleByDef(type, &thread_module); + thread_module_state *state = get_thread_state(module); + + localobject *self = (localobject *)type->tp_alloc(type, 0); if (self == NULL) { return NULL; } @@ -738,7 +805,7 @@ local_new(PyTypeObject *type, PyObject *args, PyObject *kw) if (self->wr_callback == NULL) { goto err; } - if (_local_create_dummy(self) == NULL) { + if (_local_create_dummy(self, state) == NULL) { goto err; } return (PyObject *)self; @@ -751,6 +818,7 @@ local_new(PyTypeObject *type, PyObject *args, PyObject *kw) static int local_traverse(localobject *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->args); Py_VISIT(self->kw); Py_VISIT(self->dummies); @@ -798,12 +866,15 @@ local_dealloc(localobject *self) local_clear(self); Py_XDECREF(self->key); - Py_TYPE(self)->tp_free((PyObject*)self); + + PyTypeObject *tp = Py_TYPE(self); + tp->tp_free((PyObject*)self); + Py_DECREF(tp); } /* Returns a borrowed reference to the local dict, creating it if necessary */ static PyObject * -_ldict(localobject *self) +_ldict(localobject *self, thread_module_state *state) { PyObject *tdict = PyThreadState_GetDict(); if (tdict == NULL) { @@ -818,7 +889,7 @@ _ldict(localobject *self) if (PyErr_Occurred()) { return NULL; } - ldict = _local_create_dummy(self); + ldict = _local_create_dummy(self, state); if (ldict == NULL) return NULL; @@ -833,7 +904,7 @@ _ldict(localobject *self) } } else { - assert(Py_IS_TYPE(dummy, &localdummytype)); + assert(Py_IS_TYPE(dummy, state->local_dummy_type)); ldict = ((localdummyobject *) dummy)->localdict; } @@ -843,7 +914,10 @@ _ldict(localobject *self) static int local_setattro(localobject *self, PyObject *name, PyObject *v) { - PyObject *ldict = _ldict(self); + PyObject *module = _PyType_GetModuleByDef(Py_TYPE(self), &thread_module); + thread_module_state *state = get_thread_state(module); + + PyObject *ldict = _ldict(self, state); if (ldict == NULL) { return -1; } @@ -869,25 +943,37 @@ local_setattro(localobject *self, PyObject *name, PyObject *v) static PyObject *local_getattro(localobject *, PyObject *); -static PyTypeObject localtype = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "_thread._local", - .tp_basicsize = sizeof(localobject), - .tp_dealloc = (destructor)local_dealloc, - .tp_getattro = (getattrofunc)local_getattro, - .tp_setattro = (setattrofunc)local_setattro, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, - .tp_doc = "Thread-local data", - .tp_traverse = (traverseproc)local_traverse, - .tp_clear = (inquiry)local_clear, - .tp_weaklistoffset = offsetof(localobject, weakreflist), - .tp_new = local_new, +static PyMemberDef local_type_members[] = { + {"__weaklistoffset__", T_PYSSIZET, offsetof(localobject, weakreflist), READONLY}, + {NULL}, +}; + +static PyType_Slot local_type_slots[] = { + {Py_tp_dealloc, (destructor)local_dealloc}, + {Py_tp_getattro, (getattrofunc)local_getattro}, + {Py_tp_setattro, (setattrofunc)local_setattro}, + {Py_tp_doc, "Thread-local data"}, + {Py_tp_traverse, (traverseproc)local_traverse}, + {Py_tp_clear, (inquiry)local_clear}, + {Py_tp_new, local_new}, + {Py_tp_members, local_type_members}, + {0, 0} +}; + +static PyType_Spec local_type_spec = { + .name = "_thread._local", + .basicsize = sizeof(localobject), + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, + .slots = local_type_slots, }; static PyObject * local_getattro(localobject *self, PyObject *name) { - PyObject *ldict = _ldict(self); + PyObject *module = _PyType_GetModuleByDef(Py_TYPE(self), &thread_module); + thread_module_state *state = get_thread_state(module); + + PyObject *ldict = _ldict(self, state); if (ldict == NULL) return NULL; @@ -904,7 +990,7 @@ local_getattro(localobject *self, PyObject *name) return NULL; } - if (!Py_IS_TYPE(self, &localtype)) { + if (!Py_IS_TYPE(self, state->local_type)) { /* use generic lookup for subtypes */ return _PyObject_GenericGetAttrWithDict((PyObject *)self, name, ldict, 0); @@ -1101,12 +1187,12 @@ Raise a KeyboardInterrupt in the main thread.\n\ A subthread can use this function to interrupt the main thread." ); -static lockobject *newlockobject(void); +static lockobject *newlockobject(PyObject *module); static PyObject * thread_PyThread_allocate_lock(PyObject *module, PyObject *Py_UNUSED(ignored)) { - return (PyObject *) newlockobject(); + return (PyObject *) newlockobject(module); } PyDoc_STRVAR(allocate_doc, @@ -1210,7 +1296,7 @@ thread__set_sentinel(PyObject *module, PyObject *Py_UNUSED(ignored)) tstate->on_delete_data = NULL; Py_DECREF(wr); } - lock = newlockobject(); + lock = newlockobject(module); if (lock == NULL) return NULL; /* The lock is owned by whoever called _set_sentinel(), but the weakref @@ -1465,23 +1551,49 @@ static PyMethodDef thread_methods[] = { /* Initialization function */ static int -_thread_module_exec(PyObject *module) +thread_module_exec(PyObject *module) { + thread_module_state *state = get_thread_state(module); + PyObject *d = PyModule_GetDict(module); + // Initialize the C thread library PyThread_init_thread(); - // Initialize types - if (PyType_Ready(&localdummytype) < 0) + // Lock + state->lock_type = (PyTypeObject *)PyType_FromSpec(&lock_type_spec); + if (state->lock_type == NULL) { + return -1; + } + if (PyDict_SetItemString(d, "LockType", (PyObject *)state->lock_type) < 0) { + return -1; + } + + // RLock + PyTypeObject *rlock_type = (PyTypeObject *)PyType_FromSpec(&rlock_type_spec); + if (rlock_type == NULL) { + return -1; + } + if (PyModule_AddType(module, rlock_type) < 0) { + Py_DECREF(rlock_type); return -1; - if (PyType_Ready(&localtype) < 0) { + } + Py_DECREF(rlock_type); + + // Local dummy + state->local_dummy_type = (PyTypeObject *)PyType_FromSpec(&local_dummy_type_spec); + if (state->local_dummy_type == NULL) { return -1; } - if (PyType_Ready(&Locktype) < 0) { + + // Local + state->local_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &local_type_spec, NULL); + if (state->local_type == NULL) { return -1; } - if (PyType_Ready(&RLocktype) < 0) { + if (PyModule_AddType(module, state->local_type) < 0) { return -1; } + if (ExceptHookArgsType.tp_name == NULL) { if (PyStructSequence_InitType2(&ExceptHookArgsType, &ExceptHookArgs_desc) < 0) { @@ -1490,19 +1602,9 @@ _thread_module_exec(PyObject *module) } // Add module attributes - PyObject *d = PyModule_GetDict(module); if (PyDict_SetItemString(d, "error", ThreadError) < 0) { return -1; } - if (PyDict_SetItemString(d, "LockType", (PyObject *)&Locktype) < 0) { - return -1; - } - if (PyModule_AddType(module, &RLocktype) < 0) { - return -1; - } - if (PyModule_AddType(module, &localtype) < 0) { - return -1; - } if (PyModule_AddType(module, &ExceptHookArgsType) < 0) { return -1; } @@ -1523,28 +1625,57 @@ _thread_module_exec(PyObject *module) } +static int +thread_module_traverse(PyObject *module, visitproc visit, void *arg) +{ + thread_module_state *state = get_thread_state(module); + Py_VISIT(state->lock_type); + Py_VISIT(state->local_type); + Py_VISIT(state->local_dummy_type); + return 0; +} + +static int +thread_module_clear(PyObject *module) +{ + thread_module_state *state = get_thread_state(module); + Py_CLEAR(state->lock_type); + Py_CLEAR(state->local_type); + Py_CLEAR(state->local_dummy_type); + return 0; +} + +static void +thread_module_free(void *module) +{ + thread_module_clear((PyObject *)module); +} + + + PyDoc_STRVAR(thread_doc, "This module provides primitive operations to write multi-threaded programs.\n\ The 'threading' module provides a more convenient interface."); -static struct PyModuleDef _thread_module = { +static PyModuleDef_Slot thread_module_slots[] = { + {Py_mod_exec, thread_module_exec}, + {0, NULL} +}; + +static struct PyModuleDef thread_module = { PyModuleDef_HEAD_INIT, .m_name = "_thread", .m_doc = thread_doc, - .m_size = -1, + .m_size = sizeof(thread_module_state), .m_methods = thread_methods, + .m_traverse = thread_module_traverse, + .m_clear = thread_module_clear, + .m_free = thread_module_free, + .m_slots = thread_module_slots, }; PyMODINIT_FUNC PyInit__thread(void) { - PyObject *module = PyModule_Create(&_thread_module); - if (module == NULL) - return NULL; - - if (_thread_module_exec(module) < 0) { - Py_DECREF(module); - return NULL; - } - return module; + return PyModuleDef_Init(&thread_module); } From webhook-mailer at python.org Fri Dec 18 04:24:34 2020 From: webhook-mailer at python.org (JulienPalard) Date: Fri, 18 Dec 2020 09:24:34 -0000 Subject: [Python-checkins] bpo-39096: Format specification documentation fixes for numeric types (GH-23575) Message-ID: https://github.com/python/cpython/commit/886b2e5c7a2caf87070728dba8f18c3d65e51071 commit: 886b2e5c7a2caf87070728dba8f18c3d65e51071 branch: master author: Mark Dickinson committer: JulienPalard date: 2020-12-18T10:24:06+01:00 summary: bpo-39096: Format specification documentation fixes for numeric types (GH-23575) files: M Doc/library/string.rst diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 5542e9b727a6b..54786d0c2ab0d 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -514,6 +514,8 @@ The available presentation types for :class:`float` and | | this rounds the number to ``p`` significant digits and | | | then formats the result in either fixed-point format | | | or in scientific notation, depending on its magnitude. | + | | A precision of ``0`` is treated as equivalent to a | + | | precision of ``1``. | | | | | | The precise rules are as follows: suppose that the | | | result formatted with presentation type ``'e'`` and | @@ -528,16 +530,19 @@ The available presentation types for :class:`float` and | | removed if there are no remaining digits following it, | | | unless the ``'#'`` option is used. | | | | + | | With no precision given, uses a precision of ``6`` | + | | significant digits for :class:`float`. For | + | | :class:`~decimal.Decimal`, the coefficient of the result | + | | is formed from the coefficient digits of the value; | + | | scientific notation is used for values smaller than | + | | ``1e-6`` in absolute value and values where the place | + | | value of the least significant digit is larger than 1, | + | | and fixed-point notation is used otherwise. | + | | | | | Positive and negative infinity, positive and negative | | | zero, and nans, are formatted as ``inf``, ``-inf``, | | | ``0``, ``-0`` and ``nan`` respectively, regardless of | | | the precision. | - | | | - | | A precision of ``0`` is treated as equivalent to a | - | | precision of ``1``. With no precision given, uses a | - | | precision of ``6`` significant digits for | - | | :class:`float`, and shows all coefficient digits | - | | for :class:`~decimal.Decimal`. | +---------+----------------------------------------------------------+ | ``'G'`` | General format. Same as ``'g'`` except switches to | | | ``'E'`` if the number gets too large. The | @@ -550,12 +555,18 @@ The available presentation types for :class:`float` and | ``'%'`` | Percentage. Multiplies the number by 100 and displays | | | in fixed (``'f'``) format, followed by a percent sign. | +---------+----------------------------------------------------------+ - | None | Similar to ``'g'``, except that fixed-point notation, | - | | when used, has at least one digit past the decimal point.| - | | The default precision is as high as needed to represent | - | | the particular value. The overall effect is to match the | - | | output of :func:`str` as altered by the other format | - | | modifiers. | + | None | For :class:`float` this is the same as ``'g'``, except | + | | that when fixed-point notation is used to format the | + | | result, it always includes at least one digit past the | + | | decimal point. The precision used is as large as needed | + | | to represent the given value faithfully. | + | | | + | | For :class:`~decimal.Decimal`, this is the same as | + | | either ``'g'`` or ``'G'`` depending on the value of | + | | ``context.capitals`` for the current decimal context. | + | | | + | | The overall effect is to match the output of :func:`str` | + | | as altered by the other format modifiers. | +---------+----------------------------------------------------------+ From webhook-mailer at python.org Fri Dec 18 04:34:32 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 09:34:32 -0000 Subject: [Python-checkins] bpo-39096: Format specification documentation fixes for numeric types (GH-23575) Message-ID: https://github.com/python/cpython/commit/12032cdec5ae1e56d4e4b8206fb2e9cccc5a9f58 commit: 12032cdec5ae1e56d4e4b8206fb2e9cccc5a9f58 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T01:34:24-08:00 summary: bpo-39096: Format specification documentation fixes for numeric types (GH-23575) (cherry picked from commit 886b2e5c7a2caf87070728dba8f18c3d65e51071) Co-authored-by: Mark Dickinson files: M Doc/library/string.rst diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 5542e9b727a6b..54786d0c2ab0d 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -514,6 +514,8 @@ The available presentation types for :class:`float` and | | this rounds the number to ``p`` significant digits and | | | then formats the result in either fixed-point format | | | or in scientific notation, depending on its magnitude. | + | | A precision of ``0`` is treated as equivalent to a | + | | precision of ``1``. | | | | | | The precise rules are as follows: suppose that the | | | result formatted with presentation type ``'e'`` and | @@ -528,16 +530,19 @@ The available presentation types for :class:`float` and | | removed if there are no remaining digits following it, | | | unless the ``'#'`` option is used. | | | | + | | With no precision given, uses a precision of ``6`` | + | | significant digits for :class:`float`. For | + | | :class:`~decimal.Decimal`, the coefficient of the result | + | | is formed from the coefficient digits of the value; | + | | scientific notation is used for values smaller than | + | | ``1e-6`` in absolute value and values where the place | + | | value of the least significant digit is larger than 1, | + | | and fixed-point notation is used otherwise. | + | | | | | Positive and negative infinity, positive and negative | | | zero, and nans, are formatted as ``inf``, ``-inf``, | | | ``0``, ``-0`` and ``nan`` respectively, regardless of | | | the precision. | - | | | - | | A precision of ``0`` is treated as equivalent to a | - | | precision of ``1``. With no precision given, uses a | - | | precision of ``6`` significant digits for | - | | :class:`float`, and shows all coefficient digits | - | | for :class:`~decimal.Decimal`. | +---------+----------------------------------------------------------+ | ``'G'`` | General format. Same as ``'g'`` except switches to | | | ``'E'`` if the number gets too large. The | @@ -550,12 +555,18 @@ The available presentation types for :class:`float` and | ``'%'`` | Percentage. Multiplies the number by 100 and displays | | | in fixed (``'f'``) format, followed by a percent sign. | +---------+----------------------------------------------------------+ - | None | Similar to ``'g'``, except that fixed-point notation, | - | | when used, has at least one digit past the decimal point.| - | | The default precision is as high as needed to represent | - | | the particular value. The overall effect is to match the | - | | output of :func:`str` as altered by the other format | - | | modifiers. | + | None | For :class:`float` this is the same as ``'g'``, except | + | | that when fixed-point notation is used to format the | + | | result, it always includes at least one digit past the | + | | decimal point. The precision used is as large as needed | + | | to represent the given value faithfully. | + | | | + | | For :class:`~decimal.Decimal`, this is the same as | + | | either ``'g'`` or ``'G'`` depending on the value of | + | | ``context.capitals`` for the current decimal context. | + | | | + | | The overall effect is to match the output of :func:`str` | + | | as altered by the other format modifiers. | +---------+----------------------------------------------------------+ From webhook-mailer at python.org Fri Dec 18 04:48:15 2020 From: webhook-mailer at python.org (JulienPalard) Date: Fri, 18 Dec 2020 09:48:15 -0000 Subject: [Python-checkins] bpo-42238: Check Misc/NEWS.d/next/ for reStructuredText issues. (GH-23802) Message-ID: https://github.com/python/cpython/commit/b9735420aa8ecd2555fe3dc000863bc50487334b commit: b9735420aa8ecd2555fe3dc000863bc50487334b branch: master author: Julien Palard committer: JulienPalard date: 2020-12-18T10:48:08+01:00 summary: bpo-42238: Check Misc/NEWS.d/next/ for reStructuredText issues. (GH-23802) files: M Doc/Makefile M Doc/tools/rstlint.py M Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst M Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst M Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst M Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst M Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst diff --git a/Doc/Makefile b/Doc/Makefile index c24c70c699a06..f113dd0653986 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -202,6 +202,7 @@ dist: check: $(PYTHON) tools/rstlint.py -i tools -i $(VENVDIR) -i README.rst + $(PYTHON) tools/rstlint.py ../Misc/NEWS.d/next/ serve: $(PYTHON) ../Tools/scripts/serve.py build/html diff --git a/Doc/tools/rstlint.py b/Doc/tools/rstlint.py index a3024d6734d25..cbcb8eb801b13 100755 --- a/Doc/tools/rstlint.py +++ b/Doc/tools/rstlint.py @@ -13,6 +13,7 @@ import re import sys import getopt +from string import ascii_letters from os.path import join, splitext, abspath, exists from collections import defaultdict @@ -128,6 +129,81 @@ def check_leaked_markup(fn, lines): yield lno+1, 'possibly leaked markup: %r' % line +def hide_literal_blocks(lines): + """Tool to remove literal blocks from given lines. + + It yields empty lines in place of blocks, so line numbers are + still meaningful. + """ + in_block = False + for line in lines: + if line.endswith("::\n"): + in_block = True + elif in_block: + if line == "\n" or line.startswith(" "): + line = "\n" + else: + in_block = False + yield line + + +def type_of_explicit_markup(line): + if re.match(fr'\.\. {all_directives}::', line): + return 'directive' + if re.match(r'\.\. \[[0-9]+\] ', line): + return 'footnote' + if re.match(r'\.\. \[[^\]]+\] ', line): + return 'citation' + if re.match(r'\.\. _.*[^_]: ', line): + return 'target' + if re.match(r'\.\. \|[^\|]*\| ', line): + return 'substitution_definition' + return 'comment' + + +def hide_comments(lines): + """Tool to remove comments from given lines. + + It yields empty lines in place of comments, so line numbers are + still meaningfull. + """ + in_multiline_comment = False + for line in lines: + if line == "..\n": + in_multiline_comment = True + elif in_multiline_comment: + if line == "\n" or line.startswith(" "): + line = "\n" + else: + in_multiline_comment = False + if line.startswith(".. ") and type_of_explicit_markup(line) == 'comment': + line = "\n" + yield line + + + + at checker(".rst", severity=2) +def check_missing_surrogate_space_on_plural(fn, lines): + r"""Check for missing 'backslash-space' between a code sample a letter. + + Good: ``Point``\ s + Bad: ``Point``s + """ + in_code_sample = False + check_next_one = False + for lno, line in enumerate(hide_comments(hide_literal_blocks(lines))): + tokens = line.split("``") + for token_no, token in enumerate(tokens): + if check_next_one: + if token[0] in ascii_letters: + yield lno + 1, f"Missing backslash-space between code sample and {token!r}." + check_next_one = False + if token_no == len(tokens) - 1: + continue + if in_code_sample: + check_next_one = True + in_code_sample = not in_code_sample + def main(argv): usage = '''\ Usage: %s [-v] [-f] [-s sev] [-i path]* [path] diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst index fec4b7f81cb45..87e8c0e89b3b8 100644 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst +++ b/Misc/NEWS.d/next/Core and Builtins/2020-11-20-00-57-47.bpo-42195.HeqcpS.rst @@ -1,11 +1,10 @@ The ``__args__`` of the parameterized generics for :data:`typing.Callable` -and :class:`collections.abc.Callable` are now consistent. The ``__args__`` -for :class:`collections.abc.Callable` are now flattened while -:data:`typing.Callable`'s have not changed. To allow this change, -:class:`types.GenericAlias` can now be subclassed and +and :class:`collections.abc.Callable` are now consistent. The ``__args__`` +for :class:`collections.abc.Callable` are now flattened while +:data:`typing.Callable`'s have not changed. To allow this change, +:class:`types.GenericAlias` can now be subclassed and ``collections.abc.Callable``'s ``__class_getitem__`` will now return a subclass -of ``types.GenericAlias``. Tests for typing were also updated to not subclass +of ``types.GenericAlias``. Tests for typing were also updated to not subclass things like ``Callable[..., T]`` as that is not a valid base class. Finally, -both ``Callable``\ s no longer validate their ``argtypes``, in -``Callable[[argtypes], resulttype]`` to prepare for :pep:`612`. Patch by Ken Jin. - +both ``Callable``\ s no longer validate their ``argtypes``, in +``Callable[[argtypes], resulttype]`` to prepare for :pep:`612`. Patch by Ken Jin. diff --git a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst index aa337b38046e6..2c7b70d589d83 100644 --- a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst +++ b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst @@ -1 +1 @@ -fix `format()` behavior for `IntFlag` +fix ``format()`` behavior for ``IntFlag`` diff --git a/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst index 7c94cdf40dd4c..4b2ced5c148af 100644 --- a/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst +++ b/Misc/NEWS.d/next/Library/2020-12-08-22-43-35.bpo-42678.ba9ktU.rst @@ -1 +1 @@ -`Enum`: call `__init_subclass__` after members have been added +``Enum``: call ``__init_subclass__`` after members have been added diff --git a/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst b/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst index fcbf99925208b..6f3691f591f2b 100644 --- a/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst +++ b/Misc/NEWS.d/next/Library/2020-12-10-18-36-52.bpo-39717.sK2u0w.rst @@ -1 +1 @@ -[tarfile] update nested exception raising to use `from None` or `from e` +[tarfile] update nested exception raising to use ``from None`` or ``from e`` diff --git a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst index f58b58e4002ad..ee4d111dc349a 100644 --- a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst +++ b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst @@ -1,3 +1,3 @@ -`logging.disable` will now validate the types and value of its parameter. It -also now accepts strings representing the levels (as does `loging.setLevel`) +``logging.disable`` will now validate the types and value of its parameter. It +also now accepts strings representing the levels (as does ``loging.setLevel``) instead of only the numerical values. From webhook-mailer at python.org Fri Dec 18 04:49:23 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 09:49:23 -0000 Subject: [Python-checkins] bpo-39096: Format specification documentation fixes for numeric types (GH-23575) Message-ID: https://github.com/python/cpython/commit/b812e236df506603e592086269e088b00d021460 commit: b812e236df506603e592086269e088b00d021460 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T01:49:19-08:00 summary: bpo-39096: Format specification documentation fixes for numeric types (GH-23575) (cherry picked from commit 886b2e5c7a2caf87070728dba8f18c3d65e51071) Co-authored-by: Mark Dickinson files: M Doc/library/string.rst diff --git a/Doc/library/string.rst b/Doc/library/string.rst index 5542e9b727a6b..54786d0c2ab0d 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -514,6 +514,8 @@ The available presentation types for :class:`float` and | | this rounds the number to ``p`` significant digits and | | | then formats the result in either fixed-point format | | | or in scientific notation, depending on its magnitude. | + | | A precision of ``0`` is treated as equivalent to a | + | | precision of ``1``. | | | | | | The precise rules are as follows: suppose that the | | | result formatted with presentation type ``'e'`` and | @@ -528,16 +530,19 @@ The available presentation types for :class:`float` and | | removed if there are no remaining digits following it, | | | unless the ``'#'`` option is used. | | | | + | | With no precision given, uses a precision of ``6`` | + | | significant digits for :class:`float`. For | + | | :class:`~decimal.Decimal`, the coefficient of the result | + | | is formed from the coefficient digits of the value; | + | | scientific notation is used for values smaller than | + | | ``1e-6`` in absolute value and values where the place | + | | value of the least significant digit is larger than 1, | + | | and fixed-point notation is used otherwise. | + | | | | | Positive and negative infinity, positive and negative | | | zero, and nans, are formatted as ``inf``, ``-inf``, | | | ``0``, ``-0`` and ``nan`` respectively, regardless of | | | the precision. | - | | | - | | A precision of ``0`` is treated as equivalent to a | - | | precision of ``1``. With no precision given, uses a | - | | precision of ``6`` significant digits for | - | | :class:`float`, and shows all coefficient digits | - | | for :class:`~decimal.Decimal`. | +---------+----------------------------------------------------------+ | ``'G'`` | General format. Same as ``'g'`` except switches to | | | ``'E'`` if the number gets too large. The | @@ -550,12 +555,18 @@ The available presentation types for :class:`float` and | ``'%'`` | Percentage. Multiplies the number by 100 and displays | | | in fixed (``'f'``) format, followed by a percent sign. | +---------+----------------------------------------------------------+ - | None | Similar to ``'g'``, except that fixed-point notation, | - | | when used, has at least one digit past the decimal point.| - | | The default precision is as high as needed to represent | - | | the particular value. The overall effect is to match the | - | | output of :func:`str` as altered by the other format | - | | modifiers. | + | None | For :class:`float` this is the same as ``'g'``, except | + | | that when fixed-point notation is used to format the | + | | result, it always includes at least one digit past the | + | | decimal point. The precision used is as large as needed | + | | to represent the given value faithfully. | + | | | + | | For :class:`~decimal.Decimal`, this is the same as | + | | either ``'g'`` or ``'G'`` depending on the value of | + | | ``context.capitals`` for the current decimal context. | + | | | + | | The overall effect is to match the output of :func:`str` | + | | as altered by the other format modifiers. | +---------+----------------------------------------------------------+ From webhook-mailer at python.org Fri Dec 18 08:06:05 2020 From: webhook-mailer at python.org (pablogsal) Date: Fri, 18 Dec 2020 13:06:05 -0000 Subject: [Python-checkins] bpo-17140: Document multiprocessing's ThreadPool (GH-23812) Message-ID: https://github.com/python/cpython/commit/84ebcf271a2cc8bfd1762acb279502b8b6ef236e commit: 84ebcf271a2cc8bfd1762acb279502b8b6ef236e branch: master author: Matt Wozniski committer: pablogsal date: 2020-12-18T13:05:46Z summary: bpo-17140: Document multiprocessing's ThreadPool (GH-23812) Up until now, the `multiprocessing.pool.ThreadPool` class has gone undocumented, despite being a public class in multiprocessing that is included in `multiprocessing.pool.__all__`. files: A Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst M Doc/library/multiprocessing.rst diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 128aa43b8b76f..e109b1ebe1cee 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -2661,6 +2661,46 @@ The :mod:`multiprocessing.dummy` module :mod:`multiprocessing.dummy` replicates the API of :mod:`multiprocessing` but is no more than a wrapper around the :mod:`threading` module. +.. currentmodule:: multiprocessing.pool + +In particular, the ``Pool`` function provided by :mod:`multiprocessing.dummy` +returns an instance of :class:`ThreadPool`, which is a subclass of +:class:`Pool` that supports all the same method calls but uses a pool of +worker threads rather than worker processes. + + +.. class:: ThreadPool([processes[, initializer[, initargs]]]) + + A thread pool object which controls a pool of worker threads to which jobs + can be submitted. :class:`ThreadPool` instances are fully interface + compatible with :class:`Pool` instances, and their resources must also be + properly managed, either by using the pool as a context manager or by + calling :meth:`~multiprocessing.pool.Pool.close` and + :meth:`~multiprocessing.pool.Pool.terminate` manually. + + *processes* is the number of worker threads to use. If *processes* is + ``None`` then the number returned by :func:`os.cpu_count` is used. + + If *initializer* is not ``None`` then each worker process will call + ``initializer(*initargs)`` when it starts. + + Unlike :class:`Pool`, *maxtasksperchild* and *context* cannot be provided. + + .. note:: + + A :class:`ThreadPool` shares the same interface as :class:`Pool`, which + is designed around a pool of processes and predates the introduction of + the :class:`concurrent.futures` module. As such, it inherits some + operations that don't make sense for a pool backed by threads, and it + has its own type for representing the status of asynchronous jobs, + :class:`AsyncResult`, that is not understood by any other libraries. + + Users should generally prefer to use + :class:`concurrent.futures.ThreadPoolExecutor`, which has a simpler + interface that was designed around threads from the start, and which + returns :class:`concurrent.futures.Future` instances that are + compatible with many other libraries, including :mod:`asyncio`. + .. _multiprocessing-programming: diff --git a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst new file mode 100644 index 0000000000000..cb1fd23a56e63 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst @@ -0,0 +1 @@ +Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. From webhook-mailer at python.org Fri Dec 18 08:27:07 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 13:27:07 -0000 Subject: [Python-checkins] bpo-17140: Document multiprocessing's ThreadPool (GH-23812) Message-ID: https://github.com/python/cpython/commit/14619924c36435e356135988c244cbc28652c82b commit: 14619924c36435e356135988c244cbc28652c82b branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T05:27:02-08:00 summary: bpo-17140: Document multiprocessing's ThreadPool (GH-23812) Up until now, the `multiprocessing.pool.ThreadPool` class has gone undocumented, despite being a public class in multiprocessing that is included in `multiprocessing.pool.__all__`. (cherry picked from commit 84ebcf271a2cc8bfd1762acb279502b8b6ef236e) Co-authored-by: Matt Wozniski files: A Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst M Doc/library/multiprocessing.rst diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index ab84d39ed0516..352f48f513df9 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -2661,6 +2661,46 @@ The :mod:`multiprocessing.dummy` module :mod:`multiprocessing.dummy` replicates the API of :mod:`multiprocessing` but is no more than a wrapper around the :mod:`threading` module. +.. currentmodule:: multiprocessing.pool + +In particular, the ``Pool`` function provided by :mod:`multiprocessing.dummy` +returns an instance of :class:`ThreadPool`, which is a subclass of +:class:`Pool` that supports all the same method calls but uses a pool of +worker threads rather than worker processes. + + +.. class:: ThreadPool([processes[, initializer[, initargs]]]) + + A thread pool object which controls a pool of worker threads to which jobs + can be submitted. :class:`ThreadPool` instances are fully interface + compatible with :class:`Pool` instances, and their resources must also be + properly managed, either by using the pool as a context manager or by + calling :meth:`~multiprocessing.pool.Pool.close` and + :meth:`~multiprocessing.pool.Pool.terminate` manually. + + *processes* is the number of worker threads to use. If *processes* is + ``None`` then the number returned by :func:`os.cpu_count` is used. + + If *initializer* is not ``None`` then each worker process will call + ``initializer(*initargs)`` when it starts. + + Unlike :class:`Pool`, *maxtasksperchild* and *context* cannot be provided. + + .. note:: + + A :class:`ThreadPool` shares the same interface as :class:`Pool`, which + is designed around a pool of processes and predates the introduction of + the :class:`concurrent.futures` module. As such, it inherits some + operations that don't make sense for a pool backed by threads, and it + has its own type for representing the status of asynchronous jobs, + :class:`AsyncResult`, that is not understood by any other libraries. + + Users should generally prefer to use + :class:`concurrent.futures.ThreadPoolExecutor`, which has a simpler + interface that was designed around threads from the start, and which + returns :class:`concurrent.futures.Future` instances that are + compatible with many other libraries, including :mod:`asyncio`. + .. _multiprocessing-programming: diff --git a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst new file mode 100644 index 0000000000000..cb1fd23a56e63 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst @@ -0,0 +1 @@ +Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. From webhook-mailer at python.org Fri Dec 18 09:25:46 2020 From: webhook-mailer at python.org (corona10) Date: Fri, 18 Dec 2020 14:25:46 -0000 Subject: [Python-checkins] bpo-40956: Convert _sqlite3.Connection to Argument Clinic (GH-23341) Message-ID: https://github.com/python/cpython/commit/1ba82bbc50a52f40ad05f3c4aaf2e159e0ce126d commit: 1ba82bbc50a52f40ad05f3c4aaf2e159e0ce126d branch: master author: Erlend Egeberg Aasland committer: corona10 date: 2020-12-18T23:25:35+09:00 summary: bpo-40956: Convert _sqlite3.Connection to Argument Clinic (GH-23341) files: A Modules/_sqlite/clinic/connection.c.h M Modules/_sqlite/connection.c M Modules/_sqlite/connection.h diff --git a/Modules/_sqlite/clinic/connection.c.h b/Modules/_sqlite/clinic/connection.c.h new file mode 100644 index 0000000000000..6b0ff4de4299e --- /dev/null +++ b/Modules/_sqlite/clinic/connection.c.h @@ -0,0 +1,490 @@ +/*[clinic input] +preserve +[clinic start generated code]*/ + +PyDoc_STRVAR(pysqlite_connection_cursor__doc__, +"cursor($self, /, factory=)\n" +"--\n" +"\n" +"Return a cursor for the connection."); + +#define PYSQLITE_CONNECTION_CURSOR_METHODDEF \ + {"cursor", (PyCFunction)(void(*)(void))pysqlite_connection_cursor, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_cursor__doc__}, + +static PyObject * +pysqlite_connection_cursor_impl(pysqlite_Connection *self, PyObject *factory); + +static PyObject * +pysqlite_connection_cursor(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"factory", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "cursor", 0}; + PyObject *argsbuf[1]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; + PyObject *factory = NULL; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); + if (!args) { + goto exit; + } + if (!noptargs) { + goto skip_optional_pos; + } + factory = args[0]; +skip_optional_pos: + return_value = pysqlite_connection_cursor_impl(self, factory); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_close__doc__, +"close($self, /)\n" +"--\n" +"\n" +"Closes the connection."); + +#define PYSQLITE_CONNECTION_CLOSE_METHODDEF \ + {"close", (PyCFunction)pysqlite_connection_close, METH_NOARGS, pysqlite_connection_close__doc__}, + +static PyObject * +pysqlite_connection_close_impl(pysqlite_Connection *self); + +static PyObject * +pysqlite_connection_close(pysqlite_Connection *self, PyObject *Py_UNUSED(ignored)) +{ + return pysqlite_connection_close_impl(self); +} + +PyDoc_STRVAR(pysqlite_connection_rollback__doc__, +"rollback($self, /)\n" +"--\n" +"\n" +"Roll back the current transaction."); + +#define PYSQLITE_CONNECTION_ROLLBACK_METHODDEF \ + {"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS, pysqlite_connection_rollback__doc__}, + +static PyObject * +pysqlite_connection_rollback_impl(pysqlite_Connection *self); + +static PyObject * +pysqlite_connection_rollback(pysqlite_Connection *self, PyObject *Py_UNUSED(ignored)) +{ + return pysqlite_connection_rollback_impl(self); +} + +PyDoc_STRVAR(pysqlite_connection_create_function__doc__, +"create_function($self, /, name, narg, func, *, deterministic=False)\n" +"--\n" +"\n" +"Creates a new function. Non-standard."); + +#define PYSQLITE_CONNECTION_CREATE_FUNCTION_METHODDEF \ + {"create_function", (PyCFunction)(void(*)(void))pysqlite_connection_create_function, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_create_function__doc__}, + +static PyObject * +pysqlite_connection_create_function_impl(pysqlite_Connection *self, + const char *name, int narg, + PyObject *func, int deterministic); + +static PyObject * +pysqlite_connection_create_function(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"name", "narg", "func", "deterministic", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "create_function", 0}; + PyObject *argsbuf[4]; + Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3; + const char *name; + int narg; + PyObject *func; + int deterministic = 0; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf); + if (!args) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("create_function", "argument 'name'", "str", args[0]); + goto exit; + } + Py_ssize_t name_length; + name = PyUnicode_AsUTF8AndSize(args[0], &name_length); + if (name == NULL) { + goto exit; + } + if (strlen(name) != (size_t)name_length) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + goto exit; + } + narg = _PyLong_AsInt(args[1]); + if (narg == -1 && PyErr_Occurred()) { + goto exit; + } + func = args[2]; + if (!noptargs) { + goto skip_optional_kwonly; + } + deterministic = PyObject_IsTrue(args[3]); + if (deterministic < 0) { + goto exit; + } +skip_optional_kwonly: + return_value = pysqlite_connection_create_function_impl(self, name, narg, func, deterministic); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_create_aggregate__doc__, +"create_aggregate($self, /, name, n_arg, aggregate_class)\n" +"--\n" +"\n" +"Creates a new aggregate. Non-standard."); + +#define PYSQLITE_CONNECTION_CREATE_AGGREGATE_METHODDEF \ + {"create_aggregate", (PyCFunction)(void(*)(void))pysqlite_connection_create_aggregate, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_create_aggregate__doc__}, + +static PyObject * +pysqlite_connection_create_aggregate_impl(pysqlite_Connection *self, + const char *name, int n_arg, + PyObject *aggregate_class); + +static PyObject * +pysqlite_connection_create_aggregate(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"name", "n_arg", "aggregate_class", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "create_aggregate", 0}; + PyObject *argsbuf[3]; + const char *name; + int n_arg; + PyObject *aggregate_class; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf); + if (!args) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("create_aggregate", "argument 'name'", "str", args[0]); + goto exit; + } + Py_ssize_t name_length; + name = PyUnicode_AsUTF8AndSize(args[0], &name_length); + if (name == NULL) { + goto exit; + } + if (strlen(name) != (size_t)name_length) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + goto exit; + } + n_arg = _PyLong_AsInt(args[1]); + if (n_arg == -1 && PyErr_Occurred()) { + goto exit; + } + aggregate_class = args[2]; + return_value = pysqlite_connection_create_aggregate_impl(self, name, n_arg, aggregate_class); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_set_authorizer__doc__, +"set_authorizer($self, /, authorizer_callback)\n" +"--\n" +"\n" +"Sets authorizer callback. Non-standard."); + +#define PYSQLITE_CONNECTION_SET_AUTHORIZER_METHODDEF \ + {"set_authorizer", (PyCFunction)(void(*)(void))pysqlite_connection_set_authorizer, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_set_authorizer__doc__}, + +static PyObject * +pysqlite_connection_set_authorizer_impl(pysqlite_Connection *self, + PyObject *authorizer_cb); + +static PyObject * +pysqlite_connection_set_authorizer(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"authorizer_callback", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "set_authorizer", 0}; + PyObject *argsbuf[1]; + PyObject *authorizer_cb; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); + if (!args) { + goto exit; + } + authorizer_cb = args[0]; + return_value = pysqlite_connection_set_authorizer_impl(self, authorizer_cb); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_set_progress_handler__doc__, +"set_progress_handler($self, /, progress_handler, n)\n" +"--\n" +"\n" +"Sets progress handler callback. Non-standard."); + +#define PYSQLITE_CONNECTION_SET_PROGRESS_HANDLER_METHODDEF \ + {"set_progress_handler", (PyCFunction)(void(*)(void))pysqlite_connection_set_progress_handler, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_set_progress_handler__doc__}, + +static PyObject * +pysqlite_connection_set_progress_handler_impl(pysqlite_Connection *self, + PyObject *progress_handler, + int n); + +static PyObject * +pysqlite_connection_set_progress_handler(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"progress_handler", "n", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "set_progress_handler", 0}; + PyObject *argsbuf[2]; + PyObject *progress_handler; + int n; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf); + if (!args) { + goto exit; + } + progress_handler = args[0]; + n = _PyLong_AsInt(args[1]); + if (n == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = pysqlite_connection_set_progress_handler_impl(self, progress_handler, n); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_set_trace_callback__doc__, +"set_trace_callback($self, trace_callback, /)\n" +"--\n" +"\n" +"Sets a trace callback called for each SQL statement (passed as unicode).\n" +"\n" +"Non-standard."); + +#define PYSQLITE_CONNECTION_SET_TRACE_CALLBACK_METHODDEF \ + {"set_trace_callback", (PyCFunction)pysqlite_connection_set_trace_callback, METH_O, pysqlite_connection_set_trace_callback__doc__}, + +#if !defined(SQLITE_OMIT_LOAD_EXTENSION) + +PyDoc_STRVAR(pysqlite_connection_enable_load_extension__doc__, +"enable_load_extension($self, enable, /)\n" +"--\n" +"\n" +"Enable dynamic loading of SQLite extension modules. Non-standard."); + +#define PYSQLITE_CONNECTION_ENABLE_LOAD_EXTENSION_METHODDEF \ + {"enable_load_extension", (PyCFunction)pysqlite_connection_enable_load_extension, METH_O, pysqlite_connection_enable_load_extension__doc__}, + +static PyObject * +pysqlite_connection_enable_load_extension_impl(pysqlite_Connection *self, + int onoff); + +static PyObject * +pysqlite_connection_enable_load_extension(pysqlite_Connection *self, PyObject *arg) +{ + PyObject *return_value = NULL; + int onoff; + + onoff = _PyLong_AsInt(arg); + if (onoff == -1 && PyErr_Occurred()) { + goto exit; + } + return_value = pysqlite_connection_enable_load_extension_impl(self, onoff); + +exit: + return return_value; +} + +#endif /* !defined(SQLITE_OMIT_LOAD_EXTENSION) */ + +#if !defined(SQLITE_OMIT_LOAD_EXTENSION) + +PyDoc_STRVAR(pysqlite_connection_load_extension__doc__, +"load_extension($self, name, /)\n" +"--\n" +"\n" +"Load SQLite extension module. Non-standard."); + +#define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF \ + {"load_extension", (PyCFunction)pysqlite_connection_load_extension, METH_O, pysqlite_connection_load_extension__doc__}, + +static PyObject * +pysqlite_connection_load_extension_impl(pysqlite_Connection *self, + const char *extension_name); + +static PyObject * +pysqlite_connection_load_extension(pysqlite_Connection *self, PyObject *arg) +{ + PyObject *return_value = NULL; + const char *extension_name; + + if (!PyUnicode_Check(arg)) { + _PyArg_BadArgument("load_extension", "argument", "str", arg); + goto exit; + } + Py_ssize_t extension_name_length; + extension_name = PyUnicode_AsUTF8AndSize(arg, &extension_name_length); + if (extension_name == NULL) { + goto exit; + } + if (strlen(extension_name) != (size_t)extension_name_length) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + goto exit; + } + return_value = pysqlite_connection_load_extension_impl(self, extension_name); + +exit: + return return_value; +} + +#endif /* !defined(SQLITE_OMIT_LOAD_EXTENSION) */ + +PyDoc_STRVAR(pysqlite_connection_interrupt__doc__, +"interrupt($self, /)\n" +"--\n" +"\n" +"Abort any pending database operation. Non-standard."); + +#define PYSQLITE_CONNECTION_INTERRUPT_METHODDEF \ + {"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS, pysqlite_connection_interrupt__doc__}, + +static PyObject * +pysqlite_connection_interrupt_impl(pysqlite_Connection *self); + +static PyObject * +pysqlite_connection_interrupt(pysqlite_Connection *self, PyObject *Py_UNUSED(ignored)) +{ + return pysqlite_connection_interrupt_impl(self); +} + +PyDoc_STRVAR(pysqlite_connection_iterdump__doc__, +"iterdump($self, /)\n" +"--\n" +"\n" +"Returns iterator to the dump of the database in an SQL text format.\n" +"\n" +"Non-standard."); + +#define PYSQLITE_CONNECTION_ITERDUMP_METHODDEF \ + {"iterdump", (PyCFunction)pysqlite_connection_iterdump, METH_NOARGS, pysqlite_connection_iterdump__doc__}, + +static PyObject * +pysqlite_connection_iterdump_impl(pysqlite_Connection *self); + +static PyObject * +pysqlite_connection_iterdump(pysqlite_Connection *self, PyObject *Py_UNUSED(ignored)) +{ + return pysqlite_connection_iterdump_impl(self); +} + +PyDoc_STRVAR(pysqlite_connection_create_collation__doc__, +"create_collation($self, name, callback, /)\n" +"--\n" +"\n" +"Creates a collation function. Non-standard."); + +#define PYSQLITE_CONNECTION_CREATE_COLLATION_METHODDEF \ + {"create_collation", (PyCFunction)(void(*)(void))pysqlite_connection_create_collation, METH_FASTCALL, pysqlite_connection_create_collation__doc__}, + +static PyObject * +pysqlite_connection_create_collation_impl(pysqlite_Connection *self, + PyObject *name, PyObject *callable); + +static PyObject * +pysqlite_connection_create_collation(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *name; + PyObject *callable; + + if (!_PyArg_CheckPositional("create_collation", nargs, 2, 2)) { + goto exit; + } + if (!PyUnicode_Check(args[0])) { + _PyArg_BadArgument("create_collation", "argument 1", "str", args[0]); + goto exit; + } + if (PyUnicode_READY(args[0]) == -1) { + goto exit; + } + name = args[0]; + callable = args[1]; + return_value = pysqlite_connection_create_collation_impl(self, name, callable); + +exit: + return return_value; +} + +PyDoc_STRVAR(pysqlite_connection_enter__doc__, +"__enter__($self, /)\n" +"--\n" +"\n" +"Called when the connection is used as a context manager.\n" +"\n" +"Returns itself as a convenience to the caller."); + +#define PYSQLITE_CONNECTION_ENTER_METHODDEF \ + {"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS, pysqlite_connection_enter__doc__}, + +static PyObject * +pysqlite_connection_enter_impl(pysqlite_Connection *self); + +static PyObject * +pysqlite_connection_enter(pysqlite_Connection *self, PyObject *Py_UNUSED(ignored)) +{ + return pysqlite_connection_enter_impl(self); +} + +PyDoc_STRVAR(pysqlite_connection_exit__doc__, +"__exit__($self, type, value, traceback, /)\n" +"--\n" +"\n" +"Called when the connection is used as a context manager.\n" +"\n" +"If there was any exception, a rollback takes place; otherwise we commit."); + +#define PYSQLITE_CONNECTION_EXIT_METHODDEF \ + {"__exit__", (PyCFunction)(void(*)(void))pysqlite_connection_exit, METH_FASTCALL, pysqlite_connection_exit__doc__}, + +static PyObject * +pysqlite_connection_exit_impl(pysqlite_Connection *self, PyObject *exc_type, + PyObject *exc_value, PyObject *exc_tb); + +static PyObject * +pysqlite_connection_exit(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *exc_type; + PyObject *exc_value; + PyObject *exc_tb; + + if (!_PyArg_CheckPositional("__exit__", nargs, 3, 3)) { + goto exit; + } + exc_type = args[0]; + exc_value = args[1]; + exc_tb = args[2]; + return_value = pysqlite_connection_exit_impl(self, exc_type, exc_value, exc_tb); + +exit: + return return_value; +} + +#ifndef PYSQLITE_CONNECTION_ENABLE_LOAD_EXTENSION_METHODDEF + #define PYSQLITE_CONNECTION_ENABLE_LOAD_EXTENSION_METHODDEF +#endif /* !defined(PYSQLITE_CONNECTION_ENABLE_LOAD_EXTENSION_METHODDEF) */ + +#ifndef PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF + #define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF +#endif /* !defined(PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF) */ +/*[clinic end generated code: output=e14085c0abc0a407 input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 69203f85e0555..1c8f37e16480d 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -37,6 +37,13 @@ #define HAVE_TRACE_V2 #endif +#include "clinic/connection.c.h" +/*[clinic input] +module _sqlite3 +class _sqlite3.Connection "pysqlite_Connection *" "pysqlite_ConnectionType" +[clinic start generated code]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=aa796073bd8f69db]*/ + _Py_IDENTIFIER(cursor); static const char * const begin_statements[] = { @@ -269,17 +276,20 @@ int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObjec return 0; } -PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) +/*[clinic input] +_sqlite3.Connection.cursor as pysqlite_connection_cursor + + factory: object = NULL + +Return a cursor for the connection. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_cursor_impl(pysqlite_Connection *self, PyObject *factory) +/*[clinic end generated code: output=562432a9e6af2aa1 input=4127345aa091b650]*/ { - static char *kwlist[] = {"factory", NULL}; - PyObject* factory = NULL; PyObject* cursor; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, - &factory)) { - return NULL; - } - if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } @@ -309,7 +319,15 @@ PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, return cursor; } -PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args) +/*[clinic input] +_sqlite3.Connection.close as pysqlite_connection_close + +Closes the connection. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_close_impl(pysqlite_Connection *self) +/*[clinic end generated code: output=a546a0da212c9b97 input=3d58064bbffaa3d3]*/ { int rc; @@ -431,7 +449,15 @@ PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args) } } -PyObject* pysqlite_connection_rollback(pysqlite_Connection* self, PyObject* args) +/*[clinic input] +_sqlite3.Connection.rollback as pysqlite_connection_rollback + +Roll back the current transaction. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_rollback_impl(pysqlite_Connection *self) +/*[clinic end generated code: output=b66fa0d43e7ef305 input=12d4e8d068942830]*/ { int rc; const char* tail; @@ -780,27 +806,31 @@ static void _destructor(void* args) Py_DECREF((PyObject*)args); } -PyObject* pysqlite_connection_create_function(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) -{ - static char *kwlist[] = {"name", "narg", "func", "deterministic", NULL}; +/*[clinic input] +_sqlite3.Connection.create_function as pysqlite_connection_create_function + + name: str + narg: int + func: object + * + deterministic: bool = False + +Creates a new function. Non-standard. +[clinic start generated code]*/ - PyObject* func; - char* name; - int narg; +static PyObject * +pysqlite_connection_create_function_impl(pysqlite_Connection *self, + const char *name, int narg, + PyObject *func, int deterministic) +/*[clinic end generated code: output=07d1877dd98c0308 input=f2edcf073e815beb]*/ +{ int rc; - int deterministic = 0; int flags = SQLITE_UTF8; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO|$p", kwlist, - &name, &narg, &func, &deterministic)) - { - return NULL; - } - if (deterministic) { #if SQLITE_VERSION_NUMBER < 3008003 PyErr_SetString(pysqlite_NotSupportedError, @@ -834,23 +864,28 @@ PyObject* pysqlite_connection_create_function(pysqlite_Connection* self, PyObjec Py_RETURN_NONE; } -PyObject* pysqlite_connection_create_aggregate(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) -{ - PyObject* aggregate_class; +/*[clinic input] +_sqlite3.Connection.create_aggregate as pysqlite_connection_create_aggregate - int n_arg; - char* name; - static char *kwlist[] = { "name", "n_arg", "aggregate_class", NULL }; + name: str + n_arg: int + aggregate_class: object + +Creates a new aggregate. Non-standard. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_create_aggregate_impl(pysqlite_Connection *self, + const char *name, int n_arg, + PyObject *aggregate_class) +/*[clinic end generated code: output=fbb2f858cfa4d8db input=c2e13bbf234500a5]*/ +{ int rc; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO:create_aggregate", - kwlist, &name, &n_arg, &aggregate_class)) { - return NULL; - } Py_INCREF(aggregate_class); rc = sqlite3_create_function_v2(self->db, name, @@ -982,22 +1017,25 @@ static void _trace_callback(void* user_arg, const char* statement_string) #endif } -static PyObject* pysqlite_connection_set_authorizer(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) -{ - PyObject* authorizer_cb; +/*[clinic input] +_sqlite3.Connection.set_authorizer as pysqlite_connection_set_authorizer + + authorizer_callback as authorizer_cb: object + +Sets authorizer callback. Non-standard. +[clinic start generated code]*/ - static char *kwlist[] = { "authorizer_callback", NULL }; +static PyObject * +pysqlite_connection_set_authorizer_impl(pysqlite_Connection *self, + PyObject *authorizer_cb) +/*[clinic end generated code: output=f18ba575d788b35c input=df079724c020d2f2]*/ +{ int rc; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:set_authorizer", - kwlist, &authorizer_cb)) { - return NULL; - } - rc = sqlite3_set_authorizer(self->db, _authorizer_callback, (void*)authorizer_cb); if (rc != SQLITE_OK) { PyErr_SetString(pysqlite_OperationalError, "Error setting authorizer callback"); @@ -1010,19 +1048,22 @@ static PyObject* pysqlite_connection_set_authorizer(pysqlite_Connection* self, P Py_RETURN_NONE; } -static PyObject* pysqlite_connection_set_progress_handler(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) -{ - PyObject* progress_handler; - int n; +/*[clinic input] +_sqlite3.Connection.set_progress_handler as pysqlite_connection_set_progress_handler - static char *kwlist[] = { "progress_handler", "n", NULL }; + progress_handler: object + n: int - if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { - return NULL; - } +Sets progress handler callback. Non-standard. +[clinic start generated code]*/ - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi:set_progress_handler", - kwlist, &progress_handler, &n)) { +static PyObject * +pysqlite_connection_set_progress_handler_impl(pysqlite_Connection *self, + PyObject *progress_handler, + int n) +/*[clinic end generated code: output=35a7c10364cb1b04 input=857696c25f964c64]*/ +{ + if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } @@ -1038,28 +1079,34 @@ static PyObject* pysqlite_connection_set_progress_handler(pysqlite_Connection* s Py_RETURN_NONE; } -/* - * Ref. - * - https://sqlite.org/c3ref/c_trace.html - * - https://sqlite.org/c3ref/trace_v2.html - */ -static PyObject* pysqlite_connection_set_trace_callback(pysqlite_Connection* self, PyObject* args, PyObject* kwargs) -{ - PyObject* trace_callback; +/*[clinic input] +_sqlite3.Connection.set_trace_callback as pysqlite_connection_set_trace_callback - static char *kwlist[] = { "trace_callback", NULL }; + trace_callback: object + / - if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { - return NULL; - } +Sets a trace callback called for each SQL statement (passed as unicode). + +Non-standard. +[clinic start generated code]*/ - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:set_trace_callback", - kwlist, &trace_callback)) { +static PyObject * +pysqlite_connection_set_trace_callback(pysqlite_Connection *self, + PyObject *trace_callback) +/*[clinic end generated code: output=efd1bf439e81696c input=05a4a14360e0e034]*/ +{ + if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } if (trace_callback == Py_None) { - /* None clears the trace callback previously set */ + /* + * None clears the trace callback previously set + * + * Ref. + * - https://sqlite.org/c3ref/c_trace.html + * - https://sqlite.org/c3ref/trace_v2.html + */ #ifdef HAVE_TRACE_V2 sqlite3_trace_v2(self->db, SQLITE_TRACE_STMT, 0, 0); #else @@ -1080,19 +1127,26 @@ static PyObject* pysqlite_connection_set_trace_callback(pysqlite_Connection* sel } #ifndef SQLITE_OMIT_LOAD_EXTENSION -static PyObject* pysqlite_enable_load_extension(pysqlite_Connection* self, PyObject* args) +/*[clinic input] +_sqlite3.Connection.enable_load_extension as pysqlite_connection_enable_load_extension + + enable as onoff: int + / + +Enable dynamic loading of SQLite extension modules. Non-standard. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_enable_load_extension_impl(pysqlite_Connection *self, + int onoff) +/*[clinic end generated code: output=9cac37190d388baf input=7df2986f1602d6bd]*/ { int rc; - int onoff; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - if (!PyArg_ParseTuple(args, "i", &onoff)) { - return NULL; - } - rc = sqlite3_enable_load_extension(self->db, onoff); if (rc != SQLITE_OK) { @@ -1103,20 +1157,27 @@ static PyObject* pysqlite_enable_load_extension(pysqlite_Connection* self, PyObj } } -static PyObject* pysqlite_load_extension(pysqlite_Connection* self, PyObject* args) +/*[clinic input] +_sqlite3.Connection.load_extension as pysqlite_connection_load_extension + + name as extension_name: str + / + +Load SQLite extension module. Non-standard. +[clinic start generated code]*/ + +static PyObject * +pysqlite_connection_load_extension_impl(pysqlite_Connection *self, + const char *extension_name) +/*[clinic end generated code: output=47eb1d7312bc97a7 input=0b711574560db9fc]*/ { int rc; - char* extension_name; char* errmsg; if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; } - if (!PyArg_ParseTuple(args, "s", &extension_name)) { - return NULL; - } - rc = sqlite3_load_extension(self->db, extension_name, 0, &errmsg); if (rc != 0) { PyErr_SetString(pysqlite_OperationalError, errmsg); @@ -1421,8 +1482,15 @@ pysqlite_collation_callback( return result; } +/*[clinic input] +_sqlite3.Connection.interrupt as pysqlite_connection_interrupt + +Abort any pending database operation. Non-standard. +[clinic start generated code]*/ + static PyObject * -pysqlite_connection_interrupt(pysqlite_Connection* self, PyObject* args) +pysqlite_connection_interrupt_impl(pysqlite_Connection *self) +/*[clinic end generated code: output=f193204bc9e70b47 input=4bd0ad083cf93aa7]*/ { PyObject* retval = NULL; @@ -1443,8 +1511,17 @@ pysqlite_connection_interrupt(pysqlite_Connection* self, PyObject* args) * Class method of Connection to call the Python function _iterdump * of the sqlite3 module. */ +/*[clinic input] +_sqlite3.Connection.iterdump as pysqlite_connection_iterdump + +Returns iterator to the dump of the database in an SQL text format. + +Non-standard. +[clinic start generated code]*/ + static PyObject * -pysqlite_connection_iterdump(pysqlite_Connection* self, PyObject* args) +pysqlite_connection_iterdump_impl(pysqlite_Connection *self) +/*[clinic end generated code: output=586997aaf9808768 input=53bc907cb5eedb85]*/ { _Py_IDENTIFIER(_iterdump); PyObject* retval = NULL; @@ -1637,12 +1714,22 @@ pysqlite_connection_backup(pysqlite_Connection *self, PyObject *args, PyObject * } } +/*[clinic input] +_sqlite3.Connection.create_collation as pysqlite_connection_create_collation + + name: unicode + callback as callable: object + / + +Creates a collation function. Non-standard. +[clinic start generated code]*/ + static PyObject * -pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args) +pysqlite_connection_create_collation_impl(pysqlite_Connection *self, + PyObject *name, PyObject *callable) +/*[clinic end generated code: output=0f63b8995565ae22 input=5c3898813a776cf2]*/ { - PyObject* callable; PyObject* uppercase_name = 0; - PyObject* name; PyObject* retval; Py_ssize_t i, len; _Py_IDENTIFIER(upper); @@ -1655,11 +1742,6 @@ pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args) goto finally; } - if (!PyArg_ParseTuple(args, "UO:create_collation(name, callback)", - &name, &callable)) { - goto finally; - } - uppercase_name = _PyObject_CallMethodIdOneArg((PyObject *)&PyUnicode_Type, &PyId_upper, name); if (!uppercase_name) { @@ -1725,28 +1807,43 @@ pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args) return retval; } -/* Called when the connection is used as a context manager. Returns itself as a - * convenience to the caller. */ +/*[clinic input] +_sqlite3.Connection.__enter__ as pysqlite_connection_enter + +Called when the connection is used as a context manager. + +Returns itself as a convenience to the caller. +[clinic start generated code]*/ + static PyObject * -pysqlite_connection_enter(pysqlite_Connection* self, PyObject* args) +pysqlite_connection_enter_impl(pysqlite_Connection *self) +/*[clinic end generated code: output=457b09726d3e9dcd input=127d7a4f17e86d8f]*/ { Py_INCREF(self); return (PyObject*)self; } -/** Called when the connection is used as a context manager. If there was any - * exception, a rollback takes place; otherwise we commit. */ +/*[clinic input] +_sqlite3.Connection.__exit__ as pysqlite_connection_exit + + type as exc_type: object + value as exc_value: object + traceback as exc_tb: object + / + +Called when the connection is used as a context manager. + +If there was any exception, a rollback takes place; otherwise we commit. +[clinic start generated code]*/ + static PyObject * -pysqlite_connection_exit(pysqlite_Connection* self, PyObject* args) +pysqlite_connection_exit_impl(pysqlite_Connection *self, PyObject *exc_type, + PyObject *exc_value, PyObject *exc_tb) +/*[clinic end generated code: output=0705200e9321202a input=bd66f1532c9c54a7]*/ { - PyObject* exc_type, *exc_value, *exc_tb; const char* method_name; PyObject* result; - if (!PyArg_ParseTuple(args, "OOO", &exc_type, &exc_value, &exc_tb)) { - return NULL; - } - if (exc_type == Py_None && exc_value == Py_None && exc_tb == Py_None) { method_name = "commit"; } else { @@ -1773,48 +1870,31 @@ static PyGetSetDef connection_getset[] = { }; static PyMethodDef connection_methods[] = { - {"cursor", (PyCFunction)(void(*)(void))pysqlite_connection_cursor, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Return a cursor for the connection.")}, - {"close", (PyCFunction)pysqlite_connection_close, METH_NOARGS, - PyDoc_STR("Closes the connection.")}, + PYSQLITE_CONNECTION_CLOSE_METHODDEF + PYSQLITE_CONNECTION_CREATE_AGGREGATE_METHODDEF + PYSQLITE_CONNECTION_CREATE_COLLATION_METHODDEF + PYSQLITE_CONNECTION_CREATE_FUNCTION_METHODDEF + PYSQLITE_CONNECTION_CURSOR_METHODDEF + PYSQLITE_CONNECTION_ENABLE_LOAD_EXTENSION_METHODDEF + PYSQLITE_CONNECTION_ENTER_METHODDEF + PYSQLITE_CONNECTION_EXIT_METHODDEF + PYSQLITE_CONNECTION_INTERRUPT_METHODDEF + PYSQLITE_CONNECTION_ITERDUMP_METHODDEF + PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF + PYSQLITE_CONNECTION_ROLLBACK_METHODDEF + PYSQLITE_CONNECTION_SET_AUTHORIZER_METHODDEF + PYSQLITE_CONNECTION_SET_PROGRESS_HANDLER_METHODDEF + PYSQLITE_CONNECTION_SET_TRACE_CALLBACK_METHODDEF {"commit", (PyCFunction)pysqlite_connection_commit, METH_NOARGS, PyDoc_STR("Commit the current transaction.")}, - {"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS, - PyDoc_STR("Roll back the current transaction.")}, - {"create_function", (PyCFunction)(void(*)(void))pysqlite_connection_create_function, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Creates a new function. Non-standard.")}, - {"create_aggregate", (PyCFunction)(void(*)(void))pysqlite_connection_create_aggregate, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Creates a new aggregate. Non-standard.")}, - {"set_authorizer", (PyCFunction)(void(*)(void))pysqlite_connection_set_authorizer, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Sets authorizer callback. Non-standard.")}, - #ifndef SQLITE_OMIT_LOAD_EXTENSION - {"enable_load_extension", (PyCFunction)pysqlite_enable_load_extension, METH_VARARGS, - PyDoc_STR("Enable dynamic loading of SQLite extension modules. Non-standard.")}, - {"load_extension", (PyCFunction)pysqlite_load_extension, METH_VARARGS, - PyDoc_STR("Load SQLite extension module. Non-standard.")}, - #endif - {"set_progress_handler", (PyCFunction)(void(*)(void))pysqlite_connection_set_progress_handler, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Sets progress handler callback. Non-standard.")}, - {"set_trace_callback", (PyCFunction)(void(*)(void))pysqlite_connection_set_trace_callback, METH_VARARGS|METH_KEYWORDS, - PyDoc_STR("Sets a trace callback called for each SQL statement (passed as unicode). Non-standard.")}, {"execute", (PyCFunction)pysqlite_connection_execute, METH_VARARGS, PyDoc_STR("Executes a SQL statement. Non-standard.")}, {"executemany", (PyCFunction)pysqlite_connection_executemany, METH_VARARGS, PyDoc_STR("Repeatedly executes a SQL statement. Non-standard.")}, {"executescript", (PyCFunction)pysqlite_connection_executescript, METH_VARARGS, PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")}, - {"create_collation", (PyCFunction)pysqlite_connection_create_collation, METH_VARARGS, - PyDoc_STR("Creates a collation function. Non-standard.")}, - {"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS, - PyDoc_STR("Abort any pending database operation. Non-standard.")}, - {"iterdump", (PyCFunction)pysqlite_connection_iterdump, METH_NOARGS, - PyDoc_STR("Returns iterator to the dump of the database in an SQL text format. Non-standard.")}, {"backup", (PyCFunction)(void(*)(void))pysqlite_connection_backup, METH_VARARGS | METH_KEYWORDS, PyDoc_STR("Makes a backup of the database. Non-standard.")}, - {"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS, - PyDoc_STR("For context manager. Non-standard.")}, - {"__exit__", (PyCFunction)pysqlite_connection_exit, METH_VARARGS, - PyDoc_STR("For context manager. Non-standard.")}, {NULL, NULL} }; diff --git a/Modules/_sqlite/connection.h b/Modules/_sqlite/connection.h index aadf439034fe2..341ef01eda7fe 100644 --- a/Modules/_sqlite/connection.h +++ b/Modules/_sqlite/connection.h @@ -110,11 +110,8 @@ extern PyTypeObject *pysqlite_ConnectionType; PyObject* pysqlite_connection_alloc(PyTypeObject* type, int aware); void pysqlite_connection_dealloc(pysqlite_Connection* self); -PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs); -PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args); PyObject* _pysqlite_connection_begin(pysqlite_Connection* self); PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args); -PyObject* pysqlite_connection_rollback(pysqlite_Connection* self, PyObject* args); PyObject* pysqlite_connection_new(PyTypeObject* type, PyObject* args, PyObject* kw); int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject* kwargs); From webhook-mailer at python.org Fri Dec 18 10:41:41 2020 From: webhook-mailer at python.org (corona10) Date: Fri, 18 Dec 2020 15:41:41 -0000 Subject: [Python-checkins] bpo-40956: Fix sqlite3 AC code (GH-23837) Message-ID: https://github.com/python/cpython/commit/2179349d8cf45b1202775547df384b1fde31630a commit: 2179349d8cf45b1202775547df384b1fde31630a branch: master author: Dong-hee Na committer: corona10 date: 2020-12-19T00:41:33+09:00 summary: bpo-40956: Fix sqlite3 AC code (GH-23837) files: M Modules/_sqlite/clinic/connection.c.h M Modules/_sqlite/connection.c diff --git a/Modules/_sqlite/clinic/connection.c.h b/Modules/_sqlite/clinic/connection.c.h index 6b0ff4de4299e..7e3c9a9e61b19 100644 --- a/Modules/_sqlite/clinic/connection.c.h +++ b/Modules/_sqlite/clinic/connection.c.h @@ -264,7 +264,7 @@ pysqlite_connection_set_progress_handler(pysqlite_Connection *self, PyObject *co } PyDoc_STRVAR(pysqlite_connection_set_trace_callback__doc__, -"set_trace_callback($self, trace_callback, /)\n" +"set_trace_callback($self, /, trace_callback)\n" "--\n" "\n" "Sets a trace callback called for each SQL statement (passed as unicode).\n" @@ -272,7 +272,31 @@ PyDoc_STRVAR(pysqlite_connection_set_trace_callback__doc__, "Non-standard."); #define PYSQLITE_CONNECTION_SET_TRACE_CALLBACK_METHODDEF \ - {"set_trace_callback", (PyCFunction)pysqlite_connection_set_trace_callback, METH_O, pysqlite_connection_set_trace_callback__doc__}, + {"set_trace_callback", (PyCFunction)(void(*)(void))pysqlite_connection_set_trace_callback, METH_FASTCALL|METH_KEYWORDS, pysqlite_connection_set_trace_callback__doc__}, + +static PyObject * +pysqlite_connection_set_trace_callback_impl(pysqlite_Connection *self, + PyObject *trace_callback); + +static PyObject * +pysqlite_connection_set_trace_callback(pysqlite_Connection *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) +{ + PyObject *return_value = NULL; + static const char * const _keywords[] = {"trace_callback", NULL}; + static _PyArg_Parser _parser = {NULL, _keywords, "set_trace_callback", 0}; + PyObject *argsbuf[1]; + PyObject *trace_callback; + + args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); + if (!args) { + goto exit; + } + trace_callback = args[0]; + return_value = pysqlite_connection_set_trace_callback_impl(self, trace_callback); + +exit: + return return_value; +} #if !defined(SQLITE_OMIT_LOAD_EXTENSION) @@ -487,4 +511,4 @@ pysqlite_connection_exit(pysqlite_Connection *self, PyObject *const *args, Py_ss #ifndef PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF #endif /* !defined(PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF) */ -/*[clinic end generated code: output=e14085c0abc0a407 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=eb14a52e4c682f3b input=a9049054013a1b77]*/ diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 1c8f37e16480d..75aec74e0aaa9 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1083,7 +1083,6 @@ pysqlite_connection_set_progress_handler_impl(pysqlite_Connection *self, _sqlite3.Connection.set_trace_callback as pysqlite_connection_set_trace_callback trace_callback: object - / Sets a trace callback called for each SQL statement (passed as unicode). @@ -1091,9 +1090,9 @@ Non-standard. [clinic start generated code]*/ static PyObject * -pysqlite_connection_set_trace_callback(pysqlite_Connection *self, - PyObject *trace_callback) -/*[clinic end generated code: output=efd1bf439e81696c input=05a4a14360e0e034]*/ +pysqlite_connection_set_trace_callback_impl(pysqlite_Connection *self, + PyObject *trace_callback) +/*[clinic end generated code: output=fb0e307b9924d454 input=56d60fd38d763679]*/ { if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) { return NULL; @@ -1130,7 +1129,7 @@ pysqlite_connection_set_trace_callback(pysqlite_Connection *self, /*[clinic input] _sqlite3.Connection.enable_load_extension as pysqlite_connection_enable_load_extension - enable as onoff: int + enable as onoff: bool(accept={int}) / Enable dynamic loading of SQLite extension modules. Non-standard. @@ -1139,7 +1138,7 @@ Enable dynamic loading of SQLite extension modules. Non-standard. static PyObject * pysqlite_connection_enable_load_extension_impl(pysqlite_Connection *self, int onoff) -/*[clinic end generated code: output=9cac37190d388baf input=7df2986f1602d6bd]*/ +/*[clinic end generated code: output=9cac37190d388baf input=5c0da5b121121cbc]*/ { int rc; From webhook-mailer at python.org Fri Dec 18 12:26:21 2020 From: webhook-mailer at python.org (1st1) Date: Fri, 18 Dec 2020 17:26:21 -0000 Subject: [Python-checkins] bpo-41891: ensure asyncio.wait_for waits for task completion (#22461) Message-ID: https://github.com/python/cpython/commit/17ef4319a34f5a2f95e7823dfb5f5b8cff11882d commit: 17ef4319a34f5a2f95e7823dfb5f5b8cff11882d branch: master author: Richard Kojedzinszky committer: 1st1 date: 2020-12-18T09:26:04-08:00 summary: bpo-41891: ensure asyncio.wait_for waits for task completion (#22461) files: A Lib/test/test_asyncio/test_asyncio_waitfor.py A Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst M Lib/asyncio/tasks.py diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 0d3a24b7853f5..52f1e6629e2fc 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -437,7 +437,10 @@ async def wait_for(fut, timeout): return fut.result() else: fut.remove_done_callback(cb) - fut.cancel() + # We must ensure that the task is not running + # after wait_for() returns. + # See https://bugs.python.org/issue32751 + await _cancel_and_wait(fut, loop=loop) raise if fut.done(): diff --git a/Lib/test/test_asyncio/test_asyncio_waitfor.py b/Lib/test/test_asyncio/test_asyncio_waitfor.py new file mode 100644 index 0000000000000..2ca64abbeb527 --- /dev/null +++ b/Lib/test/test_asyncio/test_asyncio_waitfor.py @@ -0,0 +1,61 @@ +import asyncio +import unittest +import time + +def tearDownModule(): + asyncio.set_event_loop_policy(None) + + +class SlowTask: + """ Task will run for this defined time, ignoring cancel requests """ + TASK_TIMEOUT = 0.2 + + def __init__(self): + self.exited = False + + async def run(self): + exitat = time.monotonic() + self.TASK_TIMEOUT + + while True: + tosleep = exitat - time.monotonic() + if tosleep <= 0: + break + + try: + await asyncio.sleep(tosleep) + except asyncio.CancelledError: + pass + + self.exited = True + +class AsyncioWaitForTest(unittest.TestCase): + + async def atest_asyncio_wait_for_cancelled(self): + t = SlowTask() + + waitfortask = asyncio.create_task(asyncio.wait_for(t.run(), t.TASK_TIMEOUT * 2)) + await asyncio.sleep(0) + waitfortask.cancel() + await asyncio.wait({waitfortask}) + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_cancelled(self): + asyncio.run(self.atest_asyncio_wait_for_cancelled()) + + async def atest_asyncio_wait_for_timeout(self): + t = SlowTask() + + try: + await asyncio.wait_for(t.run(), t.TASK_TIMEOUT / 2) + except asyncio.TimeoutError: + pass + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_timeout(self): + asyncio.run(self.atest_asyncio_wait_for_timeout()) + + +if __name__ == '__main__': + unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst new file mode 100644 index 0000000000000..75c2512780315 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst @@ -0,0 +1 @@ +Ensure asyncio.wait_for waits for task completion From webhook-mailer at python.org Fri Dec 18 12:39:36 2020 From: webhook-mailer at python.org (gvanrossum) Date: Fri, 18 Dec 2020 17:39:36 -0000 Subject: [Python-checkins] bpo-42675: Document collections.abc.Callable changes (GH-23839) Message-ID: https://github.com/python/cpython/commit/d75f6f78e6ca230d0dacc116dca9d8bf91509b68 commit: d75f6f78e6ca230d0dacc116dca9d8bf91509b68 branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2020-12-18T09:39:26-08:00 summary: bpo-42675: Document collections.abc.Callable changes (GH-23839) files: M Doc/library/types.rst M Doc/whatsnew/3.10.rst diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 6f0dc259303fa..8e05f8408e545 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -280,6 +280,10 @@ Standard names are defined for the following types: .. versionadded:: 3.9 + .. versionchanged:: 3.9.2 + This type can now be subclassed. + + .. data:: Union The type of :ref:`union type expressions`. diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index b690f8d2d7cd7..a6f9b0b1754d2 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -179,6 +179,21 @@ codecs Add a :func:`codecs.unregister` function to unregister a codec search function. (Contributed by Hai Shi in :issue:`41842`.) +collections.abc +--------------- + +The ``__args__`` of the :ref:`parameterized generic ` for +:class:`collections.abc.Callable` are now consistent with :data:`typing.Callable`. +:class:`collections.abc.Callable` generic now flattens type parameters, similar +to what :data:`typing.Callable` currently does. This means that +``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of +``(int, str, str)``; previously this was ``([int, str], str)``. To allow this +change, :class:`types.GenericAlias` can now be subclassed, and a subclass will +be returned when subscripting the :class:`collections.abc.Callable` type. Note +that a :exc:`TypeError` may be raised for invalid forms of parameterizing +:class:`collections.abc.Callable` which may have passed silently in Python 3.9. +(Contributed by Ken Jin in :issue:`42195`.) + contextlib ---------- @@ -507,6 +522,15 @@ Changes in the Python API ignored. (Contributed by Victor Stinner in :issue:`42639`.) +* :class:`collections.abc.Callable` generic now flattens type parameters, similar + to what :data:`typing.Callable` currently does. This means that + ``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of + ``(int, str, str)``; previously this was ``([int, str], str)``. Code which + accesses the arguments via :func:`typing.get_args` or ``__args__`` need to account + for this change. Furthermore, :exc:`TypeError` may be raised for invalid forms + of parameterizing :class:`collections.abc.Callable` which may have passed + silently in Python 3.9. + (Contributed by Ken Jin in :issue:`42195`.) CPython bytecode changes ======================== From webhook-mailer at python.org Fri Dec 18 12:45:33 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 17:45:33 -0000 Subject: [Python-checkins] bpo-41891: ensure asyncio.wait_for waits for task completion (GH-22461) Message-ID: https://github.com/python/cpython/commit/a3dec9d8ec5ae142946ff6b94947a183d7c48f35 commit: a3dec9d8ec5ae142946ff6b94947a183d7c48f35 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T09:45:24-08:00 summary: bpo-41891: ensure asyncio.wait_for waits for task completion (GH-22461) (cherry picked from commit 17ef4319a34f5a2f95e7823dfb5f5b8cff11882d) Co-authored-by: Richard Kojedzinszky files: A Lib/test/test_asyncio/test_asyncio_waitfor.py A Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst M Lib/asyncio/tasks.py diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 1fa76a161e1e4..7094132583814 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -484,7 +484,10 @@ async def wait_for(fut, timeout, *, loop=None): return fut.result() else: fut.remove_done_callback(cb) - fut.cancel() + # We must ensure that the task is not running + # after wait_for() returns. + # See https://bugs.python.org/issue32751 + await _cancel_and_wait(fut, loop=loop) raise if fut.done(): diff --git a/Lib/test/test_asyncio/test_asyncio_waitfor.py b/Lib/test/test_asyncio/test_asyncio_waitfor.py new file mode 100644 index 0000000000000..2ca64abbeb527 --- /dev/null +++ b/Lib/test/test_asyncio/test_asyncio_waitfor.py @@ -0,0 +1,61 @@ +import asyncio +import unittest +import time + +def tearDownModule(): + asyncio.set_event_loop_policy(None) + + +class SlowTask: + """ Task will run for this defined time, ignoring cancel requests """ + TASK_TIMEOUT = 0.2 + + def __init__(self): + self.exited = False + + async def run(self): + exitat = time.monotonic() + self.TASK_TIMEOUT + + while True: + tosleep = exitat - time.monotonic() + if tosleep <= 0: + break + + try: + await asyncio.sleep(tosleep) + except asyncio.CancelledError: + pass + + self.exited = True + +class AsyncioWaitForTest(unittest.TestCase): + + async def atest_asyncio_wait_for_cancelled(self): + t = SlowTask() + + waitfortask = asyncio.create_task(asyncio.wait_for(t.run(), t.TASK_TIMEOUT * 2)) + await asyncio.sleep(0) + waitfortask.cancel() + await asyncio.wait({waitfortask}) + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_cancelled(self): + asyncio.run(self.atest_asyncio_wait_for_cancelled()) + + async def atest_asyncio_wait_for_timeout(self): + t = SlowTask() + + try: + await asyncio.wait_for(t.run(), t.TASK_TIMEOUT / 2) + except asyncio.TimeoutError: + pass + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_timeout(self): + asyncio.run(self.atest_asyncio_wait_for_timeout()) + + +if __name__ == '__main__': + unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst new file mode 100644 index 0000000000000..75c2512780315 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst @@ -0,0 +1 @@ +Ensure asyncio.wait_for waits for task completion From webhook-mailer at python.org Fri Dec 18 13:38:06 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 18:38:06 -0000 Subject: [Python-checkins] [3.8] bpo-17140: Document multiprocessing's ThreadPool (GH-23812) (GH-23835) Message-ID: https://github.com/python/cpython/commit/d21d29ab5b8741da056ac09c49c759b6ccbf264a commit: d21d29ab5b8741da056ac09c49c759b6ccbf264a branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T10:37:57-08:00 summary: [3.8] bpo-17140: Document multiprocessing's ThreadPool (GH-23812) (GH-23835) Up until now, the `multiprocessing.pool.ThreadPool` class has gone undocumented, despite being a public class in multiprocessing that is included in `multiprocessing.pool.__all__`. (cherry picked from commit 84ebcf271a2cc8bfd1762acb279502b8b6ef236e) Co-authored-by: Matt Wozniski files: A Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst M Doc/library/multiprocessing.rst diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 80bb0857949dc..041410900dff6 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -2651,6 +2651,46 @@ The :mod:`multiprocessing.dummy` module :mod:`multiprocessing.dummy` replicates the API of :mod:`multiprocessing` but is no more than a wrapper around the :mod:`threading` module. +.. currentmodule:: multiprocessing.pool + +In particular, the ``Pool`` function provided by :mod:`multiprocessing.dummy` +returns an instance of :class:`ThreadPool`, which is a subclass of +:class:`Pool` that supports all the same method calls but uses a pool of +worker threads rather than worker processes. + + +.. class:: ThreadPool([processes[, initializer[, initargs]]]) + + A thread pool object which controls a pool of worker threads to which jobs + can be submitted. :class:`ThreadPool` instances are fully interface + compatible with :class:`Pool` instances, and their resources must also be + properly managed, either by using the pool as a context manager or by + calling :meth:`~multiprocessing.pool.Pool.close` and + :meth:`~multiprocessing.pool.Pool.terminate` manually. + + *processes* is the number of worker threads to use. If *processes* is + ``None`` then the number returned by :func:`os.cpu_count` is used. + + If *initializer* is not ``None`` then each worker process will call + ``initializer(*initargs)`` when it starts. + + Unlike :class:`Pool`, *maxtasksperchild* and *context* cannot be provided. + + .. note:: + + A :class:`ThreadPool` shares the same interface as :class:`Pool`, which + is designed around a pool of processes and predates the introduction of + the :class:`concurrent.futures` module. As such, it inherits some + operations that don't make sense for a pool backed by threads, and it + has its own type for representing the status of asynchronous jobs, + :class:`AsyncResult`, that is not understood by any other libraries. + + Users should generally prefer to use + :class:`concurrent.futures.ThreadPoolExecutor`, which has a simpler + interface that was designed around threads from the start, and which + returns :class:`concurrent.futures.Future` instances that are + compatible with many other libraries, including :mod:`asyncio`. + .. _multiprocessing-programming: diff --git a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst new file mode 100644 index 0000000000000..cb1fd23a56e63 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst @@ -0,0 +1 @@ +Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. From webhook-mailer at python.org Fri Dec 18 13:38:58 2020 From: webhook-mailer at python.org (ned-deily) Date: Fri, 18 Dec 2020 18:38:58 -0000 Subject: [Python-checkins] bpo-17140: Document multiprocessing's ThreadPool (GH-23812) (GH-23836) Message-ID: https://github.com/python/cpython/commit/00278d4e616315e64557bff014574c079e6e96ff commit: 00278d4e616315e64557bff014574c079e6e96ff branch: 3.7 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ned-deily date: 2020-12-18T13:38:49-05:00 summary: bpo-17140: Document multiprocessing's ThreadPool (GH-23812) (GH-23836) Up until now, the `multiprocessing.pool.ThreadPool` class has gone undocumented, despite being a public class in multiprocessing that is included in `multiprocessing.pool.__all__`. (cherry picked from commit 84ebcf271a2cc8bfd1762acb279502b8b6ef236e) Co-authored-by: Matt Wozniski files: A Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst M Doc/library/multiprocessing.rst diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 1b850ebced5eb..3dc18bc8f80b6 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -2617,6 +2617,46 @@ The :mod:`multiprocessing.dummy` module :mod:`multiprocessing.dummy` replicates the API of :mod:`multiprocessing` but is no more than a wrapper around the :mod:`threading` module. +.. currentmodule:: multiprocessing.pool + +In particular, the ``Pool`` function provided by :mod:`multiprocessing.dummy` +returns an instance of :class:`ThreadPool`, which is a subclass of +:class:`Pool` that supports all the same method calls but uses a pool of +worker threads rather than worker processes. + + +.. class:: ThreadPool([processes[, initializer[, initargs]]]) + + A thread pool object which controls a pool of worker threads to which jobs + can be submitted. :class:`ThreadPool` instances are fully interface + compatible with :class:`Pool` instances, and their resources must also be + properly managed, either by using the pool as a context manager or by + calling :meth:`~multiprocessing.pool.Pool.close` and + :meth:`~multiprocessing.pool.Pool.terminate` manually. + + *processes* is the number of worker threads to use. If *processes* is + ``None`` then the number returned by :func:`os.cpu_count` is used. + + If *initializer* is not ``None`` then each worker process will call + ``initializer(*initargs)`` when it starts. + + Unlike :class:`Pool`, *maxtasksperchild* and *context* cannot be provided. + + .. note:: + + A :class:`ThreadPool` shares the same interface as :class:`Pool`, which + is designed around a pool of processes and predates the introduction of + the :class:`concurrent.futures` module. As such, it inherits some + operations that don't make sense for a pool backed by threads, and it + has its own type for representing the status of asynchronous jobs, + :class:`AsyncResult`, that is not understood by any other libraries. + + Users should generally prefer to use + :class:`concurrent.futures.ThreadPoolExecutor`, which has a simpler + interface that was designed around threads from the start, and which + returns :class:`concurrent.futures.Future` instances that are + compatible with many other libraries, including :mod:`asyncio`. + .. _multiprocessing-programming: diff --git a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst new file mode 100644 index 0000000000000..cb1fd23a56e63 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst @@ -0,0 +1 @@ +Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. From webhook-mailer at python.org Fri Dec 18 14:01:00 2020 From: webhook-mailer at python.org (JulienPalard) Date: Fri, 18 Dec 2020 19:01:00 -0000 Subject: [Python-checkins] bpo-34398: Allow glossary results to show up on search page (GH-8773) Message-ID: https://github.com/python/cpython/commit/8c5d0347efd16f16dfb9596715e449cd928b89c8 commit: 8c5d0347efd16f16dfb9596715e449cd928b89c8 branch: master author: Ammar Askar committer: JulienPalard date: 2020-12-18T20:00:51+01:00 summary: bpo-34398: Allow glossary results to show up on search page (GH-8773) files: A Doc/tools/extensions/glossary_search.py A Doc/tools/templates/search.html A Misc/NEWS.d/next/Documentation/2019-03-04-18-51-21.bpo-34398.YedUqW.rst M Doc/conf.py diff --git a/Doc/conf.py b/Doc/conf.py index 079d17717f381..6b88c23a44473 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -15,8 +15,7 @@ extensions = ['sphinx.ext.coverage', 'sphinx.ext.doctest', 'pyspecific', 'c_annotations', 'escape4chm', - 'asdl_highlight', 'peg_highlight'] - + 'asdl_highlight', 'peg_highlight', 'glossary_search'] doctest_global_setup = ''' try: diff --git a/Doc/tools/extensions/glossary_search.py b/Doc/tools/extensions/glossary_search.py new file mode 100644 index 0000000000000..34d227d670243 --- /dev/null +++ b/Doc/tools/extensions/glossary_search.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +""" + glossary_search.py + ~~~~~~~~~~~~~~~~ + + Feature search results for glossary items prominently. + + :license: Python license. +""" +from os import path +from sphinx.addnodes import glossary +from sphinx.util import logging +from docutils.nodes import definition_list_item +import json + + +logger = logging.getLogger(__name__) + + +def process_glossary_nodes(app, doctree, fromdocname): + if app.builder.format != 'html': + return + + terms = {} + + for node in doctree.traverse(glossary): + for glossary_item in node.traverse(definition_list_item): + term = glossary_item[0].astext().lower() + definition = glossary_item[1] + + rendered = app.builder.render_partial(definition) + terms[term] = { + 'title': glossary_item[0].astext(), + 'body': rendered['html_body'] + } + + if hasattr(app.env, 'glossary_terms'): + app.env.glossary_terms.update(terms) + else: + app.env.glossary_terms = terms + +def on_build_finish(app, exc): + if not hasattr(app.env, 'glossary_terms'): + return + if not app.env.glossary_terms: + return + + logger.info('Writing glossary.json', color='green') + with open(path.join(app.outdir, '_static', 'glossary.json'), 'w') as f: + json.dump(app.env.glossary_terms, f) + + +def setup(app): + app.connect('doctree-resolved', process_glossary_nodes) + app.connect('build-finished', on_build_finish) + + return {'version': '0.1', 'parallel_read_safe': True} diff --git a/Doc/tools/templates/search.html b/Doc/tools/templates/search.html new file mode 100644 index 0000000000000..cf20c2e1d4ff8 --- /dev/null +++ b/Doc/tools/templates/search.html @@ -0,0 +1,48 @@ +{% extends "!search.html" %} +{% block extrahead %} + {{ super() }} + +{% endblock %} \ No newline at end of file diff --git a/Misc/NEWS.d/next/Documentation/2019-03-04-18-51-21.bpo-34398.YedUqW.rst b/Misc/NEWS.d/next/Documentation/2019-03-04-18-51-21.bpo-34398.YedUqW.rst new file mode 100644 index 0000000000000..4693cecdb7b39 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2019-03-04-18-51-21.bpo-34398.YedUqW.rst @@ -0,0 +1,2 @@ +Prominently feature listings from the glossary in documentation search +results. Patch by Ammar Askar. From webhook-mailer at python.org Fri Dec 18 14:10:29 2020 From: webhook-mailer at python.org (JulienPalard) Date: Fri, 18 Dec 2020 19:10:29 -0000 Subject: [Python-checkins] bpo-36769: Document that fnmatch.filter supports any kind of iterable (#13039) Message-ID: https://github.com/python/cpython/commit/e8d22642105d57007ab1242848a8cbadc7f179df commit: e8d22642105d57007ab1242848a8cbadc7f179df branch: master author: Andre Delfino committer: JulienPalard date: 2020-12-18T20:10:20+01:00 summary: bpo-36769: Document that fnmatch.filter supports any kind of iterable (#13039) files: M Doc/library/fnmatch.rst M Lib/fnmatch.py diff --git a/Doc/library/fnmatch.rst b/Doc/library/fnmatch.rst index ce07d326b395d..925f08e914685 100644 --- a/Doc/library/fnmatch.rst +++ b/Doc/library/fnmatch.rst @@ -75,7 +75,7 @@ patterns. .. function:: filter(names, pattern) - Return the subset of the list of *names* that match *pattern*. It is the same as + Construct a list from those elements of the iterable *names* that match *pattern*. It is the same as ``[n for n in names if fnmatch(n, pattern)]``, but implemented more efficiently. diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py index 0eb1802bdb53c..7c52c23067d40 100644 --- a/Lib/fnmatch.py +++ b/Lib/fnmatch.py @@ -52,7 +52,7 @@ def _compile_pattern(pat): return re.compile(res).match def filter(names, pat): - """Return the subset of the list NAMES that match PAT.""" + """Construct a list from those elements of the iterable NAMES that match PAT.""" result = [] pat = os.path.normcase(pat) match = _compile_pattern(pat) From webhook-mailer at python.org Fri Dec 18 14:19:24 2020 From: webhook-mailer at python.org (1st1) Date: Fri, 18 Dec 2020 19:19:24 -0000 Subject: [Python-checkins] bpo-41891: ensure asyncio.wait_for waits for task completion (GH-22461) (#23840) Message-ID: https://github.com/python/cpython/commit/82dbfd5a04863d8b6363527e6a34a90c9aa5691b commit: 82dbfd5a04863d8b6363527e6a34a90c9aa5691b branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: 1st1 date: 2020-12-18T11:19:10-08:00 summary: bpo-41891: ensure asyncio.wait_for waits for task completion (GH-22461) (#23840) (cherry picked from commit 17ef4319a34f5a2f95e7823dfb5f5b8cff11882d) Co-authored-by: Richard Kojedzinszky Co-authored-by: Richard Kojedzinszky files: A Lib/test/test_asyncio/test_asyncio_waitfor.py A Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst M Lib/asyncio/tasks.py diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index f486b67229411..d6262ae75e656 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -471,7 +471,10 @@ async def wait_for(fut, timeout, *, loop=None): return fut.result() else: fut.remove_done_callback(cb) - fut.cancel() + # We must ensure that the task is not running + # after wait_for() returns. + # See https://bugs.python.org/issue32751 + await _cancel_and_wait(fut, loop=loop) raise if fut.done(): diff --git a/Lib/test/test_asyncio/test_asyncio_waitfor.py b/Lib/test/test_asyncio/test_asyncio_waitfor.py new file mode 100644 index 0000000000000..2ca64abbeb527 --- /dev/null +++ b/Lib/test/test_asyncio/test_asyncio_waitfor.py @@ -0,0 +1,61 @@ +import asyncio +import unittest +import time + +def tearDownModule(): + asyncio.set_event_loop_policy(None) + + +class SlowTask: + """ Task will run for this defined time, ignoring cancel requests """ + TASK_TIMEOUT = 0.2 + + def __init__(self): + self.exited = False + + async def run(self): + exitat = time.monotonic() + self.TASK_TIMEOUT + + while True: + tosleep = exitat - time.monotonic() + if tosleep <= 0: + break + + try: + await asyncio.sleep(tosleep) + except asyncio.CancelledError: + pass + + self.exited = True + +class AsyncioWaitForTest(unittest.TestCase): + + async def atest_asyncio_wait_for_cancelled(self): + t = SlowTask() + + waitfortask = asyncio.create_task(asyncio.wait_for(t.run(), t.TASK_TIMEOUT * 2)) + await asyncio.sleep(0) + waitfortask.cancel() + await asyncio.wait({waitfortask}) + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_cancelled(self): + asyncio.run(self.atest_asyncio_wait_for_cancelled()) + + async def atest_asyncio_wait_for_timeout(self): + t = SlowTask() + + try: + await asyncio.wait_for(t.run(), t.TASK_TIMEOUT / 2) + except asyncio.TimeoutError: + pass + + self.assertTrue(t.exited) + + def test_asyncio_wait_for_timeout(self): + asyncio.run(self.atest_asyncio_wait_for_timeout()) + + +if __name__ == '__main__': + unittest.main() diff --git a/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst new file mode 100644 index 0000000000000..75c2512780315 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst @@ -0,0 +1 @@ +Ensure asyncio.wait_for waits for task completion From webhook-mailer at python.org Fri Dec 18 14:34:37 2020 From: webhook-mailer at python.org (miss-islington) Date: Fri, 18 Dec 2020 19:34:37 -0000 Subject: [Python-checkins] bpo-36769: Document that fnmatch.filter supports any kind of iterable (GH-13039) Message-ID: https://github.com/python/cpython/commit/4b412e830d0a7d3f30af60b9eb285558511d90af commit: 4b412e830d0a7d3f30af60b9eb285558511d90af branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T11:34:27-08:00 summary: bpo-36769: Document that fnmatch.filter supports any kind of iterable (GH-13039) (cherry picked from commit e8d22642105d57007ab1242848a8cbadc7f179df) Co-authored-by: Andre Delfino files: M Doc/library/fnmatch.rst M Lib/fnmatch.py diff --git a/Doc/library/fnmatch.rst b/Doc/library/fnmatch.rst index ce07d326b395d..925f08e914685 100644 --- a/Doc/library/fnmatch.rst +++ b/Doc/library/fnmatch.rst @@ -75,7 +75,7 @@ patterns. .. function:: filter(names, pattern) - Return the subset of the list of *names* that match *pattern*. It is the same as + Construct a list from those elements of the iterable *names* that match *pattern*. It is the same as ``[n for n in names if fnmatch(n, pattern)]``, but implemented more efficiently. diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py index 0eb1802bdb53c..7c52c23067d40 100644 --- a/Lib/fnmatch.py +++ b/Lib/fnmatch.py @@ -52,7 +52,7 @@ def _compile_pattern(pat): return re.compile(res).match def filter(names, pat): - """Return the subset of the list NAMES that match PAT.""" + """Construct a list from those elements of the iterable NAMES that match PAT.""" result = [] pat = os.path.normcase(pat) match = _compile_pattern(pat) From webhook-mailer at python.org Fri Dec 18 19:10:04 2020 From: webhook-mailer at python.org (miss-islington) Date: Sat, 19 Dec 2020 00:10:04 -0000 Subject: [Python-checkins] bpo-24792: Fix zipimporter masking the cause of import errors (GH-22204) Message-ID: https://github.com/python/cpython/commit/fb34096140bbb74c81500dd8bbc3c69c1d24d9ab commit: fb34096140bbb74c81500dd8bbc3c69c1d24d9ab branch: master author: Irit Katriel committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-18T16:09:54-08:00 summary: bpo-24792: Fix zipimporter masking the cause of import errors (GH-22204) zipimport's _unmarshal_code swallows import errors and then _get_module_code doesn't know the cause of the error, and returns the generic, and sometimes incorrect, 'could not find...'. Automerge-Triggered-By: GH:brettcannon files: A Misc/NEWS.d/next/Library/2020-09-11-16-07-00.bpo-24792.Z-ARra.rst M Doc/library/zipimport.rst M Lib/test/test_zipimport.py M Lib/zipimport.py M Python/importlib_zipimport.h diff --git a/Doc/library/zipimport.rst b/Doc/library/zipimport.rst index 8d579f21c7e8b..62e1e47e980e1 100644 --- a/Doc/library/zipimport.rst +++ b/Doc/library/zipimport.rst @@ -121,7 +121,7 @@ zipimporter Objects .. method:: get_code(fullname) Return the code object for the specified module. Raise - :exc:`ZipImportError` if the module couldn't be found. + :exc:`ZipImportError` if the module couldn't be imported. .. method:: get_data(pathname) @@ -137,7 +137,7 @@ zipimporter Objects Return the value ``__file__`` would be set to if the specified module was imported. Raise :exc:`ZipImportError` if the module couldn't be - found. + imported. .. versionadded:: 3.1 @@ -159,14 +159,13 @@ zipimporter Objects .. method:: load_module(fullname) Load the module specified by *fullname*. *fullname* must be the fully - qualified (dotted) module name. It returns the imported module, or raises - :exc:`ZipImportError` if it wasn't found. + qualified (dotted) module name. Returns the imported module on success, + raises :exc:`ZipImportError` on failure. .. deprecated:: 3.10 Use :meth:`exec_module` instead. - .. attribute:: archive The file name of the importer's associated ZIP file, without a possible diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py index 6dea2b16287ad..d59ef1ed6ff81 100644 --- a/Lib/test/test_zipimport.py +++ b/Lib/test/test_zipimport.py @@ -242,10 +242,10 @@ def testBadMagic2(self): files = {TESTMOD + pyc_ext: (NOW, badmagic_pyc)} try: self.doTest(".py", files, TESTMOD) - except ImportError: - pass - else: - self.fail("expected ImportError; import from bad pyc") + self.fail("This should not be reached") + except zipimport.ZipImportError as exc: + self.assertIsInstance(exc.__cause__, ImportError) + self.assertIn("magic number", exc.__cause__.msg) def testBadMTime(self): badtime_pyc = bytearray(test_pyc) diff --git a/Lib/zipimport.py b/Lib/zipimport.py index 02e4fd38d0e2a..ce3e00e24faf2 100644 --- a/Lib/zipimport.py +++ b/Lib/zipimport.py @@ -185,7 +185,7 @@ def get_code(self, fullname): """get_code(fullname) -> code object. Return the code object for the specified module. Raise ZipImportError - if the module couldn't be found. + if the module couldn't be imported. """ code, ispackage, modpath = _get_module_code(self, fullname) return code @@ -215,7 +215,8 @@ def get_data(self, pathname): def get_filename(self, fullname): """get_filename(fullname) -> filename string. - Return the filename for the specified module. + Return the filename for the specified module or raise ZipImportError + if it couldn't be imported. """ # Deciding the filename requires working out where the code # would come from if the module was actually loaded @@ -267,7 +268,7 @@ def load_module(self, fullname): Load the module specified by 'fullname'. 'fullname' must be the fully qualified (dotted) module name. It returns the imported - module, or raises ZipImportError if it wasn't found. + module, or raises ZipImportError if it could not be imported. Deprecated since Python 3.10. Use exec_module() instead. """ @@ -613,20 +614,15 @@ def _eq_mtime(t1, t2): # Given the contents of a .py[co] file, unmarshal the data -# and return the code object. Return None if it the magic word doesn't -# match, or if the recorded .py[co] metadata does not match the source, -# (we do this instead of raising an exception as we fall back -# to .py if available and we don't want to mask other errors). +# and return the code object. Raises ImportError it the magic word doesn't +# match, or if the recorded .py[co] metadata does not match the source. def _unmarshal_code(self, pathname, fullpath, fullname, data): exc_details = { 'name': fullname, 'path': fullpath, } - try: - flags = _bootstrap_external._classify_pyc(data, fullname, exc_details) - except ImportError: - return None + flags = _bootstrap_external._classify_pyc(data, fullname, exc_details) hash_based = flags & 0b1 != 0 if hash_based: @@ -640,11 +636,8 @@ def _unmarshal_code(self, pathname, fullpath, fullname, data): source_bytes, ) - try: - _bootstrap_external._validate_hash_pyc( - data, source_hash, fullname, exc_details) - except ImportError: - return None + _bootstrap_external._validate_hash_pyc( + data, source_hash, fullname, exc_details) else: source_mtime, source_size = \ _get_mtime_and_size_of_source(self, fullpath) @@ -730,6 +723,7 @@ def _get_pyc_source(self, path): # 'fullname'. def _get_module_code(self, fullname): path = _get_module_path(self, fullname) + import_error = None for suffix, isbytecode, ispackage in _zip_searchorder: fullpath = path + suffix _bootstrap._verbose_message('trying {}{}{}', self.archive, path_sep, fullpath, verbosity=2) @@ -740,8 +734,12 @@ def _get_module_code(self, fullname): else: modpath = toc_entry[0] data = _get_data(self.archive, toc_entry) + code = None if isbytecode: - code = _unmarshal_code(self, modpath, fullpath, fullname, data) + try: + code = _unmarshal_code(self, modpath, fullpath, fullname, data) + except ImportError as exc: + import_error = exc else: code = _compile_source(modpath, data) if code is None: @@ -751,4 +749,8 @@ def _get_module_code(self, fullname): modpath = toc_entry[0] return code, ispackage, modpath else: - raise ZipImportError(f"can't find module {fullname!r}", name=fullname) + if import_error: + msg = f"module load failed: {import_error}" + raise ZipImportError(msg, name=fullname) from import_error + else: + raise ZipImportError(f"can't find module {fullname!r}", name=fullname) diff --git a/Misc/NEWS.d/next/Library/2020-09-11-16-07-00.bpo-24792.Z-ARra.rst b/Misc/NEWS.d/next/Library/2020-09-11-16-07-00.bpo-24792.Z-ARra.rst new file mode 100644 index 0000000000000..4f1f18a558408 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-11-16-07-00.bpo-24792.Z-ARra.rst @@ -0,0 +1 @@ +Fixed bug where :mod:`zipimporter` sometimes reports an incorrect cause of import errors. \ No newline at end of file diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 38f148ea78382..96169c16edcd6 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -294,7 +294,7 @@ const unsigned char _Py_M__zipimport[] = { 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, 67,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,122, - 163,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, + 166,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, 109,101,41,32,45,62,32,99,111,100,101,32,111,98,106,101, 99,116,46,10,10,32,32,32,32,32,32,32,32,82,101,116, 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, @@ -303,718 +303,727 @@ const unsigned char _Py_M__zipimport[] = { 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,78,169,1,218,16,95,103,101,116,95,109,111, - 100,117,108,101,95,99,111,100,101,169,5,114,32,0,0,0, - 114,38,0,0,0,218,4,99,111,100,101,218,9,105,115,112, - 97,99,107,97,103,101,114,40,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,103,101,116,95, - 99,111,100,101,184,0,0,0,115,6,0,0,0,16,6,4, - 1,255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0,0,67,0, - 0,0,115,112,0,0,0,116,0,114,16,124,1,160,1,116, - 0,116,2,161,2,125,1,124,1,125,2,124,1,160,3,124, - 0,106,4,116,2,23,0,161,1,114,58,124,1,116,5,124, - 0,106,4,116,2,23,0,131,1,100,1,133,2,25,0,125, - 2,122,14,124,0,106,6,124,2,25,0,125,3,87,0,110, - 26,4,0,116,7,121,98,1,0,1,0,1,0,116,8,100, - 2,100,3,124,2,131,3,130,1,119,0,116,9,124,0,106, - 4,124,3,131,2,83,0,41,4,122,154,103,101,116,95,100, - 97,116,97,40,112,97,116,104,110,97,109,101,41,32,45,62, - 32,115,116,114,105,110,103,32,119,105,116,104,32,102,105,108, - 101,32,100,97,116,97,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,116,104,101,32,100,97,116,97, - 32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104, - 32,39,112,97,116,104,110,97,109,101,39,46,32,82,97,105, - 115,101,32,79,83,69,114,114,111,114,32,105,102,10,32,32, - 32,32,32,32,32,32,116,104,101,32,102,105,108,101,32,119, - 97,115,110,39,116,32,102,111,117,110,100,46,10,32,32,32, - 32,32,32,32,32,78,114,0,0,0,0,218,0,41,10,114, - 18,0,0,0,114,19,0,0,0,114,20,0,0,0,218,10, - 115,116,97,114,116,115,119,105,116,104,114,29,0,0,0,218, - 3,108,101,110,114,28,0,0,0,114,26,0,0,0,114,22, - 0,0,0,218,9,95,103,101,116,95,100,97,116,97,41,4, - 114,32,0,0,0,218,8,112,97,116,104,110,97,109,101,90, - 3,107,101,121,218,9,116,111,99,95,101,110,116,114,121,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, - 103,101,116,95,100,97,116,97,194,0,0,0,115,22,0,0, - 0,4,6,12,1,4,2,16,1,22,1,2,2,14,1,12, - 1,14,1,12,1,255,128,122,20,122,105,112,105,109,112,111, - 114,116,101,114,46,103,101,116,95,100,97,116,97,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, - 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, - 1,131,2,92,3,125,2,125,3,125,4,124,4,83,0,41, - 2,122,106,103,101,116,95,102,105,108,101,110,97,109,101,40, - 102,117,108,108,110,97,109,101,41,32,45,62,32,102,105,108, - 101,110,97,109,101,32,115,116,114,105,110,103,46,10,10,32, - 32,32,32,32,32,32,32,82,101,116,117,114,110,32,116,104, - 101,32,102,105,108,101,110,97,109,101,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,10,32,32,32,32,32,32,32,32,78,114,47, - 0,0,0,114,49,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,12,103,101,116,95,102,105,108, - 101,110,97,109,101,215,0,0,0,115,6,0,0,0,16,7, - 4,1,255,128,122,24,122,105,112,105,109,112,111,114,116,101, - 114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,8, - 0,0,0,67,0,0,0,115,126,0,0,0,116,0,124,0, - 124,1,131,2,125,2,124,2,100,1,117,0,114,36,116,1, - 100,2,124,1,155,2,157,2,124,1,100,3,141,2,130,1, - 116,2,124,0,124,1,131,2,125,3,124,2,114,64,116,3, - 160,4,124,3,100,4,161,2,125,4,110,10,124,3,155,0, - 100,5,157,2,125,4,122,14,124,0,106,5,124,4,25,0, - 125,5,87,0,110,20,4,0,116,6,121,108,1,0,1,0, - 1,0,89,0,100,1,83,0,119,0,116,7,124,0,106,8, - 124,5,131,2,160,9,161,0,83,0,41,6,122,253,103,101, - 116,95,115,111,117,114,99,101,40,102,117,108,108,110,97,109, - 101,41,32,45,62,32,115,111,117,114,99,101,32,115,116,114, - 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,32,116,104,101,32,115,111,117,114,99,101,32, - 99,111,100,101,32,102,111,114,32,116,104,101,32,115,112,101, - 99,105,102,105,101,100,32,109,111,100,117,108,101,46,32,82, - 97,105,115,101,32,90,105,112,73,109,112,111,114,116,69,114, - 114,111,114,10,32,32,32,32,32,32,32,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110, - 39,116,32,98,101,32,102,111,117,110,100,44,32,114,101,116, - 117,114,110,32,78,111,110,101,32,105,102,32,116,104,101,32, - 97,114,99,104,105,118,101,32,100,111,101,115,10,32,32,32, - 32,32,32,32,32,99,111,110,116,97,105,110,32,116,104,101, - 32,109,111,100,117,108,101,44,32,98,117,116,32,104,97,115, - 32,110,111,32,115,111,117,114,99,101,32,102,111,114,32,105, - 116,46,10,32,32,32,32,32,32,32,32,78,250,18,99,97, - 110,39,116,32,102,105,110,100,32,109,111,100,117,108,101,32, - 169,1,114,44,0,0,0,250,11,95,95,105,110,105,116,95, - 95,46,112,121,250,3,46,112,121,41,10,114,35,0,0,0, - 114,3,0,0,0,114,36,0,0,0,114,21,0,0,0,114, - 30,0,0,0,114,28,0,0,0,114,26,0,0,0,114,56, - 0,0,0,114,29,0,0,0,218,6,100,101,99,111,100,101, - 41,6,114,32,0,0,0,114,38,0,0,0,114,39,0,0, - 0,114,13,0,0,0,218,8,102,117,108,108,112,97,116,104, - 114,58,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, - 226,0,0,0,115,26,0,0,0,10,7,8,1,18,1,10, - 2,4,1,14,1,10,2,2,2,14,1,12,1,8,2,16, - 1,255,128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0, - 67,0,0,0,115,40,0,0,0,116,0,124,0,124,1,131, - 2,125,2,124,2,100,1,117,0,114,36,116,1,100,2,124, - 1,155,2,157,2,124,1,100,3,141,2,130,1,124,2,83, - 0,41,4,122,171,105,115,95,112,97,99,107,97,103,101,40, - 102,117,108,108,110,97,109,101,41,32,45,62,32,98,111,111, - 108,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, - 114,110,32,84,114,117,101,32,105,102,32,116,104,101,32,109, - 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, - 98,121,32,102,117,108,108,110,97,109,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,46,10,32,32,32,32,32,32, - 32,32,82,97,105,115,101,32,90,105,112,73,109,112,111,114, - 116,69,114,114,111,114,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,99,111,117,108,100,110,39,116,32,98,101, - 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, - 78,114,61,0,0,0,114,62,0,0,0,41,2,114,35,0, - 0,0,114,3,0,0,0,41,3,114,32,0,0,0,114,38, - 0,0,0,114,39,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,114,43,0,0,0,252,0,0,0, - 115,10,0,0,0,10,6,8,1,18,1,4,1,255,128,122, - 22,122,105,112,105,109,112,111,114,116,101,114,46,105,115,95, - 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,9,0,0,0,8,0,0,0,67,0,0,0, - 115,252,0,0,0,100,1,125,2,116,0,160,1,124,2,116, - 2,161,2,1,0,116,3,124,0,124,1,131,2,92,3,125, - 3,125,4,125,5,116,4,106,5,160,6,124,1,161,1,125, - 6,124,6,100,2,117,0,115,62,116,7,124,6,116,8,131, - 2,115,80,116,8,124,1,131,1,125,6,124,6,116,4,106, - 5,124,1,60,0,124,0,124,6,95,9,122,84,124,4,114, - 124,116,10,124,0,124,1,131,2,125,7,116,11,160,12,124, - 0,106,13,124,7,161,2,125,8,124,8,103,1,124,6,95, - 14,116,15,124,6,100,3,131,2,115,140,116,16,124,6,95, - 16,116,11,160,17,124,6,106,18,124,1,124,5,161,3,1, - 0,116,19,124,3,124,6,106,18,131,2,1,0,87,0,110, - 16,1,0,1,0,1,0,116,4,106,5,124,1,61,0,130, - 0,122,14,116,4,106,5,124,1,25,0,125,6,87,0,110, - 30,4,0,116,20,121,232,1,0,1,0,1,0,116,21,100, - 4,124,1,155,2,100,5,157,3,131,1,130,1,119,0,116, - 22,160,23,100,6,124,1,124,5,161,3,1,0,124,6,83, - 0,41,7,97,55,1,0,0,108,111,97,100,95,109,111,100, - 117,108,101,40,102,117,108,108,110,97,109,101,41,32,45,62, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,76,111,97,100,32,116,104,101,32,109,111,100,117,108, - 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,39, - 102,117,108,108,110,97,109,101,39,46,32,39,102,117,108,108, - 110,97,109,101,39,32,109,117,115,116,32,98,101,32,116,104, - 101,10,32,32,32,32,32,32,32,32,102,117,108,108,121,32, - 113,117,97,108,105,102,105,101,100,32,40,100,111,116,116,101, - 100,41,32,109,111,100,117,108,101,32,110,97,109,101,46,32, - 73,116,32,114,101,116,117,114,110,115,32,116,104,101,32,105, - 109,112,111,114,116,101,100,10,32,32,32,32,32,32,32,32, - 109,111,100,117,108,101,44,32,111,114,32,114,97,105,115,101, - 115,32,90,105,112,73,109,112,111,114,116,69,114,114,111,114, - 32,105,102,32,105,116,32,119,97,115,110,39,116,32,102,111, - 117,110,100,46,10,10,32,32,32,32,32,32,32,32,68,101, - 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, - 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,122, - 114,122,105,112,105,109,112,111,114,116,46,122,105,112,105,109, - 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, - 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, - 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, - 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, - 101,97,100,78,218,12,95,95,98,117,105,108,116,105,110,115, - 95,95,122,14,76,111,97,100,101,100,32,109,111,100,117,108, - 101,32,122,25,32,110,111,116,32,102,111,117,110,100,32,105, - 110,32,115,121,115,46,109,111,100,117,108,101,115,122,30,105, - 109,112,111,114,116,32,123,125,32,35,32,108,111,97,100,101, - 100,32,102,114,111,109,32,90,105,112,32,123,125,41,24,218, - 9,95,119,97,114,110,105,110,103,115,90,4,119,97,114,110, - 218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,114, - 110,105,110,103,114,48,0,0,0,218,3,115,121,115,218,7, - 109,111,100,117,108,101,115,218,3,103,101,116,114,15,0,0, - 0,218,12,95,109,111,100,117,108,101,95,116,121,112,101,218, - 10,95,95,108,111,97,100,101,114,95,95,114,36,0,0,0, - 114,21,0,0,0,114,30,0,0,0,114,29,0,0,0,90, - 8,95,95,112,97,116,104,95,95,218,7,104,97,115,97,116, - 116,114,114,68,0,0,0,90,14,95,102,105,120,95,117,112, - 95,109,111,100,117,108,101,218,8,95,95,100,105,99,116,95, - 95,218,4,101,120,101,99,114,26,0,0,0,218,11,73,109, - 112,111,114,116,69,114,114,111,114,114,45,0,0,0,218,16, - 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101, - 41,9,114,32,0,0,0,114,38,0,0,0,218,3,109,115, - 103,114,50,0,0,0,114,51,0,0,0,114,40,0,0,0, - 90,3,109,111,100,114,13,0,0,0,114,66,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,11, - 108,111,97,100,95,109,111,100,117,108,101,9,1,0,0,115, - 54,0,0,0,4,9,12,2,16,1,12,1,18,1,8,1, - 10,1,6,1,2,2,4,1,10,3,14,1,8,1,10,2, - 6,1,16,1,16,1,6,1,8,1,2,1,2,2,14,1, - 12,1,18,1,14,1,4,1,255,128,122,23,122,105,112,105, - 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,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,64,0,0, - 0,122,20,124,0,160,0,124,1,161,1,115,18,87,0,100, - 1,83,0,87,0,110,20,4,0,116,1,121,40,1,0,1, - 0,1,0,89,0,100,1,83,0,119,0,100,2,100,3,108, - 2,109,3,125,2,1,0,124,2,124,0,124,1,131,2,83, - 0,41,4,122,204,82,101,116,117,114,110,32,116,104,101,32, - 82,101,115,111,117,114,99,101,82,101,97,100,101,114,32,102, - 111,114,32,97,32,112,97,99,107,97,103,101,32,105,110,32, - 97,32,122,105,112,32,102,105,108,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,39,102,117,108,108,110,97,109, - 101,39,32,105,115,32,97,32,112,97,99,107,97,103,101,32, - 119,105,116,104,105,110,32,116,104,101,32,122,105,112,32,102, - 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,10, - 32,32,32,32,32,32,32,32,39,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,39,32,111,98,106,101,99,116,32, - 102,111,114,32,116,104,101,32,112,97,99,107,97,103,101,46, - 32,32,79,116,104,101,114,119,105,115,101,32,114,101,116,117, - 114,110,32,78,111,110,101,46,10,32,32,32,32,32,32,32, - 32,78,114,0,0,0,0,41,1,218,9,90,105,112,82,101, - 97,100,101,114,41,4,114,43,0,0,0,114,3,0,0,0, - 90,17,105,109,112,111,114,116,108,105,98,46,114,101,97,100, - 101,114,115,114,83,0,0,0,41,3,114,32,0,0,0,114, - 38,0,0,0,114,83,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,19,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,52,1,0, - 0,115,16,0,0,0,2,6,10,1,10,1,12,1,8,1, - 12,1,10,1,255,128,122,31,122,105,112,105,109,112,111,114, - 116,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, - 95,114,101,97,100,101,114,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, - 115,24,0,0,0,100,1,124,0,106,0,155,0,116,1,155, - 0,124,0,106,2,155,0,100,2,157,5,83,0,41,3,78, - 122,21,60,122,105,112,105,109,112,111,114,116,101,114,32,111, - 98,106,101,99,116,32,34,122,2,34,62,41,3,114,29,0, - 0,0,114,20,0,0,0,114,31,0,0,0,41,1,114,32, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,8,95,95,114,101,112,114,95,95,67,1,0,0, - 115,4,0,0,0,24,1,255,128,122,20,122,105,112,105,109, - 112,111,114,116,101,114,46,95,95,114,101,112,114,95,95,41, - 1,78,41,1,78,41,1,78,41,16,114,6,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,7,95,95,100,111,99, - 95,95,114,34,0,0,0,114,41,0,0,0,114,42,0,0, - 0,114,46,0,0,0,114,52,0,0,0,114,59,0,0,0, - 114,60,0,0,0,114,67,0,0,0,114,43,0,0,0,114, - 82,0,0,0,114,84,0,0,0,114,85,0,0,0,114,9, + 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,32, + 32,32,32,32,32,32,32,78,169,1,218,16,95,103,101,116, + 95,109,111,100,117,108,101,95,99,111,100,101,169,5,114,32, + 0,0,0,114,38,0,0,0,218,4,99,111,100,101,218,9, + 105,115,112,97,99,107,97,103,101,114,40,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,103, + 101,116,95,99,111,100,101,184,0,0,0,115,6,0,0,0, + 16,6,4,1,255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0, + 0,67,0,0,0,115,112,0,0,0,116,0,114,16,124,1, + 160,1,116,0,116,2,161,2,125,1,124,1,125,2,124,1, + 160,3,124,0,106,4,116,2,23,0,161,1,114,58,124,1, + 116,5,124,0,106,4,116,2,23,0,131,1,100,1,133,2, + 25,0,125,2,122,14,124,0,106,6,124,2,25,0,125,3, + 87,0,110,26,4,0,116,7,121,98,1,0,1,0,1,0, + 116,8,100,2,100,3,124,2,131,3,130,1,119,0,116,9, + 124,0,106,4,124,3,131,2,83,0,41,4,122,154,103,101, + 116,95,100,97,116,97,40,112,97,116,104,110,97,109,101,41, + 32,45,62,32,115,116,114,105,110,103,32,119,105,116,104,32, + 102,105,108,101,32,100,97,116,97,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,100, + 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, + 105,116,104,32,39,112,97,116,104,110,97,109,101,39,46,32, + 82,97,105,115,101,32,79,83,69,114,114,111,114,32,105,102, + 10,32,32,32,32,32,32,32,32,116,104,101,32,102,105,108, + 101,32,119,97,115,110,39,116,32,102,111,117,110,100,46,10, + 32,32,32,32,32,32,32,32,78,114,0,0,0,0,218,0, + 41,10,114,18,0,0,0,114,19,0,0,0,114,20,0,0, + 0,218,10,115,116,97,114,116,115,119,105,116,104,114,29,0, + 0,0,218,3,108,101,110,114,28,0,0,0,114,26,0,0, + 0,114,22,0,0,0,218,9,95,103,101,116,95,100,97,116, + 97,41,4,114,32,0,0,0,218,8,112,97,116,104,110,97, + 109,101,90,3,107,101,121,218,9,116,111,99,95,101,110,116, + 114,121,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,8,103,101,116,95,100,97,116,97,194,0,0,0,115, + 22,0,0,0,4,6,12,1,4,2,16,1,22,1,2,2, + 14,1,12,1,14,1,12,1,255,128,122,20,122,105,112,105, + 109,112,111,114,116,101,114,46,103,101,116,95,100,97,116,97, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,3,0,0,0,67,0,0,0,115,20,0,0,0,116,0, + 124,0,124,1,131,2,92,3,125,2,125,3,125,4,124,4, + 83,0,41,2,122,165,103,101,116,95,102,105,108,101,110,97, + 109,101,40,102,117,108,108,110,97,109,101,41,32,45,62,32, + 102,105,108,101,110,97,109,101,32,115,116,114,105,110,103,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 32,116,104,101,32,102,105,108,101,110,97,109,101,32,102,111, + 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, + 109,111,100,117,108,101,32,111,114,32,114,97,105,115,101,32, + 90,105,112,73,109,112,111,114,116,69,114,114,111,114,10,32, + 32,32,32,32,32,32,32,105,102,32,105,116,32,99,111,117, + 108,100,110,39,116,32,98,101,32,105,109,112,111,114,116,101, + 100,46,10,32,32,32,32,32,32,32,32,78,114,47,0,0, + 0,114,49,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,12,103,101,116,95,102,105,108,101,110, + 97,109,101,215,0,0,0,115,6,0,0,0,16,8,4,1, + 255,128,122,24,122,105,112,105,109,112,111,114,116,101,114,46, + 103,101,116,95,102,105,108,101,110,97,109,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, + 0,67,0,0,0,115,126,0,0,0,116,0,124,0,124,1, + 131,2,125,2,124,2,100,1,117,0,114,36,116,1,100,2, + 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, + 124,0,124,1,131,2,125,3,124,2,114,64,116,3,160,4, + 124,3,100,4,161,2,125,4,110,10,124,3,155,0,100,5, + 157,2,125,4,122,14,124,0,106,5,124,4,25,0,125,5, + 87,0,110,20,4,0,116,6,121,108,1,0,1,0,1,0, + 89,0,100,1,83,0,119,0,116,7,124,0,106,8,124,5, + 131,2,160,9,161,0,83,0,41,6,122,253,103,101,116,95, + 115,111,117,114,99,101,40,102,117,108,108,110,97,109,101,41, + 32,45,62,32,115,111,117,114,99,101,32,115,116,114,105,110, + 103,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, + 114,110,32,116,104,101,32,115,111,117,114,99,101,32,99,111, + 100,101,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,46,32,82,97,105, + 115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,111, + 114,10,32,32,32,32,32,32,32,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,99,111,117,108,100,110,39,116, + 32,98,101,32,102,111,117,110,100,44,32,114,101,116,117,114, + 110,32,78,111,110,101,32,105,102,32,116,104,101,32,97,114, + 99,104,105,118,101,32,100,111,101,115,10,32,32,32,32,32, + 32,32,32,99,111,110,116,97,105,110,32,116,104,101,32,109, + 111,100,117,108,101,44,32,98,117,116,32,104,97,115,32,110, + 111,32,115,111,117,114,99,101,32,102,111,114,32,105,116,46, + 10,32,32,32,32,32,32,32,32,78,250,18,99,97,110,39, + 116,32,102,105,110,100,32,109,111,100,117,108,101,32,169,1, + 114,44,0,0,0,250,11,95,95,105,110,105,116,95,95,46, + 112,121,250,3,46,112,121,41,10,114,35,0,0,0,114,3, + 0,0,0,114,36,0,0,0,114,21,0,0,0,114,30,0, + 0,0,114,28,0,0,0,114,26,0,0,0,114,56,0,0, + 0,114,29,0,0,0,218,6,100,101,99,111,100,101,41,6, + 114,32,0,0,0,114,38,0,0,0,114,39,0,0,0,114, + 13,0,0,0,218,8,102,117,108,108,112,97,116,104,114,58, 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,4,0,0,0,46,0,0,0,115,30,0,0,0, - 8,0,4,1,8,17,10,46,10,34,10,13,8,27,8,10, - 8,21,8,11,8,26,8,13,8,43,12,15,255,128,122,12, - 95,95,105,110,105,116,95,95,46,112,121,99,84,114,63,0, - 0,0,70,41,3,122,4,46,112,121,99,84,70,41,3,114, - 64,0,0,0,70,70,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, - 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, - 0,0,0,41,2,114,31,0,0,0,218,10,114,112,97,114, - 116,105,116,105,111,110,41,2,114,32,0,0,0,114,38,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,36,0,0,0,85,1,0,0,115,4,0,0,0,20, - 1,255,128,114,36,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, - 0,115,18,0,0,0,124,1,116,0,23,0,125,2,124,2, - 124,0,106,1,118,0,83,0,169,1,78,41,2,114,20,0, - 0,0,114,28,0,0,0,41,3,114,32,0,0,0,114,13, - 0,0,0,90,7,100,105,114,112,97,116,104,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,37,0,0,0, - 89,1,0,0,115,6,0,0,0,8,4,10,2,255,128,114, - 37,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,7,0,0,0,4,0,0,0,67,0,0,0,115,54,0, - 0,0,116,0,124,0,124,1,131,2,125,2,116,1,68,0, - 93,34,92,3,125,3,125,4,125,5,124,2,124,3,23,0, - 125,6,124,6,124,0,106,2,118,0,114,14,124,5,2,0, - 1,0,83,0,100,0,83,0,114,90,0,0,0,41,3,114, - 36,0,0,0,218,16,95,122,105,112,95,115,101,97,114,99, - 104,111,114,100,101,114,114,28,0,0,0,41,7,114,32,0, - 0,0,114,38,0,0,0,114,13,0,0,0,218,6,115,117, - 102,102,105,120,218,10,105,115,98,121,116,101,99,111,100,101, - 114,51,0,0,0,114,66,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,35,0,0,0,98,1, - 0,0,115,14,0,0,0,10,1,14,1,8,1,10,1,8, - 1,4,1,255,128,114,35,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,26,0,0,0,9,0,0,0,67, - 0,0,0,115,232,4,0,0,122,14,116,0,160,1,124,0, - 161,1,125,1,87,0,110,32,4,0,116,2,121,46,1,0, - 1,0,1,0,116,3,100,1,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,119,0,124,1,144,4,143,142,1,0, - 122,36,124,1,160,4,116,5,11,0,100,3,161,2,1,0, - 124,1,160,6,161,0,125,2,124,1,160,7,116,5,161,1, - 125,3,87,0,110,32,4,0,116,2,121,124,1,0,1,0, - 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,119,0,116,8,124,3,131,1,116,5,107,3, - 114,156,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,124,3,100,0,100,5,133,2,25,0,116,9, - 107,3,144,1,114,154,122,24,124,1,160,4,100,6,100,3, - 161,2,1,0,124,1,160,6,161,0,125,4,87,0,110,32, - 4,0,116,2,121,230,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, - 116,10,124,4,116,11,24,0,116,5,24,0,100,6,131,2, - 125,5,122,22,124,1,160,4,124,5,161,1,1,0,124,1, - 160,7,161,0,125,6,87,0,110,34,4,0,116,2,144,1, - 121,50,1,0,1,0,1,0,116,3,100,4,124,0,155,2, - 157,2,124,0,100,2,141,2,130,1,119,0,124,6,160,12, - 116,9,161,1,125,7,124,7,100,6,107,0,144,1,114,90, - 116,3,100,7,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,124,6,124,7,124,7,116,5,23,0,133,2,25,0, - 125,3,116,8,124,3,131,1,116,5,107,3,144,1,114,138, - 116,3,100,8,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,124,4,116,8,124,6,131,1,24,0,124,7,23,0, - 125,2,116,13,124,3,100,9,100,10,133,2,25,0,131,1, - 125,8,116,13,124,3,100,10,100,11,133,2,25,0,131,1, - 125,9,124,2,124,8,107,0,144,1,114,214,116,3,100,12, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,2, - 124,9,107,0,144,1,114,242,116,3,100,13,124,0,155,2, - 157,2,124,0,100,2,141,2,130,1,124,2,124,8,56,0, - 125,2,124,2,124,9,24,0,125,10,124,10,100,6,107,0, - 144,2,114,30,116,3,100,14,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,105,0,125,11,100,6,125,12,122,14, - 124,1,160,4,124,2,161,1,1,0,87,0,110,34,4,0, - 116,2,144,2,121,86,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, - 9,0,124,1,160,7,100,16,161,1,125,3,116,8,124,3, - 131,1,100,5,107,0,144,2,114,122,116,14,100,17,131,1, - 130,1,124,3,100,0,100,5,133,2,25,0,100,18,107,3, - 144,2,114,144,144,4,113,182,116,8,124,3,131,1,100,16, - 107,3,144,2,114,166,116,14,100,17,131,1,130,1,116,15, - 124,3,100,19,100,20,133,2,25,0,131,1,125,13,116,15, - 124,3,100,20,100,9,133,2,25,0,131,1,125,14,116,15, - 124,3,100,9,100,21,133,2,25,0,131,1,125,15,116,15, - 124,3,100,21,100,10,133,2,25,0,131,1,125,16,116,13, - 124,3,100,10,100,11,133,2,25,0,131,1,125,17,116,13, - 124,3,100,11,100,22,133,2,25,0,131,1,125,18,116,13, - 124,3,100,22,100,23,133,2,25,0,131,1,125,4,116,15, - 124,3,100,23,100,24,133,2,25,0,131,1,125,19,116,15, - 124,3,100,24,100,25,133,2,25,0,131,1,125,20,116,15, - 124,3,100,25,100,26,133,2,25,0,131,1,125,21,116,13, - 124,3,100,27,100,16,133,2,25,0,131,1,125,22,124,19, - 124,20,23,0,124,21,23,0,125,8,124,22,124,9,107,4, - 144,3,114,126,116,3,100,28,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,124,22,124,10,55,0,125,22,122,14, - 124,1,160,7,124,19,161,1,125,23,87,0,110,34,4,0, - 116,2,144,3,121,182,1,0,1,0,1,0,116,3,100,4, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,119,0, - 116,8,124,23,131,1,124,19,107,3,144,3,114,216,116,3, - 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, - 122,50,116,8,124,1,160,7,124,8,124,19,24,0,161,1, - 131,1,124,8,124,19,24,0,107,3,144,4,114,8,116,3, - 100,4,124,0,155,2,157,2,124,0,100,2,141,2,130,1, - 87,0,110,34,4,0,116,2,144,4,121,44,1,0,1,0, - 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,119,0,124,13,100,29,64,0,144,4,114,66, - 124,23,160,16,161,0,125,23,110,52,122,14,124,23,160,16, - 100,30,161,1,125,23,87,0,110,36,4,0,116,17,144,4, - 121,116,1,0,1,0,1,0,124,23,160,16,100,31,161,1, - 160,18,116,19,161,1,125,23,89,0,110,2,119,0,124,23, - 160,20,100,32,116,21,161,2,125,23,116,22,160,23,124,0, - 124,23,161,2,125,24,124,24,124,14,124,18,124,4,124,22, - 124,15,124,16,124,17,102,8,125,25,124,25,124,11,124,23, - 60,0,124,12,100,33,55,0,125,12,144,2,113,90,87,0, - 100,0,4,0,4,0,131,3,1,0,110,18,49,0,144,4, - 115,204,119,1,1,0,1,0,1,0,89,0,1,0,116,24, - 160,25,100,34,124,12,124,0,161,3,1,0,124,11,83,0, - 41,35,78,122,21,99,97,110,39,116,32,111,112,101,110,32, - 90,105,112,32,102,105,108,101,58,32,114,12,0,0,0,114, - 88,0,0,0,250,21,99,97,110,39,116,32,114,101,97,100, - 32,90,105,112,32,102,105,108,101,58,32,233,4,0,0,0, - 114,0,0,0,0,122,16,110,111,116,32,97,32,90,105,112, - 32,102,105,108,101,58,32,122,18,99,111,114,114,117,112,116, - 32,90,105,112,32,102,105,108,101,58,32,233,12,0,0,0, - 233,16,0,0,0,233,20,0,0,0,122,28,98,97,100,32, - 99,101,110,116,114,97,108,32,100,105,114,101,99,116,111,114, - 121,32,115,105,122,101,58,32,122,30,98,97,100,32,99,101, - 110,116,114,97,108,32,100,105,114,101,99,116,111,114,121,32, - 111,102,102,115,101,116,58,32,122,38,98,97,100,32,99,101, - 110,116,114,97,108,32,100,105,114,101,99,116,111,114,121,32, - 115,105,122,101,32,111,114,32,111,102,102,115,101,116,58,32, - 84,233,46,0,0,0,250,27,69,79,70,32,114,101,97,100, - 32,119,104,101,114,101,32,110,111,116,32,101,120,112,101,99, - 116,101,100,115,4,0,0,0,80,75,1,2,233,8,0,0, - 0,233,10,0,0,0,233,14,0,0,0,233,24,0,0,0, - 233,28,0,0,0,233,30,0,0,0,233,32,0,0,0,233, - 34,0,0,0,233,42,0,0,0,122,25,98,97,100,32,108, - 111,99,97,108,32,104,101,97,100,101,114,32,111,102,102,115, - 101,116,58,32,105,0,8,0,0,218,5,97,115,99,105,105, - 90,6,108,97,116,105,110,49,250,1,47,114,5,0,0,0, - 122,33,122,105,112,105,109,112,111,114,116,58,32,102,111,117, - 110,100,32,123,125,32,110,97,109,101,115,32,105,110,32,123, - 33,114,125,41,26,218,3,95,105,111,218,9,111,112,101,110, - 95,99,111,100,101,114,22,0,0,0,114,3,0,0,0,218, - 4,115,101,101,107,218,20,69,78,68,95,67,69,78,84,82, - 65,76,95,68,73,82,95,83,73,90,69,90,4,116,101,108, - 108,218,4,114,101,97,100,114,55,0,0,0,218,18,83,84, - 82,73,78,71,95,69,78,68,95,65,82,67,72,73,86,69, - 218,3,109,97,120,218,15,77,65,88,95,67,79,77,77,69, - 78,84,95,76,69,78,218,5,114,102,105,110,100,114,2,0, - 0,0,218,8,69,79,70,69,114,114,111,114,114,1,0,0, - 0,114,65,0,0,0,218,18,85,110,105,99,111,100,101,68, - 101,99,111,100,101,69,114,114,111,114,218,9,116,114,97,110, - 115,108,97,116,101,218,11,99,112,52,51,55,95,116,97,98, - 108,101,114,19,0,0,0,114,20,0,0,0,114,21,0,0, - 0,114,30,0,0,0,114,45,0,0,0,114,80,0,0,0, - 41,26,114,29,0,0,0,218,2,102,112,90,15,104,101,97, - 100,101,114,95,112,111,115,105,116,105,111,110,218,6,98,117, - 102,102,101,114,218,9,102,105,108,101,95,115,105,122,101,90, - 17,109,97,120,95,99,111,109,109,101,110,116,95,115,116,97, - 114,116,218,4,100,97,116,97,90,3,112,111,115,218,11,104, - 101,97,100,101,114,95,115,105,122,101,90,13,104,101,97,100, - 101,114,95,111,102,102,115,101,116,90,10,97,114,99,95,111, - 102,102,115,101,116,114,33,0,0,0,218,5,99,111,117,110, - 116,218,5,102,108,97,103,115,218,8,99,111,109,112,114,101, - 115,115,218,4,116,105,109,101,218,4,100,97,116,101,218,3, - 99,114,99,218,9,100,97,116,97,95,115,105,122,101,218,9, - 110,97,109,101,95,115,105,122,101,218,10,101,120,116,114,97, - 95,115,105,122,101,90,12,99,111,109,109,101,110,116,95,115, - 105,122,101,218,11,102,105,108,101,95,111,102,102,115,101,116, - 114,44,0,0,0,114,13,0,0,0,218,1,116,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,27,0,0, - 0,129,1,0,0,115,218,0,0,0,2,1,14,1,12,1, - 20,1,8,2,2,1,14,1,8,1,14,1,12,1,20,1, - 12,1,18,1,18,1,2,3,12,1,12,1,12,1,10,1, - 2,1,8,255,8,2,2,1,2,255,2,1,4,255,2,2, - 10,1,12,1,14,1,10,1,2,1,8,255,10,2,10,1, - 10,1,2,1,6,255,16,2,14,1,10,1,2,1,6,255, - 16,2,16,2,16,1,10,1,18,1,10,1,18,1,8,1, - 8,1,10,1,18,1,4,2,4,2,2,1,14,1,14,1, - 20,1,2,1,10,1,14,1,8,1,18,2,4,1,14,1, - 8,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,12,1,10,1,18,1,8,1, - 2,2,14,1,14,1,20,1,14,1,18,1,2,4,28,1, - 22,1,14,1,20,1,10,2,10,2,2,3,14,1,14,1, - 22,1,12,2,12,1,20,1,8,1,8,1,36,202,14,55, - 4,1,255,128,114,27,0,0,0,117,190,1,0,0,0,1, - 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65, - 66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81, - 82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97, - 98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113, - 114,115,116,117,118,119,120,121,122,123,124,125,126,127,195,135, - 195,188,195,169,195,162,195,164,195,160,195,165,195,167,195,170, - 195,171,195,168,195,175,195,174,195,172,195,132,195,133,195,137, - 195,166,195,134,195,180,195,182,195,178,195,187,195,185,195,191, - 195,150,195,156,194,162,194,163,194,165,226,130,167,198,146,195, - 161,195,173,195,179,195,186,195,177,195,145,194,170,194,186,194, - 191,226,140,144,194,172,194,189,194,188,194,161,194,171,194,187, - 226,150,145,226,150,146,226,150,147,226,148,130,226,148,164,226, - 149,161,226,149,162,226,149,150,226,149,149,226,149,163,226,149, - 145,226,149,151,226,149,157,226,149,156,226,149,155,226,148,144, - 226,148,148,226,148,180,226,148,172,226,148,156,226,148,128,226, - 148,188,226,149,158,226,149,159,226,149,154,226,149,148,226,149, - 169,226,149,166,226,149,160,226,149,144,226,149,172,226,149,167, - 226,149,168,226,149,164,226,149,165,226,149,153,226,149,152,226, - 149,146,226,149,147,226,149,171,226,149,170,226,148,152,226,148, - 140,226,150,136,226,150,132,226,150,140,226,150,144,226,150,128, - 206,177,195,159,206,147,207,128,206,163,207,131,194,181,207,132, - 206,166,206,152,206,169,206,180,226,136,158,207,134,206,181,226, - 136,169,226,137,161,194,177,226,137,165,226,137,164,226,140,160, - 226,140,161,195,183,226,137,136,194,176,226,136,153,194,183,226, - 136,154,226,129,191,194,178,226,150,160,194,160,99,0,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,67,0,0,0,115,106,0,0,0,116,0,114,22,116,1, - 160,2,100,1,161,1,1,0,116,3,100,2,131,1,130,1, - 100,3,97,0,122,58,122,16,100,4,100,5,108,4,109,5, - 125,0,1,0,87,0,110,32,4,0,116,6,121,76,1,0, - 1,0,1,0,116,1,160,2,100,1,161,1,1,0,116,3, - 100,2,131,1,130,1,119,0,87,0,100,6,97,0,110,6, - 100,6,97,0,119,0,116,1,160,2,100,7,161,1,1,0, - 124,0,83,0,41,8,78,122,27,122,105,112,105,109,112,111, - 114,116,58,32,122,108,105,98,32,85,78,65,86,65,73,76, - 65,66,76,69,250,41,99,97,110,39,116,32,100,101,99,111, - 109,112,114,101,115,115,32,100,97,116,97,59,32,122,108,105, - 98,32,110,111,116,32,97,118,97,105,108,97,98,108,101,84, - 114,0,0,0,0,169,1,218,10,100,101,99,111,109,112,114, - 101,115,115,70,122,25,122,105,112,105,109,112,111,114,116,58, - 32,122,108,105,98,32,97,118,97,105,108,97,98,108,101,41, - 7,218,15,95,105,109,112,111,114,116,105,110,103,95,122,108, - 105,98,114,45,0,0,0,114,80,0,0,0,114,3,0,0, - 0,90,4,122,108,105,98,114,143,0,0,0,218,9,69,120, - 99,101,112,116,105,111,110,114,142,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,20,95,103,101, - 116,95,100,101,99,111,109,112,114,101,115,115,95,102,117,110, - 99,31,2,0,0,115,28,0,0,0,4,2,10,3,8,1, - 4,2,4,1,16,1,12,1,10,1,10,1,2,128,12,2, - 10,2,4,1,255,128,114,146,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,17,0,0,0,9,0,0,0, - 67,0,0,0,115,132,1,0,0,124,1,92,8,125,2,125, - 3,125,4,125,5,125,6,125,7,125,8,125,9,124,4,100, - 1,107,0,114,36,116,0,100,2,131,1,130,1,116,1,160, - 2,124,0,161,1,144,1,143,6,125,10,122,14,124,10,160, - 3,124,6,161,1,1,0,87,0,110,32,4,0,116,4,121, - 96,1,0,1,0,1,0,116,0,100,3,124,0,155,2,157, - 2,124,0,100,4,141,2,130,1,119,0,124,10,160,5,100, - 5,161,1,125,11,116,6,124,11,131,1,100,5,107,3,114, - 128,116,7,100,6,131,1,130,1,124,11,100,0,100,7,133, - 2,25,0,100,8,107,3,114,162,116,0,100,9,124,0,155, - 2,157,2,124,0,100,4,141,2,130,1,116,8,124,11,100, - 10,100,11,133,2,25,0,131,1,125,12,116,8,124,11,100, - 11,100,5,133,2,25,0,131,1,125,13,100,5,124,12,23, - 0,124,13,23,0,125,14,124,6,124,14,55,0,125,6,122, - 14,124,10,160,3,124,6,161,1,1,0,87,0,110,34,4, - 0,116,4,144,1,121,6,1,0,1,0,1,0,116,0,100, - 3,124,0,155,2,157,2,124,0,100,4,141,2,130,1,119, - 0,124,10,160,5,124,4,161,1,125,15,116,6,124,15,131, - 1,124,4,107,3,144,1,114,40,116,4,100,12,131,1,130, - 1,87,0,100,0,4,0,4,0,131,3,1,0,110,18,49, - 0,144,1,115,62,119,1,1,0,1,0,1,0,89,0,1, - 0,124,3,100,1,107,2,144,1,114,86,124,15,83,0,122, - 10,116,9,131,0,125,16,87,0,110,24,4,0,116,10,144, - 1,121,120,1,0,1,0,1,0,116,0,100,13,131,1,130, - 1,119,0,124,16,124,15,100,14,131,2,83,0,41,15,78, - 114,0,0,0,0,122,18,110,101,103,97,116,105,118,101,32, - 100,97,116,97,32,115,105,122,101,114,94,0,0,0,114,12, - 0,0,0,114,106,0,0,0,114,100,0,0,0,114,95,0, - 0,0,115,4,0,0,0,80,75,3,4,122,23,98,97,100, - 32,108,111,99,97,108,32,102,105,108,101,32,104,101,97,100, - 101,114,58,32,233,26,0,0,0,114,105,0,0,0,122,26, - 122,105,112,105,109,112,111,114,116,58,32,99,97,110,39,116, - 32,114,101,97,100,32,100,97,116,97,114,141,0,0,0,105, - 241,255,255,255,41,11,114,3,0,0,0,114,112,0,0,0, - 114,113,0,0,0,114,114,0,0,0,114,22,0,0,0,114, - 116,0,0,0,114,55,0,0,0,114,121,0,0,0,114,1, - 0,0,0,114,146,0,0,0,114,145,0,0,0,41,17,114, - 29,0,0,0,114,58,0,0,0,90,8,100,97,116,97,112, - 97,116,104,114,132,0,0,0,114,136,0,0,0,114,127,0, - 0,0,114,139,0,0,0,114,133,0,0,0,114,134,0,0, - 0,114,135,0,0,0,114,125,0,0,0,114,126,0,0,0, - 114,137,0,0,0,114,138,0,0,0,114,129,0,0,0,90, - 8,114,97,119,95,100,97,116,97,114,143,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,114,56,0, - 0,0,52,2,0,0,115,64,0,0,0,20,1,8,1,8, - 1,14,2,2,2,14,1,12,1,20,1,10,1,12,1,8, - 1,16,2,18,2,16,2,16,1,12,1,8,1,2,1,14, - 1,14,1,20,1,10,1,14,1,40,1,10,2,4,2,2, - 3,10,1,14,1,10,1,10,1,255,128,114,56,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,0, - 124,0,124,1,24,0,131,1,100,1,107,1,83,0,41,2, - 78,114,5,0,0,0,41,1,218,3,97,98,115,41,2,90, - 2,116,49,90,2,116,50,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,9,95,101,113,95,109,116,105,109, - 101,98,2,0,0,115,4,0,0,0,16,2,255,128,114,149, - 0,0,0,99,5,0,0,0,0,0,0,0,0,0,0,0, - 14,0,0,0,8,0,0,0,67,0,0,0,115,60,1,0, - 0,124,3,124,2,100,1,156,2,125,5,122,18,116,0,160, - 1,124,4,124,3,124,5,161,3,125,6,87,0,110,20,4, - 0,116,2,121,48,1,0,1,0,1,0,89,0,100,0,83, - 0,119,0,124,6,100,2,64,0,100,3,107,3,125,7,124, - 7,114,182,124,6,100,4,64,0,100,3,107,3,125,8,116, - 3,106,4,100,5,107,3,144,1,114,10,124,8,115,106,116, - 3,106,4,100,6,107,2,144,1,114,10,116,5,124,0,124, - 2,131,2,125,9,124,9,100,0,117,1,144,1,114,10,116, - 3,160,6,116,0,106,7,124,9,161,2,125,10,122,20,116, - 0,160,8,124,4,124,10,124,3,124,5,161,4,1,0,87, - 0,110,104,4,0,116,2,121,180,1,0,1,0,1,0,89, - 0,100,0,83,0,119,0,116,9,124,0,124,2,131,2,92, - 2,125,11,125,12,124,11,144,1,114,10,116,10,116,11,124, - 4,100,7,100,8,133,2,25,0,131,1,124,11,131,2,114, - 246,116,11,124,4,100,8,100,9,133,2,25,0,131,1,124, - 12,107,3,144,1,114,10,116,12,160,13,100,10,124,3,155, - 2,157,2,161,1,1,0,100,0,83,0,116,14,160,15,124, - 4,100,9,100,0,133,2,25,0,161,1,125,13,116,16,124, - 13,116,17,131,2,144,1,115,56,116,18,100,11,124,1,155, - 2,100,12,157,3,131,1,130,1,124,13,83,0,41,13,78, - 41,2,114,44,0,0,0,114,13,0,0,0,114,5,0,0, - 0,114,0,0,0,0,114,88,0,0,0,90,5,110,101,118, - 101,114,90,6,97,108,119,97,121,115,114,101,0,0,0,114, - 96,0,0,0,114,97,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,122,16,99,111,109,112,105,108,101,100,32,109,111,100,117, - 108,101,32,122,21,32,105,115,32,110,111,116,32,97,32,99, - 111,100,101,32,111,98,106,101,99,116,41,19,114,21,0,0, - 0,90,13,95,99,108,97,115,115,105,102,121,95,112,121,99, - 114,79,0,0,0,218,4,95,105,109,112,90,21,99,104,101, - 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121, - 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117, - 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104, - 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, - 66,69,82,90,18,95,118,97,108,105,100,97,116,101,95,104, - 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116, - 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95, - 115,111,117,114,99,101,114,149,0,0,0,114,2,0,0,0, - 114,45,0,0,0,114,80,0,0,0,218,7,109,97,114,115, - 104,97,108,90,5,108,111,97,100,115,114,15,0,0,0,218, - 10,95,99,111,100,101,95,116,121,112,101,218,9,84,121,112, - 101,69,114,114,111,114,41,14,114,32,0,0,0,114,57,0, - 0,0,114,66,0,0,0,114,38,0,0,0,114,128,0,0, - 0,90,11,101,120,99,95,100,101,116,97,105,108,115,114,131, - 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,90,12,115, - 111,117,114,99,101,95,98,121,116,101,115,114,152,0,0,0, - 90,12,115,111,117,114,99,101,95,109,116,105,109,101,90,11, - 115,111,117,114,99,101,95,115,105,122,101,114,50,0,0,0, + 0,0,218,10,103,101,116,95,115,111,117,114,99,101,227,0, + 0,0,115,26,0,0,0,10,7,8,1,18,1,10,2,4, + 1,14,1,10,2,2,2,14,1,12,1,8,2,16,1,255, + 128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0,67,0, + 0,0,115,40,0,0,0,116,0,124,0,124,1,131,2,125, + 2,124,2,100,1,117,0,114,36,116,1,100,2,124,1,155, + 2,157,2,124,1,100,3,141,2,130,1,124,2,83,0,41, + 4,122,171,105,115,95,112,97,99,107,97,103,101,40,102,117, + 108,108,110,97,109,101,41,32,45,62,32,98,111,111,108,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 32,84,114,117,101,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,121, + 32,102,117,108,108,110,97,109,101,32,105,115,32,97,32,112, + 97,99,107,97,103,101,46,10,32,32,32,32,32,32,32,32, + 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, + 114,114,111,114,32,105,102,32,116,104,101,32,109,111,100,117, + 108,101,32,99,111,117,108,100,110,39,116,32,98,101,32,102, + 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,114, + 61,0,0,0,114,62,0,0,0,41,2,114,35,0,0,0, + 114,3,0,0,0,41,3,114,32,0,0,0,114,38,0,0, + 0,114,39,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,114,43,0,0,0,253,0,0,0,115,10, + 0,0,0,10,6,8,1,18,1,4,1,255,128,122,22,122, + 105,112,105,109,112,111,114,116,101,114,46,105,115,95,112,97, + 99,107,97,103,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,252, + 0,0,0,100,1,125,2,116,0,160,1,124,2,116,2,161, + 2,1,0,116,3,124,0,124,1,131,2,92,3,125,3,125, + 4,125,5,116,4,106,5,160,6,124,1,161,1,125,6,124, + 6,100,2,117,0,115,62,116,7,124,6,116,8,131,2,115, + 80,116,8,124,1,131,1,125,6,124,6,116,4,106,5,124, + 1,60,0,124,0,124,6,95,9,122,84,124,4,114,124,116, + 10,124,0,124,1,131,2,125,7,116,11,160,12,124,0,106, + 13,124,7,161,2,125,8,124,8,103,1,124,6,95,14,116, + 15,124,6,100,3,131,2,115,140,116,16,124,6,95,16,116, + 11,160,17,124,6,106,18,124,1,124,5,161,3,1,0,116, + 19,124,3,124,6,106,18,131,2,1,0,87,0,110,16,1, + 0,1,0,1,0,116,4,106,5,124,1,61,0,130,0,122, + 14,116,4,106,5,124,1,25,0,125,6,87,0,110,30,4, + 0,116,20,121,232,1,0,1,0,1,0,116,21,100,4,124, + 1,155,2,100,5,157,3,131,1,130,1,119,0,116,22,160, + 23,100,6,124,1,124,5,161,3,1,0,124,6,83,0,41, + 7,97,64,1,0,0,108,111,97,100,95,109,111,100,117,108, + 101,40,102,117,108,108,110,97,109,101,41,32,45,62,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 76,111,97,100,32,116,104,101,32,109,111,100,117,108,101,32, + 115,112,101,99,105,102,105,101,100,32,98,121,32,39,102,117, + 108,108,110,97,109,101,39,46,32,39,102,117,108,108,110,97, + 109,101,39,32,109,117,115,116,32,98,101,32,116,104,101,10, + 32,32,32,32,32,32,32,32,102,117,108,108,121,32,113,117, + 97,108,105,102,105,101,100,32,40,100,111,116,116,101,100,41, + 32,109,111,100,117,108,101,32,110,97,109,101,46,32,73,116, + 32,114,101,116,117,114,110,115,32,116,104,101,32,105,109,112, + 111,114,116,101,100,10,32,32,32,32,32,32,32,32,109,111, + 100,117,108,101,44,32,111,114,32,114,97,105,115,101,115,32, + 90,105,112,73,109,112,111,114,116,69,114,114,111,114,32,105, + 102,32,105,116,32,99,111,117,108,100,32,110,111,116,32,98, + 101,32,105,109,112,111,114,116,101,100,46,10,10,32,32,32, + 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, + 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, + 48,46,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,32,32, + 32,32,32,32,32,32,122,114,122,105,112,105,109,112,111,114, + 116,46,122,105,112,105,109,112,111,114,116,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,105,110,115,116,101,97,100,78,218,12,95,95,98, + 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, + 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, + 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, + 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, + 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, + 112,32,123,125,41,24,218,9,95,119,97,114,110,105,110,103, + 115,90,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,114,48,0,0,0, + 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, + 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, + 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, + 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, + 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, + 218,7,104,97,115,97,116,116,114,114,68,0,0,0,90,14, + 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, + 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, + 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, + 114,45,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,41,9,114,32,0,0,0,114,38, + 0,0,0,218,3,109,115,103,114,50,0,0,0,114,51,0, + 0,0,114,40,0,0,0,90,3,109,111,100,114,13,0,0, + 0,114,66,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,108,111,97,100,95,109,111,100,117, + 108,101,10,1,0,0,115,54,0,0,0,4,9,12,2,16, + 1,12,1,18,1,8,1,10,1,6,1,2,2,4,1,10, + 3,14,1,8,1,10,2,6,1,16,1,16,1,6,1,8, + 1,2,1,2,2,14,1,12,1,18,1,14,1,4,1,255, + 128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,64,0,0,0,122,20,124,0,160,0,124,1, + 161,1,115,18,87,0,100,1,83,0,87,0,110,20,4,0, + 116,1,121,40,1,0,1,0,1,0,89,0,100,1,83,0, + 119,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, + 124,0,124,1,131,2,83,0,41,4,122,204,82,101,116,117, + 114,110,32,116,104,101,32,82,101,115,111,117,114,99,101,82, + 101,97,100,101,114,32,102,111,114,32,97,32,112,97,99,107, + 97,103,101,32,105,110,32,97,32,122,105,112,32,102,105,108, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, + 102,117,108,108,110,97,109,101,39,32,105,115,32,97,32,112, + 97,99,107,97,103,101,32,119,105,116,104,105,110,32,116,104, + 101,32,122,105,112,32,102,105,108,101,44,32,114,101,116,117, + 114,110,32,116,104,101,10,32,32,32,32,32,32,32,32,39, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,39,32, + 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,112, + 97,99,107,97,103,101,46,32,32,79,116,104,101,114,119,105, + 115,101,32,114,101,116,117,114,110,32,78,111,110,101,46,10, + 32,32,32,32,32,32,32,32,78,114,0,0,0,0,41,1, + 218,9,90,105,112,82,101,97,100,101,114,41,4,114,43,0, + 0,0,114,3,0,0,0,90,17,105,109,112,111,114,116,108, + 105,98,46,114,101,97,100,101,114,115,114,83,0,0,0,41, + 3,114,32,0,0,0,114,38,0,0,0,114,83,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, - 108,2,0,0,115,84,0,0,0,2,2,2,1,6,254,2, - 5,18,1,12,1,8,1,12,2,4,1,12,1,12,1,2, - 1,2,255,8,1,4,255,10,2,10,1,4,1,4,1,2, - 1,4,254,2,5,4,1,8,1,8,255,12,2,8,1,8, - 3,6,255,6,3,22,3,18,1,4,255,4,2,8,1,4, - 255,4,2,18,2,12,1,16,1,4,1,255,128,114,157,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,4,0,0,0,67,0,0,0,115,28,0,0,0, - 124,0,160,0,100,1,100,2,161,2,125,0,124,0,160,0, - 100,3,100,2,161,2,125,0,124,0,83,0,41,4,78,115, - 2,0,0,0,13,10,243,1,0,0,0,10,243,1,0,0, - 0,13,41,1,114,19,0,0,0,41,1,218,6,115,111,117, - 114,99,101,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,23,95,110,111,114,109,97,108,105,122,101,95,108, - 105,110,101,95,101,110,100,105,110,103,115,159,2,0,0,115, - 8,0,0,0,12,1,12,1,4,1,255,128,114,161,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,6,0,0,0,67,0,0,0,115,24,0,0,0,116, - 0,124,1,131,1,125,1,116,1,124,1,124,0,100,1,100, - 2,100,3,141,4,83,0,41,4,78,114,78,0,0,0,84, - 41,1,90,12,100,111,110,116,95,105,110,104,101,114,105,116, - 41,2,114,161,0,0,0,218,7,99,111,109,112,105,108,101, - 41,2,114,57,0,0,0,114,160,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,15,95,99,111, - 109,112,105,108,101,95,115,111,117,114,99,101,166,2,0,0, - 115,6,0,0,0,8,1,16,1,255,128,114,163,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,11,0,0,0,67,0,0,0,115,68,0,0,0,116,0, - 160,1,124,0,100,1,63,0,100,2,23,0,124,0,100,3, - 63,0,100,4,64,0,124,0,100,5,64,0,124,1,100,6, - 63,0,124,1,100,3,63,0,100,7,64,0,124,1,100,5, - 64,0,100,8,20,0,100,9,100,9,100,9,102,9,161,1, - 83,0,41,10,78,233,9,0,0,0,105,188,7,0,0,233, - 5,0,0,0,233,15,0,0,0,233,31,0,0,0,233,11, - 0,0,0,233,63,0,0,0,114,88,0,0,0,114,14,0, - 0,0,41,2,114,133,0,0,0,90,6,109,107,116,105,109, - 101,41,2,218,1,100,114,140,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,14,95,112,97,114, - 115,101,95,100,111,115,116,105,109,101,172,2,0,0,115,20, - 0,0,0,4,1,10,1,10,1,6,1,6,1,10,1,10, - 1,6,1,6,249,255,128,114,171,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,10,0,0, - 0,67,0,0,0,115,110,0,0,0,122,82,124,1,100,1, - 100,0,133,2,25,0,100,2,118,0,115,22,74,0,130,1, - 124,1,100,0,100,1,133,2,25,0,125,1,124,0,106,0, - 124,1,25,0,125,2,124,2,100,3,25,0,125,3,124,2, - 100,4,25,0,125,4,124,2,100,5,25,0,125,5,116,1, - 124,4,124,3,131,2,124,5,102,2,87,0,83,0,4,0, - 116,2,116,3,116,4,102,3,121,108,1,0,1,0,1,0, - 89,0,100,6,83,0,119,0,41,7,78,114,14,0,0,0, - 169,2,218,1,99,218,1,111,114,165,0,0,0,233,6,0, - 0,0,233,3,0,0,0,41,2,114,0,0,0,0,114,0, - 0,0,0,41,5,114,28,0,0,0,114,171,0,0,0,114, - 26,0,0,0,218,10,73,110,100,101,120,69,114,114,111,114, - 114,156,0,0,0,41,6,114,32,0,0,0,114,13,0,0, - 0,114,58,0,0,0,114,133,0,0,0,114,134,0,0,0, - 90,17,117,110,99,111,109,112,114,101,115,115,101,100,95,115, - 105,122,101,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,153,0,0,0,185,2,0,0,115,22,0,0,0, - 2,1,20,2,12,1,10,1,8,3,8,1,8,1,16,1, - 18,1,8,1,255,128,114,153,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, - 67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133, - 2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100, - 0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124, - 1,25,0,125,2,87,0,110,20,4,0,116,1,121,66,1, - 0,1,0,1,0,89,0,100,0,83,0,119,0,116,2,124, - 0,106,3,124,2,131,2,83,0,41,3,78,114,14,0,0, - 0,114,172,0,0,0,41,4,114,28,0,0,0,114,26,0, - 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32, - 0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,151,0,0, - 0,204,2,0,0,115,16,0,0,0,20,2,12,1,2,2, - 14,1,12,1,8,1,12,2,255,128,114,151,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0, - 9,0,0,0,67,0,0,0,115,190,0,0,0,116,0,124, - 0,124,1,131,2,125,2,116,1,68,0,93,156,92,3,125, - 3,125,4,125,5,124,2,124,3,23,0,125,6,116,2,106, - 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141, - 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87, - 0,110,18,4,0,116,7,121,86,1,0,1,0,1,0,89, - 0,113,14,119,0,124,7,100,4,25,0,125,8,116,8,124, - 0,106,4,124,7,131,2,125,9,124,4,114,130,116,9,124, - 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116, - 10,124,8,124,9,131,2,125,10,124,10,100,0,117,0,114, - 150,113,14,124,7,100,4,25,0,125,8,124,10,124,5,124, - 8,102,3,2,0,1,0,83,0,116,11,100,5,124,1,155, - 2,157,2,124,1,100,6,141,2,130,1,41,7,78,122,13, - 116,114,121,105,110,103,32,123,125,123,125,123,125,114,88,0, - 0,0,41,1,90,9,118,101,114,98,111,115,105,116,121,114, - 0,0,0,0,114,61,0,0,0,114,62,0,0,0,41,12, + 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,53,1,0,0,115,16,0,0,0,2,6,10, + 1,10,1,12,1,8,1,12,1,10,1,255,128,122,31,122, + 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5, + 0,0,0,67,0,0,0,115,24,0,0,0,100,1,124,0, + 106,0,155,0,116,1,155,0,124,0,106,2,155,0,100,2, + 157,5,83,0,41,3,78,122,21,60,122,105,112,105,109,112, + 111,114,116,101,114,32,111,98,106,101,99,116,32,34,122,2, + 34,62,41,3,114,29,0,0,0,114,20,0,0,0,114,31, + 0,0,0,41,1,114,32,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, + 114,95,95,68,1,0,0,115,4,0,0,0,24,1,255,128, + 122,20,122,105,112,105,109,112,111,114,116,101,114,46,95,95, + 114,101,112,114,95,95,41,1,78,41,1,78,41,1,78,41, + 16,114,6,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,7,95,95,100,111,99,95,95,114,34,0,0,0,114,41, + 0,0,0,114,42,0,0,0,114,46,0,0,0,114,52,0, + 0,0,114,59,0,0,0,114,60,0,0,0,114,67,0,0, + 0,114,43,0,0,0,114,82,0,0,0,114,84,0,0,0, + 114,85,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,4,0,0,0,46,0, + 0,0,115,30,0,0,0,8,0,4,1,8,17,10,46,10, + 34,10,13,8,27,8,10,8,21,8,12,8,26,8,13,8, + 43,12,15,255,128,122,12,95,95,105,110,105,116,95,95,46, + 112,121,99,84,114,63,0,0,0,70,41,3,122,4,46,112, + 121,99,84,70,41,3,114,64,0,0,0,70,70,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,20,0,0,0,124,0,106,0,124, + 1,160,1,100,1,161,1,100,2,25,0,23,0,83,0,41, + 3,78,218,1,46,233,2,0,0,0,41,2,114,31,0,0, + 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114, + 32,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,36,0,0,0,86,1,0, + 0,115,4,0,0,0,20,1,255,128,114,36,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,169, + 1,78,41,2,114,20,0,0,0,114,28,0,0,0,41,3, + 114,32,0,0,0,114,13,0,0,0,90,7,100,105,114,112, + 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,37,0,0,0,90,1,0,0,115,6,0,0,0, + 8,4,10,2,255,128,114,37,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, + 67,0,0,0,115,54,0,0,0,116,0,124,0,124,1,131, + 2,125,2,116,1,68,0,93,34,92,3,125,3,125,4,125, + 5,124,2,124,3,23,0,125,6,124,6,124,0,106,2,118, + 0,114,14,124,5,2,0,1,0,83,0,100,0,83,0,114, + 90,0,0,0,41,3,114,36,0,0,0,218,16,95,122,105, + 112,95,115,101,97,114,99,104,111,114,100,101,114,114,28,0, + 0,0,41,7,114,32,0,0,0,114,38,0,0,0,114,13, + 0,0,0,218,6,115,117,102,102,105,120,218,10,105,115,98, + 121,116,101,99,111,100,101,114,51,0,0,0,114,66,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,35,0,0,0,99,1,0,0,115,14,0,0,0,10,1, + 14,1,8,1,10,1,8,1,4,1,255,128,114,35,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,26,0, + 0,0,9,0,0,0,67,0,0,0,115,232,4,0,0,122, + 14,116,0,160,1,124,0,161,1,125,1,87,0,110,32,4, + 0,116,2,121,46,1,0,1,0,1,0,116,3,100,1,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,119,0,124, + 1,144,4,143,142,1,0,122,36,124,1,160,4,116,5,11, + 0,100,3,161,2,1,0,124,1,160,6,161,0,125,2,124, + 1,160,7,116,5,161,1,125,3,87,0,110,32,4,0,116, + 2,121,124,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,119,0,116,8,124, + 3,131,1,116,5,107,3,114,156,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,3,100,0,100, + 5,133,2,25,0,116,9,107,3,144,1,114,154,122,24,124, + 1,160,4,100,6,100,3,161,2,1,0,124,1,160,6,161, + 0,125,4,87,0,110,32,4,0,116,2,121,230,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,119,0,116,10,124,4,116,11,24,0,116, + 5,24,0,100,6,131,2,125,5,122,22,124,1,160,4,124, + 5,161,1,1,0,124,1,160,7,161,0,125,6,87,0,110, + 34,4,0,116,2,144,1,121,50,1,0,1,0,1,0,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,119,0,124,6,160,12,116,9,161,1,125,7,124,7,100, + 6,107,0,144,1,114,90,116,3,100,7,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,6,124,7,124,7,116, + 5,23,0,133,2,25,0,125,3,116,8,124,3,131,1,116, + 5,107,3,144,1,114,138,116,3,100,8,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,4,116,8,124,6,131, + 1,24,0,124,7,23,0,125,2,116,13,124,3,100,9,100, + 10,133,2,25,0,131,1,125,8,116,13,124,3,100,10,100, + 11,133,2,25,0,131,1,125,9,124,2,124,8,107,0,144, + 1,114,214,116,3,100,12,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,9,107,0,144,1,114,242,116, + 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, + 10,124,10,100,6,107,0,144,2,114,30,116,3,100,14,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, + 11,100,6,125,12,122,14,124,1,160,4,124,2,161,1,1, + 0,87,0,110,34,4,0,116,2,144,2,121,86,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,119,0,9,0,124,1,160,7,100,16,161, + 1,125,3,116,8,124,3,131,1,100,5,107,0,144,2,114, + 122,116,14,100,17,131,1,130,1,124,3,100,0,100,5,133, + 2,25,0,100,18,107,3,144,2,114,144,144,4,113,182,116, + 8,124,3,131,1,100,16,107,3,144,2,114,166,116,14,100, + 17,131,1,130,1,116,15,124,3,100,19,100,20,133,2,25, + 0,131,1,125,13,116,15,124,3,100,20,100,9,133,2,25, + 0,131,1,125,14,116,15,124,3,100,9,100,21,133,2,25, + 0,131,1,125,15,116,15,124,3,100,21,100,10,133,2,25, + 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, + 0,131,1,125,17,116,13,124,3,100,11,100,22,133,2,25, + 0,131,1,125,18,116,13,124,3,100,22,100,23,133,2,25, + 0,131,1,125,4,116,15,124,3,100,23,100,24,133,2,25, + 0,131,1,125,19,116,15,124,3,100,24,100,25,133,2,25, + 0,131,1,125,20,116,15,124,3,100,25,100,26,133,2,25, + 0,131,1,125,21,116,13,124,3,100,27,100,16,133,2,25, + 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, + 8,124,22,124,9,107,4,144,3,114,126,116,3,100,28,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, + 10,55,0,125,22,122,14,124,1,160,7,124,19,161,1,125, + 23,87,0,110,34,4,0,116,2,144,3,121,182,1,0,1, + 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,119,0,116,8,124,23,131,1,124,19,107, + 3,144,3,114,216,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,122,50,116,8,124,1,160,7,124, + 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, + 3,144,4,114,8,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,87,0,110,34,4,0,116,2,144, + 4,121,44,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,119,0,124,13,100, + 29,64,0,144,4,114,66,124,23,160,16,161,0,125,23,110, + 52,122,14,124,23,160,16,100,30,161,1,125,23,87,0,110, + 36,4,0,116,17,144,4,121,116,1,0,1,0,1,0,124, + 23,160,16,100,31,161,1,160,18,116,19,161,1,125,23,89, + 0,110,2,119,0,124,23,160,20,100,32,116,21,161,2,125, + 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, + 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, + 25,124,25,124,11,124,23,60,0,124,12,100,33,55,0,125, + 12,144,2,113,90,87,0,100,0,4,0,4,0,131,3,1, + 0,110,18,49,0,144,4,115,204,119,1,1,0,1,0,1, + 0,89,0,1,0,116,24,160,25,100,34,124,12,124,0,161, + 3,1,0,124,11,83,0,41,35,78,122,21,99,97,110,39, + 116,32,111,112,101,110,32,90,105,112,32,102,105,108,101,58, + 32,114,12,0,0,0,114,88,0,0,0,250,21,99,97,110, + 39,116,32,114,101,97,100,32,90,105,112,32,102,105,108,101, + 58,32,233,4,0,0,0,114,0,0,0,0,122,16,110,111, + 116,32,97,32,90,105,112,32,102,105,108,101,58,32,122,18, + 99,111,114,114,117,112,116,32,90,105,112,32,102,105,108,101, + 58,32,233,12,0,0,0,233,16,0,0,0,233,20,0,0, + 0,122,28,98,97,100,32,99,101,110,116,114,97,108,32,100, + 105,114,101,99,116,111,114,121,32,115,105,122,101,58,32,122, + 30,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, + 101,99,116,111,114,121,32,111,102,102,115,101,116,58,32,122, + 38,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, + 101,99,116,111,114,121,32,115,105,122,101,32,111,114,32,111, + 102,102,115,101,116,58,32,84,233,46,0,0,0,250,27,69, + 79,70,32,114,101,97,100,32,119,104,101,114,101,32,110,111, + 116,32,101,120,112,101,99,116,101,100,115,4,0,0,0,80, + 75,1,2,233,8,0,0,0,233,10,0,0,0,233,14,0, + 0,0,233,24,0,0,0,233,28,0,0,0,233,30,0,0, + 0,233,32,0,0,0,233,34,0,0,0,233,42,0,0,0, + 122,25,98,97,100,32,108,111,99,97,108,32,104,101,97,100, + 101,114,32,111,102,102,115,101,116,58,32,105,0,8,0,0, + 218,5,97,115,99,105,105,90,6,108,97,116,105,110,49,250, + 1,47,114,5,0,0,0,122,33,122,105,112,105,109,112,111, + 114,116,58,32,102,111,117,110,100,32,123,125,32,110,97,109, + 101,115,32,105,110,32,123,33,114,125,41,26,218,3,95,105, + 111,218,9,111,112,101,110,95,99,111,100,101,114,22,0,0, + 0,114,3,0,0,0,218,4,115,101,101,107,218,20,69,78, + 68,95,67,69,78,84,82,65,76,95,68,73,82,95,83,73, + 90,69,90,4,116,101,108,108,218,4,114,101,97,100,114,55, + 0,0,0,218,18,83,84,82,73,78,71,95,69,78,68,95, + 65,82,67,72,73,86,69,218,3,109,97,120,218,15,77,65, + 88,95,67,79,77,77,69,78,84,95,76,69,78,218,5,114, + 102,105,110,100,114,2,0,0,0,218,8,69,79,70,69,114, + 114,111,114,114,1,0,0,0,114,65,0,0,0,218,18,85, + 110,105,99,111,100,101,68,101,99,111,100,101,69,114,114,111, + 114,218,9,116,114,97,110,115,108,97,116,101,218,11,99,112, + 52,51,55,95,116,97,98,108,101,114,19,0,0,0,114,20, + 0,0,0,114,21,0,0,0,114,30,0,0,0,114,45,0, + 0,0,114,80,0,0,0,41,26,114,29,0,0,0,218,2, + 102,112,90,15,104,101,97,100,101,114,95,112,111,115,105,116, + 105,111,110,218,6,98,117,102,102,101,114,218,9,102,105,108, + 101,95,115,105,122,101,90,17,109,97,120,95,99,111,109,109, + 101,110,116,95,115,116,97,114,116,218,4,100,97,116,97,90, + 3,112,111,115,218,11,104,101,97,100,101,114,95,115,105,122, + 101,90,13,104,101,97,100,101,114,95,111,102,102,115,101,116, + 90,10,97,114,99,95,111,102,102,115,101,116,114,33,0,0, + 0,218,5,99,111,117,110,116,218,5,102,108,97,103,115,218, + 8,99,111,109,112,114,101,115,115,218,4,116,105,109,101,218, + 4,100,97,116,101,218,3,99,114,99,218,9,100,97,116,97, + 95,115,105,122,101,218,9,110,97,109,101,95,115,105,122,101, + 218,10,101,120,116,114,97,95,115,105,122,101,90,12,99,111, + 109,109,101,110,116,95,115,105,122,101,218,11,102,105,108,101, + 95,111,102,102,115,101,116,114,44,0,0,0,114,13,0,0, + 0,218,1,116,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,114,27,0,0,0,130,1,0,0,115,218,0,0, + 0,2,1,14,1,12,1,20,1,8,2,2,1,14,1,8, + 1,14,1,12,1,20,1,12,1,18,1,18,1,2,3,12, + 1,12,1,12,1,10,1,2,1,8,255,8,2,2,1,2, + 255,2,1,4,255,2,2,10,1,12,1,14,1,10,1,2, + 1,8,255,10,2,10,1,10,1,2,1,6,255,16,2,14, + 1,10,1,2,1,6,255,16,2,16,2,16,1,10,1,18, + 1,10,1,18,1,8,1,8,1,10,1,18,1,4,2,4, + 2,2,1,14,1,14,1,20,1,2,1,10,1,14,1,8, + 1,18,2,4,1,14,1,8,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,12, + 1,10,1,18,1,8,1,2,2,14,1,14,1,20,1,14, + 1,18,1,2,4,28,1,22,1,14,1,20,1,10,2,10, + 2,2,3,14,1,14,1,22,1,12,2,12,1,20,1,8, + 1,8,1,36,202,14,55,4,1,255,128,114,27,0,0,0, + 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, + 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, + 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, + 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, + 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, + 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, + 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, + 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, + 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, + 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, + 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, + 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, + 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, + 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, + 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, + 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, + 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, + 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, + 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, + 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, + 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, + 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, + 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, + 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, + 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, + 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, + 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, + 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,8,0,0,0,67,0,0,0,115,106,0,0, + 0,116,0,114,22,116,1,160,2,100,1,161,1,1,0,116, + 3,100,2,131,1,130,1,100,3,97,0,122,58,122,16,100, + 4,100,5,108,4,109,5,125,0,1,0,87,0,110,32,4, + 0,116,6,121,76,1,0,1,0,1,0,116,1,160,2,100, + 1,161,1,1,0,116,3,100,2,131,1,130,1,119,0,87, + 0,100,6,97,0,110,6,100,6,97,0,119,0,116,1,160, + 2,100,7,161,1,1,0,124,0,83,0,41,8,78,122,27, + 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, + 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, + 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, + 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, + 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, + 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, + 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, + 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, + 116,105,110,103,95,122,108,105,98,114,45,0,0,0,114,80, + 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,143, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,142, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,20,95,103,101,116,95,100,101,99,111,109,112,114, + 101,115,115,95,102,117,110,99,32,2,0,0,115,28,0,0, + 0,4,2,10,3,8,1,4,2,4,1,16,1,12,1,10, + 1,10,1,2,128,12,2,10,2,4,1,255,128,114,146,0, + 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,17, + 0,0,0,9,0,0,0,67,0,0,0,115,132,1,0,0, + 124,1,92,8,125,2,125,3,125,4,125,5,125,6,125,7, + 125,8,125,9,124,4,100,1,107,0,114,36,116,0,100,2, + 131,1,130,1,116,1,160,2,124,0,161,1,144,1,143,6, + 125,10,122,14,124,10,160,3,124,6,161,1,1,0,87,0, + 110,32,4,0,116,4,121,96,1,0,1,0,1,0,116,0, + 100,3,124,0,155,2,157,2,124,0,100,4,141,2,130,1, + 119,0,124,10,160,5,100,5,161,1,125,11,116,6,124,11, + 131,1,100,5,107,3,114,128,116,7,100,6,131,1,130,1, + 124,11,100,0,100,7,133,2,25,0,100,8,107,3,114,162, + 116,0,100,9,124,0,155,2,157,2,124,0,100,4,141,2, + 130,1,116,8,124,11,100,10,100,11,133,2,25,0,131,1, + 125,12,116,8,124,11,100,11,100,5,133,2,25,0,131,1, + 125,13,100,5,124,12,23,0,124,13,23,0,125,14,124,6, + 124,14,55,0,125,6,122,14,124,10,160,3,124,6,161,1, + 1,0,87,0,110,34,4,0,116,4,144,1,121,6,1,0, + 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, + 100,4,141,2,130,1,119,0,124,10,160,5,124,4,161,1, + 125,15,116,6,124,15,131,1,124,4,107,3,144,1,114,40, + 116,4,100,12,131,1,130,1,87,0,100,0,4,0,4,0, + 131,3,1,0,110,18,49,0,144,1,115,62,119,1,1,0, + 1,0,1,0,89,0,1,0,124,3,100,1,107,2,144,1, + 114,86,124,15,83,0,122,10,116,9,131,0,125,16,87,0, + 110,24,4,0,116,10,144,1,121,120,1,0,1,0,1,0, + 116,0,100,13,131,1,130,1,119,0,124,16,124,15,100,14, + 131,2,83,0,41,15,78,114,0,0,0,0,122,18,110,101, + 103,97,116,105,118,101,32,100,97,116,97,32,115,105,122,101, + 114,94,0,0,0,114,12,0,0,0,114,106,0,0,0,114, + 100,0,0,0,114,95,0,0,0,115,4,0,0,0,80,75, + 3,4,122,23,98,97,100,32,108,111,99,97,108,32,102,105, + 108,101,32,104,101,97,100,101,114,58,32,233,26,0,0,0, + 114,105,0,0,0,122,26,122,105,112,105,109,112,111,114,116, + 58,32,99,97,110,39,116,32,114,101,97,100,32,100,97,116, + 97,114,141,0,0,0,105,241,255,255,255,41,11,114,3,0, + 0,0,114,112,0,0,0,114,113,0,0,0,114,114,0,0, + 0,114,22,0,0,0,114,116,0,0,0,114,55,0,0,0, + 114,121,0,0,0,114,1,0,0,0,114,146,0,0,0,114, + 145,0,0,0,41,17,114,29,0,0,0,114,58,0,0,0, + 90,8,100,97,116,97,112,97,116,104,114,132,0,0,0,114, + 136,0,0,0,114,127,0,0,0,114,139,0,0,0,114,133, + 0,0,0,114,134,0,0,0,114,135,0,0,0,114,125,0, + 0,0,114,126,0,0,0,114,137,0,0,0,114,138,0,0, + 0,114,129,0,0,0,90,8,114,97,119,95,100,97,116,97, + 114,143,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,114,56,0,0,0,53,2,0,0,115,64,0, + 0,0,20,1,8,1,8,1,14,2,2,2,14,1,12,1, + 20,1,10,1,12,1,8,1,16,2,18,2,16,2,16,1, + 12,1,8,1,2,1,14,1,14,1,20,1,10,1,14,1, + 40,1,10,2,4,2,2,3,10,1,14,1,10,1,10,1, + 255,128,114,56,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, + 115,16,0,0,0,116,0,124,0,124,1,24,0,131,1,100, + 1,107,1,83,0,41,2,78,114,5,0,0,0,41,1,218, + 3,97,98,115,41,2,90,2,116,49,90,2,116,50,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,9,95, + 101,113,95,109,116,105,109,101,99,2,0,0,115,4,0,0, + 0,16,2,255,128,114,149,0,0,0,99,5,0,0,0,0, + 0,0,0,0,0,0,0,14,0,0,0,6,0,0,0,67, + 0,0,0,115,254,0,0,0,124,3,124,2,100,1,156,2, + 125,5,116,0,160,1,124,4,124,3,124,5,161,3,125,6, + 124,6,100,2,64,0,100,3,107,3,125,7,124,7,114,126, + 124,6,100,4,64,0,100,3,107,3,125,8,116,2,106,3, + 100,5,107,3,114,206,124,8,115,76,116,2,106,3,100,6, + 107,2,114,206,116,4,124,0,124,2,131,2,125,9,124,9, + 100,0,117,1,114,206,116,2,160,5,116,0,106,6,124,9, + 161,2,125,10,116,0,160,7,124,4,124,10,124,3,124,5, + 161,4,1,0,110,80,116,8,124,0,124,2,131,2,92,2, + 125,11,125,12,124,11,114,206,116,9,116,10,124,4,100,7, + 100,8,133,2,25,0,131,1,124,11,131,2,114,186,116,10, + 124,4,100,8,100,9,133,2,25,0,131,1,124,12,107,3, + 114,206,116,11,160,12,100,10,124,3,155,2,157,2,161,1, + 1,0,100,0,83,0,116,13,160,14,124,4,100,9,100,0, + 133,2,25,0,161,1,125,13,116,15,124,13,116,16,131,2, + 115,250,116,17,100,11,124,1,155,2,100,12,157,3,131,1, + 130,1,124,13,83,0,41,13,78,41,2,114,44,0,0,0, + 114,13,0,0,0,114,5,0,0,0,114,0,0,0,0,114, + 88,0,0,0,90,5,110,101,118,101,114,90,6,97,108,119, + 97,121,115,114,101,0,0,0,114,96,0,0,0,114,97,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,122,16,99,111,109,112, + 105,108,101,100,32,109,111,100,117,108,101,32,122,21,32,105, + 115,32,110,111,116,32,97,32,99,111,100,101,32,111,98,106, + 101,99,116,41,18,114,21,0,0,0,90,13,95,99,108,97, + 115,115,105,102,121,95,112,121,99,218,4,95,105,109,112,90, + 21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,101, + 100,95,112,121,99,115,218,15,95,103,101,116,95,112,121,99, + 95,115,111,117,114,99,101,218,11,115,111,117,114,99,101,95, + 104,97,115,104,90,17,95,82,65,87,95,77,65,71,73,67, + 95,78,85,77,66,69,82,90,18,95,118,97,108,105,100,97, + 116,101,95,104,97,115,104,95,112,121,99,218,29,95,103,101, + 116,95,109,116,105,109,101,95,97,110,100,95,115,105,122,101, + 95,111,102,95,115,111,117,114,99,101,114,149,0,0,0,114, + 2,0,0,0,114,45,0,0,0,114,80,0,0,0,218,7, + 109,97,114,115,104,97,108,90,5,108,111,97,100,115,114,15, + 0,0,0,218,10,95,99,111,100,101,95,116,121,112,101,218, + 9,84,121,112,101,69,114,114,111,114,41,14,114,32,0,0, + 0,114,57,0,0,0,114,66,0,0,0,114,38,0,0,0, + 114,128,0,0,0,90,11,101,120,99,95,100,101,116,97,105, + 108,115,114,131,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,90,12,115,111,117,114,99,101,95,98,121,116,101,115,114, + 152,0,0,0,90,12,115,111,117,114,99,101,95,109,116,105, + 109,101,90,11,115,111,117,114,99,101,95,115,105,122,101,114, + 50,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, + 99,111,100,101,107,2,0,0,115,72,0,0,0,2,2,2, + 1,6,254,14,5,12,2,4,1,12,1,10,1,2,1,2, + 255,8,1,2,255,10,2,8,1,4,1,4,1,2,1,4, + 254,4,5,8,1,6,255,8,4,6,255,4,3,22,3,18, + 1,2,255,4,2,8,1,4,255,4,2,18,2,10,1,16, + 1,4,1,255,128,114,157,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, + 0,0,0,115,28,0,0,0,124,0,160,0,100,1,100,2, + 161,2,125,0,124,0,160,0,100,3,100,2,161,2,125,0, + 124,0,83,0,41,4,78,115,2,0,0,0,13,10,243,1, + 0,0,0,10,243,1,0,0,0,13,41,1,114,19,0,0, + 0,41,1,218,6,115,111,117,114,99,101,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,23,95,110,111,114, + 109,97,108,105,122,101,95,108,105,110,101,95,101,110,100,105, + 110,103,115,152,2,0,0,115,8,0,0,0,12,1,12,1, + 4,1,255,128,114,161,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,6,0,0,0,67,0, + 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, + 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, + 4,78,114,78,0,0,0,84,41,1,90,12,100,111,110,116, + 95,105,110,104,101,114,105,116,41,2,114,161,0,0,0,218, + 7,99,111,109,112,105,108,101,41,2,114,57,0,0,0,114, + 160,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,15,95,99,111,109,112,105,108,101,95,115,111, + 117,114,99,101,159,2,0,0,115,6,0,0,0,8,1,16, + 1,255,128,114,163,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0, + 0,115,68,0,0,0,116,0,160,1,124,0,100,1,63,0, + 100,2,23,0,124,0,100,3,63,0,100,4,64,0,124,0, + 100,5,64,0,124,1,100,6,63,0,124,1,100,3,63,0, + 100,7,64,0,124,1,100,5,64,0,100,8,20,0,100,9, + 100,9,100,9,102,9,161,1,83,0,41,10,78,233,9,0, + 0,0,105,188,7,0,0,233,5,0,0,0,233,15,0,0, + 0,233,31,0,0,0,233,11,0,0,0,233,63,0,0,0, + 114,88,0,0,0,114,14,0,0,0,41,2,114,133,0,0, + 0,90,6,109,107,116,105,109,101,41,2,218,1,100,114,140, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,14,95,112,97,114,115,101,95,100,111,115,116,105, + 109,101,165,2,0,0,115,20,0,0,0,4,1,10,1,10, + 1,6,1,6,1,10,1,10,1,6,1,6,249,255,128,114, + 171,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,10,0,0,0,67,0,0,0,115,110,0, + 0,0,122,82,124,1,100,1,100,0,133,2,25,0,100,2, + 118,0,115,22,74,0,130,1,124,1,100,0,100,1,133,2, + 25,0,125,1,124,0,106,0,124,1,25,0,125,2,124,2, + 100,3,25,0,125,3,124,2,100,4,25,0,125,4,124,2, + 100,5,25,0,125,5,116,1,124,4,124,3,131,2,124,5, + 102,2,87,0,83,0,4,0,116,2,116,3,116,4,102,3, + 121,108,1,0,1,0,1,0,89,0,100,6,83,0,119,0, + 41,7,78,114,14,0,0,0,169,2,218,1,99,218,1,111, + 114,165,0,0,0,233,6,0,0,0,233,3,0,0,0,41, + 2,114,0,0,0,0,114,0,0,0,0,41,5,114,28,0, + 0,0,114,171,0,0,0,114,26,0,0,0,218,10,73,110, + 100,101,120,69,114,114,111,114,114,156,0,0,0,41,6,114, + 32,0,0,0,114,13,0,0,0,114,58,0,0,0,114,133, + 0,0,0,114,134,0,0,0,90,17,117,110,99,111,109,112, + 114,101,115,115,101,100,95,115,105,122,101,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,153,0,0,0,178, + 2,0,0,115,22,0,0,0,2,1,20,2,12,1,10,1, + 8,3,8,1,8,1,16,1,18,1,8,1,255,128,114,153, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,8,0,0,0,67,0,0,0,115,80,0,0, + 0,124,1,100,1,100,0,133,2,25,0,100,2,118,0,115, + 20,74,0,130,1,124,1,100,0,100,1,133,2,25,0,125, + 1,122,14,124,0,106,0,124,1,25,0,125,2,87,0,110, + 20,4,0,116,1,121,66,1,0,1,0,1,0,89,0,100, + 0,83,0,119,0,116,2,124,0,106,3,124,2,131,2,83, + 0,41,3,78,114,14,0,0,0,114,172,0,0,0,41,4, + 114,28,0,0,0,114,26,0,0,0,114,56,0,0,0,114, + 29,0,0,0,41,3,114,32,0,0,0,114,13,0,0,0, + 114,58,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,114,151,0,0,0,197,2,0,0,115,16,0, + 0,0,20,2,12,1,2,2,14,1,12,1,8,1,12,2, + 255,128,114,151,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,14,0,0,0,11,0,0,0,67,0,0,0, + 115,16,1,0,0,116,0,124,0,124,1,131,2,125,2,100, + 0,125,3,116,1,68,0,93,204,92,3,125,4,125,5,125, + 6,124,2,124,4,23,0,125,7,116,2,106,3,100,1,124, + 0,106,4,116,5,124,7,100,2,100,3,141,5,1,0,122, + 14,124,0,106,6,124,7,25,0,125,8,87,0,110,18,4, + 0,116,7,121,90,1,0,1,0,1,0,89,0,113,18,119, + 0,124,8,100,4,25,0,125,9,116,8,124,0,106,4,124, + 8,131,2,125,10,100,0,125,11,124,5,114,182,122,20,116, + 9,124,0,124,9,124,7,124,1,124,10,131,5,125,11,87, + 0,110,50,4,0,116,10,144,1,121,14,1,0,125,12,1, + 0,122,16,124,12,125,3,87,0,89,0,100,0,125,12,126, + 12,110,18,100,0,125,12,126,12,119,1,116,11,124,9,124, + 10,131,2,125,11,124,11,100,0,117,0,114,202,113,18,124, + 8,100,4,25,0,125,9,124,11,124,6,124,9,102,3,2, + 0,1,0,83,0,124,3,114,252,100,5,124,3,155,0,157, + 2,125,13,116,12,124,13,124,1,100,6,141,2,124,3,130, + 2,116,12,100,7,124,1,155,2,157,2,124,1,100,6,141, + 2,130,1,119,0,41,8,78,122,13,116,114,121,105,110,103, + 32,123,125,123,125,123,125,114,88,0,0,0,41,1,90,9, + 118,101,114,98,111,115,105,116,121,114,0,0,0,0,122,20, + 109,111,100,117,108,101,32,108,111,97,100,32,102,97,105,108, + 101,100,58,32,114,62,0,0,0,114,61,0,0,0,41,13, 114,36,0,0,0,114,91,0,0,0,114,45,0,0,0,114, 80,0,0,0,114,29,0,0,0,114,20,0,0,0,114,28, 0,0,0,114,26,0,0,0,114,56,0,0,0,114,157,0, - 0,0,114,163,0,0,0,114,3,0,0,0,41,11,114,32, - 0,0,0,114,38,0,0,0,114,13,0,0,0,114,92,0, - 0,0,114,93,0,0,0,114,51,0,0,0,114,66,0,0, - 0,114,58,0,0,0,114,40,0,0,0,114,128,0,0,0, - 114,50,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,114,48,0,0,0,219,2,0,0,115,38,0, - 0,0,10,1,14,1,8,1,22,1,2,1,14,1,12,1, - 6,1,8,2,12,1,4,1,18,1,10,2,8,1,2,3, - 8,1,14,1,18,2,255,128,114,48,0,0,0,41,46,114, - 86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2,0,0,0,90, - 17,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108, - 105,98,114,45,0,0,0,114,150,0,0,0,114,112,0,0, - 0,114,154,0,0,0,114,71,0,0,0,114,133,0,0,0, - 114,69,0,0,0,90,7,95,95,97,108,108,95,95,114,20, - 0,0,0,90,15,112,97,116,104,95,115,101,112,97,114,97, - 116,111,114,115,114,18,0,0,0,114,79,0,0,0,114,3, - 0,0,0,114,25,0,0,0,218,4,116,121,112,101,114,74, - 0,0,0,114,115,0,0,0,114,117,0,0,0,114,119,0, - 0,0,90,13,95,76,111,97,100,101,114,66,97,115,105,99, - 115,114,4,0,0,0,114,91,0,0,0,114,36,0,0,0, - 114,37,0,0,0,114,35,0,0,0,114,27,0,0,0,114, - 124,0,0,0,114,144,0,0,0,114,146,0,0,0,114,56, - 0,0,0,114,149,0,0,0,114,157,0,0,0,218,8,95, - 95,99,111,100,101,95,95,114,155,0,0,0,114,161,0,0, - 0,114,163,0,0,0,114,171,0,0,0,114,153,0,0,0, - 114,151,0,0,0,114,48,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,8, - 60,109,111,100,117,108,101,62,1,0,0,0,115,92,0,0, - 0,4,0,8,16,16,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,2,6,3,14,1,16,3,4,4,8, - 2,4,2,4,1,4,1,18,2,0,127,0,127,12,33,12, - 1,2,1,2,1,4,252,8,9,8,4,8,9,8,31,2, - 126,2,254,4,29,8,5,8,21,8,46,8,10,10,46,8, - 5,8,7,8,6,8,13,8,19,12,15,255,128, + 0,0,114,79,0,0,0,114,163,0,0,0,114,3,0,0, + 0,41,14,114,32,0,0,0,114,38,0,0,0,114,13,0, + 0,0,90,12,105,109,112,111,114,116,95,101,114,114,111,114, + 114,92,0,0,0,114,93,0,0,0,114,51,0,0,0,114, + 66,0,0,0,114,58,0,0,0,114,40,0,0,0,114,128, + 0,0,0,114,50,0,0,0,90,3,101,120,99,114,81,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,48,0,0,0,212,2,0,0,115,58,0,0,0,10, + 1,4,1,14,1,8,1,22,1,2,1,14,1,12,1,6, + 1,8,2,12,1,4,1,4,1,2,1,20,1,16,1,16, + 1,8,128,10,2,8,1,2,3,8,1,14,1,4,2,10, + 1,14,1,18,2,2,241,255,128,114,48,0,0,0,41,46, + 114,86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2,0,0,0, + 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, + 108,105,98,114,45,0,0,0,114,150,0,0,0,114,112,0, + 0,0,114,154,0,0,0,114,71,0,0,0,114,133,0,0, + 0,114,69,0,0,0,90,7,95,95,97,108,108,95,95,114, + 20,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, + 97,116,111,114,115,114,18,0,0,0,114,79,0,0,0,114, + 3,0,0,0,114,25,0,0,0,218,4,116,121,112,101,114, + 74,0,0,0,114,115,0,0,0,114,117,0,0,0,114,119, + 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, + 99,115,114,4,0,0,0,114,91,0,0,0,114,36,0,0, + 0,114,37,0,0,0,114,35,0,0,0,114,27,0,0,0, + 114,124,0,0,0,114,144,0,0,0,114,146,0,0,0,114, + 56,0,0,0,114,149,0,0,0,114,157,0,0,0,218,8, + 95,95,99,111,100,101,95,95,114,155,0,0,0,114,161,0, + 0,0,114,163,0,0,0,114,171,0,0,0,114,153,0,0, + 0,114,151,0,0,0,114,48,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 8,60,109,111,100,117,108,101,62,1,0,0,0,115,92,0, + 0,0,4,0,8,16,16,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,2,6,3,14,1,16,3,4,4, + 8,2,4,2,4,1,4,1,18,2,0,127,0,127,12,34, + 12,1,2,1,2,1,4,252,8,9,8,4,8,9,8,31, + 2,126,2,254,4,29,8,5,8,21,8,46,8,8,10,40, + 8,5,8,7,8,6,8,13,8,19,12,15,255,128, }; From webhook-mailer at python.org Fri Dec 18 19:54:10 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 00:54:10 -0000 Subject: [Python-checkins] bpo-34805: Guarantee that __subclasses__() is in definition order. (GH-23844) Message-ID: https://github.com/python/cpython/commit/51f4688254ebb7b30215de424360ba5c92c63fe8 commit: 51f4688254ebb7b30215de424360ba5c92c63fe8 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-18T16:53:50-08:00 summary: bpo-34805: Guarantee that __subclasses__() is in definition order. (GH-23844) files: M Doc/library/stdtypes.rst M Lib/test/test_descr.py diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index e48f67bfb9636..2869378bbdaf0 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -5353,8 +5353,8 @@ types, where they are relevant. Some of these are not reported by the .. method:: class.__subclasses__ Each class keeps a list of weak references to its immediate subclasses. This - method returns a list of all those references still alive. - Example:: + method returns a list of all those references still alive. The list is in + definition order. Example:: >>> int.__subclasses__() [] diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 307416c3300ae..f0048f42f882b 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -4,6 +4,8 @@ import itertools import math import pickle +import random +import string import sys import types import unittest @@ -845,6 +847,14 @@ class Module(types.ModuleType, str): self.fail("inheriting from ModuleType and str at the same time " "should fail") + # Issue 34805: Verify that definition order is retained + def random_name(): + return ''.join(random.choices(string.ascii_letters, k=10)) + class A: + pass + subclasses = [type(random_name(), (A,), {}) for i in range(100)] + self.assertEqual(A.__subclasses__(), subclasses) + def test_multiple_inheritance(self): # Testing multiple inheritance... class C(object): From webhook-mailer at python.org Fri Dec 18 19:56:01 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 00:56:01 -0000 Subject: [Python-checkins] bpo-42670: Fix a missing word in the itertools.product() docs (GH-23823) (GH-23824) Message-ID: https://github.com/python/cpython/commit/eef33e6d49d05aad4111da4ad2d9cb34e7a5206c commit: eef33e6d49d05aad4111da4ad2d9cb34e7a5206c branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-18T16:55:52-08:00 summary: bpo-42670: Fix a missing word in the itertools.product() docs (GH-23823) (GH-23824) files: M Doc/library/itertools.rst diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 3de66c9349281..85f4928ce84fb 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -565,7 +565,7 @@ loops that truncate the stream. Before :func:`product` runs, it completely consumes the input iterables, keeping pools of values in memory to generate the products. Accordingly, - it only useful with finite inputs. + it is only useful with finite inputs. .. function:: repeat(object[, times]) From webhook-mailer at python.org Fri Dec 18 20:03:18 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 01:03:18 -0000 Subject: [Python-checkins] bpo-42559: Not that getrandbits() is non-negative. (GH-23843) Message-ID: https://github.com/python/cpython/commit/5646414ae1fce620b919056f7999dfd15da78e9c commit: 5646414ae1fce620b919056f7999dfd15da78e9c branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-18T17:03:10-08:00 summary: bpo-42559: Not that getrandbits() is non-negative. (GH-23843) files: M Doc/library/random.rst diff --git a/Doc/library/random.rst b/Doc/library/random.rst index c243aced986e5..fa5c74b40b25e 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -142,10 +142,11 @@ Functions for integers .. function:: getrandbits(k) - Returns a Python integer with *k* random bits. This method is supplied with - the MersenneTwister generator and some other generators may also provide it - as an optional part of the API. When available, :meth:`getrandbits` enables - :meth:`randrange` to handle arbitrarily large ranges. + Returns a non-negative Python integer with *k* random bits. This method + is supplied with the MersenneTwister generator and some other generators + may also provide it as an optional part of the API. When available, + :meth:`getrandbits` enables :meth:`randrange` to handle arbitrarily large + ranges. .. versionchanged:: 3.9 This method now accepts zero for *k*. From webhook-mailer at python.org Fri Dec 18 20:17:40 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 01:17:40 -0000 Subject: [Python-checkins] bpo-34805: Guarantee that __subclasses__() is in definition order. (GH-23844) (GH-23850) Message-ID: https://github.com/python/cpython/commit/782665885c983e88aac12f7e082485cac2df8007 commit: 782665885c983e88aac12f7e082485cac2df8007 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-18T17:17:32-08:00 summary: bpo-34805: Guarantee that __subclasses__() is in definition order. (GH-23844) (GH-23850) files: M Doc/library/stdtypes.rst M Lib/test/test_descr.py diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index a48cfa1327791..59200730a48f5 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -5196,8 +5196,8 @@ types, where they are relevant. Some of these are not reported by the .. method:: class.__subclasses__ Each class keeps a list of weak references to its immediate subclasses. This - method returns a list of all those references still alive. - Example:: + method returns a list of all those references still alive. The list is in + definition order. Example:: >>> int.__subclasses__() [] diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 9e875da375083..c7a191bccd69c 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -4,6 +4,8 @@ import itertools import math import pickle +import random +import string import sys import types import unittest @@ -845,6 +847,14 @@ class Module(types.ModuleType, str): self.fail("inheriting from ModuleType and str at the same time " "should fail") + # Issue 34805: Verify that definition order is retained + def random_name(): + return ''.join(random.choices(string.ascii_letters, k=10)) + class A: + pass + subclasses = [type(random_name(), (A,), {}) for i in range(100)] + self.assertEqual(A.__subclasses__(), subclasses) + def test_multiple_inheritance(self): # Testing multiple inheritance... class C(object): From webhook-mailer at python.org Fri Dec 18 22:10:16 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 03:10:16 -0000 Subject: [Python-checkins] bpo-42559: Not that getrandbits() is non-negative. (GH-23843) (GH-23851) Message-ID: https://github.com/python/cpython/commit/d458d8dab0abaf781c923f80f8eb832d0c683e88 commit: d458d8dab0abaf781c923f80f8eb832d0c683e88 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-18T19:10:06-08:00 summary: bpo-42559: Not that getrandbits() is non-negative. (GH-23843) (GH-23851) files: M Doc/library/random.rst diff --git a/Doc/library/random.rst b/Doc/library/random.rst index 8154dfc18ccc6..0e703251259aa 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -142,10 +142,11 @@ Functions for integers .. function:: getrandbits(k) - Returns a Python integer with *k* random bits. This method is supplied with - the MersenneTwister generator and some other generators may also provide it - as an optional part of the API. When available, :meth:`getrandbits` enables - :meth:`randrange` to handle arbitrarily large ranges. + Returns a non-negative Python integer with *k* random bits. This method + is supplied with the MersenneTwister generator and some other generators + may also provide it as an optional part of the API. When available, + :meth:`getrandbits` enables :meth:`randrange` to handle arbitrarily large + ranges. .. versionchanged:: 3.9 This method now accepts zero for *k*. From webhook-mailer at python.org Fri Dec 18 23:28:30 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 04:28:30 -0000 Subject: [Python-checkins] Fixed typo in itertools documentation (GH-23816) Message-ID: https://github.com/python/cpython/commit/e0096124768f5d06b78cec977d9c37f27c5eab5f commit: e0096124768f5d06b78cec977d9c37f27c5eab5f branch: master author: Casper Smet committer: rhettinger date: 2020-12-18T20:28:21-08:00 summary: Fixed typo in itertools documentation (GH-23816) files: M Misc/ACKS diff --git a/Misc/ACKS b/Misc/ACKS index 134f4ea3be874..381aed1009c1a 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1624,6 +1624,7 @@ Ville Skytt? Michael Sloan Nick Sloan V?clav ?milauer +Casper W. Smet Allen W. Smith Christopher Smith Eric V. Smith From webhook-mailer at python.org Fri Dec 18 23:33:45 2020 From: webhook-mailer at python.org (rhettinger) Date: Sat, 19 Dec 2020 04:33:45 -0000 Subject: [Python-checkins] bpo-42470: Do not warn on sequences which are also sets in random.sample() (GH-23665) Message-ID: https://github.com/python/cpython/commit/1e27b57dbc8c1b758e37a531487813aef2d111ca commit: 1e27b57dbc8c1b758e37a531487813aef2d111ca branch: master author: masklinn committer: rhettinger date: 2020-12-18T20:33:36-08:00 summary: bpo-42470: Do not warn on sequences which are also sets in random.sample() (GH-23665) files: A Misc/NEWS.d/next/Library/2020-12-06-12-00-00.bpo-42470.iqtC4L.rst M Lib/random.py M Lib/test/test_random.py diff --git a/Lib/random.py b/Lib/random.py index 139e8a40bb272..66433baa8cc18 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -424,13 +424,14 @@ def sample(self, population, k, *, counts=None): # too many calls to _randbelow(), making them slower and # causing them to eat more entropy than necessary. - if isinstance(population, _Set): - _warn('Sampling from a set deprecated\n' - 'since Python 3.9 and will be removed in a subsequent version.', - DeprecationWarning, 2) - population = tuple(population) if not isinstance(population, _Sequence): - raise TypeError("Population must be a sequence. For dicts or sets, use sorted(d).") + if isinstance(population, _Set): + _warn('Sampling from a set deprecated\n' + 'since Python 3.9 and will be removed in a subsequent version.', + DeprecationWarning, 2) + population = tuple(population) + else: + raise TypeError("Population must be a sequence. For dicts or sets, use sorted(d).") n = len(population) if counts is not None: cum_counts = list(_accumulate(counts)) diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index 0c1fdeec9915e..327bfa3bbda1b 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -11,7 +11,7 @@ from math import log, exp, pi, fsum, sin, factorial from test import support from fractions import Fraction -from collections import Counter +from collections import abc, Counter class TestBasicOps: # Superclass with tests common to all generators. @@ -163,6 +163,22 @@ def test_sample_on_sets(self): population = {10, 20, 30, 40, 50, 60, 70} self.gen.sample(population, k=5) + def test_sample_on_seqsets(self): + class SeqSet(abc.Sequence, abc.Set): + def __init__(self, items): + self._items = items + + def __len__(self): + return len(self._items) + + def __getitem__(self, index): + return self._items[index] + + population = SeqSet([2, 4, 1, 3]) + with warnings.catch_warnings(): + warnings.simplefilter("error", DeprecationWarning) + self.gen.sample(population, k=2) + def test_sample_with_counts(self): sample = self.gen.sample diff --git a/Misc/NEWS.d/next/Library/2020-12-06-12-00-00.bpo-42470.iqtC4L.rst b/Misc/NEWS.d/next/Library/2020-12-06-12-00-00.bpo-42470.iqtC4L.rst new file mode 100644 index 0000000000000..cd2edb65d7a6c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-06-12-00-00.bpo-42470.iqtC4L.rst @@ -0,0 +1 @@ +:func:`random.sample` no longer warns on a sequence which is also a set. From webhook-mailer at python.org Sat Dec 19 05:17:12 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 19 Dec 2020 10:17:12 -0000 Subject: [Python-checkins] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) Message-ID: https://github.com/python/cpython/commit/3d569fd6dccf9f582bafaca04d3535094cae393e commit: 3d569fd6dccf9f582bafaca04d3535094cae393e branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-19T12:17:08+02:00 summary: bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) * Tkinter functions and constructors which need a default root window raise now RuntimeError with descriptive message instead of obscure AttributeError or NameError if it is not created yet or cannot be created automatically. * Add tests for all functions which use default root window. * Fix import in the pynche script. files: A Lib/tkinter/test/test_tkinter/test_simpledialog.py A Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst M Lib/idlelib/pyshell.py M Lib/test/test_idle.py M Lib/tkinter/__init__.py M Lib/tkinter/commondialog.py M Lib/tkinter/font.py M Lib/tkinter/simpledialog.py M Lib/tkinter/test/support.py M Lib/tkinter/test/test_tkinter/test_font.py M Lib/tkinter/test/test_tkinter/test_images.py M Lib/tkinter/test/test_tkinter/test_misc.py M Lib/tkinter/test/test_tkinter/test_variables.py M Lib/tkinter/test/test_tkinter/test_widgets.py M Lib/tkinter/test/test_ttk/test_extensions.py M Lib/tkinter/test/test_ttk/test_widgets.py M Lib/tkinter/tix.py M Lib/tkinter/ttk.py M Tools/pynche/PyncheWidget.py diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index c3ecdc7b1b077..abe8a85952bc9 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -1061,8 +1061,10 @@ def begin(self): (sys.version, sys.platform, self.COPYRIGHT, nosub)) self.text.focus_force() self.showprompt() + # User code should use separate default Tk root window import tkinter - tkinter._default_root = None # 03Jan04 KBK What's this? + tkinter._support_default_root = True + tkinter._default_root = None return True def stop_readline(self): diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py index b205d35649860..8756b766334e8 100644 --- a/Lib/test/test_idle.py +++ b/Lib/test/test_idle.py @@ -20,5 +20,5 @@ if __name__ == '__main__': tk.NoDefaultRoot() unittest.main(exit=False) - tk._support_default_root = 1 + tk._support_default_root = True tk._default_root = None diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 3bfeb7a017903..1cc1870461380 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -270,7 +270,7 @@ def __repr__(self): ) -_support_default_root = 1 +_support_default_root = True _default_root = None @@ -280,13 +280,26 @@ def NoDefaultRoot(): Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. """ - global _support_default_root - _support_default_root = 0 - global _default_root + global _support_default_root, _default_root + _support_default_root = False + # Delete, so any use of _default_root will immediately raise an exception. + # Rebind before deletion, so repeated calls will not fail. _default_root = None del _default_root +def _get_default_root(what=None): + if not _support_default_root: + raise RuntimeError("No master specified and tkinter is " + "configured to not support default root") + if not _default_root: + if what: + raise RuntimeError(f"Too early to {what}: no default root window") + root = Tk() + assert _default_root is root + return _default_root + + def _tkerror(err): """Internal function.""" pass @@ -330,7 +343,7 @@ def __init__(self, master=None, value=None, name=None): raise TypeError("name must be a string") global _varnum if not master: - master = _default_root + master = _get_default_root('create variable') self._root = master._root() self._tk = master.tk if name: @@ -591,7 +604,7 @@ def get(self): def mainloop(n=0): """Run the main loop of Tcl.""" - _default_root.tk.mainloop(n) + _get_default_root('run the main loop').tk.mainloop(n) getint = int @@ -600,9 +613,9 @@ def mainloop(n=0): def getboolean(s): - """Convert true and false to integer values 1 and 0.""" + """Convert Tcl object to True or False.""" try: - return _default_root.tk.getboolean(s) + return _get_default_root('use getboolean()').tk.getboolean(s) except TclError: raise ValueError("invalid literal for getboolean()") @@ -2248,7 +2261,7 @@ def __init__(self, screenName=None, baseName=None, className='Tk', is the name of the widget class.""" self.master = None self.children = {} - self._tkloaded = 0 + self._tkloaded = False # to avoid recursions in the getattr code in case of failure, we # ensure that self.tk is always _something_. self.tk = None @@ -2272,7 +2285,7 @@ def loadtk(self): self._loadtk() def _loadtk(self): - self._tkloaded = 1 + self._tkloaded = True global _default_root # Version sanity checks tk_version = self.tk.getvar('tk_version') @@ -2521,12 +2534,8 @@ class BaseWidget(Misc): def _setup(self, master, cnf): """Internal function. Sets up information about children.""" - if _support_default_root: - global _default_root - if not master: - if not _default_root: - _default_root = Tk() - master = _default_root + if not master: + master = _get_default_root() self.master = master self.tk = master.tk name = None @@ -3990,9 +3999,7 @@ class Image: def __init__(self, imgtype, name=None, cnf={}, master=None, **kw): self.name = None if not master: - master = _default_root - if not master: - raise RuntimeError('Too early to create image') + master = _get_default_root('create image') self.tk = getattr(master, 'tk', master) if not name: Image._last_id += 1 @@ -4146,11 +4153,13 @@ def __init__(self, name=None, cnf={}, master=None, **kw): def image_names(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'names')) + tk = _get_default_root('use image_names()').tk + return tk.splitlist(tk.call('image', 'names')) def image_types(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'types')) + tk = _get_default_root('use image_types()').tk + return tk.splitlist(tk.call('image', 'types')) class Spinbox(Widget, XView): diff --git a/Lib/tkinter/commondialog.py b/Lib/tkinter/commondialog.py index e56b5baf7d1e1..cc3069842c3e4 100644 --- a/Lib/tkinter/commondialog.py +++ b/Lib/tkinter/commondialog.py @@ -18,10 +18,10 @@ class Dialog: command = None def __init__(self, master=None, **options): + if not master: + master = options.get('parent') self.master = master self.options = options - if not master and options.get('parent'): - self.master = options['parent'] def _fixoptions(self): pass # hook diff --git a/Lib/tkinter/font.py b/Lib/tkinter/font.py index a9f79d8e456bb..c051162bd29e0 100644 --- a/Lib/tkinter/font.py +++ b/Lib/tkinter/font.py @@ -69,7 +69,7 @@ def _mkdict(self, args): def __init__(self, root=None, font=None, name=None, exists=False, **options): if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font') tk = getattr(root, 'tk', root) if font: # get actual settings corresponding to the given font @@ -184,7 +184,7 @@ def metrics(self, *options, **kw): def families(root=None, displayof=None): "Get font families (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.families()') args = () if displayof: args = ('-displayof', displayof) @@ -194,7 +194,7 @@ def families(root=None, displayof=None): def names(root=None): "Get names of defined fonts (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.names()') return root.tk.splitlist(root.tk.call("font", "names")) diff --git a/Lib/tkinter/simpledialog.py b/Lib/tkinter/simpledialog.py index 85244171117b6..b882d47c961bd 100644 --- a/Lib/tkinter/simpledialog.py +++ b/Lib/tkinter/simpledialog.py @@ -24,9 +24,7 @@ """ from tkinter import * -from tkinter import messagebox - -import tkinter # used at _QueryDialog for tkinter._default_root +from tkinter import messagebox, _get_default_root class SimpleDialog: @@ -128,13 +126,17 @@ def __init__(self, parent, title = None): title -- the dialog title ''' - Toplevel.__init__(self, parent) + master = parent + if not master: + master = _get_default_root('create dialog window') + + Toplevel.__init__(self, master) self.withdraw() # remain invisible for now - # If the master is not viewable, don't + # If the parent is not viewable, don't # make the child transient, or else it # would be opened withdrawn - if parent.winfo_viewable(): + if parent is not None and parent.winfo_viewable(): self.transient(parent) if title: @@ -155,7 +157,7 @@ def __init__(self, parent, title = None): self.protocol("WM_DELETE_WINDOW", self.cancel) - if self.parent is not None: + if parent is not None: self.geometry("+%d+%d" % (parent.winfo_rootx()+50, parent.winfo_rooty()+50)) @@ -259,9 +261,6 @@ def __init__(self, title, prompt, minvalue = None, maxvalue = None, parent = None): - if not parent: - parent = tkinter._default_root - self.prompt = prompt self.minvalue = minvalue self.maxvalue = maxvalue diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py index 467a0b66c265c..dbc47a81e6515 100644 --- a/Lib/tkinter/test/support.py +++ b/Lib/tkinter/test/support.py @@ -36,6 +36,33 @@ def tearDown(self): w.destroy() self.root.withdraw() + +class AbstractDefaultRootTest: + + def setUp(self): + self._old_support_default_root = tkinter._support_default_root + destroy_default_root() + tkinter._support_default_root = True + self.wantobjects = tkinter.wantobjects + + def tearDown(self): + destroy_default_root() + tkinter._default_root = None + tkinter._support_default_root = self._old_support_default_root + + def _test_widget(self, constructor): + # no master passing + x = constructor() + self.assertIsNotNone(tkinter._default_root) + self.assertIs(x.master, tkinter._default_root) + self.assertIs(x.tk, tkinter._default_root.tk) + x.destroy() + destroy_default_root() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, constructor) + self.assertFalse(hasattr(tkinter, '_default_root')) + + def destroy_default_root(): if getattr(tkinter, '_default_root', None): tkinter._default_root.update_idletasks() diff --git a/Lib/tkinter/test/test_tkinter/test_font.py b/Lib/tkinter/test/test_tkinter/test_font.py index 6d1eea44b4d2f..3f71209064321 100644 --- a/Lib/tkinter/test/test_tkinter/test_font.py +++ b/Lib/tkinter/test/test_tkinter/test_font.py @@ -2,7 +2,7 @@ import tkinter from tkinter import font from test.support import requires, run_unittest, gc_collect, ALWAYS_EQ -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -107,7 +107,37 @@ def test_repr(self): ) -tests_gui = (FontTest, ) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_families(self): + self.assertRaises(RuntimeError, font.families) + root = tkinter.Tk() + families = font.families() + self.assertIsInstance(families, tuple) + self.assertTrue(families) + for family in families: + self.assertIsInstance(family, str) + self.assertTrue(family) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.families) + + def test_names(self): + self.assertRaises(RuntimeError, font.names) + root = tkinter.Tk() + names = font.names() + self.assertIsInstance(names, tuple) + self.assertTrue(names) + for name in names: + self.assertIsInstance(name, str) + self.assertTrue(name) + self.assertIn(fontname, names) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.names) + + +tests_gui = (FontTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_images.py b/Lib/tkinter/test/test_tkinter/test_images.py index 6c6cb4e148573..2526e92200d90 100644 --- a/Lib/tkinter/test/test_tkinter/test_images.py +++ b/Lib/tkinter/test/test_tkinter/test_images.py @@ -2,7 +2,7 @@ import tkinter from test import support from test.support import os_helper -from tkinter.test.support import AbstractTkTest, requires_tcl +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest, requires_tcl support.requires('gui') @@ -20,6 +20,47 @@ def test_image_names(self): self.assertIsInstance(image_names, tuple) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_image_types(self): + self.assertRaises(RuntimeError, tkinter.image_types) + root = tkinter.Tk() + image_types = tkinter.image_types() + self.assertIsInstance(image_types, tuple) + self.assertIn('photo', image_types) + self.assertIn('bitmap', image_types) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_types) + + def test_image_names(self): + self.assertRaises(RuntimeError, tkinter.image_names) + root = tkinter.Tk() + image_names = tkinter.image_names() + self.assertIsInstance(image_names, tuple) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_names) + + def test_image_create_bitmap(self): + self.assertRaises(RuntimeError, tkinter.BitmapImage) + root = tkinter.Tk() + image = tkinter.BitmapImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.BitmapImage) + + def test_image_create_photo(self): + self.assertRaises(RuntimeError, tkinter.PhotoImage) + root = tkinter.Tk() + image = tkinter.PhotoImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.PhotoImage) + + class BitmapImageTest(AbstractTkTest, unittest.TestCase): @classmethod @@ -331,7 +372,7 @@ def test_transparency(self): self.assertEqual(image.transparency_get(4, 6), False) -tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) +tests_gui = (MiscTest, DefaultRootTest, BitmapImageTest, PhotoImageTest,) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index b8eea2544f522..585d81ddf9f2d 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -1,7 +1,7 @@ import unittest import tkinter from test import support -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest support.requires('gui') @@ -241,7 +241,85 @@ def test_event_repr(self): " num=3 delta=-1 focus=True" " x=10 y=20 width=300 height=200>") -tests_gui = (MiscTest, ) + def test_getboolean(self): + for v in 'true', 'yes', 'on', '1', 't', 'y', 1, True: + self.assertIs(self.root.getboolean(v), True) + for v in 'false', 'no', 'off', '0', 'f', 'n', 0, False: + self.assertIs(self.root.getboolean(v), False) + self.assertRaises(ValueError, self.root.getboolean, 'yea') + self.assertRaises(ValueError, self.root.getboolean, '') + self.assertRaises(TypeError, self.root.getboolean, None) + self.assertRaises(TypeError, self.root.getboolean, ()) + + def test_mainloop(self): + log = [] + def callback(): + log.append(1) + self.root.after(100, self.root.quit) + self.root.after(100, callback) + self.root.mainloop(1) + self.assertEqual(log, []) + self.root.mainloop(0) + self.assertEqual(log, [1]) + self.assertTrue(self.root.winfo_exists()) + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + root2 = tkinter.Tk() + root3 = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + root2.destroy() + self.assertIs(tkinter._default_root, root) + root.destroy() + self.assertIsNone(tkinter._default_root) + root3.destroy() + self.assertIsNone(tkinter._default_root) + + def test_no_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + # repeated call is no-op + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root = tkinter.Tk() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + + def test_getboolean(self): + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + root = tkinter.Tk() + self.assertIs(tkinter.getboolean('1'), True) + self.assertRaises(ValueError, tkinter.getboolean, 'yea') + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + + def test_mainloop(self): + self.assertRaises(RuntimeError, tkinter.mainloop) + root = tkinter.Tk() + root.after_idle(root.quit) + tkinter.mainloop() + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.mainloop) + + +tests_gui = (MiscTest, DefaultRootTest) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_simpledialog.py b/Lib/tkinter/test/test_tkinter/test_simpledialog.py new file mode 100644 index 0000000000000..911917258806d --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/test_simpledialog.py @@ -0,0 +1,25 @@ +import unittest +import tkinter +from test.support import requires, run_unittest, swap_attr +from tkinter.test.support import AbstractDefaultRootTest +from tkinter.simpledialog import Dialog, askinteger + +requires('gui') + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_askinteger(self): + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + root = tkinter.Tk() + with swap_attr(Dialog, 'wait_window', lambda self, w: w.destroy()): + askinteger("Go To Line", "Line number") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + + +tests_gui = (DefaultRootTest,) + +if __name__ == "__main__": + run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_variables.py b/Lib/tkinter/test/test_tkinter/test_variables.py index 08b7dedcaf933..63d7c21059e38 100644 --- a/Lib/tkinter/test/test_tkinter/test_variables.py +++ b/Lib/tkinter/test/test_tkinter/test_variables.py @@ -1,8 +1,10 @@ import unittest import gc +import tkinter from tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl, TclError) from test.support import ALWAYS_EQ +from tkinter.test.support import AbstractDefaultRootTest class Var(Variable): @@ -308,8 +310,21 @@ def test_invalid_value_domain(self): v.get() +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_variable(self): + self.assertRaises(RuntimeError, Variable) + root = tkinter.Tk() + v = Variable() + v.set("value") + self.assertEqual(v.get(), "value") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, Variable) + + tests_gui = (TestVariable, TestStringVar, TestIntVar, - TestDoubleVar, TestBooleanVar) + TestDoubleVar, TestBooleanVar, DefaultRootTest) if __name__ == "__main__": diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index 4b9b6ebdda04e..54eddbf821611 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -5,7 +5,8 @@ from test.support import requires from tkinter.test.support import (tcl_version, requires_tcl, - get_tk_patchlevel, widget_eq) + get_tk_patchlevel, widget_eq, + AbstractDefaultRootTest) from tkinter.test.widget_tests import ( add_standard_options, noconv, pixels_round, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, @@ -1295,12 +1296,21 @@ def test_aspect(self): self.checkIntegerParam(widget, 'aspect', 250, 0, -300) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(tkinter.Frame) + + def test_label(self): + self._test_widget(tkinter.Label) + + tests_gui = ( ButtonTest, CanvasTest, CheckbuttonTest, EntryTest, FrameTest, LabelFrameTest,LabelTest, ListboxTest, MenubuttonTest, MenuTest, MessageTest, OptionMenuTest, PanedWindowTest, RadiobuttonTest, ScaleTest, ScrollbarTest, - SpinboxTest, TextTest, ToplevelTest, + SpinboxTest, TextTest, ToplevelTest, DefaultRootTest, ) if __name__ == '__main__': diff --git a/Lib/tkinter/test/test_ttk/test_extensions.py b/Lib/tkinter/test/test_ttk/test_extensions.py index 6937ba1ca9be4..1a70e0befe623 100644 --- a/Lib/tkinter/test/test_ttk/test_extensions.py +++ b/Lib/tkinter/test/test_ttk/test_extensions.py @@ -2,8 +2,8 @@ import unittest import tkinter from tkinter import ttk -from test.support import requires, run_unittest, swap_attr -from tkinter.test.support import AbstractTkTest, destroy_default_root +from test.support import requires, run_unittest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -46,20 +46,6 @@ def test_widget_destroy(self): if hasattr(sys, 'last_type'): self.assertNotEqual(sys.last_type, tkinter.TclError) - - def test_initialization_no_master(self): - # no master passing - with swap_attr(tkinter, '_default_root', None), \ - swap_attr(tkinter, '_support_default_root', True): - try: - x = ttk.LabeledScale() - self.assertIsNotNone(tkinter._default_root) - self.assertEqual(x.master, tkinter._default_root) - self.assertEqual(x.tk, tkinter._default_root.tk) - x.destroy() - finally: - destroy_default_root() - def test_initialization(self): # master passing master = tkinter.Frame(self.root) @@ -311,7 +297,13 @@ def test_unique_radiobuttons(self): optmenu2.destroy() -tests_gui = (LabeledScaleTest, OptionMenuTest) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_labeledscale(self): + self._test_widget(ttk.LabeledScale) + + +tests_gui = (LabeledScaleTest, OptionMenuTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py index 157ef0e8f87bb..de30e2476b4eb 100644 --- a/Lib/tkinter/test/test_ttk/test_widgets.py +++ b/Lib/tkinter/test/test_ttk/test_widgets.py @@ -6,7 +6,7 @@ from tkinter.test.test_ttk.test_functions import MockTclObj from tkinter.test.support import (AbstractTkTest, tcl_version, get_tk_patchlevel, - simulate_mouse_click) + simulate_mouse_click, AbstractDefaultRootTest) from tkinter.test.widget_tests import (add_standard_options, noconv, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) @@ -1860,12 +1860,22 @@ class SizegripTest(AbstractWidgetTest, unittest.TestCase): def create(self, **kwargs): return ttk.Sizegrip(self.root, **kwargs) + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(ttk.Frame) + + def test_label(self): + self._test_widget(ttk.Label) + + tests_gui = ( ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, NotebookTest, PanedWindowTest, ProgressbarTest, RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, - SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, + SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, DefaultRootTest, ) if __name__ == "__main__": diff --git a/Lib/tkinter/tix.py b/Lib/tkinter/tix.py index ac545502e45c3..ef1e7406bc1ae 100644 --- a/Lib/tkinter/tix.py +++ b/Lib/tkinter/tix.py @@ -387,9 +387,7 @@ def config_all(self, option, value): # These are missing from Tkinter def image_create(self, imgtype, cnf={}, master=None, **kw): if not master: - master = tkinter._default_root - if not master: - raise RuntimeError('Too early to create image') + master = self if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw options = () @@ -475,10 +473,7 @@ def __init__(self, itemtype, cnf={}, *, master=None, **kw): elif 'refwindow' in cnf: master = cnf['refwindow'] else: - master = tkinter._default_root - if not master: - raise RuntimeError("Too early to create display style: " - "no root window") + master = tkinter._get_default_root('create display style') self.tk = master.tk self.stylename = self.tk.call('tixDisplayStyle', itemtype, *self._options(cnf,kw) ) diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index f3a2f7660f30b..ab7aeb15e8ff2 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -349,12 +349,7 @@ def setup_master(master=None): If it is not allowed to use the default root and master is None, RuntimeError is raised.""" if master is None: - if tkinter._support_default_root: - master = tkinter._default_root or tkinter.Tk() - else: - raise RuntimeError( - "No master specified and tkinter is " - "configured to not support default root") + master = tkinter._get_default_root() return master diff --git a/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst new file mode 100644 index 0000000000000..4b4a520931fda --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst @@ -0,0 +1,4 @@ +:mod:`tkinter` functions and constructors which need a default root window +raise now :exc:`RuntimeError` with descriptive message instead of obscure +:exc:`AttributeError` or :exc:`NameError` if it is not created yet or cannot +be created automatically. diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index ef12198a21838..ea456e577e12a 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -36,15 +36,11 @@ def __init__(self, version, switchboard, master=None, extrapath=[]): else: # Is there already a default root for Tk, say because we're # running under Guido's IDE? :-) Two conditions say no, either the - # import fails or _default_root is None. - tkroot = None - try: - from Tkinter import _default_root - tkroot = self.__tkroot = _default_root - except ImportError: - pass + # _default_root is None or it is unset. + tkroot = getattr(tkinter, '_default_root', None) if not tkroot: - tkroot = self.__tkroot = Tk(className='Pynche') + tkroot = Tk(className='Pynche') + self.__tkroot = tkroot # but this isn't our top level widget, so make it invisible tkroot.withdraw() # create the menubar From webhook-mailer at python.org Sat Dec 19 06:08:32 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 19 Dec 2020 11:08:32 -0000 Subject: [Python-checkins] [3.9] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23853) Message-ID: https://github.com/python/cpython/commit/87e7a14ee3bd7dc495e51166598453114342d0bf commit: 87e7a14ee3bd7dc495e51166598453114342d0bf branch: 3.9 author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-19T13:08:07+02:00 summary: [3.9] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23853) * Tkinter functions and constructors which need a default root window raise now RuntimeError with descriptive message instead of obscure AttributeError or NameError if it is not created yet or cannot be created automatically. * Add tests for all functions which use default root window. * Fix import in the pynche script. (cherry picked from commit 3d569fd6dccf9f582bafaca04d3535094cae393e) files: A Lib/tkinter/test/test_tkinter/test_simpledialog.py A Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst M Lib/idlelib/pyshell.py M Lib/test/test_idle.py M Lib/tkinter/__init__.py M Lib/tkinter/commondialog.py M Lib/tkinter/font.py M Lib/tkinter/simpledialog.py M Lib/tkinter/test/support.py M Lib/tkinter/test/test_tkinter/test_font.py M Lib/tkinter/test/test_tkinter/test_images.py M Lib/tkinter/test/test_tkinter/test_misc.py M Lib/tkinter/test/test_tkinter/test_variables.py M Lib/tkinter/test/test_tkinter/test_widgets.py M Lib/tkinter/test/test_ttk/test_extensions.py M Lib/tkinter/test/test_ttk/test_widgets.py M Lib/tkinter/tix.py M Lib/tkinter/ttk.py M Tools/pynche/PyncheWidget.py diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index adc302883ae66..6fa138219a24d 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -1061,8 +1061,10 @@ def begin(self): (sys.version, sys.platform, self.COPYRIGHT, nosub)) self.text.focus_force() self.showprompt() + # User code should use separate default Tk root window import tkinter - tkinter._default_root = None # 03Jan04 KBK What's this? + tkinter._support_default_root = True + tkinter._default_root = None return True def stop_readline(self): diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py index 8bc01deaa3384..310b72c1d72e7 100644 --- a/Lib/test/test_idle.py +++ b/Lib/test/test_idle.py @@ -20,5 +20,5 @@ if __name__ == '__main__': tk.NoDefaultRoot() unittest.main(exit=False) - tk._support_default_root = 1 + tk._support_default_root = True tk._default_root = None diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index 2175afcffa435..bf0342e27b21f 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -270,7 +270,7 @@ def __repr__(self): ) -_support_default_root = 1 +_support_default_root = True _default_root = None @@ -280,13 +280,26 @@ def NoDefaultRoot(): Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. """ - global _support_default_root - _support_default_root = 0 - global _default_root + global _support_default_root, _default_root + _support_default_root = False + # Delete, so any use of _default_root will immediately raise an exception. + # Rebind before deletion, so repeated calls will not fail. _default_root = None del _default_root +def _get_default_root(what=None): + if not _support_default_root: + raise RuntimeError("No master specified and tkinter is " + "configured to not support default root") + if not _default_root: + if what: + raise RuntimeError(f"Too early to {what}: no default root window") + root = Tk() + assert _default_root is root + return _default_root + + def _tkerror(err): """Internal function.""" pass @@ -330,7 +343,7 @@ def __init__(self, master=None, value=None, name=None): raise TypeError("name must be a string") global _varnum if not master: - master = _default_root + master = _get_default_root('create variable') self._root = master._root() self._tk = master.tk if name: @@ -591,7 +604,7 @@ def get(self): def mainloop(n=0): """Run the main loop of Tcl.""" - _default_root.tk.mainloop(n) + _get_default_root('run the main loop').tk.mainloop(n) getint = int @@ -600,9 +613,9 @@ def mainloop(n=0): def getboolean(s): - """Convert true and false to integer values 1 and 0.""" + """Convert Tcl object to True or False.""" try: - return _default_root.tk.getboolean(s) + return _get_default_root('use getboolean()').tk.getboolean(s) except TclError: raise ValueError("invalid literal for getboolean()") @@ -2248,7 +2261,7 @@ def __init__(self, screenName=None, baseName=None, className='Tk', is the name of the widget class.""" self.master = None self.children = {} - self._tkloaded = 0 + self._tkloaded = False # to avoid recursions in the getattr code in case of failure, we # ensure that self.tk is always _something_. self.tk = None @@ -2272,7 +2285,7 @@ def loadtk(self): self._loadtk() def _loadtk(self): - self._tkloaded = 1 + self._tkloaded = True global _default_root # Version sanity checks tk_version = self.tk.getvar('tk_version') @@ -2521,12 +2534,8 @@ class BaseWidget(Misc): def _setup(self, master, cnf): """Internal function. Sets up information about children.""" - if _support_default_root: - global _default_root - if not master: - if not _default_root: - _default_root = Tk() - master = _default_root + if not master: + master = _get_default_root() self.master = master self.tk = master.tk name = None @@ -3990,9 +3999,7 @@ class Image: def __init__(self, imgtype, name=None, cnf={}, master=None, **kw): self.name = None if not master: - master = _default_root - if not master: - raise RuntimeError('Too early to create image') + master = _get_default_root('create image') self.tk = getattr(master, 'tk', master) if not name: Image._last_id += 1 @@ -4146,11 +4153,13 @@ def __init__(self, name=None, cnf={}, master=None, **kw): def image_names(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'names')) + tk = _get_default_root('use image_names()').tk + return tk.splitlist(tk.call('image', 'names')) def image_types(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'types')) + tk = _get_default_root('use image_types()').tk + return tk.splitlist(tk.call('image', 'types')) class Spinbox(Widget, XView): diff --git a/Lib/tkinter/commondialog.py b/Lib/tkinter/commondialog.py index e56b5baf7d1e1..cc3069842c3e4 100644 --- a/Lib/tkinter/commondialog.py +++ b/Lib/tkinter/commondialog.py @@ -18,10 +18,10 @@ class Dialog: command = None def __init__(self, master=None, **options): + if not master: + master = options.get('parent') self.master = master self.options = options - if not master and options.get('parent'): - self.master = options['parent'] def _fixoptions(self): pass # hook diff --git a/Lib/tkinter/font.py b/Lib/tkinter/font.py index 15ad7ab4b63a8..2b58030c1fb5a 100644 --- a/Lib/tkinter/font.py +++ b/Lib/tkinter/font.py @@ -69,7 +69,7 @@ def _mkdict(self, args): def __init__(self, root=None, font=None, name=None, exists=False, **options): if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font') tk = getattr(root, 'tk', root) if font: # get actual settings corresponding to the given font @@ -180,7 +180,7 @@ def metrics(self, *options, **kw): def families(root=None, displayof=None): "Get font families (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.families()') args = () if displayof: args = ('-displayof', displayof) @@ -190,7 +190,7 @@ def families(root=None, displayof=None): def names(root=None): "Get names of defined fonts (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.names()') return root.tk.splitlist(root.tk.call("font", "names")) diff --git a/Lib/tkinter/simpledialog.py b/Lib/tkinter/simpledialog.py index 85244171117b6..b882d47c961bd 100644 --- a/Lib/tkinter/simpledialog.py +++ b/Lib/tkinter/simpledialog.py @@ -24,9 +24,7 @@ """ from tkinter import * -from tkinter import messagebox - -import tkinter # used at _QueryDialog for tkinter._default_root +from tkinter import messagebox, _get_default_root class SimpleDialog: @@ -128,13 +126,17 @@ def __init__(self, parent, title = None): title -- the dialog title ''' - Toplevel.__init__(self, parent) + master = parent + if not master: + master = _get_default_root('create dialog window') + + Toplevel.__init__(self, master) self.withdraw() # remain invisible for now - # If the master is not viewable, don't + # If the parent is not viewable, don't # make the child transient, or else it # would be opened withdrawn - if parent.winfo_viewable(): + if parent is not None and parent.winfo_viewable(): self.transient(parent) if title: @@ -155,7 +157,7 @@ def __init__(self, parent, title = None): self.protocol("WM_DELETE_WINDOW", self.cancel) - if self.parent is not None: + if parent is not None: self.geometry("+%d+%d" % (parent.winfo_rootx()+50, parent.winfo_rooty()+50)) @@ -259,9 +261,6 @@ def __init__(self, title, prompt, minvalue = None, maxvalue = None, parent = None): - if not parent: - parent = tkinter._default_root - self.prompt = prompt self.minvalue = minvalue self.maxvalue = maxvalue diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py index 467a0b66c265c..dbc47a81e6515 100644 --- a/Lib/tkinter/test/support.py +++ b/Lib/tkinter/test/support.py @@ -36,6 +36,33 @@ def tearDown(self): w.destroy() self.root.withdraw() + +class AbstractDefaultRootTest: + + def setUp(self): + self._old_support_default_root = tkinter._support_default_root + destroy_default_root() + tkinter._support_default_root = True + self.wantobjects = tkinter.wantobjects + + def tearDown(self): + destroy_default_root() + tkinter._default_root = None + tkinter._support_default_root = self._old_support_default_root + + def _test_widget(self, constructor): + # no master passing + x = constructor() + self.assertIsNotNone(tkinter._default_root) + self.assertIs(x.master, tkinter._default_root) + self.assertIs(x.tk, tkinter._default_root.tk) + x.destroy() + destroy_default_root() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, constructor) + self.assertFalse(hasattr(tkinter, '_default_root')) + + def destroy_default_root(): if getattr(tkinter, '_default_root', None): tkinter._default_root.update_idletasks() diff --git a/Lib/tkinter/test/test_tkinter/test_font.py b/Lib/tkinter/test/test_tkinter/test_font.py index a021ea336807b..28d8c7b2f8963 100644 --- a/Lib/tkinter/test/test_tkinter/test_font.py +++ b/Lib/tkinter/test/test_tkinter/test_font.py @@ -2,7 +2,7 @@ import tkinter from tkinter import font from test.support import requires, run_unittest, gc_collect, ALWAYS_EQ -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -101,7 +101,38 @@ def test_names(self): self.assertTrue(name) self.assertIn(fontname, names) -tests_gui = (FontTest, ) + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_families(self): + self.assertRaises(RuntimeError, font.families) + root = tkinter.Tk() + families = font.families() + self.assertIsInstance(families, tuple) + self.assertTrue(families) + for family in families: + self.assertIsInstance(family, str) + self.assertTrue(family) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.families) + + def test_names(self): + self.assertRaises(RuntimeError, font.names) + root = tkinter.Tk() + names = font.names() + self.assertIsInstance(names, tuple) + self.assertTrue(names) + for name in names: + self.assertIsInstance(name, str) + self.assertTrue(name) + self.assertIn(fontname, names) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.names) + + +tests_gui = (FontTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_images.py b/Lib/tkinter/test/test_tkinter/test_images.py index 2805d35a1f5b1..94bba8518fdaa 100644 --- a/Lib/tkinter/test/test_tkinter/test_images.py +++ b/Lib/tkinter/test/test_tkinter/test_images.py @@ -1,7 +1,7 @@ import unittest import tkinter from test import support -from tkinter.test.support import AbstractTkTest, requires_tcl +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest, requires_tcl support.requires('gui') @@ -19,6 +19,47 @@ def test_image_names(self): self.assertIsInstance(image_names, tuple) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_image_types(self): + self.assertRaises(RuntimeError, tkinter.image_types) + root = tkinter.Tk() + image_types = tkinter.image_types() + self.assertIsInstance(image_types, tuple) + self.assertIn('photo', image_types) + self.assertIn('bitmap', image_types) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_types) + + def test_image_names(self): + self.assertRaises(RuntimeError, tkinter.image_names) + root = tkinter.Tk() + image_names = tkinter.image_names() + self.assertIsInstance(image_names, tuple) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_names) + + def test_image_create_bitmap(self): + self.assertRaises(RuntimeError, tkinter.BitmapImage) + root = tkinter.Tk() + image = tkinter.BitmapImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.BitmapImage) + + def test_image_create_photo(self): + self.assertRaises(RuntimeError, tkinter.PhotoImage) + root = tkinter.Tk() + image = tkinter.PhotoImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.PhotoImage) + + class BitmapImageTest(AbstractTkTest, unittest.TestCase): @classmethod @@ -330,7 +371,7 @@ def test_transparency(self): self.assertEqual(image.transparency_get(4, 6), False) -tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) +tests_gui = (MiscTest, DefaultRootTest, BitmapImageTest, PhotoImageTest,) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index b8eea2544f522..585d81ddf9f2d 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -1,7 +1,7 @@ import unittest import tkinter from test import support -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest support.requires('gui') @@ -241,7 +241,85 @@ def test_event_repr(self): " num=3 delta=-1 focus=True" " x=10 y=20 width=300 height=200>") -tests_gui = (MiscTest, ) + def test_getboolean(self): + for v in 'true', 'yes', 'on', '1', 't', 'y', 1, True: + self.assertIs(self.root.getboolean(v), True) + for v in 'false', 'no', 'off', '0', 'f', 'n', 0, False: + self.assertIs(self.root.getboolean(v), False) + self.assertRaises(ValueError, self.root.getboolean, 'yea') + self.assertRaises(ValueError, self.root.getboolean, '') + self.assertRaises(TypeError, self.root.getboolean, None) + self.assertRaises(TypeError, self.root.getboolean, ()) + + def test_mainloop(self): + log = [] + def callback(): + log.append(1) + self.root.after(100, self.root.quit) + self.root.after(100, callback) + self.root.mainloop(1) + self.assertEqual(log, []) + self.root.mainloop(0) + self.assertEqual(log, [1]) + self.assertTrue(self.root.winfo_exists()) + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + root2 = tkinter.Tk() + root3 = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + root2.destroy() + self.assertIs(tkinter._default_root, root) + root.destroy() + self.assertIsNone(tkinter._default_root) + root3.destroy() + self.assertIsNone(tkinter._default_root) + + def test_no_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + # repeated call is no-op + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root = tkinter.Tk() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + + def test_getboolean(self): + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + root = tkinter.Tk() + self.assertIs(tkinter.getboolean('1'), True) + self.assertRaises(ValueError, tkinter.getboolean, 'yea') + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + + def test_mainloop(self): + self.assertRaises(RuntimeError, tkinter.mainloop) + root = tkinter.Tk() + root.after_idle(root.quit) + tkinter.mainloop() + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.mainloop) + + +tests_gui = (MiscTest, DefaultRootTest) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_simpledialog.py b/Lib/tkinter/test/test_tkinter/test_simpledialog.py new file mode 100644 index 0000000000000..911917258806d --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/test_simpledialog.py @@ -0,0 +1,25 @@ +import unittest +import tkinter +from test.support import requires, run_unittest, swap_attr +from tkinter.test.support import AbstractDefaultRootTest +from tkinter.simpledialog import Dialog, askinteger + +requires('gui') + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_askinteger(self): + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + root = tkinter.Tk() + with swap_attr(Dialog, 'wait_window', lambda self, w: w.destroy()): + askinteger("Go To Line", "Line number") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + + +tests_gui = (DefaultRootTest,) + +if __name__ == "__main__": + run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_variables.py b/Lib/tkinter/test/test_tkinter/test_variables.py index 08b7dedcaf933..63d7c21059e38 100644 --- a/Lib/tkinter/test/test_tkinter/test_variables.py +++ b/Lib/tkinter/test/test_tkinter/test_variables.py @@ -1,8 +1,10 @@ import unittest import gc +import tkinter from tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl, TclError) from test.support import ALWAYS_EQ +from tkinter.test.support import AbstractDefaultRootTest class Var(Variable): @@ -308,8 +310,21 @@ def test_invalid_value_domain(self): v.get() +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_variable(self): + self.assertRaises(RuntimeError, Variable) + root = tkinter.Tk() + v = Variable() + v.set("value") + self.assertEqual(v.get(), "value") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, Variable) + + tests_gui = (TestVariable, TestStringVar, TestIntVar, - TestDoubleVar, TestBooleanVar) + TestDoubleVar, TestBooleanVar, DefaultRootTest) if __name__ == "__main__": diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index 4b9b6ebdda04e..54eddbf821611 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -5,7 +5,8 @@ from test.support import requires from tkinter.test.support import (tcl_version, requires_tcl, - get_tk_patchlevel, widget_eq) + get_tk_patchlevel, widget_eq, + AbstractDefaultRootTest) from tkinter.test.widget_tests import ( add_standard_options, noconv, pixels_round, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, @@ -1295,12 +1296,21 @@ def test_aspect(self): self.checkIntegerParam(widget, 'aspect', 250, 0, -300) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(tkinter.Frame) + + def test_label(self): + self._test_widget(tkinter.Label) + + tests_gui = ( ButtonTest, CanvasTest, CheckbuttonTest, EntryTest, FrameTest, LabelFrameTest,LabelTest, ListboxTest, MenubuttonTest, MenuTest, MessageTest, OptionMenuTest, PanedWindowTest, RadiobuttonTest, ScaleTest, ScrollbarTest, - SpinboxTest, TextTest, ToplevelTest, + SpinboxTest, TextTest, ToplevelTest, DefaultRootTest, ) if __name__ == '__main__': diff --git a/Lib/tkinter/test/test_ttk/test_extensions.py b/Lib/tkinter/test/test_ttk/test_extensions.py index 6937ba1ca9be4..1a70e0befe623 100644 --- a/Lib/tkinter/test/test_ttk/test_extensions.py +++ b/Lib/tkinter/test/test_ttk/test_extensions.py @@ -2,8 +2,8 @@ import unittest import tkinter from tkinter import ttk -from test.support import requires, run_unittest, swap_attr -from tkinter.test.support import AbstractTkTest, destroy_default_root +from test.support import requires, run_unittest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -46,20 +46,6 @@ def test_widget_destroy(self): if hasattr(sys, 'last_type'): self.assertNotEqual(sys.last_type, tkinter.TclError) - - def test_initialization_no_master(self): - # no master passing - with swap_attr(tkinter, '_default_root', None), \ - swap_attr(tkinter, '_support_default_root', True): - try: - x = ttk.LabeledScale() - self.assertIsNotNone(tkinter._default_root) - self.assertEqual(x.master, tkinter._default_root) - self.assertEqual(x.tk, tkinter._default_root.tk) - x.destroy() - finally: - destroy_default_root() - def test_initialization(self): # master passing master = tkinter.Frame(self.root) @@ -311,7 +297,13 @@ def test_unique_radiobuttons(self): optmenu2.destroy() -tests_gui = (LabeledScaleTest, OptionMenuTest) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_labeledscale(self): + self._test_widget(ttk.LabeledScale) + + +tests_gui = (LabeledScaleTest, OptionMenuTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py index 157ef0e8f87bb..de30e2476b4eb 100644 --- a/Lib/tkinter/test/test_ttk/test_widgets.py +++ b/Lib/tkinter/test/test_ttk/test_widgets.py @@ -6,7 +6,7 @@ from tkinter.test.test_ttk.test_functions import MockTclObj from tkinter.test.support import (AbstractTkTest, tcl_version, get_tk_patchlevel, - simulate_mouse_click) + simulate_mouse_click, AbstractDefaultRootTest) from tkinter.test.widget_tests import (add_standard_options, noconv, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) @@ -1860,12 +1860,22 @@ class SizegripTest(AbstractWidgetTest, unittest.TestCase): def create(self, **kwargs): return ttk.Sizegrip(self.root, **kwargs) + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(ttk.Frame) + + def test_label(self): + self._test_widget(ttk.Label) + + tests_gui = ( ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, NotebookTest, PanedWindowTest, ProgressbarTest, RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, - SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, + SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, DefaultRootTest, ) if __name__ == "__main__": diff --git a/Lib/tkinter/tix.py b/Lib/tkinter/tix.py index ac545502e45c3..ef1e7406bc1ae 100644 --- a/Lib/tkinter/tix.py +++ b/Lib/tkinter/tix.py @@ -387,9 +387,7 @@ def config_all(self, option, value): # These are missing from Tkinter def image_create(self, imgtype, cnf={}, master=None, **kw): if not master: - master = tkinter._default_root - if not master: - raise RuntimeError('Too early to create image') + master = self if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw options = () @@ -475,10 +473,7 @@ def __init__(self, itemtype, cnf={}, *, master=None, **kw): elif 'refwindow' in cnf: master = cnf['refwindow'] else: - master = tkinter._default_root - if not master: - raise RuntimeError("Too early to create display style: " - "no root window") + master = tkinter._get_default_root('create display style') self.tk = master.tk self.stylename = self.tk.call('tixDisplayStyle', itemtype, *self._options(cnf,kw) ) diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index 968fd54dce1ee..523edb9715f08 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -349,12 +349,7 @@ def setup_master(master=None): If it is not allowed to use the default root and master is None, RuntimeError is raised.""" if master is None: - if tkinter._support_default_root: - master = tkinter._default_root or tkinter.Tk() - else: - raise RuntimeError( - "No master specified and tkinter is " - "configured to not support default root") + master = tkinter._get_default_root() return master diff --git a/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst new file mode 100644 index 0000000000000..4b4a520931fda --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst @@ -0,0 +1,4 @@ +:mod:`tkinter` functions and constructors which need a default root window +raise now :exc:`RuntimeError` with descriptive message instead of obscure +:exc:`AttributeError` or :exc:`NameError` if it is not created yet or cannot +be created automatically. diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index ef12198a21838..ea456e577e12a 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -36,15 +36,11 @@ def __init__(self, version, switchboard, master=None, extrapath=[]): else: # Is there already a default root for Tk, say because we're # running under Guido's IDE? :-) Two conditions say no, either the - # import fails or _default_root is None. - tkroot = None - try: - from Tkinter import _default_root - tkroot = self.__tkroot = _default_root - except ImportError: - pass + # _default_root is None or it is unset. + tkroot = getattr(tkinter, '_default_root', None) if not tkroot: - tkroot = self.__tkroot = Tk(className='Pynche') + tkroot = Tk(className='Pynche') + self.__tkroot = tkroot # but this isn't our top level widget, so make it invisible tkroot.withdraw() # create the menubar From webhook-mailer at python.org Sat Dec 19 09:38:53 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 19 Dec 2020 14:38:53 -0000 Subject: [Python-checkins] [3.8] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23854) Message-ID: https://github.com/python/cpython/commit/80c445cafbdfb16c4a882e3ff6fe28b471aacdfc commit: 80c445cafbdfb16c4a882e3ff6fe28b471aacdfc branch: 3.8 author: Serhiy Storchaka committer: serhiy-storchaka date: 2020-12-19T16:38:37+02:00 summary: [3.8] bpo-42630: Improve error reporting in Tkinter for absent default root (GH-23781) (GH-23854) * Tkinter functions and constructors which need a default root window raise now RuntimeError with descriptive message instead of obscure AttributeError or NameError if it is not created yet or cannot be created automatically. * Add tests for all functions which use default root window. * Fix import in the pynche script. (cherry picked from commit 3d569fd6dccf9f582bafaca04d3535094cae393e) files: A Lib/tkinter/test/test_tkinter/test_simpledialog.py A Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst M Lib/idlelib/pyshell.py M Lib/test/test_idle.py M Lib/tkinter/__init__.py M Lib/tkinter/commondialog.py M Lib/tkinter/font.py M Lib/tkinter/simpledialog.py M Lib/tkinter/test/support.py M Lib/tkinter/test/test_tkinter/test_font.py M Lib/tkinter/test/test_tkinter/test_images.py M Lib/tkinter/test/test_tkinter/test_misc.py M Lib/tkinter/test/test_tkinter/test_variables.py M Lib/tkinter/test/test_tkinter/test_widgets.py M Lib/tkinter/test/test_ttk/test_extensions.py M Lib/tkinter/test/test_ttk/test_widgets.py M Lib/tkinter/tix.py M Lib/tkinter/ttk.py M Tools/pynche/PyncheWidget.py diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index adc302883ae66..6fa138219a24d 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -1061,8 +1061,10 @@ def begin(self): (sys.version, sys.platform, self.COPYRIGHT, nosub)) self.text.focus_force() self.showprompt() + # User code should use separate default Tk root window import tkinter - tkinter._default_root = None # 03Jan04 KBK What's this? + tkinter._support_default_root = True + tkinter._default_root = None return True def stop_readline(self): diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py index 8bc01deaa3384..310b72c1d72e7 100644 --- a/Lib/test/test_idle.py +++ b/Lib/test/test_idle.py @@ -20,5 +20,5 @@ if __name__ == '__main__': tk.NoDefaultRoot() unittest.main(exit=False) - tk._support_default_root = 1 + tk._support_default_root = True tk._default_root = None diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index b685901d4df83..f9ece257841a9 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -270,7 +270,7 @@ def __repr__(self): ) -_support_default_root = 1 +_support_default_root = True _default_root = None @@ -280,13 +280,26 @@ def NoDefaultRoot(): Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. """ - global _support_default_root - _support_default_root = 0 - global _default_root + global _support_default_root, _default_root + _support_default_root = False + # Delete, so any use of _default_root will immediately raise an exception. + # Rebind before deletion, so repeated calls will not fail. _default_root = None del _default_root +def _get_default_root(what=None): + if not _support_default_root: + raise RuntimeError("No master specified and tkinter is " + "configured to not support default root") + if not _default_root: + if what: + raise RuntimeError(f"Too early to {what}: no default root window") + root = Tk() + assert _default_root is root + return _default_root + + def _tkerror(err): """Internal function.""" pass @@ -330,7 +343,7 @@ def __init__(self, master=None, value=None, name=None): raise TypeError("name must be a string") global _varnum if not master: - master = _default_root + master = _get_default_root('create variable') self._root = master._root() self._tk = master.tk if name: @@ -589,7 +602,7 @@ def get(self): def mainloop(n=0): """Run the main loop of Tcl.""" - _default_root.tk.mainloop(n) + _get_default_root('run the main loop').tk.mainloop(n) getint = int @@ -598,9 +611,9 @@ def mainloop(n=0): def getboolean(s): - """Convert true and false to integer values 1 and 0.""" + """Convert Tcl object to True or False.""" try: - return _default_root.tk.getboolean(s) + return _get_default_root('use getboolean()').tk.getboolean(s) except TclError: raise ValueError("invalid literal for getboolean()") @@ -2246,7 +2259,7 @@ def __init__(self, screenName=None, baseName=None, className='Tk', is the name of the widget class.""" self.master = None self.children = {} - self._tkloaded = 0 + self._tkloaded = False # to avoid recursions in the getattr code in case of failure, we # ensure that self.tk is always _something_. self.tk = None @@ -2270,7 +2283,7 @@ def loadtk(self): self._loadtk() def _loadtk(self): - self._tkloaded = 1 + self._tkloaded = True global _default_root # Version sanity checks tk_version = self.tk.getvar('tk_version') @@ -2519,12 +2532,8 @@ class BaseWidget(Misc): def _setup(self, master, cnf): """Internal function. Sets up information about children.""" - if _support_default_root: - global _default_root - if not master: - if not _default_root: - _default_root = Tk() - master = _default_root + if not master: + master = _get_default_root() self.master = master self.tk = master.tk name = None @@ -3988,9 +3997,7 @@ class Image: def __init__(self, imgtype, name=None, cnf={}, master=None, **kw): self.name = None if not master: - master = _default_root - if not master: - raise RuntimeError('Too early to create image') + master = _get_default_root('create image') self.tk = getattr(master, 'tk', master) if not name: Image._last_id += 1 @@ -4144,11 +4151,13 @@ def __init__(self, name=None, cnf={}, master=None, **kw): def image_names(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'names')) + tk = _get_default_root('use image_names()').tk + return tk.splitlist(tk.call('image', 'names')) def image_types(): - return _default_root.tk.splitlist(_default_root.tk.call('image', 'types')) + tk = _get_default_root('use image_types()').tk + return tk.splitlist(tk.call('image', 'types')) class Spinbox(Widget, XView): diff --git a/Lib/tkinter/commondialog.py b/Lib/tkinter/commondialog.py index c4ec010ee6b34..b9516c2352613 100644 --- a/Lib/tkinter/commondialog.py +++ b/Lib/tkinter/commondialog.py @@ -16,10 +16,10 @@ class Dialog: command = None def __init__(self, master=None, **options): - self.master = master + if not master: + master = options.get('parent') + self.master = master self.options = options - if not master and options.get('parent'): - self.master = options['parent'] def _fixoptions(self): pass # hook diff --git a/Lib/tkinter/font.py b/Lib/tkinter/font.py index 136425726ab8c..31d9afd8f866c 100644 --- a/Lib/tkinter/font.py +++ b/Lib/tkinter/font.py @@ -68,7 +68,7 @@ def _mkdict(self, args): def __init__(self, root=None, font=None, name=None, exists=False, **options): if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font') tk = getattr(root, 'tk', root) if font: # get actual settings corresponding to the given font @@ -177,7 +177,7 @@ def metrics(self, *options, **kw): def families(root=None, displayof=None): "Get font families (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.families()') args = () if displayof: args = ('-displayof', displayof) @@ -187,7 +187,7 @@ def families(root=None, displayof=None): def names(root=None): "Get names of defined fonts (as a tuple)" if not root: - root = tkinter._default_root + root = tkinter._get_default_root('use font.names()') return root.tk.splitlist(root.tk.call("font", "names")) diff --git a/Lib/tkinter/simpledialog.py b/Lib/tkinter/simpledialog.py index 85244171117b6..b882d47c961bd 100644 --- a/Lib/tkinter/simpledialog.py +++ b/Lib/tkinter/simpledialog.py @@ -24,9 +24,7 @@ """ from tkinter import * -from tkinter import messagebox - -import tkinter # used at _QueryDialog for tkinter._default_root +from tkinter import messagebox, _get_default_root class SimpleDialog: @@ -128,13 +126,17 @@ def __init__(self, parent, title = None): title -- the dialog title ''' - Toplevel.__init__(self, parent) + master = parent + if not master: + master = _get_default_root('create dialog window') + + Toplevel.__init__(self, master) self.withdraw() # remain invisible for now - # If the master is not viewable, don't + # If the parent is not viewable, don't # make the child transient, or else it # would be opened withdrawn - if parent.winfo_viewable(): + if parent is not None and parent.winfo_viewable(): self.transient(parent) if title: @@ -155,7 +157,7 @@ def __init__(self, parent, title = None): self.protocol("WM_DELETE_WINDOW", self.cancel) - if self.parent is not None: + if parent is not None: self.geometry("+%d+%d" % (parent.winfo_rootx()+50, parent.winfo_rooty()+50)) @@ -259,9 +261,6 @@ def __init__(self, title, prompt, minvalue = None, maxvalue = None, parent = None): - if not parent: - parent = tkinter._default_root - self.prompt = prompt self.minvalue = minvalue self.maxvalue = maxvalue diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py index 467a0b66c265c..dbc47a81e6515 100644 --- a/Lib/tkinter/test/support.py +++ b/Lib/tkinter/test/support.py @@ -36,6 +36,33 @@ def tearDown(self): w.destroy() self.root.withdraw() + +class AbstractDefaultRootTest: + + def setUp(self): + self._old_support_default_root = tkinter._support_default_root + destroy_default_root() + tkinter._support_default_root = True + self.wantobjects = tkinter.wantobjects + + def tearDown(self): + destroy_default_root() + tkinter._default_root = None + tkinter._support_default_root = self._old_support_default_root + + def _test_widget(self, constructor): + # no master passing + x = constructor() + self.assertIsNotNone(tkinter._default_root) + self.assertIs(x.master, tkinter._default_root) + self.assertIs(x.tk, tkinter._default_root.tk) + x.destroy() + destroy_default_root() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, constructor) + self.assertFalse(hasattr(tkinter, '_default_root')) + + def destroy_default_root(): if getattr(tkinter, '_default_root', None): tkinter._default_root.update_idletasks() diff --git a/Lib/tkinter/test/test_tkinter/test_font.py b/Lib/tkinter/test/test_tkinter/test_font.py index 97cd87ccdc81d..2ea59f1748342 100644 --- a/Lib/tkinter/test/test_tkinter/test_font.py +++ b/Lib/tkinter/test/test_tkinter/test_font.py @@ -2,7 +2,7 @@ import tkinter from tkinter import font from test.support import requires, run_unittest, gc_collect -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -100,7 +100,38 @@ def test_names(self): self.assertTrue(name) self.assertIn(fontname, names) -tests_gui = (FontTest, ) + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_families(self): + self.assertRaises(RuntimeError, font.families) + root = tkinter.Tk() + families = font.families() + self.assertIsInstance(families, tuple) + self.assertTrue(families) + for family in families: + self.assertIsInstance(family, str) + self.assertTrue(family) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.families) + + def test_names(self): + self.assertRaises(RuntimeError, font.names) + root = tkinter.Tk() + names = font.names() + self.assertIsInstance(names, tuple) + self.assertTrue(names) + for name in names: + self.assertIsInstance(name, str) + self.assertTrue(name) + self.assertIn(fontname, names) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, font.names) + + +tests_gui = (FontTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_images.py b/Lib/tkinter/test/test_tkinter/test_images.py index 2805d35a1f5b1..94bba8518fdaa 100644 --- a/Lib/tkinter/test/test_tkinter/test_images.py +++ b/Lib/tkinter/test/test_tkinter/test_images.py @@ -1,7 +1,7 @@ import unittest import tkinter from test import support -from tkinter.test.support import AbstractTkTest, requires_tcl +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest, requires_tcl support.requires('gui') @@ -19,6 +19,47 @@ def test_image_names(self): self.assertIsInstance(image_names, tuple) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_image_types(self): + self.assertRaises(RuntimeError, tkinter.image_types) + root = tkinter.Tk() + image_types = tkinter.image_types() + self.assertIsInstance(image_types, tuple) + self.assertIn('photo', image_types) + self.assertIn('bitmap', image_types) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_types) + + def test_image_names(self): + self.assertRaises(RuntimeError, tkinter.image_names) + root = tkinter.Tk() + image_names = tkinter.image_names() + self.assertIsInstance(image_names, tuple) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.image_names) + + def test_image_create_bitmap(self): + self.assertRaises(RuntimeError, tkinter.BitmapImage) + root = tkinter.Tk() + image = tkinter.BitmapImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.BitmapImage) + + def test_image_create_photo(self): + self.assertRaises(RuntimeError, tkinter.PhotoImage) + root = tkinter.Tk() + image = tkinter.PhotoImage() + self.assertIn(image.name, tkinter.image_names()) + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.PhotoImage) + + class BitmapImageTest(AbstractTkTest, unittest.TestCase): @classmethod @@ -330,7 +371,7 @@ def test_transparency(self): self.assertEqual(image.transparency_get(4, 6), False) -tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) +tests_gui = (MiscTest, DefaultRootTest, BitmapImageTest, PhotoImageTest,) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py index 350f561bab406..49fb6b16de09e 100644 --- a/Lib/tkinter/test/test_tkinter/test_misc.py +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -1,7 +1,7 @@ import unittest import tkinter from test import support -from tkinter.test.support import AbstractTkTest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest support.requires('gui') @@ -227,7 +227,85 @@ def test_event_repr(self): " num=3 delta=-1 focus=True" " x=10 y=20 width=300 height=200>") -tests_gui = (MiscTest, ) + def test_getboolean(self): + for v in 'true', 'yes', 'on', '1', 't', 'y', 1, True: + self.assertIs(self.root.getboolean(v), True) + for v in 'false', 'no', 'off', '0', 'f', 'n', 0, False: + self.assertIs(self.root.getboolean(v), False) + self.assertRaises(ValueError, self.root.getboolean, 'yea') + self.assertRaises(ValueError, self.root.getboolean, '') + self.assertRaises(TypeError, self.root.getboolean, None) + self.assertRaises(TypeError, self.root.getboolean, ()) + + def test_mainloop(self): + log = [] + def callback(): + log.append(1) + self.root.after(100, self.root.quit) + self.root.after(100, callback) + self.root.mainloop(1) + self.assertEqual(log, []) + self.root.mainloop(0) + self.assertEqual(log, [1]) + self.assertTrue(self.root.winfo_exists()) + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + root2 = tkinter.Tk() + root3 = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + root2.destroy() + self.assertIs(tkinter._default_root, root) + root.destroy() + self.assertIsNone(tkinter._default_root) + root3.destroy() + self.assertIsNone(tkinter._default_root) + + def test_no_default_root(self): + self.assertIs(tkinter._support_default_root, True) + self.assertIsNone(tkinter._default_root) + root = tkinter.Tk() + self.assertIs(tkinter._default_root, root) + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + # repeated call is no-op + tkinter.NoDefaultRoot() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root = tkinter.Tk() + self.assertIs(tkinter._support_default_root, False) + self.assertFalse(hasattr(tkinter, '_default_root')) + root.destroy() + + def test_getboolean(self): + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + root = tkinter.Tk() + self.assertIs(tkinter.getboolean('1'), True) + self.assertRaises(ValueError, tkinter.getboolean, 'yea') + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.getboolean, '1') + + def test_mainloop(self): + self.assertRaises(RuntimeError, tkinter.mainloop) + root = tkinter.Tk() + root.after_idle(root.quit) + tkinter.mainloop() + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, tkinter.mainloop) + + +tests_gui = (MiscTest, DefaultRootTest) if __name__ == "__main__": support.run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_simpledialog.py b/Lib/tkinter/test/test_tkinter/test_simpledialog.py new file mode 100644 index 0000000000000..911917258806d --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/test_simpledialog.py @@ -0,0 +1,25 @@ +import unittest +import tkinter +from test.support import requires, run_unittest, swap_attr +from tkinter.test.support import AbstractDefaultRootTest +from tkinter.simpledialog import Dialog, askinteger + +requires('gui') + + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_askinteger(self): + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + root = tkinter.Tk() + with swap_attr(Dialog, 'wait_window', lambda self, w: w.destroy()): + askinteger("Go To Line", "Line number") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, askinteger, "Go To Line", "Line number") + + +tests_gui = (DefaultRootTest,) + +if __name__ == "__main__": + run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_tkinter/test_variables.py b/Lib/tkinter/test/test_tkinter/test_variables.py index 2eb1e12671d22..e7b24a818f150 100644 --- a/Lib/tkinter/test/test_tkinter/test_variables.py +++ b/Lib/tkinter/test/test_tkinter/test_variables.py @@ -1,7 +1,9 @@ import unittest import gc +import tkinter from tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl, TclError) +from tkinter.test.support import AbstractDefaultRootTest class Var(Variable): @@ -301,8 +303,21 @@ def test_invalid_value_domain(self): v.get() +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_variable(self): + self.assertRaises(RuntimeError, Variable) + root = tkinter.Tk() + v = Variable() + v.set("value") + self.assertEqual(v.get(), "value") + root.destroy() + tkinter.NoDefaultRoot() + self.assertRaises(RuntimeError, Variable) + + tests_gui = (TestVariable, TestStringVar, TestIntVar, - TestDoubleVar, TestBooleanVar) + TestDoubleVar, TestBooleanVar, DefaultRootTest) if __name__ == "__main__": diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py index b6f792d6c2cf8..3659b9457623b 100644 --- a/Lib/tkinter/test/test_tkinter/test_widgets.py +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py @@ -6,7 +6,8 @@ from test.support import requires from tkinter.test.support import (tcl_version, requires_tcl, - get_tk_patchlevel, widget_eq) + get_tk_patchlevel, widget_eq, + AbstractDefaultRootTest) from tkinter.test.widget_tests import ( add_standard_options, noconv, pixels_round, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, @@ -1298,12 +1299,21 @@ def test_aspect(self): self.checkIntegerParam(widget, 'aspect', 250, 0, -300) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(tkinter.Frame) + + def test_label(self): + self._test_widget(tkinter.Label) + + tests_gui = ( ButtonTest, CanvasTest, CheckbuttonTest, EntryTest, FrameTest, LabelFrameTest,LabelTest, ListboxTest, MenubuttonTest, MenuTest, MessageTest, OptionMenuTest, PanedWindowTest, RadiobuttonTest, ScaleTest, ScrollbarTest, - SpinboxTest, TextTest, ToplevelTest, + SpinboxTest, TextTest, ToplevelTest, DefaultRootTest, ) if __name__ == '__main__': diff --git a/Lib/tkinter/test/test_ttk/test_extensions.py b/Lib/tkinter/test/test_ttk/test_extensions.py index 6937ba1ca9be4..1a70e0befe623 100644 --- a/Lib/tkinter/test/test_ttk/test_extensions.py +++ b/Lib/tkinter/test/test_ttk/test_extensions.py @@ -2,8 +2,8 @@ import unittest import tkinter from tkinter import ttk -from test.support import requires, run_unittest, swap_attr -from tkinter.test.support import AbstractTkTest, destroy_default_root +from test.support import requires, run_unittest +from tkinter.test.support import AbstractTkTest, AbstractDefaultRootTest requires('gui') @@ -46,20 +46,6 @@ def test_widget_destroy(self): if hasattr(sys, 'last_type'): self.assertNotEqual(sys.last_type, tkinter.TclError) - - def test_initialization_no_master(self): - # no master passing - with swap_attr(tkinter, '_default_root', None), \ - swap_attr(tkinter, '_support_default_root', True): - try: - x = ttk.LabeledScale() - self.assertIsNotNone(tkinter._default_root) - self.assertEqual(x.master, tkinter._default_root) - self.assertEqual(x.tk, tkinter._default_root.tk) - x.destroy() - finally: - destroy_default_root() - def test_initialization(self): # master passing master = tkinter.Frame(self.root) @@ -311,7 +297,13 @@ def test_unique_radiobuttons(self): optmenu2.destroy() -tests_gui = (LabeledScaleTest, OptionMenuTest) +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_labeledscale(self): + self._test_widget(ttk.LabeledScale) + + +tests_gui = (LabeledScaleTest, OptionMenuTest, DefaultRootTest) if __name__ == "__main__": run_unittest(*tests_gui) diff --git a/Lib/tkinter/test/test_ttk/test_widgets.py b/Lib/tkinter/test/test_ttk/test_widgets.py index 157ef0e8f87bb..de30e2476b4eb 100644 --- a/Lib/tkinter/test/test_ttk/test_widgets.py +++ b/Lib/tkinter/test/test_ttk/test_widgets.py @@ -6,7 +6,7 @@ from tkinter.test.test_ttk.test_functions import MockTclObj from tkinter.test.support import (AbstractTkTest, tcl_version, get_tk_patchlevel, - simulate_mouse_click) + simulate_mouse_click, AbstractDefaultRootTest) from tkinter.test.widget_tests import (add_standard_options, noconv, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) @@ -1860,12 +1860,22 @@ class SizegripTest(AbstractWidgetTest, unittest.TestCase): def create(self, **kwargs): return ttk.Sizegrip(self.root, **kwargs) + +class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase): + + def test_frame(self): + self._test_widget(ttk.Frame) + + def test_label(self): + self._test_widget(ttk.Label) + + tests_gui = ( ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, NotebookTest, PanedWindowTest, ProgressbarTest, RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, - SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, + SizegripTest, SpinboxTest, TreeviewTest, WidgetTest, DefaultRootTest, ) if __name__ == "__main__": diff --git a/Lib/tkinter/tix.py b/Lib/tkinter/tix.py index ac545502e45c3..ef1e7406bc1ae 100644 --- a/Lib/tkinter/tix.py +++ b/Lib/tkinter/tix.py @@ -387,9 +387,7 @@ def config_all(self, option, value): # These are missing from Tkinter def image_create(self, imgtype, cnf={}, master=None, **kw): if not master: - master = tkinter._default_root - if not master: - raise RuntimeError('Too early to create image') + master = self if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw options = () @@ -475,10 +473,7 @@ def __init__(self, itemtype, cnf={}, *, master=None, **kw): elif 'refwindow' in cnf: master = cnf['refwindow'] else: - master = tkinter._default_root - if not master: - raise RuntimeError("Too early to create display style: " - "no root window") + master = tkinter._get_default_root('create display style') self.tk = master.tk self.stylename = self.tk.call('tixDisplayStyle', itemtype, *self._options(cnf,kw) ) diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index f3a2f7660f30b..ab7aeb15e8ff2 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -349,12 +349,7 @@ def setup_master(master=None): If it is not allowed to use the default root and master is None, RuntimeError is raised.""" if master is None: - if tkinter._support_default_root: - master = tkinter._default_root or tkinter.Tk() - else: - raise RuntimeError( - "No master specified and tkinter is " - "configured to not support default root") + master = tkinter._get_default_root() return master diff --git a/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst new file mode 100644 index 0000000000000..4b4a520931fda --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst @@ -0,0 +1,4 @@ +:mod:`tkinter` functions and constructors which need a default root window +raise now :exc:`RuntimeError` with descriptive message instead of obscure +:exc:`AttributeError` or :exc:`NameError` if it is not created yet or cannot +be created automatically. diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index 364f22b0b2095..59b41373f6479 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -36,15 +36,11 @@ def __init__(self, version, switchboard, master=None, extrapath=[]): else: # Is there already a default root for Tk, say because we're # running under Guido's IDE? :-) Two conditions say no, either the - # import fails or _default_root is None. - tkroot = None - try: - from Tkinter import _default_root - tkroot = self.__tkroot = _default_root - except ImportError: - pass + # _default_root is None or it is unset. + tkroot = getattr(tkinter, '_default_root', None) if not tkroot: - tkroot = self.__tkroot = Tk(className='Pynche') + tkroot = Tk(className='Pynche') + self.__tkroot = tkroot # but this isn't our top level widget, so make it invisible tkroot.withdraw() # create the menubar From webhook-mailer at python.org Sat Dec 19 10:48:17 2020 From: webhook-mailer at python.org (JulienPalard) Date: Sat, 19 Dec 2020 15:48:17 -0000 Subject: [Python-checkins] [doc] Mention with and except clauses in globals() (GH-13232) Message-ID: https://github.com/python/cpython/commit/c56f9df0498498d17972fe02046fd235c9a6017f commit: c56f9df0498498d17972fe02046fd235c9a6017f branch: master author: Andre Delfino committer: JulienPalard date: 2020-12-19T16:48:06+01:00 summary: [doc] Mention with and except clauses in globals() (GH-13232) files: M Doc/reference/simple_stmts.rst diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst index f8ab2e918c6a1..2c6c90140201c 100644 --- a/Doc/reference/simple_stmts.rst +++ b/Doc/reference/simple_stmts.rst @@ -950,7 +950,7 @@ Names listed in a :keyword:`global` statement must not be used in the same code block textually preceding that :keyword:`!global` statement. Names listed in a :keyword:`global` statement must not be defined as formal -parameters or in a :keyword:`for` loop control target, :keyword:`class` +parameters, or as targets in :keyword:`with` statements or :keyword:`except` clauses, or in a :keyword:`for` target list, :keyword:`class` definition, function definition, :keyword:`import` statement, or variable annotation. From webhook-mailer at python.org Sat Dec 19 12:29:09 2020 From: webhook-mailer at python.org (serhiy-storchaka) Date: Sat, 19 Dec 2020 17:29:09 -0000 Subject: [Python-checkins] bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) (GH-23788) Message-ID: https://github.com/python/cpython/commit/6ad5fd14825fc6039a9684dfdc14f5d12b86e25f commit: 6ad5fd14825fc6039a9684dfdc14f5d12b86e25f branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: serhiy-storchaka date: 2020-12-19T19:28:59+02:00 summary: bpo-40219: Lowered ttk LabeledScale dummy (GH-21467) (GH-23788) (cherry picked from commit b9ced83cf427ec86802ba4c9a562c6d9cafc72f5) files: A Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst M Lib/tkinter/ttk.py diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index 523edb9715f08..ab7aeb15e8ff2 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -1533,7 +1533,10 @@ def __init__(self, master=None, variable=None, from_=0, to=10, **kw): scale_side = 'bottom' if self._label_top else 'top' label_side = 'top' if scale_side == 'bottom' else 'bottom' self.scale.pack(side=scale_side, fill='x') - tmp = Label(self).pack(side=label_side) # place holder + # Dummy required to make frame correct height + dummy = Label(self) + dummy.pack(side=label_side) + dummy.lower() self.label.place(anchor='n' if label_side == 'top' else 's') # update the label as scale or variable changes diff --git a/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst new file mode 100644 index 0000000000000..aedc5c49b4087 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst @@ -0,0 +1 @@ +Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to prevent hiding part of the content label. From webhook-mailer at python.org Sat Dec 19 17:32:15 2020 From: webhook-mailer at python.org (gvanrossum) Date: Sat, 19 Dec 2020 22:32:15 -0000 Subject: [Python-checkins] [3.9] bpo-42675: Document collections.abc.Callable changes (GH-23839) (#23852) Message-ID: https://github.com/python/cpython/commit/597ebc8cf604de49eabbc7b83be2debd005d7819 commit: 597ebc8cf604de49eabbc7b83be2debd005d7819 branch: 3.9 author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2020-12-19T14:32:06-08:00 summary: [3.9] bpo-42675: Document collections.abc.Callable changes (GH-23839) (#23852) files: M Doc/library/types.rst M Doc/whatsnew/3.9.rst diff --git a/Doc/library/types.rst b/Doc/library/types.rst index 0fe3822fa542e..d83d9667ba3a7 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -260,6 +260,9 @@ Standard names are defined for the following types: .. versionadded:: 3.9 + .. versionchanged:: 3.9.2 + This type can now be subclassed. + .. class:: TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno) diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index f8f421bdda1c7..68b1e504da89e 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -1497,3 +1497,22 @@ functions and options conditionally available based on the operating system version in use at runtime ("weaklinking"). (Contributed by Ronald Oussoren and Lawrence D'Anna in :issue:`41100`.) + +Notable changes in Python 3.9.2 +=============================== + +collections.abc +--------------- + +:class:`collections.abc.Callable` generic now flattens type parameters, similar +to what :data:`typing.Callable` currently does. This means that +``collections.abc.Callable[[int, str], str]`` will have ``__args__`` of +``(int, str, str)``; previously this was ``([int, str], str)``. To allow this +change, :class:`types.GenericAlias` can now be subclassed, and a subclass will +be returned when subscripting the :class:`collections.abc.Callable` type. +Code which accesses the arguments via :func:`typing.get_args` or ``__args__`` +need to account for this change. A :exc:`DeprecationWarning` may be emitted for +invalid forms of parameterizing :class:`collections.abc.Callable` which may have +passed silently in Python 3.9.1. This :exc:`DeprecationWarning` will +become a :exc:`TypeError` in Python 3.10. +(Contributed by Ken Jin in :issue:`42195`.) From webhook-mailer at python.org Sat Dec 19 17:52:53 2020 From: webhook-mailer at python.org (ericvsmith) Date: Sat, 19 Dec 2020 22:52:53 -0000 Subject: [Python-checkins] bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) Message-ID: https://github.com/python/cpython/commit/09a36cdfb7c22f44df45b44e5561776206bcedfb commit: 09a36cdfb7c22f44df45b44e5561776206bcedfb branch: master author: sblondon committer: ericvsmith date: 2020-12-19T17:52:39-05:00 summary: bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) * Explain when the conversion is not possible with detect_types enabled files: M Doc/library/sqlite3.rst diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index 13aa8c512d031..c36648775a615 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -198,7 +198,9 @@ Module functions and constants *detect_types* defaults to 0 (i. e. off, no type detection), you can set it to any combination of :const:`PARSE_DECLTYPES` and :const:`PARSE_COLNAMES` to turn - type detection on. + type detection on. Due to SQLite behaviour, types can't be detected for generated + fields (for example ``max(data)``), even when *detect_types* parameter is set. In + such case, the returned type is :class:`str`. By default, *check_same_thread* is :const:`True` and only the creating thread may use the connection. If set :const:`False`, the returned connection may be shared From webhook-mailer at python.org Sat Dec 19 19:02:39 2020 From: webhook-mailer at python.org (ericvsmith) Date: Sun, 20 Dec 2020 00:02:39 -0000 Subject: [Python-checkins] bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) (GH-23862) Message-ID: https://github.com/python/cpython/commit/a34ab8188e0352e4066da4f79ed3cc24d1b61a63 commit: a34ab8188e0352e4066da4f79ed3cc24d1b61a63 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ericvsmith date: 2020-12-19T19:02:25-05:00 summary: bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) (GH-23862) * Explain when the conversion is not possible with detect_types enabled (cherry picked from commit 09a36cdfb7c22f44df45b44e5561776206bcedfb) Co-authored-by: sblondon Co-authored-by: sblondon files: M Doc/library/sqlite3.rst diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index ccb82278bdaa1..b97414e6fcaa6 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -197,7 +197,9 @@ Module functions and constants *detect_types* defaults to 0 (i. e. off, no type detection), you can set it to any combination of :const:`PARSE_DECLTYPES` and :const:`PARSE_COLNAMES` to turn - type detection on. + type detection on. Due to SQLite behaviour, types can't be detected for generated + fields (for example ``max(data)``), even when *detect_types* parameter is set. In + such case, the returned type is :class:`str`. By default, *check_same_thread* is :const:`True` and only the creating thread may use the connection. If set :const:`False`, the returned connection may be shared From webhook-mailer at python.org Sat Dec 19 19:03:03 2020 From: webhook-mailer at python.org (ericvsmith) Date: Sun, 20 Dec 2020 00:03:03 -0000 Subject: [Python-checkins] bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) (GH-23863) Message-ID: https://github.com/python/cpython/commit/24862b02dfd1e2843727f28fa2ba05828fdfa8de commit: 24862b02dfd1e2843727f28fa2ba05828fdfa8de branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ericvsmith date: 2020-12-19T19:02:58-05:00 summary: bpo-41724: Explain when the conversion is not possible with detect_types enabled (GH-23855) (GH-23863) * Explain when the conversion is not possible with detect_types enabled (cherry picked from commit 09a36cdfb7c22f44df45b44e5561776206bcedfb) Co-authored-by: sblondon files: M Doc/library/sqlite3.rst diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst index 314d3a58e2759..e493324495890 100644 --- a/Doc/library/sqlite3.rst +++ b/Doc/library/sqlite3.rst @@ -197,7 +197,9 @@ Module functions and constants *detect_types* defaults to 0 (i. e. off, no type detection), you can set it to any combination of :const:`PARSE_DECLTYPES` and :const:`PARSE_COLNAMES` to turn - type detection on. + type detection on. Due to SQLite behaviour, types can't be detected for generated + fields (for example ``max(data)``), even when *detect_types* parameter is set. In + such case, the returned type is :class:`str`. By default, *check_same_thread* is :const:`True` and only the creating thread may use the connection. If set :const:`False`, the returned connection may be shared From webhook-mailer at python.org Sat Dec 19 21:57:07 2020 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Dec 2020 02:57:07 -0000 Subject: [Python-checkins] bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) Message-ID: https://github.com/python/cpython/commit/a44ce6c9f725d336aea51a946b42769f29fed613 commit: a44ce6c9f725d336aea51a946b42769f29fed613 branch: master author: Matti Picus committer: pablogsal date: 2020-12-20T02:56:57Z summary: bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) Now all platforms use a value for the "EXT_SUFFIX" build variable derived from SOABI (for instance in FreeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" instead of ".so"). Previously only Linux, Mac and VxWorks were using a value for "EXT_SUFFIX" that included "SOABI". Co-authored-by: Pablo Galindo files: A Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst new file mode 100644 index 0000000000000..caaada41cf9ba --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst @@ -0,0 +1,4 @@ +Now all platforms use a value for the "EXT_SUFFIX" build variable derived +from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" +instead of ".so"). Previosuly only Linux, Mac and VxWorks were using a value +for "EXT_SUFFIX" that included "SOABI". diff --git a/configure b/configure index d9e610ea4d0cb..f07edfff266a0 100755 --- a/configure +++ b/configure @@ -15429,13 +15429,7 @@ _ACEOF fi - -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} { $as_echo "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 $as_echo_n "checking LDVERSION... " >&6; } diff --git a/configure.ac b/configure.ac index 445dae1358748..ee5573cf64431 100644 --- a/configure.ac +++ b/configure.ac @@ -4786,12 +4786,7 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then fi AC_SUBST(EXT_SUFFIX) -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} AC_MSG_CHECKING(LDVERSION) LDVERSION='$(VERSION)$(ABIFLAGS)' From webhook-mailer at python.org Sat Dec 19 22:17:50 2020 From: webhook-mailer at python.org (miss-islington) Date: Sun, 20 Dec 2020 03:17:50 -0000 Subject: [Python-checkins] bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) Message-ID: https://github.com/python/cpython/commit/b01091a3e71e6636d2df4db45920e820cdf7df3b commit: b01091a3e71e6636d2df4db45920e820cdf7df3b branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-19T19:17:42-08:00 summary: bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) Now all platforms use a value for the "EXT_SUFFIX" build variable derived from SOABI (for instance in FreeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" instead of ".so"). Previously only Linux, Mac and VxWorks were using a value for "EXT_SUFFIX" that included "SOABI". Co-authored-by: Pablo Galindo (cherry picked from commit a44ce6c9f725d336aea51a946b42769f29fed613) Co-authored-by: Matti Picus files: A Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst new file mode 100644 index 0000000000000..caaada41cf9ba --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst @@ -0,0 +1,4 @@ +Now all platforms use a value for the "EXT_SUFFIX" build variable derived +from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" +instead of ".so"). Previosuly only Linux, Mac and VxWorks were using a value +for "EXT_SUFFIX" that included "SOABI". diff --git a/configure b/configure index 15ea8cdfdc0f0..c164d68c4e502 100755 --- a/configure +++ b/configure @@ -15215,13 +15215,7 @@ _ACEOF fi - -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} { $as_echo "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 $as_echo_n "checking LDVERSION... " >&6; } diff --git a/configure.ac b/configure.ac index c93ba0ee7dc0e..fc082a3cd2831 100644 --- a/configure.ac +++ b/configure.ac @@ -4674,12 +4674,7 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then fi AC_SUBST(EXT_SUFFIX) -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} AC_MSG_CHECKING(LDVERSION) LDVERSION='$(VERSION)$(ABIFLAGS)' From webhook-mailer at python.org Sat Dec 19 23:54:27 2020 From: webhook-mailer at python.org (pablogsal) Date: Sun, 20 Dec 2020 04:54:27 -0000 Subject: [Python-checkins] bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) (GH-23866) Message-ID: https://github.com/python/cpython/commit/4b155967b3e743cbdc31600f13f1bfcf07f7b6ce commit: 4b155967b3e743cbdc31600f13f1bfcf07f7b6ce branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: pablogsal date: 2020-12-20T04:54:18Z summary: bpo-42604: always set EXT_SUFFIX=${SOABI}${SHLIB_SUFFIX} when using configure (GH-23708) (GH-23866) Now all platforms use a value for the "EXT_SUFFIX" build variable derived from SOABI (for instance in FreeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" instead of ".so"). Previously only Linux, Mac and VxWorks were using a value for "EXT_SUFFIX" that included "SOABI". Co-authored-by: Pablo Galindo (cherry picked from commit a44ce6c9f725d336aea51a946b42769f29fed613) Co-authored-by: Matti Picus Co-authored-by: Matti Picus files: A Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst M configure M configure.ac diff --git a/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst new file mode 100644 index 0000000000000..caaada41cf9ba --- /dev/null +++ b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst @@ -0,0 +1,4 @@ +Now all platforms use a value for the "EXT_SUFFIX" build variable derived +from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" +instead of ".so"). Previosuly only Linux, Mac and VxWorks were using a value +for "EXT_SUFFIX" that included "SOABI". diff --git a/configure b/configure index ed969c55b35ab..1252335472f56 100755 --- a/configure +++ b/configure @@ -15382,13 +15382,7 @@ _ACEOF fi - -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} { $as_echo "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 $as_echo_n "checking LDVERSION... " >&6; } diff --git a/configure.ac b/configure.ac index c74e348e077fb..972287a9c4766 100644 --- a/configure.ac +++ b/configure.ac @@ -4783,12 +4783,7 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then fi AC_SUBST(EXT_SUFFIX) -case $ac_sys_system in - Linux*|GNU*|Darwin|VxWorks) - EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};; - *) - EXT_SUFFIX=${SHLIB_SUFFIX};; -esac +EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} AC_MSG_CHECKING(LDVERSION) LDVERSION='$(VERSION)$(ABIFLAGS)' From webhook-mailer at python.org Sun Dec 20 13:15:03 2020 From: webhook-mailer at python.org (rhettinger) Date: Sun, 20 Dec 2020 18:15:03 -0000 Subject: [Python-checkins] bpo-42572: Improve argparse docs for the type parameter. (GH-23849) Message-ID: https://github.com/python/cpython/commit/b0398a4b7fb5743f6dbb72ac6b2926e0a0c11498 commit: b0398a4b7fb5743f6dbb72ac6b2926e0a0c11498 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-20T10:14:54-08:00 summary: bpo-42572: Improve argparse docs for the type parameter. (GH-23849) files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 02cd70f4f71cd..1a298cdd2b534 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1050,63 +1050,70 @@ command-line argument was not present:: type ^^^^ -By default, :class:`ArgumentParser` objects read command-line arguments in as simple +By default, the parser reads command-line arguments in as simple strings. However, quite often the command-line string should instead be -interpreted as another type, like a :class:`float` or :class:`int`. The -``type`` keyword argument of :meth:`~ArgumentParser.add_argument` allows any -necessary type-checking and type conversions to be performed. Common built-in -types and functions can be used directly as the value of the ``type`` argument:: +interpreted as another type, such as a :class:`float` or :class:`int`. The +``type`` keyword for :meth:`~ArgumentParser.add_argument` allows any +necessary type-checking and type conversions to be performed. - >>> parser = argparse.ArgumentParser() - >>> parser.add_argument('foo', type=int) - >>> parser.add_argument('bar', type=open) - >>> parser.parse_args('2 temp.txt'.split()) - Namespace(bar=<_io.TextIOWrapper name='temp.txt' encoding='UTF-8'>, foo=2) +If the type_ keyword is used with the default_ keyword, the type converter +is only applied if the default is a string. -See the section on the default_ keyword argument for information on when the -``type`` argument is applied to default arguments. +The argument to ``type`` can be any callable that accepts a single string. +If the function raises :exc:`ArgumentTypeError`, :exc:`TypeError`, or +:exc:`ValueError`, the exception is caught and a nicely formatted error +message is displayed. No other exception types are handled. -To ease the use of various types of files, the argparse module provides the -factory FileType which takes the ``mode=``, ``bufsize=``, ``encoding=`` and -``errors=`` arguments of the :func:`open` function. For example, -``FileType('w')`` can be used to create a writable file:: +Common built-in types and functions can be used as type converters: - >>> parser = argparse.ArgumentParser() - >>> parser.add_argument('bar', type=argparse.FileType('w')) - >>> parser.parse_args(['out.txt']) - Namespace(bar=<_io.TextIOWrapper name='out.txt' encoding='UTF-8'>) - -``type=`` can take any callable that takes a single string argument and returns -the converted value:: - - >>> def perfect_square(string): - ... value = int(string) - ... sqrt = math.sqrt(value) - ... if sqrt != int(sqrt): - ... msg = "%r is not a perfect square" % string - ... raise argparse.ArgumentTypeError(msg) - ... return value - ... - >>> parser = argparse.ArgumentParser(prog='PROG') - >>> parser.add_argument('foo', type=perfect_square) - >>> parser.parse_args(['9']) - Namespace(foo=9) - >>> parser.parse_args(['7']) - usage: PROG [-h] foo - PROG: error: argument foo: '7' is not a perfect square +.. testcode:: -The choices_ keyword argument may be more convenient for type checkers that -simply check against a range of values:: + import argparse + import pathlib - >>> parser = argparse.ArgumentParser(prog='PROG') - >>> parser.add_argument('foo', type=int, choices=range(5, 10)) - >>> parser.parse_args(['7']) - Namespace(foo=7) - >>> parser.parse_args(['11']) - usage: PROG [-h] {5,6,7,8,9} - PROG: error: argument foo: invalid choice: 11 (choose from 5, 6, 7, 8, 9) - -See the choices_ section for more details. + parser = argparse.ArgumentParser() + parser.add_argument('count', type=int) + parser.add_argument('distance', type=float) + parser.add_argument('street', type=ascii) + parser.add_argument('code_point', type=ord) + parser.add_argument('source_file', type=open) + parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1')) + parser.add_argument('datapath', type=pathlib.Path) + +User defined functions can be used as well: + +.. doctest:: + + >>> def hyphenated(string): + ... return '-'.join([word[:4] for word in string.casefold().split()]) + ... + >>> parser = argparse.ArgumentParser() + >>> _ = parser.add_argument('short_title', type=hyphenated) + >>> parser.parse_args(['"The Tale of Two Cities"']) + Namespace(short_title='"the-tale-of-two-citi') + +The :func:`bool` function is not recommended as a type converter. All it does +is convert empty strings to ``False`` and non-empty strings to ``True``. +This is usually not what is desired. + +In general, the ``type`` keyword is a convenience that should only be used for +simple conversions that can only raise one of the three supported exceptions. +Anything with more interesting error-handling or resource management should be +done downstream after the arguments are parsed. + +For example, JSON or YAML conversions have complex error cases that require +better reporting than can be given by the ``type`` keyword. An +:exc:`~json.JSONDecodeError` would not be well formatted and a +:exc:`FileNotFound` exception would not be handled at all. + +Even :class:`~argparse.FileType` has its limitations for use with the ``type`` +keyword. If one argument uses *FileType* and then a subsequent argument fails, +an error is reported but the file is not automatically closed. In this case, it +would be better to wait until after the parser has run and then use the +:keyword:`with`-statement to manage the files. + +For type checkers that simply check against a fixed set of values, consider +using the choices_ keyword instead. choices From webhook-mailer at python.org Sun Dec 20 13:24:18 2020 From: webhook-mailer at python.org (miss-islington) Date: Sun, 20 Dec 2020 18:24:18 -0000 Subject: [Python-checkins] bpo-42669: Document that `except` rejects nested tuples (GH-23822) Message-ID: https://github.com/python/cpython/commit/c95f8bc2700b42f4568886505a819816c9b0ba28 commit: c95f8bc2700b42f4568886505a819816c9b0ba28 branch: master author: Colin Watson committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-20T10:24:10-08:00 summary: bpo-42669: Document that `except` rejects nested tuples (GH-23822) In Python 2, it was possible to use `except` with a nested tuple, and occasionally natural. For example, `zope.formlib.interfaces.InputErrors` is a tuple of several exception classes, and one might reasonably think to do something like this: try: self.getInputValue() return True except (InputErrors, SomethingElse): return False As of Python 3.0, this raises `TypeError: catching classes that do not inherit from BaseException is not allowed` instead: one must instead either break it up into multiple `except` clauses or flatten the tuple. However, the reference documentation was never updated to match this new restriction. Make it clear that the definition is no longer recursive. Automerge-Triggered-By: GH:ericvsmith files: M Doc/reference/compound_stmts.rst M Misc/ACKS diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index a55aacccc16df..8da74c79801be 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -254,7 +254,8 @@ present, must be last; it matches any exception. For an except clause with an expression, that expression is evaluated, and the clause matches the exception if the resulting object is "compatible" with the exception. An object is compatible with an exception if it is the class or a base class of the exception -object or a tuple containing an item compatible with the exception. +object, or a tuple containing an item that is the class or a base class of +the exception object. If no except clause matches the exception, the search for an exception handler continues in the surrounding code and on the invocation stack. [#]_ diff --git a/Misc/ACKS b/Misc/ACKS index 381aed1009c1a..80e51f93e3aa9 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1849,6 +1849,7 @@ Zachary Ware Barry Warsaw Steve Waterbury Bob Watson +Colin Watson David Watson Aaron Watters Henrik Weber From webhook-mailer at python.org Sun Dec 20 13:51:28 2020 From: webhook-mailer at python.org (rhettinger) Date: Sun, 20 Dec 2020 18:51:28 -0000 Subject: [Python-checkins] bpo-42572: Improve argparse docs for the type parameter. (GH-23849) (GH-23869) Message-ID: https://github.com/python/cpython/commit/40b4c405f98f2d35835ef5d183f0327c0c55da6f commit: 40b4c405f98f2d35835ef5d183f0327c0c55da6f branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-20T10:51:20-08:00 summary: bpo-42572: Improve argparse docs for the type parameter. (GH-23849) (GH-23869) files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 02cd70f4f71cd..1a298cdd2b534 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1050,63 +1050,70 @@ command-line argument was not present:: type ^^^^ -By default, :class:`ArgumentParser` objects read command-line arguments in as simple +By default, the parser reads command-line arguments in as simple strings. However, quite often the command-line string should instead be -interpreted as another type, like a :class:`float` or :class:`int`. The -``type`` keyword argument of :meth:`~ArgumentParser.add_argument` allows any -necessary type-checking and type conversions to be performed. Common built-in -types and functions can be used directly as the value of the ``type`` argument:: +interpreted as another type, such as a :class:`float` or :class:`int`. The +``type`` keyword for :meth:`~ArgumentParser.add_argument` allows any +necessary type-checking and type conversions to be performed. - >>> parser = argparse.ArgumentParser() - >>> parser.add_argument('foo', type=int) - >>> parser.add_argument('bar', type=open) - >>> parser.parse_args('2 temp.txt'.split()) - Namespace(bar=<_io.TextIOWrapper name='temp.txt' encoding='UTF-8'>, foo=2) +If the type_ keyword is used with the default_ keyword, the type converter +is only applied if the default is a string. -See the section on the default_ keyword argument for information on when the -``type`` argument is applied to default arguments. +The argument to ``type`` can be any callable that accepts a single string. +If the function raises :exc:`ArgumentTypeError`, :exc:`TypeError`, or +:exc:`ValueError`, the exception is caught and a nicely formatted error +message is displayed. No other exception types are handled. -To ease the use of various types of files, the argparse module provides the -factory FileType which takes the ``mode=``, ``bufsize=``, ``encoding=`` and -``errors=`` arguments of the :func:`open` function. For example, -``FileType('w')`` can be used to create a writable file:: +Common built-in types and functions can be used as type converters: - >>> parser = argparse.ArgumentParser() - >>> parser.add_argument('bar', type=argparse.FileType('w')) - >>> parser.parse_args(['out.txt']) - Namespace(bar=<_io.TextIOWrapper name='out.txt' encoding='UTF-8'>) - -``type=`` can take any callable that takes a single string argument and returns -the converted value:: - - >>> def perfect_square(string): - ... value = int(string) - ... sqrt = math.sqrt(value) - ... if sqrt != int(sqrt): - ... msg = "%r is not a perfect square" % string - ... raise argparse.ArgumentTypeError(msg) - ... return value - ... - >>> parser = argparse.ArgumentParser(prog='PROG') - >>> parser.add_argument('foo', type=perfect_square) - >>> parser.parse_args(['9']) - Namespace(foo=9) - >>> parser.parse_args(['7']) - usage: PROG [-h] foo - PROG: error: argument foo: '7' is not a perfect square +.. testcode:: -The choices_ keyword argument may be more convenient for type checkers that -simply check against a range of values:: + import argparse + import pathlib - >>> parser = argparse.ArgumentParser(prog='PROG') - >>> parser.add_argument('foo', type=int, choices=range(5, 10)) - >>> parser.parse_args(['7']) - Namespace(foo=7) - >>> parser.parse_args(['11']) - usage: PROG [-h] {5,6,7,8,9} - PROG: error: argument foo: invalid choice: 11 (choose from 5, 6, 7, 8, 9) - -See the choices_ section for more details. + parser = argparse.ArgumentParser() + parser.add_argument('count', type=int) + parser.add_argument('distance', type=float) + parser.add_argument('street', type=ascii) + parser.add_argument('code_point', type=ord) + parser.add_argument('source_file', type=open) + parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1')) + parser.add_argument('datapath', type=pathlib.Path) + +User defined functions can be used as well: + +.. doctest:: + + >>> def hyphenated(string): + ... return '-'.join([word[:4] for word in string.casefold().split()]) + ... + >>> parser = argparse.ArgumentParser() + >>> _ = parser.add_argument('short_title', type=hyphenated) + >>> parser.parse_args(['"The Tale of Two Cities"']) + Namespace(short_title='"the-tale-of-two-citi') + +The :func:`bool` function is not recommended as a type converter. All it does +is convert empty strings to ``False`` and non-empty strings to ``True``. +This is usually not what is desired. + +In general, the ``type`` keyword is a convenience that should only be used for +simple conversions that can only raise one of the three supported exceptions. +Anything with more interesting error-handling or resource management should be +done downstream after the arguments are parsed. + +For example, JSON or YAML conversions have complex error cases that require +better reporting than can be given by the ``type`` keyword. An +:exc:`~json.JSONDecodeError` would not be well formatted and a +:exc:`FileNotFound` exception would not be handled at all. + +Even :class:`~argparse.FileType` has its limitations for use with the ``type`` +keyword. If one argument uses *FileType* and then a subsequent argument fails, +an error is reported but the file is not automatically closed. In this case, it +would be better to wait until after the parser has run and then use the +:keyword:`with`-statement to manage the files. + +For type checkers that simply check against a fixed set of values, consider +using the choices_ keyword instead. choices From webhook-mailer at python.org Sun Dec 20 16:18:25 2020 From: webhook-mailer at python.org (ericvsmith) Date: Sun, 20 Dec 2020 21:18:25 -0000 Subject: [Python-checkins] bpo-42669: Document that `except` rejects nested tuples (GH-23822) (GH-23870) Message-ID: https://github.com/python/cpython/commit/409ce4a09e4f96ca9b251c19f5819205aae9ae34 commit: 409ce4a09e4f96ca9b251c19f5819205aae9ae34 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ericvsmith date: 2020-12-20T16:18:08-05:00 summary: bpo-42669: Document that `except` rejects nested tuples (GH-23822) (GH-23870) In Python 2, it was possible to use `except` with a nested tuple, and occasionally natural. For example, `zope.formlib.interfaces.InputErrors` is a tuple of several exception classes, and one might reasonably think to do something like this: try: self.getInputValue() return True except (InputErrors, SomethingElse): return False As of Python 3.0, this raises `TypeError: catching classes that do not inherit from BaseException is not allowed` instead: one must instead either break it up into multiple `except` clauses or flatten the tuple. However, the reference documentation was never updated to match this new restriction. Make it clear that the definition is no longer recursive. Automerge-Triggered-By: GH:ericvsmith (cherry picked from commit c95f8bc2700b42f4568886505a819816c9b0ba28) Co-authored-by: Colin Watson Co-authored-by: Colin Watson files: M Doc/reference/compound_stmts.rst M Misc/ACKS diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 2cae2f86d34f7..7e666351b1b31 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -254,7 +254,8 @@ present, must be last; it matches any exception. For an except clause with an expression, that expression is evaluated, and the clause matches the exception if the resulting object is "compatible" with the exception. An object is compatible with an exception if it is the class or a base class of the exception -object or a tuple containing an item compatible with the exception. +object, or a tuple containing an item that is the class or a base class of +the exception object. If no except clause matches the exception, the search for an exception handler continues in the surrounding code and on the invocation stack. [#]_ diff --git a/Misc/ACKS b/Misc/ACKS index ebf12c9a9f1dc..a20c41f1cb189 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1829,6 +1829,7 @@ Zachary Ware Barry Warsaw Steve Waterbury Bob Watson +Colin Watson David Watson Aaron Watters Henrik Weber From webhook-mailer at python.org Sun Dec 20 16:18:46 2020 From: webhook-mailer at python.org (ericvsmith) Date: Sun, 20 Dec 2020 21:18:46 -0000 Subject: [Python-checkins] bpo-42669: Document that `except` rejects nested tuples (GH-23822) (GH-23871) Message-ID: https://github.com/python/cpython/commit/81f706d2db0f57c4fdd747df6e0a4cffcbc54704 commit: 81f706d2db0f57c4fdd747df6e0a4cffcbc54704 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: ericvsmith date: 2020-12-20T16:18:40-05:00 summary: bpo-42669: Document that `except` rejects nested tuples (GH-23822) (GH-23871) In Python 2, it was possible to use `except` with a nested tuple, and occasionally natural. For example, `zope.formlib.interfaces.InputErrors` is a tuple of several exception classes, and one might reasonably think to do something like this: try: self.getInputValue() return True except (InputErrors, SomethingElse): return False As of Python 3.0, this raises `TypeError: catching classes that do not inherit from BaseException is not allowed` instead: one must instead either break it up into multiple `except` clauses or flatten the tuple. However, the reference documentation was never updated to match this new restriction. Make it clear that the definition is no longer recursive. Automerge-Triggered-By: GH:ericvsmith (cherry picked from commit c95f8bc2700b42f4568886505a819816c9b0ba28) Co-authored-by: Colin Watson Co-authored-by: Colin Watson files: M Doc/reference/compound_stmts.rst M Misc/ACKS diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 6900c7ac7d071..61037d97a0c3c 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -254,7 +254,8 @@ present, must be last; it matches any exception. For an except clause with an expression, that expression is evaluated, and the clause matches the exception if the resulting object is "compatible" with the exception. An object is compatible with an exception if it is the class or a base class of the exception -object or a tuple containing an item compatible with the exception. +object, or a tuple containing an item that is the class or a base class of +the exception object. If no except clause matches the exception, the search for an exception handler continues in the surrounding code and on the invocation stack. [#]_ diff --git a/Misc/ACKS b/Misc/ACKS index 8afc0a8e46d57..6ae882479d436 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1792,6 +1792,7 @@ Zachary Ware Barry Warsaw Steve Waterbury Bob Watson +Colin Watson David Watson Aaron Watters Henrik Weber From webhook-mailer at python.org Sun Dec 20 17:28:13 2020 From: webhook-mailer at python.org (vstinner) Date: Sun, 20 Dec 2020 22:28:13 -0000 Subject: [Python-checkins] bpo-31904: Fix site and sysconfig modules for VxWorks RTOS (GH-21821) Message-ID: https://github.com/python/cpython/commit/ab74c014ae514fde7487542ec96ef45235aa86b0 commit: ab74c014ae514fde7487542ec96ef45235aa86b0 branch: master author: pxinwr committer: vstinner date: 2020-12-20T23:27:42+01:00 summary: bpo-31904: Fix site and sysconfig modules for VxWorks RTOS (GH-21821) files: A Misc/NEWS.d/next/Library/2020-08-11-17-44-07.bpo-31904.cb13ea.rst M Lib/distutils/command/install.py M Lib/distutils/tests/test_install.py M Lib/site.py M Lib/sysconfig.py M Lib/test/test_site.py M Lib/test/test_sysconfig.py diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index aaa300efa96e6..bdead133bd399 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -17,7 +17,8 @@ from site import USER_BASE from site import USER_SITE -HAS_USER_SITE = True + +HAS_USER_SITE = (USER_SITE is not None) WINDOWS_SCHEME = { 'purelib': '$base/Lib/site-packages', @@ -169,8 +170,9 @@ def initialize_options(self): self.install_lib = None # set to either purelib or platlib self.install_scripts = None self.install_data = None - self.install_userbase = USER_BASE - self.install_usersite = USER_SITE + if HAS_USER_SITE: + self.install_userbase = USER_BASE + self.install_usersite = USER_SITE self.compile = None self.optimize = None @@ -343,8 +345,9 @@ def finalize_options(self): # Convert directories from Unix /-separated syntax to the local # convention. self.convert_paths('lib', 'purelib', 'platlib', - 'scripts', 'data', 'headers', - 'userbase', 'usersite') + 'scripts', 'data', 'headers') + if HAS_USER_SITE: + self.convert_paths('userbase', 'usersite') # Deprecated # Well, we're not actually fully completely finalized yet: we still diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index 51c80e0421a8c..21a7b7c85c49d 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -8,7 +8,7 @@ from test.support import captured_stdout, run_unittest from distutils import sysconfig -from distutils.command.install import install +from distutils.command.install import install, HAS_USER_SITE from distutils.command import install as install_module from distutils.command.build_ext import build_ext from distutils.command.install import INSTALL_SCHEMES @@ -66,6 +66,7 @@ def check_path(got, expected): check_path(cmd.install_scripts, os.path.join(destination, "bin")) check_path(cmd.install_data, destination) + @unittest.skipUnless(HAS_USER_SITE, 'need user site') def test_user_site(self): # test install with --user # preparing the environment for the test @@ -93,8 +94,9 @@ def cleanup(): self.addCleanup(cleanup) - for key in ('nt_user', 'unix_user'): - self.assertIn(key, INSTALL_SCHEMES) + if HAS_USER_SITE: + for key in ('nt_user', 'unix_user'): + self.assertIn(key, INSTALL_SCHEMES) dist = Distribution({'name': 'xx'}) cmd = install(dist) diff --git a/Lib/site.py b/Lib/site.py index 3a0f619d71c86..5f1b31e73d90a 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -264,6 +264,10 @@ def _getuserbase(): if env_base: return env_base + # VxWorks has no home directories + if sys.platform == "vxworks": + return None + def joinuser(*args): return os.path.expanduser(os.path.join(*args)) @@ -311,11 +315,14 @@ def getusersitepackages(): If the global variable ``USER_SITE`` is not initialized yet, this function will also set it. """ - global USER_SITE + global USER_SITE, ENABLE_USER_SITE userbase = getuserbase() # this will also set USER_BASE if USER_SITE is None: - USER_SITE = _get_path(userbase) + if userbase is None: + ENABLE_USER_SITE = False # disable user site and return None + else: + USER_SITE = _get_path(userbase) return USER_SITE @@ -630,11 +637,14 @@ def _script(): for dir in sys.path: print(" %r," % (dir,)) print("]") - print("USER_BASE: %r (%s)" % (user_base, - "exists" if os.path.isdir(user_base) else "doesn't exist")) - print("USER_SITE: %r (%s)" % (user_site, - "exists" if os.path.isdir(user_site) else "doesn't exist")) - print("ENABLE_USER_SITE: %r" % ENABLE_USER_SITE) + def exists(path): + if path is not None and os.path.isdir(path): + return "exists" + else: + return "doesn't exist" + print(f"USER_BASE: {user_base!r} ({exists(user_base)})") + print(f"USER_SITE: {user_site!r} ({exists(user_site)})") + print(f"ENABLE_USER_SITE: {ENABLE_USER_SITE!r}") sys.exit(0) buffer = [] diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index e1b2f93f876d7..c1aaf79a677ba 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -51,34 +51,65 @@ 'scripts': '{base}/Scripts', 'data': '{base}', }, - # NOTE: When modifying "purelib" scheme, update site._get_path() too. - 'nt_user': { - 'stdlib': '{userbase}/Python{py_version_nodot_plat}', - 'platstdlib': '{userbase}/Python{py_version_nodot_plat}', - 'purelib': '{userbase}/Python{py_version_nodot_plat}/site-packages', - 'platlib': '{userbase}/Python{py_version_nodot_plat}/site-packages', - 'include': '{userbase}/Python{py_version_nodot_plat}/Include', - 'scripts': '{userbase}/Python{py_version_nodot_plat}/Scripts', - 'data': '{userbase}', - }, - 'posix_user': { - 'stdlib': '{userbase}/{platlibdir}/python{py_version_short}', - 'platstdlib': '{userbase}/{platlibdir}/python{py_version_short}', - 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', - 'platlib': '{userbase}/{platlibdir}/python{py_version_short}/site-packages', - 'include': '{userbase}/include/python{py_version_short}', - 'scripts': '{userbase}/bin', - 'data': '{userbase}', - }, - 'osx_framework_user': { - 'stdlib': '{userbase}/lib/python', - 'platstdlib': '{userbase}/lib/python', - 'purelib': '{userbase}/lib/python/site-packages', - 'platlib': '{userbase}/lib/python/site-packages', - 'include': '{userbase}/include', - 'scripts': '{userbase}/bin', - 'data': '{userbase}', - }, + } + + +# NOTE: site.py has copy of this function. +# Sync it when modify this function. +def _getuserbase(): + env_base = os.environ.get("PYTHONUSERBASE", None) + if env_base: + return env_base + + # VxWorks has no home directories + if sys.platform == "vxworks": + return None + + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + + if os.name == "nt": + base = os.environ.get("APPDATA") or "~" + return joinuser(base, "Python") + + if sys.platform == "darwin" and sys._framework: + return joinuser("~", "Library", sys._framework, + "%d.%d" % sys.version_info[:2]) + + return joinuser("~", ".local") + +_HAS_USER_BASE = (_getuserbase() is not None) + +if _HAS_USER_BASE: + _INSTALL_SCHEMES |= { + # NOTE: When modifying "purelib" scheme, update site._get_path() too. + 'nt_user': { + 'stdlib': '{userbase}/Python{py_version_nodot_plat}', + 'platstdlib': '{userbase}/Python{py_version_nodot_plat}', + 'purelib': '{userbase}/Python{py_version_nodot_plat}/site-packages', + 'platlib': '{userbase}/Python{py_version_nodot_plat}/site-packages', + 'include': '{userbase}/Python{py_version_nodot_plat}/Include', + 'scripts': '{userbase}/Python{py_version_nodot_plat}/Scripts', + 'data': '{userbase}', + }, + 'posix_user': { + 'stdlib': '{userbase}/{platlibdir}/python{py_version_short}', + 'platstdlib': '{userbase}/{platlibdir}/python{py_version_short}', + 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', + 'platlib': '{userbase}/{platlibdir}/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', + }, + 'osx_framework_user': { + 'stdlib': '{userbase}/lib/python', + 'platstdlib': '{userbase}/lib/python', + 'purelib': '{userbase}/lib/python/site-packages', + 'platlib': '{userbase}/lib/python/site-packages', + 'include': '{userbase}/include', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', + }, } _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', @@ -183,25 +214,6 @@ def _get_default_scheme(): return os.name -# NOTE: site.py has copy of this function. -# Sync it when modify this function. -def _getuserbase(): - env_base = os.environ.get("PYTHONUSERBASE", None) - if env_base: - return env_base - - def joinuser(*args): - return os.path.expanduser(os.path.join(*args)) - - if os.name == "nt": - base = os.environ.get("APPDATA") or "~" - return joinuser(base, "Python") - - if sys.platform == "darwin" and sys._framework: - return joinuser("~", "Library", sys._framework, - "%d.%d" % sys.version_info[:2]) - - return joinuser("~", ".local") def _parse_makefile(filename, vars=None): @@ -558,10 +570,11 @@ def get_config_vars(*args): SO = _CONFIG_VARS.get('EXT_SUFFIX') if SO is not None: _CONFIG_VARS['SO'] = SO - # Setting 'userbase' is done below the call to the - # init function to enable using 'get_config_var' in - # the init-function. - _CONFIG_VARS['userbase'] = _getuserbase() + if _HAS_USER_BASE: + # Setting 'userbase' is done below the call to the + # init function to enable using 'get_config_var' in + # the init-function. + _CONFIG_VARS['userbase'] = _getuserbase() # Always convert srcdir to an absolute path srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE) diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 2e70880f56d14..6060288248efb 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -36,6 +36,7 @@ import site +HAS_USER_SITE = (site.USER_SITE is not None) OLD_SYS_PATH = None @@ -195,6 +196,7 @@ def test_addsitedir(self): def test__getuserbase(self): self.assertEqual(site._getuserbase(), sysconfig._getuserbase()) + @unittest.skipUnless(HAS_USER_SITE, 'need user site') def test_get_path(self): if sys.platform == 'darwin' and sys._framework: scheme = 'osx_framework_user' @@ -244,6 +246,7 @@ def test_s_option(self): self.assertEqual(rc, 1, "User base not set by PYTHONUSERBASE") + @unittest.skipUnless(HAS_USER_SITE, 'need user site') def test_getuserbase(self): site.USER_BASE = None user_base = site.getuserbase() @@ -261,6 +264,7 @@ def test_getuserbase(self): self.assertTrue(site.getuserbase().startswith('xoxo'), site.getuserbase()) + @unittest.skipUnless(HAS_USER_SITE, 'need user site') def test_getusersitepackages(self): site.USER_SITE = None site.USER_BASE = None @@ -295,6 +299,7 @@ def test_getsitepackages(self): wanted = os.path.join('xoxo', 'lib', 'site-packages') self.assertEqual(dirs[1], wanted) + @unittest.skipUnless(HAS_USER_SITE, 'need user site') def test_no_home_directory(self): # bpo-10496: getuserbase() and getusersitepackages() must not fail if # the current user has no home directory (if expanduser() returns the diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 352dbdea817e6..e279957e26ced 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -18,6 +18,10 @@ get_scheme_names, get_config_var, _main) import _osx_support + +HAS_USER_BASE = sysconfig._HAS_USER_BASE + + class TestSysConfig(unittest.TestCase): def setUp(self): @@ -230,9 +234,10 @@ def test_get_config_h_filename(self): self.assertTrue(os.path.isfile(config_h), config_h) def test_get_scheme_names(self): - wanted = ('nt', 'nt_user', 'osx_framework_user', - 'posix_home', 'posix_prefix', 'posix_user') - self.assertEqual(get_scheme_names(), wanted) + wanted = ['nt', 'posix_home', 'posix_prefix'] + if HAS_USER_BASE: + wanted.extend(['nt_user', 'osx_framework_user', 'posix_user']) + self.assertEqual(get_scheme_names(), tuple(sorted(wanted))) @skip_unless_symlink def test_symlink(self): # Issue 7880 @@ -244,7 +249,8 @@ def test_user_similar(self): # Issue #8759: make sure the posix scheme for the users # is similar to the global posix_prefix one base = get_config_var('base') - user = get_config_var('userbase') + if HAS_USER_BASE: + user = get_config_var('userbase') # the global scheme mirrors the distinction between prefix and # exec-prefix but not the user scheme, so we have to adapt the paths # before comparing (issue #9100) @@ -259,8 +265,9 @@ def test_user_similar(self): # before comparing global_path = global_path.replace(sys.base_prefix, sys.prefix) base = base.replace(sys.base_prefix, sys.prefix) - user_path = get_path(name, 'posix_user') - self.assertEqual(user_path, global_path.replace(base, user, 1)) + if HAS_USER_BASE: + user_path = get_path(name, 'posix_user') + self.assertEqual(user_path, global_path.replace(base, user, 1)) def test_main(self): # just making sure _main() runs and returns things in the stdout diff --git a/Misc/NEWS.d/next/Library/2020-08-11-17-44-07.bpo-31904.cb13ea.rst b/Misc/NEWS.d/next/Library/2020-08-11-17-44-07.bpo-31904.cb13ea.rst new file mode 100644 index 0000000000000..a7164b7a5a26d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-11-17-44-07.bpo-31904.cb13ea.rst @@ -0,0 +1 @@ +Fix site and sysconfig modules for VxWorks RTOS which has no home directories. From webhook-mailer at python.org Mon Dec 21 01:38:38 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Dec 2020 06:38:38 -0000 Subject: [Python-checkins] [WIP/RFC] bpo-15872: tests: remove oddity from test_rmtree_errors (GH-22967) Message-ID: https://github.com/python/cpython/commit/37a6d5f8027f969418fe53d0a73a21003a8e370d commit: 37a6d5f8027f969418fe53d0a73a21003a8e370d branch: master author: Daniel Hahler committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-20T22:38:02-08:00 summary: [WIP/RFC] bpo-15872: tests: remove oddity from test_rmtree_errors (GH-22967) This was added for (some) Windows buildbots back in 2012, and should either not be necessary anymore, or it should probably get investigated why "\*.*" gets added to filenames in the first place. Ref: Automerge-Triggered-By: GH:hynek files: M Lib/test/test_shutil.py diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index df7fbedf24a7c..df8dcdcce6091 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -280,10 +280,7 @@ def test_rmtree_errors(self): filename = os.path.join(tmpdir, "tstfile") with self.assertRaises(NotADirectoryError) as cm: shutil.rmtree(filename) - # The reason for this rather odd construct is that Windows sprinkles - # a \*.* at the end of file names. But only sometimes on some buildbots - possible_args = [filename, os.path.join(filename, '*.*')] - self.assertIn(cm.exception.filename, possible_args) + self.assertEqual(cm.exception.filename, filename) self.assertTrue(os.path.exists(filename)) # test that ignore_errors option is honored shutil.rmtree(filename, ignore_errors=True) @@ -296,11 +293,11 @@ def onerror(*args): self.assertIs(errors[0][0], os.scandir) self.assertEqual(errors[0][1], filename) self.assertIsInstance(errors[0][2][1], NotADirectoryError) - self.assertIn(errors[0][2][1].filename, possible_args) + self.assertEqual(errors[0][2][1].filename, filename) self.assertIs(errors[1][0], os.rmdir) self.assertEqual(errors[1][1], filename) self.assertIsInstance(errors[1][2][1], NotADirectoryError) - self.assertIn(errors[1][2][1].filename, possible_args) + self.assertEqual(errors[1][2][1].filename, filename) @unittest.skipIf(sys.platform[:6] == 'cygwin', From webhook-mailer at python.org Mon Dec 21 08:13:40 2020 From: webhook-mailer at python.org (JulienPalard) Date: Mon, 21 Dec 2020 13:13:40 -0000 Subject: [Python-checkins] bpo-35790: Correct the description of sys.exc_info() and add a code example (GH-11625) Message-ID: https://github.com/python/cpython/commit/d515c610c61b9a8c40c037a3dc3bfc8d67563658 commit: d515c610c61b9a8c40c037a3dc3bfc8d67563658 branch: master author: G?ry Ogam committer: JulienPalard date: 2020-12-21T14:13:08+01:00 summary: bpo-35790: Correct the description of sys.exc_info() and add a code example (GH-11625) files: M Doc/reference/compound_stmts.rst diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index 8da74c79801be..5bba3eea6f6c0 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -302,9 +302,27 @@ Before an except clause's suite is executed, details about the exception are stored in the :mod:`sys` module and can be accessed via :func:`sys.exc_info`. :func:`sys.exc_info` returns a 3-tuple consisting of the exception class, the exception instance and a traceback object (see section :ref:`types`) identifying -the point in the program where the exception occurred. :func:`sys.exc_info` -values are restored to their previous values (before the call) when returning -from a function that handled an exception. +the point in the program where the exception occurred. The details about the +exception accessed via :func:`sys.exc_info` are restored to their previous values +when leaving an exception handler:: + + >>> print(sys.exc_info()) + (None, None, None) + >>> try: + ... raise TypeError + ... except: + ... print(sys.exc_info()) + ... try: + ... raise ValueError + ... except: + ... print(sys.exc_info()) + ... print(sys.exc_info()) + ... + (, TypeError(), ) + (, ValueError(), ) + (, TypeError(), ) + >>> print(sys.exc_info()) + (None, None, None) .. index:: keyword: else From webhook-mailer at python.org Mon Dec 21 08:53:59 2020 From: webhook-mailer at python.org (markshannon) Date: Mon, 21 Dec 2020 13:53:59 -0000 Subject: [Python-checkins] bpo-42634: Mark reraise after except blocks as artificial. (GH-23877) Message-ID: https://github.com/python/cpython/commit/f2dbfd7e20431f0bcf2b655aa876afec7fe03c6f commit: f2dbfd7e20431f0bcf2b655aa876afec7fe03c6f branch: master author: Mark Shannon committer: markshannon date: 2020-12-21T13:53:50Z summary: bpo-42634: Mark reraise after except blocks as artificial. (GH-23877) * Mark reraise after except blocks as artificial. * Update importlib * Update dis test. files: M Lib/test/test_dis.py M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index d5d815dc5dc55..f618d2dbf6213 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -1056,17 +1056,17 @@ def jumpy(): Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=96, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=98, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=100, starts_line=None, is_jump_target=False), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=98, argval=202, argrepr='to 202', offset=102, starts_line=20, is_jump_target=True), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=96, argval=200, argrepr='to 200', offset=102, starts_line=20, is_jump_target=True), Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=118, argrepr='to 118', offset=104, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=106, starts_line=21, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=108, starts_line=None, is_jump_target=False), Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=26, argval=144, argrepr='to 144', offset=116, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=24, argval=142, argrepr='to 142', offset=116, starts_line=None, is_jump_target=False), Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=118, starts_line=22, is_jump_target=True), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=120, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=142, argval=142, argrepr='', offset=122, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=210, argval=210, argrepr='', offset=122, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False), @@ -1075,42 +1075,42 @@ def jumpy(): Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=134, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False), Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=46, argval=188, argrepr='to 188', offset=140, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=142, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), - Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=154, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=158, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=160, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=44, argval=186, argrepr='to 186', offset=140, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=142, starts_line=25, is_jump_target=True), + Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=170, argrepr='to 170', offset=144, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=146, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=148, starts_line=26, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=150, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=152, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=154, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=158, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=160, starts_line=None, is_jump_target=False), Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=162, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=166, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), - Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=178, argval=178, argrepr='', offset=174, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=176, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=True), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=164, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=166, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=186, argrepr='to 186', offset=168, starts_line=None, is_jump_target=False), + Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=176, argval=176, argrepr='', offset=172, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=174, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=True), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=190, starts_line=28, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=192, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=194, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=196, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=198, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=200, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=202, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=204, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=206, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=208, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=210, starts_line=None, is_jump_target=False), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=188, starts_line=28, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=190, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=192, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=194, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=196, starts_line=None, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=200, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=202, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=204, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=206, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=208, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=210, starts_line=22, is_jump_target=True), ] # One last piece of inspect fodder to check the default line number handling diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 3bfc99385d2eb..340f37fae7c5b 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -791,6 +791,25 @@ def func(): (4, 'line'), (4, 'return')]) + def test_try_except_with_wrong_type(self): + + def func(): + try: + 2/0 + except IndexError: + 4 + finally: + return 6 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (2, 'exception'), + (3, 'line'), + (6, 'line'), + (6, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Python/compile.c b/Python/compile.c index d4dbaf7b6aa77..6698b55000d9c 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3129,6 +3129,8 @@ compiler_try_except(struct compiler *c, stmt_ty s) compiler_use_next_block(c, except); } compiler_pop_fblock(c, EXCEPTION_HANDLER, NULL); + /* Mark as artificial */ + c->u->u_lineno = -1; ADDOP_I(c, RERAISE, 0); compiler_use_next_block(c, orelse); VISIT_SEQ(c, stmt, s->v.Try.orelse); diff --git a/Python/importlib.h b/Python/importlib.h index 87b8c63ce85a8..14d0557f75aae 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -63,272 +63,272 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 98,106,169,0,114,5,0,0,0,250,29,60,102,114,111,122, 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, 111,116,115,116,114,97,112,62,218,12,95,111,98,106,101,99, - 116,95,110,97,109,101,23,0,0,0,115,10,0,0,0,2, - 1,8,1,12,1,16,1,255,128,114,7,0,0,0,78,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 7,0,0,0,67,0,0,0,115,56,0,0,0,100,1,68, - 0,93,32,125,2,116,0,124,1,124,2,131,2,114,4,116, - 1,124,0,124,2,116,2,124,1,124,2,131,2,131,3,1, - 0,113,4,124,0,106,3,160,4,124,1,106,3,161,1,1, - 0,100,2,83,0,41,3,122,47,83,105,109,112,108,101,32, - 115,117,98,115,116,105,116,117,116,101,32,102,111,114,32,102, - 117,110,99,116,111,111,108,115,46,117,112,100,97,116,101,95, - 119,114,97,112,112,101,114,46,41,4,218,10,95,95,109,111, - 100,117,108,101,95,95,218,8,95,95,110,97,109,101,95,95, - 114,1,0,0,0,218,7,95,95,100,111,99,95,95,78,41, - 5,218,7,104,97,115,97,116,116,114,218,7,115,101,116,97, - 116,116,114,218,7,103,101,116,97,116,116,114,218,8,95,95, - 100,105,99,116,95,95,218,6,117,112,100,97,116,101,41,3, - 90,3,110,101,119,90,3,111,108,100,218,7,114,101,112,108, - 97,99,101,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,5,95,119,114,97,112,40,0,0,0,115,12,0, - 0,0,8,2,10,1,18,1,2,128,18,1,255,128,114,17, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, - 0,116,0,116,1,131,1,124,0,131,1,83,0,114,0,0, - 0,0,41,2,114,3,0,0,0,218,3,115,121,115,169,1, - 218,4,110,97,109,101,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,11,95,110,101,119,95,109,111,100,117, - 108,101,48,0,0,0,115,4,0,0,0,12,1,255,128,114, - 21,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,64,0,0,0,115,12,0, - 0,0,101,0,90,1,100,0,90,2,100,1,83,0,41,2, - 218,14,95,68,101,97,100,108,111,99,107,69,114,114,111,114, - 78,41,3,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,22,0,0,0,61,0,0,0,115, - 6,0,0,0,8,0,4,1,255,128,114,22,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,64,0,0,0,115,56,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,90, - 6,100,8,100,9,132,0,90,7,100,10,100,11,132,0,90, - 8,100,12,83,0,41,13,218,11,95,77,111,100,117,108,101, - 76,111,99,107,122,169,65,32,114,101,99,117,114,115,105,118, - 101,32,108,111,99,107,32,105,109,112,108,101,109,101,110,116, - 97,116,105,111,110,32,119,104,105,99,104,32,105,115,32,97, - 98,108,101,32,116,111,32,100,101,116,101,99,116,32,100,101, - 97,100,108,111,99,107,115,10,32,32,32,32,40,101,46,103, - 46,32,116,104,114,101,97,100,32,49,32,116,114,121,105,110, - 103,32,116,111,32,116,97,107,101,32,108,111,99,107,115,32, - 65,32,116,104,101,110,32,66,44,32,97,110,100,32,116,104, - 114,101,97,100,32,50,32,116,114,121,105,110,103,32,116,111, - 10,32,32,32,32,116,97,107,101,32,108,111,99,107,115,32, - 66,32,116,104,101,110,32,65,41,46,10,32,32,32,32,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,48,0,0,0,116,0,160, - 1,161,0,124,0,95,2,116,0,160,1,161,0,124,0,95, - 3,124,1,124,0,95,4,100,0,124,0,95,5,100,1,124, - 0,95,6,100,1,124,0,95,7,100,0,83,0,169,2,78, - 233,0,0,0,0,41,8,218,7,95,116,104,114,101,97,100, - 90,13,97,108,108,111,99,97,116,101,95,108,111,99,107,218, - 4,108,111,99,107,218,6,119,97,107,101,117,112,114,20,0, - 0,0,218,5,111,119,110,101,114,218,5,99,111,117,110,116, - 218,7,119,97,105,116,101,114,115,169,2,218,4,115,101,108, - 102,114,20,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,8,95,95,105,110,105,116,95,95,71, - 0,0,0,115,14,0,0,0,10,1,10,1,6,1,6,1, - 6,1,10,1,255,128,122,20,95,77,111,100,117,108,101,76, - 111,99,107,46,95,95,105,110,105,116,95,95,99,1,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, - 0,67,0,0,0,115,86,0,0,0,116,0,160,1,161,0, - 125,1,124,0,106,2,125,2,116,3,131,0,125,3,9,0, - 116,4,160,5,124,2,161,1,125,4,124,4,100,0,117,0, - 114,44,100,2,83,0,124,4,106,2,125,2,124,2,124,1, - 107,2,114,62,100,1,83,0,124,2,124,3,118,0,114,74, - 100,2,83,0,124,3,160,6,124,2,161,1,1,0,113,22, - 41,3,78,84,70,41,7,114,26,0,0,0,218,9,103,101, - 116,95,105,100,101,110,116,114,29,0,0,0,218,3,115,101, - 116,218,12,95,98,108,111,99,107,105,110,103,95,111,110,218, - 3,103,101,116,218,3,97,100,100,41,5,114,33,0,0,0, - 90,2,109,101,218,3,116,105,100,90,4,115,101,101,110,114, - 27,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,12,104,97,115,95,100,101,97,100,108,111,99, - 107,79,0,0,0,115,30,0,0,0,8,2,6,1,6,1, - 2,1,10,1,8,1,4,1,6,1,8,1,4,1,8,1, - 4,6,10,1,2,242,255,128,122,24,95,77,111,100,117,108, - 101,76,111,99,107,46,104,97,115,95,100,101,97,100,108,111, - 99,107,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,8,0,0,0,67,0,0,0,115,198,0,0,0, - 116,0,160,1,161,0,125,1,124,0,116,2,124,1,60,0, - 122,172,9,0,124,0,106,3,143,126,1,0,124,0,106,4, - 100,2,107,2,115,48,124,0,106,5,124,1,107,2,114,92, - 124,1,124,0,95,5,124,0,4,0,106,4,100,3,55,0, - 2,0,95,4,87,0,100,4,4,0,4,0,131,3,1,0, - 87,0,116,2,124,1,61,0,100,1,83,0,124,0,160,6, - 161,0,114,112,116,7,100,5,124,0,22,0,131,1,130,1, - 124,0,106,8,160,9,100,6,161,1,114,138,124,0,4,0, - 106,10,100,3,55,0,2,0,95,10,87,0,100,4,4,0, - 4,0,131,3,1,0,110,16,49,0,115,158,119,1,1,0, - 1,0,1,0,89,0,1,0,124,0,106,8,160,9,161,0, - 1,0,124,0,106,8,160,11,161,0,1,0,113,20,116,2, - 124,1,61,0,119,0,41,7,122,185,10,32,32,32,32,32, - 32,32,32,65,99,113,117,105,114,101,32,116,104,101,32,109, - 111,100,117,108,101,32,108,111,99,107,46,32,32,73,102,32, - 97,32,112,111,116,101,110,116,105,97,108,32,100,101,97,100, - 108,111,99,107,32,105,115,32,100,101,116,101,99,116,101,100, - 44,10,32,32,32,32,32,32,32,32,97,32,95,68,101,97, - 100,108,111,99,107,69,114,114,111,114,32,105,115,32,114,97, - 105,115,101,100,46,10,32,32,32,32,32,32,32,32,79,116, - 104,101,114,119,105,115,101,44,32,116,104,101,32,108,111,99, - 107,32,105,115,32,97,108,119,97,121,115,32,97,99,113,117, - 105,114,101,100,32,97,110,100,32,84,114,117,101,32,105,115, - 32,114,101,116,117,114,110,101,100,46,10,32,32,32,32,32, - 32,32,32,84,114,25,0,0,0,233,1,0,0,0,78,122, - 23,100,101,97,100,108,111,99,107,32,100,101,116,101,99,116, - 101,100,32,98,121,32,37,114,70,41,12,114,26,0,0,0, - 114,35,0,0,0,114,37,0,0,0,114,27,0,0,0,114, - 30,0,0,0,114,29,0,0,0,114,41,0,0,0,114,22, - 0,0,0,114,28,0,0,0,218,7,97,99,113,117,105,114, - 101,114,31,0,0,0,218,7,114,101,108,101,97,115,101,169, - 2,114,33,0,0,0,114,40,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,43,0,0,0,100, - 0,0,0,115,38,0,0,0,8,6,8,1,2,1,2,1, - 8,1,20,1,6,1,14,1,14,1,10,9,8,248,12,1, - 12,1,44,1,10,2,10,1,2,244,8,14,255,128,122,19, - 95,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, - 105,114,101,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,8,0,0,0,67,0,0,0,115,144,0,0, - 0,116,0,160,1,161,0,125,1,124,0,106,2,143,110,1, - 0,124,0,106,3,124,1,107,3,114,34,116,4,100,1,131, - 1,130,1,124,0,106,5,100,2,107,4,115,48,74,0,130, - 1,124,0,4,0,106,5,100,3,56,0,2,0,95,5,124, - 0,106,5,100,2,107,2,114,108,100,0,124,0,95,3,124, - 0,106,6,114,108,124,0,4,0,106,6,100,3,56,0,2, - 0,95,6,124,0,106,7,160,8,161,0,1,0,87,0,100, - 0,4,0,4,0,131,3,1,0,100,0,83,0,49,0,115, - 130,119,1,1,0,1,0,1,0,89,0,1,0,100,0,83, - 0,41,4,78,250,31,99,97,110,110,111,116,32,114,101,108, - 101,97,115,101,32,117,110,45,97,99,113,117,105,114,101,100, - 32,108,111,99,107,114,25,0,0,0,114,42,0,0,0,41, - 9,114,26,0,0,0,114,35,0,0,0,114,27,0,0,0, - 114,29,0,0,0,218,12,82,117,110,116,105,109,101,69,114, - 114,111,114,114,30,0,0,0,114,31,0,0,0,114,28,0, - 0,0,114,44,0,0,0,114,45,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,44,0,0,0, - 125,0,0,0,115,24,0,0,0,8,1,8,1,10,1,8, - 1,14,1,14,1,10,1,6,1,6,1,14,1,46,1,255, - 128,122,19,95,77,111,100,117,108,101,76,111,99,107,46,114, - 101,108,101,97,115,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,5,0,0,0,67,0,0,0,115, - 18,0,0,0,100,1,160,0,124,0,106,1,116,2,124,0, - 131,1,161,2,83,0,41,2,78,122,23,95,77,111,100,117, - 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, - 123,125,169,3,218,6,102,111,114,109,97,116,114,20,0,0, - 0,218,2,105,100,169,1,114,33,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,95,95,114, - 101,112,114,95,95,138,0,0,0,115,4,0,0,0,18,1, - 255,128,122,20,95,77,111,100,117,108,101,76,111,99,107,46, - 95,95,114,101,112,114,95,95,78,41,9,114,9,0,0,0, - 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, - 34,0,0,0,114,41,0,0,0,114,43,0,0,0,114,44, - 0,0,0,114,52,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,23,0,0, - 0,65,0,0,0,115,16,0,0,0,8,0,4,1,8,5, - 8,8,8,21,8,25,12,13,255,128,114,23,0,0,0,99, - 0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90, - 6,100,8,100,9,132,0,90,7,100,10,83,0,41,11,218, - 16,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,122,86,65,32,115,105,109,112,108,101,32,95,77,111,100, - 117,108,101,76,111,99,107,32,101,113,117,105,118,97,108,101, - 110,116,32,102,111,114,32,80,121,116,104,111,110,32,98,117, - 105,108,100,115,32,119,105,116,104,111,117,116,10,32,32,32, - 32,109,117,108,116,105,45,116,104,114,101,97,100,105,110,103, - 32,115,117,112,112,111,114,116,46,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, - 0,0,115,16,0,0,0,124,1,124,0,95,0,100,1,124, - 0,95,1,100,0,83,0,114,24,0,0,0,41,2,114,20, - 0,0,0,114,30,0,0,0,114,32,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,34,0,0, - 0,146,0,0,0,115,6,0,0,0,6,1,10,1,255,128, - 122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,111, - 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,18,0,0,0,124,0,4,0,106,0,100, - 1,55,0,2,0,95,0,100,2,83,0,41,3,78,114,42, - 0,0,0,84,41,1,114,30,0,0,0,114,51,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 43,0,0,0,150,0,0,0,115,6,0,0,0,14,1,4, - 1,255,128,122,24,95,68,117,109,109,121,77,111,100,117,108, - 101,76,111,99,107,46,97,99,113,117,105,114,101,99,1,0, + 116,95,110,97,109,101,23,0,0,0,115,12,0,0,0,2, + 1,8,1,12,1,14,1,2,255,255,128,114,7,0,0,0, + 78,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,7,0,0,0,67,0,0,0,115,56,0,0,0,100, + 1,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, + 4,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, + 3,1,0,113,4,124,0,106,3,160,4,124,1,106,3,161, + 1,1,0,100,2,83,0,41,3,122,47,83,105,109,112,108, + 101,32,115,117,98,115,116,105,116,117,116,101,32,102,111,114, + 32,102,117,110,99,116,111,111,108,115,46,117,112,100,97,116, + 101,95,119,114,97,112,112,101,114,46,41,4,218,10,95,95, + 109,111,100,117,108,101,95,95,218,8,95,95,110,97,109,101, + 95,95,114,1,0,0,0,218,7,95,95,100,111,99,95,95, + 78,41,5,218,7,104,97,115,97,116,116,114,218,7,115,101, + 116,97,116,116,114,218,7,103,101,116,97,116,116,114,218,8, + 95,95,100,105,99,116,95,95,218,6,117,112,100,97,116,101, + 41,3,90,3,110,101,119,90,3,111,108,100,218,7,114,101, + 112,108,97,99,101,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,5,95,119,114,97,112,40,0,0,0,115, + 12,0,0,0,8,2,10,1,18,1,2,128,18,1,255,128, + 114,17,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,12, + 0,0,0,116,0,116,1,131,1,124,0,131,1,83,0,114, + 0,0,0,0,41,2,114,3,0,0,0,218,3,115,121,115, + 169,1,218,4,110,97,109,101,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,11,95,110,101,119,95,109,111, + 100,117,108,101,48,0,0,0,115,4,0,0,0,12,1,255, + 128,114,21,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,115, + 12,0,0,0,101,0,90,1,100,0,90,2,100,1,83,0, + 41,2,218,14,95,68,101,97,100,108,111,99,107,69,114,114, + 111,114,78,41,3,114,9,0,0,0,114,8,0,0,0,114, + 1,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,22,0,0,0,61,0,0, + 0,115,6,0,0,0,8,0,4,1,255,128,114,22,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,64,0,0,0,115,56,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,90,6,100,8,100,9,132,0,90,7,100,10,100,11,132, + 0,90,8,100,12,83,0,41,13,218,11,95,77,111,100,117, + 108,101,76,111,99,107,122,169,65,32,114,101,99,117,114,115, + 105,118,101,32,108,111,99,107,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,119,104,105,99,104,32,105,115, + 32,97,98,108,101,32,116,111,32,100,101,116,101,99,116,32, + 100,101,97,100,108,111,99,107,115,10,32,32,32,32,40,101, + 46,103,46,32,116,104,114,101,97,100,32,49,32,116,114,121, + 105,110,103,32,116,111,32,116,97,107,101,32,108,111,99,107, + 115,32,65,32,116,104,101,110,32,66,44,32,97,110,100,32, + 116,104,114,101,97,100,32,50,32,116,114,121,105,110,103,32, + 116,111,10,32,32,32,32,116,97,107,101,32,108,111,99,107, + 115,32,66,32,116,104,101,110,32,65,41,46,10,32,32,32, + 32,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,2,0,0,0,67,0,0,0,115,48,0,0,0,116, + 0,160,1,161,0,124,0,95,2,116,0,160,1,161,0,124, + 0,95,3,124,1,124,0,95,4,100,0,124,0,95,5,100, + 1,124,0,95,6,100,1,124,0,95,7,100,0,83,0,169, + 2,78,233,0,0,0,0,41,8,218,7,95,116,104,114,101, + 97,100,90,13,97,108,108,111,99,97,116,101,95,108,111,99, + 107,218,4,108,111,99,107,218,6,119,97,107,101,117,112,114, + 20,0,0,0,218,5,111,119,110,101,114,218,5,99,111,117, + 110,116,218,7,119,97,105,116,101,114,115,169,2,218,4,115, + 101,108,102,114,20,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,8,95,95,105,110,105,116,95, + 95,71,0,0,0,115,14,0,0,0,10,1,10,1,6,1, + 6,1,6,1,10,1,255,128,122,20,95,77,111,100,117,108, + 101,76,111,99,107,46,95,95,105,110,105,116,95,95,99,1, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, + 0,0,0,67,0,0,0,115,86,0,0,0,116,0,160,1, + 161,0,125,1,124,0,106,2,125,2,116,3,131,0,125,3, + 9,0,116,4,160,5,124,2,161,1,125,4,124,4,100,0, + 117,0,114,44,100,2,83,0,124,4,106,2,125,2,124,2, + 124,1,107,2,114,62,100,1,83,0,124,2,124,3,118,0, + 114,74,100,2,83,0,124,3,160,6,124,2,161,1,1,0, + 113,22,41,3,78,84,70,41,7,114,26,0,0,0,218,9, + 103,101,116,95,105,100,101,110,116,114,29,0,0,0,218,3, + 115,101,116,218,12,95,98,108,111,99,107,105,110,103,95,111, + 110,218,3,103,101,116,218,3,97,100,100,41,5,114,33,0, + 0,0,90,2,109,101,218,3,116,105,100,90,4,115,101,101, + 110,114,27,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,12,104,97,115,95,100,101,97,100,108, + 111,99,107,79,0,0,0,115,30,0,0,0,8,2,6,1, + 6,1,2,1,10,1,8,1,4,1,6,1,8,1,4,1, + 8,1,4,6,10,1,2,242,255,128,122,24,95,77,111,100, + 117,108,101,76,111,99,107,46,104,97,115,95,100,101,97,100, + 108,111,99,107,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,8,0,0,0,67,0,0,0,115,198,0, + 0,0,116,0,160,1,161,0,125,1,124,0,116,2,124,1, + 60,0,122,172,9,0,124,0,106,3,143,126,1,0,124,0, + 106,4,100,2,107,2,115,48,124,0,106,5,124,1,107,2, + 114,92,124,1,124,0,95,5,124,0,4,0,106,4,100,3, + 55,0,2,0,95,4,87,0,100,4,4,0,4,0,131,3, + 1,0,87,0,116,2,124,1,61,0,100,1,83,0,124,0, + 160,6,161,0,114,112,116,7,100,5,124,0,22,0,131,1, + 130,1,124,0,106,8,160,9,100,6,161,1,114,138,124,0, + 4,0,106,10,100,3,55,0,2,0,95,10,87,0,100,4, + 4,0,4,0,131,3,1,0,110,16,49,0,115,158,119,1, + 1,0,1,0,1,0,89,0,1,0,124,0,106,8,160,9, + 161,0,1,0,124,0,106,8,160,11,161,0,1,0,113,20, + 116,2,124,1,61,0,119,0,41,7,122,185,10,32,32,32, + 32,32,32,32,32,65,99,113,117,105,114,101,32,116,104,101, + 32,109,111,100,117,108,101,32,108,111,99,107,46,32,32,73, + 102,32,97,32,112,111,116,101,110,116,105,97,108,32,100,101, + 97,100,108,111,99,107,32,105,115,32,100,101,116,101,99,116, + 101,100,44,10,32,32,32,32,32,32,32,32,97,32,95,68, + 101,97,100,108,111,99,107,69,114,114,111,114,32,105,115,32, + 114,97,105,115,101,100,46,10,32,32,32,32,32,32,32,32, + 79,116,104,101,114,119,105,115,101,44,32,116,104,101,32,108, + 111,99,107,32,105,115,32,97,108,119,97,121,115,32,97,99, + 113,117,105,114,101,100,32,97,110,100,32,84,114,117,101,32, + 105,115,32,114,101,116,117,114,110,101,100,46,10,32,32,32, + 32,32,32,32,32,84,114,25,0,0,0,233,1,0,0,0, + 78,122,23,100,101,97,100,108,111,99,107,32,100,101,116,101, + 99,116,101,100,32,98,121,32,37,114,70,41,12,114,26,0, + 0,0,114,35,0,0,0,114,37,0,0,0,114,27,0,0, + 0,114,30,0,0,0,114,29,0,0,0,114,41,0,0,0, + 114,22,0,0,0,114,28,0,0,0,218,7,97,99,113,117, + 105,114,101,114,31,0,0,0,218,7,114,101,108,101,97,115, + 101,169,2,114,33,0,0,0,114,40,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,43,0,0, + 0,100,0,0,0,115,38,0,0,0,8,6,8,1,2,1, + 2,1,8,1,20,1,6,1,14,1,14,1,10,9,8,248, + 12,1,12,1,44,1,10,2,10,1,2,244,8,14,255,128, + 122,19,95,77,111,100,117,108,101,76,111,99,107,46,97,99, + 113,117,105,114,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,8,0,0,0,67,0,0,0,115,144, + 0,0,0,116,0,160,1,161,0,125,1,124,0,106,2,143, + 110,1,0,124,0,106,3,124,1,107,3,114,34,116,4,100, + 1,131,1,130,1,124,0,106,5,100,2,107,4,115,48,74, + 0,130,1,124,0,4,0,106,5,100,3,56,0,2,0,95, + 5,124,0,106,5,100,2,107,2,114,108,100,0,124,0,95, + 3,124,0,106,6,114,108,124,0,4,0,106,6,100,3,56, + 0,2,0,95,6,124,0,106,7,160,8,161,0,1,0,87, + 0,100,0,4,0,4,0,131,3,1,0,100,0,83,0,49, + 0,115,130,119,1,1,0,1,0,1,0,89,0,1,0,100, + 0,83,0,41,4,78,250,31,99,97,110,110,111,116,32,114, + 101,108,101,97,115,101,32,117,110,45,97,99,113,117,105,114, + 101,100,32,108,111,99,107,114,25,0,0,0,114,42,0,0, + 0,41,9,114,26,0,0,0,114,35,0,0,0,114,27,0, + 0,0,114,29,0,0,0,218,12,82,117,110,116,105,109,101, + 69,114,114,111,114,114,30,0,0,0,114,31,0,0,0,114, + 28,0,0,0,114,44,0,0,0,114,45,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,44,0, + 0,0,125,0,0,0,115,24,0,0,0,8,1,8,1,10, + 1,8,1,14,1,14,1,10,1,6,1,6,1,14,1,46, + 1,255,128,122,19,95,77,111,100,117,108,101,76,111,99,107, + 46,114,101,108,101,97,115,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,5,0,0,0,67,0,0, + 0,115,18,0,0,0,100,1,160,0,124,0,106,1,116,2, + 124,0,131,1,161,2,83,0,41,2,78,122,23,95,77,111, + 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, + 116,32,123,125,169,3,218,6,102,111,114,109,97,116,114,20, + 0,0,0,218,2,105,100,169,1,114,33,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,8,95, + 95,114,101,112,114,95,95,138,0,0,0,115,4,0,0,0, + 18,1,255,128,122,20,95,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,9,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,34,0,0,0,114,41,0,0,0,114,43,0,0,0, + 114,44,0,0,0,114,52,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,23, + 0,0,0,65,0,0,0,115,16,0,0,0,8,0,4,1, + 8,5,8,8,8,21,8,25,12,13,255,128,114,23,0,0, + 0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132, + 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, + 11,218,16,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,122,86,65,32,115,105,109,112,108,101,32,95,77, + 111,100,117,108,101,76,111,99,107,32,101,113,117,105,118,97, + 108,101,110,116,32,102,111,114,32,80,121,116,104,111,110,32, + 98,117,105,108,100,115,32,119,105,116,104,111,117,116,10,32, + 32,32,32,109,117,108,116,105,45,116,104,114,101,97,100,105, + 110,103,32,115,117,112,112,111,114,116,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, + 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,100, + 1,124,0,95,1,100,0,83,0,114,24,0,0,0,41,2, + 114,20,0,0,0,114,30,0,0,0,114,32,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,34, + 0,0,0,146,0,0,0,115,6,0,0,0,6,1,10,1, + 255,128,122,25,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,95,95,105,110,105,116,95,95,99,1,0, 0,0,0,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,2,114,18,116,1,100,2,131,1,130,1,124,0,4, - 0,106,0,100,3,56,0,2,0,95,0,100,0,83,0,41, - 4,78,114,25,0,0,0,114,46,0,0,0,114,42,0,0, - 0,41,2,114,30,0,0,0,114,47,0,0,0,114,51,0, + 0,0,67,0,0,0,115,18,0,0,0,124,0,4,0,106, + 0,100,1,55,0,2,0,95,0,100,2,83,0,41,3,78, + 114,42,0,0,0,84,41,1,114,30,0,0,0,114,51,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,44,0,0,0,154,0,0,0,115,8,0,0,0,10, - 1,8,1,18,1,255,128,122,24,95,68,117,109,109,121,77, - 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,5,0,0,0,67,0,0,0,115,18,0,0,0,100, - 1,160,0,124,0,106,1,116,2,124,0,131,1,161,2,83, - 0,41,2,78,122,28,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, - 123,125,114,48,0,0,0,114,51,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,52,0,0,0, - 159,0,0,0,115,4,0,0,0,18,1,255,128,122,25,95, - 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, - 95,95,114,101,112,114,95,95,78,41,8,114,9,0,0,0, - 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, - 34,0,0,0,114,43,0,0,0,114,44,0,0,0,114,52, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,53,0,0,0,142,0,0,0, - 115,14,0,0,0,8,0,4,1,8,3,8,4,8,4,12, - 5,255,128,114,53,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, - 0,115,36,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, - 100,6,132,0,90,5,100,7,83,0,41,8,218,18,95,77, - 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, - 124,0,95,0,100,0,124,0,95,1,100,0,83,0,114,0, - 0,0,0,41,2,218,5,95,110,97,109,101,218,5,95,108, - 111,99,107,114,32,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,34,0,0,0,165,0,0,0, - 115,6,0,0,0,6,1,10,1,255,128,122,27,95,77,111, - 100,117,108,101,76,111,99,107,77,97,110,97,103,101,114,46, - 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, - 0,115,26,0,0,0,116,0,124,0,106,1,131,1,124,0, - 95,2,124,0,106,2,160,3,161,0,1,0,100,0,83,0, - 114,0,0,0,0,41,4,218,16,95,103,101,116,95,109,111, - 100,117,108,101,95,108,111,99,107,114,55,0,0,0,114,56, - 0,0,0,114,43,0,0,0,114,51,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,9,95,95, - 101,110,116,101,114,95,95,169,0,0,0,115,6,0,0,0, - 12,1,14,1,255,128,122,28,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,101,110,116, - 101,114,95,95,99,1,0,0,0,0,0,0,0,0,0,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,0,0,0,0,41,2,114,56,0,0,0,114,44,0,0, - 0,41,3,114,33,0,0,0,218,4,97,114,103,115,90,6, - 107,119,97,114,103,115,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,8,95,95,101,120,105,116,95,95,173, - 0,0,0,115,4,0,0,0,14,1,255,128,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,9,0,0, - 0,114,8,0,0,0,114,1,0,0,0,114,34,0,0,0, - 114,58,0,0,0,114,60,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,54, - 0,0,0,163,0,0,0,115,10,0,0,0,8,0,8,2, - 8,4,12,4,255,128,114,54,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, - 67,0,0,0,115,134,0,0,0,116,0,160,1,161,0,1, - 0,122,114,122,14,116,2,124,0,25,0,131,0,125,1,87, - 0,110,22,4,0,116,3,121,46,1,0,1,0,1,0,100, - 1,125,1,89,0,110,2,119,0,124,1,100,1,117,0,114, - 110,116,4,100,1,117,0,114,74,116,5,124,0,131,1,125, - 1,110,8,116,6,124,0,131,1,125,1,124,0,102,1,100, - 2,100,3,132,1,125,2,116,7,160,8,124,1,124,2,161, - 2,116,2,124,0,60,0,87,0,116,0,160,9,161,0,1, - 0,124,1,83,0,116,0,160,9,161,0,1,0,119,0,41, + 0,114,43,0,0,0,150,0,0,0,115,6,0,0,0,14, + 1,4,1,255,128,122,24,95,68,117,109,109,121,77,111,100, + 117,108,101,76,111,99,107,46,97,99,113,117,105,114,101,99, + 1,0,0,0,0,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,2,114,18,116,1,100,2,131,1,130,1,124, + 0,4,0,106,0,100,3,56,0,2,0,95,0,100,0,83, + 0,41,4,78,114,25,0,0,0,114,46,0,0,0,114,42, + 0,0,0,41,2,114,30,0,0,0,114,47,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,44,0,0,0,154,0,0,0,115,8,0,0, + 0,10,1,8,1,18,1,255,128,122,24,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, + 97,115,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,5,0,0,0,67,0,0,0,115,18,0,0, + 0,100,1,160,0,124,0,106,1,116,2,124,0,131,1,161, + 2,83,0,41,2,78,122,28,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97, + 116,32,123,125,114,48,0,0,0,114,51,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,52,0, + 0,0,159,0,0,0,115,4,0,0,0,18,1,255,128,122, + 25,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, + 107,46,95,95,114,101,112,114,95,95,78,41,8,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,34,0,0,0,114,43,0,0,0,114,44,0,0,0, + 114,52,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,53,0,0,0,142,0, + 0,0,115,14,0,0,0,8,0,4,1,8,3,8,4,8, + 4,12,5,255,128,114,53,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64, + 0,0,0,115,36,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,100,6,132,0,90,5,100,7,83,0,41,8,218,18, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, + 124,1,124,0,95,0,100,0,124,0,95,1,100,0,83,0, + 114,0,0,0,0,41,2,218,5,95,110,97,109,101,218,5, + 95,108,111,99,107,114,32,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,34,0,0,0,165,0, + 0,0,115,6,0,0,0,6,1,10,1,255,128,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 0,0,0,115,26,0,0,0,116,0,124,0,106,1,131,1, + 124,0,95,2,124,0,106,2,160,3,161,0,1,0,100,0, + 83,0,114,0,0,0,0,41,4,218,16,95,103,101,116,95, + 109,111,100,117,108,101,95,108,111,99,107,114,55,0,0,0, + 114,56,0,0,0,114,43,0,0,0,114,51,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, + 95,95,101,110,116,101,114,95,95,169,0,0,0,115,6,0, + 0,0,12,1,14,1,255,128,122,28,95,77,111,100,117,108, + 101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,101, + 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,0, + 0,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,0,0,0,0,41,2,114,56,0,0,0,114,44, + 0,0,0,41,3,114,33,0,0,0,218,4,97,114,103,115, + 90,6,107,119,97,114,103,115,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,8,95,95,101,120,105,116,95, + 95,173,0,0,0,115,4,0,0,0,14,1,255,128,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,9, + 0,0,0,114,8,0,0,0,114,1,0,0,0,114,34,0, + 0,0,114,58,0,0,0,114,60,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,54,0,0,0,163,0,0,0,115,10,0,0,0,8,0, + 8,2,8,4,12,4,255,128,114,54,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,8,0, + 0,0,67,0,0,0,115,132,0,0,0,116,0,160,1,161, + 0,1,0,122,110,122,14,116,2,124,0,25,0,131,0,125, + 1,87,0,110,18,4,0,116,3,121,130,1,0,1,0,1, + 0,100,1,125,1,89,0,124,1,100,1,117,0,114,106,116, + 4,100,1,117,0,114,70,116,5,124,0,131,1,125,1,110, + 8,116,6,124,0,131,1,125,1,124,0,102,1,100,2,100, + 3,132,1,125,2,116,7,160,8,124,1,124,2,161,2,116, + 2,124,0,60,0,87,0,116,0,160,9,161,0,1,0,124, + 1,83,0,116,0,160,9,161,0,1,0,119,0,119,0,41, 4,122,139,71,101,116,32,111,114,32,99,114,101,97,116,101, 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, @@ -358,186 +358,186 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 95,119,101,97,107,114,101,102,114,65,0,0,0,114,64,0, 0,0,41,3,114,20,0,0,0,114,27,0,0,0,114,66, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,57,0,0,0,179,0,0,0,115,34,0,0,0, - 8,6,2,1,2,1,14,1,12,1,10,1,8,2,8,1, + 0,0,114,57,0,0,0,179,0,0,0,115,36,0,0,0, + 8,6,2,1,2,1,14,1,12,1,6,1,8,2,8,1, 10,1,8,2,12,2,16,11,2,128,8,2,4,2,10,254, - 255,128,114,57,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, - 115,54,0,0,0,116,0,124,0,131,1,125,1,122,12,124, - 1,160,1,161,0,1,0,87,0,110,20,4,0,116,2,121, - 40,1,0,1,0,1,0,89,0,100,1,83,0,119,0,124, - 1,160,3,161,0,1,0,100,1,83,0,41,2,122,189,65, - 99,113,117,105,114,101,115,32,116,104,101,110,32,114,101,108, - 101,97,115,101,115,32,116,104,101,32,109,111,100,117,108,101, - 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, - 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, - 32,32,32,32,84,104,105,115,32,105,115,32,117,115,101,100, - 32,116,111,32,101,110,115,117,114,101,32,97,32,109,111,100, - 117,108,101,32,105,115,32,99,111,109,112,108,101,116,101,108, - 121,32,105,110,105,116,105,97,108,105,122,101,100,44,32,105, - 110,32,116,104,101,10,32,32,32,32,101,118,101,110,116,32, - 105,116,32,105,115,32,98,101,105,110,103,32,105,109,112,111, - 114,116,101,100,32,98,121,32,97,110,111,116,104,101,114,32, - 116,104,114,101,97,100,46,10,32,32,32,32,78,41,4,114, - 57,0,0,0,114,43,0,0,0,114,22,0,0,0,114,44, - 0,0,0,41,2,114,20,0,0,0,114,27,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,19, - 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, - 117,108,101,216,0,0,0,115,14,0,0,0,8,6,2,1, - 12,1,12,1,8,3,12,2,255,128,114,69,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,79,0,0,0,115,14,0,0,0,124,0,124, - 1,105,0,124,2,164,1,142,1,83,0,41,2,97,46,1, - 0,0,114,101,109,111,118,101,95,105,109,112,111,114,116,108, - 105,98,95,102,114,97,109,101,115,32,105,110,32,105,109,112, - 111,114,116,46,99,32,119,105,108,108,32,97,108,119,97,121, - 115,32,114,101,109,111,118,101,32,115,101,113,117,101,110,99, - 101,115,10,32,32,32,32,111,102,32,105,109,112,111,114,116, - 108,105,98,32,102,114,97,109,101,115,32,116,104,97,116,32, - 101,110,100,32,119,105,116,104,32,97,32,99,97,108,108,32, - 116,111,32,116,104,105,115,32,102,117,110,99,116,105,111,110, - 10,10,32,32,32,32,85,115,101,32,105,116,32,105,110,115, - 116,101,97,100,32,111,102,32,97,32,110,111,114,109,97,108, - 32,99,97,108,108,32,105,110,32,112,108,97,99,101,115,32, - 119,104,101,114,101,32,105,110,99,108,117,100,105,110,103,32, - 116,104,101,32,105,109,112,111,114,116,108,105,98,10,32,32, - 32,32,102,114,97,109,101,115,32,105,110,116,114,111,100,117, - 99,101,115,32,117,110,119,97,110,116,101,100,32,110,111,105, - 115,101,32,105,110,116,111,32,116,104,101,32,116,114,97,99, - 101,98,97,99,107,32,40,101,46,103,46,32,119,104,101,110, - 32,101,120,101,99,117,116,105,110,103,10,32,32,32,32,109, - 111,100,117,108,101,32,99,111,100,101,41,10,32,32,32,32, - 78,114,5,0,0,0,41,3,218,1,102,114,59,0,0,0, - 90,4,107,119,100,115,114,5,0,0,0,114,5,0,0,0, - 114,6,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, - 233,0,0,0,115,4,0,0,0,14,8,255,128,114,71,0, - 0,0,114,42,0,0,0,41,1,218,9,118,101,114,98,111, - 115,105,116,121,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,4,0,0,0,71,0,0,0,115,58,0, - 0,0,116,0,106,1,106,2,124,1,107,5,114,54,124,0, - 160,3,100,1,161,1,115,30,100,2,124,0,23,0,125,0, - 116,4,124,0,106,5,124,2,142,0,116,0,106,6,100,3, - 141,2,1,0,100,4,83,0,100,4,83,0,41,5,122,61, - 80,114,105,110,116,32,116,104,101,32,109,101,115,115,97,103, - 101,32,116,111,32,115,116,100,101,114,114,32,105,102,32,45, - 118,47,80,89,84,72,79,78,86,69,82,66,79,83,69,32, - 105,115,32,116,117,114,110,101,100,32,111,110,46,41,2,250, - 1,35,122,7,105,109,112,111,114,116,32,122,2,35,32,41, - 1,90,4,102,105,108,101,78,41,7,114,18,0,0,0,218, - 5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100,101,114,114,41, - 3,218,7,109,101,115,115,97,103,101,114,72,0,0,0,114, - 59,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, - 115,115,97,103,101,244,0,0,0,115,12,0,0,0,12,2, - 10,1,8,1,24,1,4,253,255,128,114,80,0,0,0,99, - 1,0,0,0,0,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,1,83,0,41,4,122,49,68,101,99,111,114, - 97,116,111,114,32,116,111,32,118,101,114,105,102,121,32,116, - 104,101,32,110,97,109,101,100,32,109,111,100,117,108,101,32, - 105,115,32,98,117,105,108,116,45,105,110,46,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,19,0,0,0,115,38,0,0,0,124,1,116,0,106,1, - 118,1,114,28,116,2,100,1,160,3,124,1,161,1,124,1, - 100,2,141,2,130,1,136,0,124,0,124,1,131,2,83,0, - 41,3,78,250,29,123,33,114,125,32,105,115,32,110,111,116, - 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,19,0,0,0,41,4,114,18,0,0,0,218,20, - 98,117,105,108,116,105,110,95,109,111,100,117,108,101,95,110, - 97,109,101,115,218,11,73,109,112,111,114,116,69,114,114,111, - 114,114,49,0,0,0,169,2,114,33,0,0,0,218,8,102, - 117,108,108,110,97,109,101,169,1,218,3,102,120,110,114,5, - 0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0,10,1,10,1, - 2,1,6,255,10,2,255,128,122,52,95,114,101,113,117,105, - 114,101,115,95,98,117,105,108,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,78,169, - 1,114,17,0,0,0,41,2,114,87,0,0,0,114,88,0, - 0,0,114,5,0,0,0,114,86,0,0,0,114,6,0,0, - 0,218,17,95,114,101,113,117,105,114,101,115,95,98,117,105, - 108,116,105,110,252,0,0,0,115,8,0,0,0,12,2,10, - 5,4,1,255,128,114,90,0,0,0,99,1,0,0,0,0, - 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,1, - 83,0,41,4,122,47,68,101,99,111,114,97,116,111,114,32, - 116,111,32,118,101,114,105,102,121,32,116,104,101,32,110,97, - 109,101,100,32,109,111,100,117,108,101,32,105,115,32,102,114, - 111,122,101,110,46,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,38, - 0,0,0,116,0,160,1,124,1,161,1,115,28,116,2,100, - 1,160,3,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,19,0,0,0,41,4, - 114,61,0,0,0,218,9,105,115,95,102,114,111,122,101,110, - 114,83,0,0,0,114,49,0,0,0,114,84,0,0,0,114, - 86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0,115,12,0,0, - 0,10,1,10,1,2,1,6,255,10,2,255,128,122,50,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,46, + 2,234,255,128,114,57,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, + 0,0,115,54,0,0,0,116,0,124,0,131,1,125,1,122, + 12,124,1,160,1,161,0,1,0,87,0,110,18,4,0,116, + 2,121,52,1,0,1,0,1,0,89,0,100,1,83,0,124, + 1,160,3,161,0,1,0,100,1,83,0,119,0,41,2,122, + 189,65,99,113,117,105,114,101,115,32,116,104,101,110,32,114, + 101,108,101,97,115,101,115,32,116,104,101,32,109,111,100,117, + 108,101,32,108,111,99,107,32,102,111,114,32,97,32,103,105, + 118,101,110,32,109,111,100,117,108,101,32,110,97,109,101,46, + 10,10,32,32,32,32,84,104,105,115,32,105,115,32,117,115, + 101,100,32,116,111,32,101,110,115,117,114,101,32,97,32,109, + 111,100,117,108,101,32,105,115,32,99,111,109,112,108,101,116, + 101,108,121,32,105,110,105,116,105,97,108,105,122,101,100,44, + 32,105,110,32,116,104,101,10,32,32,32,32,101,118,101,110, + 116,32,105,116,32,105,115,32,98,101,105,110,103,32,105,109, + 112,111,114,116,101,100,32,98,121,32,97,110,111,116,104,101, + 114,32,116,104,114,101,97,100,46,10,32,32,32,32,78,41, + 4,114,57,0,0,0,114,43,0,0,0,114,22,0,0,0, + 114,44,0,0,0,41,2,114,20,0,0,0,114,27,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,19,95,108,111,99,107,95,117,110,108,111,99,107,95,109, + 111,100,117,108,101,216,0,0,0,115,16,0,0,0,8,6, + 2,1,12,1,12,1,6,3,12,2,2,251,255,128,114,69, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,79,0,0,0,115,14,0,0, + 0,124,0,124,1,105,0,124,2,164,1,142,1,83,0,41, + 2,97,46,1,0,0,114,101,109,111,118,101,95,105,109,112, + 111,114,116,108,105,98,95,102,114,97,109,101,115,32,105,110, + 32,105,109,112,111,114,116,46,99,32,119,105,108,108,32,97, + 108,119,97,121,115,32,114,101,109,111,118,101,32,115,101,113, + 117,101,110,99,101,115,10,32,32,32,32,111,102,32,105,109, + 112,111,114,116,108,105,98,32,102,114,97,109,101,115,32,116, + 104,97,116,32,101,110,100,32,119,105,116,104,32,97,32,99, + 97,108,108,32,116,111,32,116,104,105,115,32,102,117,110,99, + 116,105,111,110,10,10,32,32,32,32,85,115,101,32,105,116, + 32,105,110,115,116,101,97,100,32,111,102,32,97,32,110,111, + 114,109,97,108,32,99,97,108,108,32,105,110,32,112,108,97, + 99,101,115,32,119,104,101,114,101,32,105,110,99,108,117,100, + 105,110,103,32,116,104,101,32,105,109,112,111,114,116,108,105, + 98,10,32,32,32,32,102,114,97,109,101,115,32,105,110,116, + 114,111,100,117,99,101,115,32,117,110,119,97,110,116,101,100, + 32,110,111,105,115,101,32,105,110,116,111,32,116,104,101,32, + 116,114,97,99,101,98,97,99,107,32,40,101,46,103,46,32, + 119,104,101,110,32,101,120,101,99,117,116,105,110,103,10,32, + 32,32,32,109,111,100,117,108,101,32,99,111,100,101,41,10, + 32,32,32,32,78,114,5,0,0,0,41,3,218,1,102,114, + 59,0,0,0,90,4,107,119,100,115,114,5,0,0,0,114, + 5,0,0,0,114,6,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,233,0,0,0,115,4,0,0,0,14,8,255, + 128,114,71,0,0,0,114,42,0,0,0,41,1,218,9,118, + 101,114,98,111,115,105,116,121,99,1,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,4,0,0,0,71,0,0, + 0,115,58,0,0,0,116,0,106,1,106,2,124,1,107,5, + 114,54,124,0,160,3,100,1,161,1,115,30,100,2,124,0, + 23,0,125,0,116,4,124,0,106,5,124,2,142,0,116,0, + 106,6,100,3,141,2,1,0,100,4,83,0,100,4,83,0, + 41,5,122,61,80,114,105,110,116,32,116,104,101,32,109,101, + 115,115,97,103,101,32,116,111,32,115,116,100,101,114,114,32, + 105,102,32,45,118,47,80,89,84,72,79,78,86,69,82,66, + 79,83,69,32,105,115,32,116,117,114,110,101,100,32,111,110, + 46,41,2,250,1,35,122,7,105,109,112,111,114,116,32,122, + 2,35,32,41,1,90,4,102,105,108,101,78,41,7,114,18, + 0,0,0,218,5,102,108,97,103,115,218,7,118,101,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,49,0,0,0,218,6,115,116,100, + 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,72, + 0,0,0,114,59,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,244,0,0,0,115,12,0, + 0,0,12,2,10,1,8,1,24,1,4,253,255,128,114,80, + 0,0,0,99,1,0,0,0,0,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,1,83,0,41,4,122,49,68, + 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, + 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, + 117,108,101,32,105,115,32,98,117,105,108,116,45,105,110,46, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,19,0,0,0,115,38,0,0,0,124,1, + 116,0,106,1,118,1,114,28,116,2,100,1,160,3,124,1, + 161,1,124,1,100,2,141,2,130,1,136,0,124,0,124,1, + 131,2,83,0,41,3,78,250,29,123,33,114,125,32,105,115, + 32,110,111,116,32,97,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,114,19,0,0,0,41,4,114,18,0, + 0,0,218,20,98,117,105,108,116,105,110,95,109,111,100,117, + 108,101,95,110,97,109,101,115,218,11,73,109,112,111,114,116, + 69,114,114,111,114,114,49,0,0,0,169,2,114,33,0,0, + 0,218,8,102,117,108,108,110,97,109,101,169,1,218,3,102, + 120,110,114,5,0,0,0,114,6,0,0,0,218,25,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,254,0,0,0,115,12,0,0,0, + 10,1,10,1,2,1,6,255,10,2,255,128,122,52,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,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,78,114,89,0,0,0,41,2,114,87,0,0,0,114,93, - 0,0,0,114,5,0,0,0,114,86,0,0,0,114,6,0, - 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,7,1,0,0,115,8,0,0,0,12,2,10, - 5,4,1,255,128,114,94,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,67, - 0,0,0,115,74,0,0,0,100,1,125,2,116,0,160,1, - 124,2,116,2,161,2,1,0,116,3,124,1,124,0,131,2, - 125,3,124,1,116,4,106,5,118,0,114,66,116,4,106,5, - 124,1,25,0,125,4,116,6,124,3,124,4,131,2,1,0, - 116,4,106,5,124,1,25,0,83,0,116,7,124,3,131,1, - 83,0,41,3,122,128,76,111,97,100,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32, - 105,110,116,111,32,115,121,115,46,109,111,100,117,108,101,115, - 32,97,110,100,32,114,101,116,117,114,110,32,105,116,46,10, - 10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46,101,120,101,99, - 95,109,111,100,117,108,101,32,105,110,115,116,101,97,100,46, - 10,10,32,32,32,32,122,103,116,104,101,32,108,111,97,100, - 95,109,111,100,117,108,101,40,41,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97, - 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101, - 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32, - 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109, - 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,78, - 41,8,218,9,95,119,97,114,110,105,110,103,115,218,4,119, - 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, - 87,97,114,110,105,110,103,218,16,115,112,101,99,95,102,114, - 111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0,114,85,0,0, - 0,218,3,109,115,103,218,4,115,112,101,99,218,6,109,111, - 100,117,108,101,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, - 101,95,115,104,105,109,19,1,0,0,115,18,0,0,0,4, - 6,12,2,10,1,10,1,10,1,10,1,10,1,8,2,255, - 128,114,105,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, - 210,0,0,0,116,0,124,0,100,1,100,0,131,3,125,1, - 116,1,124,1,100,2,131,2,114,54,122,12,124,1,160,2, - 124,0,161,1,87,0,83,0,4,0,116,3,121,52,1,0, - 1,0,1,0,89,0,110,2,119,0,122,10,124,0,106,4, - 125,2,87,0,110,18,4,0,116,5,121,82,1,0,1,0, - 1,0,89,0,110,18,119,0,124,2,100,0,117,1,114,100, - 116,6,124,2,131,1,83,0,122,10,124,0,106,7,125,3, - 87,0,110,22,4,0,116,5,121,132,1,0,1,0,1,0, - 100,3,125,3,89,0,110,2,119,0,122,10,124,0,106,8, - 125,4,87,0,110,52,4,0,116,5,121,196,1,0,1,0, - 1,0,124,1,100,0,117,0,114,180,100,4,160,9,124,3, - 161,1,6,0,89,0,83,0,100,5,160,9,124,3,124,1, - 161,2,6,0,89,0,83,0,119,0,100,6,160,9,124,3, - 124,4,161,2,83,0,41,7,78,218,10,95,95,108,111,97, + 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, + 101,114,78,169,1,114,17,0,0,0,41,2,114,87,0,0, + 0,114,88,0,0,0,114,5,0,0,0,114,86,0,0,0, + 114,6,0,0,0,218,17,95,114,101,113,117,105,114,101,115, + 95,98,117,105,108,116,105,110,252,0,0,0,115,8,0,0, + 0,12,2,10,5,4,1,255,128,114,90,0,0,0,99,1, + 0,0,0,0,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,1,83,0,41,4,122,47,68,101,99,111,114,97, + 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, + 101,32,110,97,109,101,100,32,109,111,100,117,108,101,32,105, + 115,32,102,114,111,122,101,110,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,19,0, + 0,0,115,38,0,0,0,116,0,160,1,124,1,161,1,115, + 28,116,2,100,1,160,3,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,19,0, + 0,0,41,4,114,61,0,0,0,218,9,105,115,95,102,114, + 111,122,101,110,114,83,0,0,0,114,49,0,0,0,114,84, + 0,0,0,114,86,0,0,0,114,5,0,0,0,114,6,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,9,1,0,0, + 115,12,0,0,0,10,1,10,1,2,1,6,255,10,2,255, + 128,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,78,114,89,0,0,0,41,2,114,87,0, + 0,0,114,93,0,0,0,114,5,0,0,0,114,86,0,0, + 0,114,6,0,0,0,218,16,95,114,101,113,117,105,114,101, + 115,95,102,114,111,122,101,110,7,1,0,0,115,8,0,0, + 0,12,2,10,5,4,1,255,128,114,94,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4, + 0,0,0,67,0,0,0,115,74,0,0,0,100,1,125,2, + 116,0,160,1,124,2,116,2,161,2,1,0,116,3,124,1, + 124,0,131,2,125,3,124,1,116,4,106,5,118,0,114,66, + 116,4,106,5,124,1,25,0,125,4,116,6,124,3,124,4, + 131,2,1,0,116,4,106,5,124,1,25,0,83,0,116,7, + 124,3,131,1,83,0,41,3,122,128,76,111,97,100,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,32,105,110,116,111,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,110,100,32,114,101,116,117,114,110,32, + 105,116,46,10,10,32,32,32,32,84,104,105,115,32,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,108,111,97,100,101,114,46, + 101,120,101,99,95,109,111,100,117,108,101,32,105,110,115,116, + 101,97,100,46,10,10,32,32,32,32,122,103,116,104,101,32, + 108,111,97,100,95,109,111,100,117,108,101,40,41,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, + 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, + 104,111,110,32,51,46,49,50,59,32,117,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,78,41,8,218,9,95,119,97,114,110,105,110,103, + 115,218,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,218,16,115,112,101, + 99,95,102,114,111,109,95,108,111,97,100,101,114,114,18,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,5,114,33,0,0,0, + 114,85,0,0,0,218,3,109,115,103,218,4,115,112,101,99, + 218,6,109,111,100,117,108,101,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,17,95,108,111,97,100,95,109, + 111,100,117,108,101,95,115,104,105,109,19,1,0,0,115,18, + 0,0,0,4,6,12,2,10,1,10,1,10,1,10,1,10, + 1,8,2,255,128,114,105,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,67, + 0,0,0,115,206,0,0,0,116,0,124,0,100,1,100,0, + 131,3,125,1,116,1,124,1,100,2,131,2,114,50,122,12, + 124,1,160,2,124,0,161,1,87,0,83,0,4,0,116,3, + 121,204,1,0,1,0,1,0,89,0,122,10,124,0,106,4, + 125,2,87,0,110,16,4,0,116,5,121,202,1,0,1,0, + 1,0,89,0,110,16,124,2,100,0,117,1,114,94,116,6, + 124,2,131,1,83,0,122,10,124,0,106,7,125,3,87,0, + 110,18,4,0,116,5,121,200,1,0,1,0,1,0,100,3, + 125,3,89,0,122,10,124,0,106,8,125,4,87,0,110,50, + 4,0,116,5,121,198,1,0,1,0,1,0,124,1,100,0, + 117,0,114,170,100,4,160,9,124,3,161,1,6,0,89,0, + 83,0,100,5,160,9,124,3,124,1,161,2,6,0,89,0, + 83,0,100,6,160,9,124,3,124,4,161,2,83,0,119,0, + 119,0,119,0,119,0,41,7,78,218,10,95,95,108,111,97, 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, 112,114,250,1,63,250,13,60,109,111,100,117,108,101,32,123, 33,114,125,62,250,20,60,109,111,100,117,108,101,32,123,33, @@ -552,279 +552,280 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,218,6,108,111,97,100,101,114,114,103,0,0,0,114,20, 0,0,0,218,8,102,105,108,101,110,97,109,101,114,5,0, 0,0,114,5,0,0,0,114,6,0,0,0,218,12,95,109, - 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,48, - 0,0,0,12,2,10,1,2,4,12,1,12,1,6,1,2, - 1,10,1,12,1,6,1,8,2,8,1,2,4,10,1,12, - 1,10,1,2,1,10,1,12,1,8,1,14,1,18,2,12, - 2,255,128,114,118,0,0,0,99,0,0,0,0,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, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,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,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, - 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, - 124,0,95,0,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,41,2,78,70,41,7,114,20,0,0,0,114, - 116,0,0,0,114,120,0,0,0,114,121,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,33,0,0,0,114,20,0,0,0,114,116, - 0,0,0,114,120,0,0,0,114,121,0,0,0,114,122,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,34,0,0,0,111,1,0,0,115,16,0,0,0,6, - 2,6,1,6,1,6,1,14,1,6,3,10,1,255,128,122, - 19,77,111,100,117,108,101,83,112,101,99,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,6,0,0,0,67,0,0,0,115,102,0, - 0,0,100,1,160,0,124,0,106,1,161,1,100,2,160,0, - 124,0,106,2,161,1,103,2,125,1,124,0,106,3,100,0, - 117,1,114,52,124,1,160,4,100,3,160,0,124,0,106,3, - 161,1,161,1,1,0,124,0,106,5,100,0,117,1,114,80, - 124,1,160,4,100,4,160,0,124,0,106,5,161,1,161,1, - 1,0,100,5,160,0,124,0,106,6,106,7,100,6,160,8, - 124,1,161,1,161,2,83,0,41,7,78,122,9,110,97,109, - 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123, - 33,114,125,122,11,111,114,105,103,105,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,49,0, - 0,0,114,20,0,0,0,114,116,0,0,0,114,120,0,0, - 0,218,6,97,112,112,101,110,100,114,123,0,0,0,218,9, - 95,95,99,108,97,115,115,95,95,114,9,0,0,0,218,4, - 106,111,105,110,41,2,114,33,0,0,0,114,59,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 52,0,0,0,123,1,0,0,115,22,0,0,0,10,1,10, - 1,4,255,10,2,18,1,10,1,8,1,4,1,6,255,22, - 2,255,128,122,19,77,111,100,117,108,101,83,112,101,99,46, - 95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,102,0,0,0,124,0,106,0,125,2,122,72,124,0, - 106,1,124,1,106,1,107,2,111,76,124,0,106,2,124,1, - 106,2,107,2,111,76,124,0,106,3,124,1,106,3,107,2, - 111,76,124,2,124,1,106,0,107,2,111,76,124,0,106,4, - 124,1,106,4,107,2,111,76,124,0,106,5,124,1,106,5, - 107,2,87,0,83,0,4,0,116,6,121,100,1,0,1,0, - 1,0,116,7,6,0,89,0,83,0,119,0,114,0,0,0, - 0,41,8,114,123,0,0,0,114,20,0,0,0,114,116,0, - 0,0,114,120,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,2,0, - 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,41,3,114,33,0,0,0,90,5,111,116,104,101,114, - 90,4,115,109,115,108,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,6,95,95,101,113,95,95,133,1,0, - 0,115,32,0,0,0,6,1,2,1,12,1,10,1,2,255, - 10,2,2,254,8,3,2,253,10,4,2,252,10,5,4,251, - 12,6,10,1,255,128,122,17,77,111,100,117,108,101,83,112, - 101,99,46,95,95,101,113,95,95,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,58,0,0,0,124,0,106,0,100,0,117,0,114, - 52,124,0,106,1,100,0,117,1,114,52,124,0,106,2,114, - 52,116,3,100,0,117,0,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,0,0,0,0,41,6,114,125,0,0,0,114,120,0, - 0,0,114,124,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,51, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,129,0,0,0,145,1,0,0,115,14,0,0,0, - 10,2,16,1,8,1,4,1,14,1,6,1,255,128,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,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,0,0,0,0,41,1, - 114,125,0,0,0,41,2,114,33,0,0,0,114,129,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,129,0,0,0,154,1,0,0,115,4,0,0,0,10,2, - 255,128,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,32,0,0,0, - 124,0,106,0,100,1,117,0,114,26,124,0,106,1,160,2, - 100,2,161,1,100,3,25,0,83,0,124,0,106,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,25,0,0,0,41,3,114, - 123,0,0,0,114,20,0,0,0,218,10,114,112,97,114,116, - 105,116,105,111,110,114,51,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,6,112,97,114,101,110, - 116,158,1,0,0,115,8,0,0,0,10,3,16,1,6,2, - 255,128,122,17,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,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,0,0,0,0,41,1, - 114,124,0,0,0,114,51,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,130,0,0,0,166,1, - 0,0,115,4,0,0,0,6,2,255,128,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,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,0,0,0,0,41,2,218,4,98,111,111,108,114,124,0, - 0,0,41,2,114,33,0,0,0,218,5,118,97,108,117,101, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 130,0,0,0,170,1,0,0,115,4,0,0,0,14,2,255, - 128,41,12,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,34,0,0,0,114,52,0,0, - 0,114,132,0,0,0,218,8,112,114,111,112,101,114,116,121, - 114,129,0,0,0,218,6,115,101,116,116,101,114,114,137,0, - 0,0,114,130,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,119,0,0,0, - 74,1,0,0,115,36,0,0,0,8,0,4,1,4,36,2, - 1,12,255,8,12,8,10,2,12,10,1,4,8,10,1,2, - 3,10,1,2,7,10,1,4,3,14,1,255,128,114,119,0, - 0,0,169,2,114,120,0,0,0,114,122,0,0,0,99,2, - 0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,8, - 0,0,0,67,0,0,0,115,150,0,0,0,116,0,124,1, - 100,1,131,2,114,74,116,1,100,2,117,0,114,22,116,2, - 130,1,116,1,106,3,125,4,124,3,100,2,117,0,114,48, - 124,4,124,0,124,1,100,3,141,2,83,0,124,3,114,56, - 103,0,110,2,100,2,125,5,124,4,124,0,124,1,124,5, - 100,4,141,3,83,0,124,3,100,2,117,0,114,134,116,0, - 124,1,100,5,131,2,114,130,122,14,124,1,160,4,124,0, - 161,1,125,3,87,0,110,26,4,0,116,5,121,128,1,0, - 1,0,1,0,100,2,125,3,89,0,110,6,119,0,100,6, - 125,3,116,6,124,0,124,1,124,2,124,3,100,7,141,4, - 83,0,41,8,122,53,82,101,116,117,114,110,32,97,32,109, - 111,100,117,108,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,116,0,0, - 0,41,2,114,116,0,0,0,114,123,0,0,0,114,122,0, - 0,0,70,114,142,0,0,0,41,7,114,11,0,0,0,114, - 133,0,0,0,114,134,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,122,0,0,0,114,83,0,0,0,114,119,0,0, - 0,41,6,114,20,0,0,0,114,116,0,0,0,114,120,0, - 0,0,114,122,0,0,0,114,143,0,0,0,90,6,115,101, - 97,114,99,104,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,98,0,0,0,175,1,0,0,115,38,0,0, - 0,10,2,8,1,4,1,6,1,8,2,12,1,12,1,6, - 1,2,1,6,255,8,3,10,1,2,1,14,1,12,1,10, - 1,4,3,16,2,255,128,114,98,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0, - 0,67,0,0,0,115,40,1,0,0,122,10,124,0,106,0, - 125,3,87,0,110,18,4,0,116,1,121,28,1,0,1,0, - 1,0,89,0,110,14,119,0,124,3,100,0,117,1,114,42, - 124,3,83,0,124,0,106,2,125,4,124,1,100,0,117,0, - 114,86,122,10,124,0,106,3,125,1,87,0,110,18,4,0, - 116,1,121,84,1,0,1,0,1,0,89,0,110,2,119,0, - 122,10,124,0,106,4,125,5,87,0,110,22,4,0,116,1, - 121,118,1,0,1,0,1,0,100,0,125,5,89,0,110,2, - 119,0,124,2,100,0,117,0,114,174,124,5,100,0,117,0, - 114,170,122,10,124,1,106,5,125,2,87,0,110,26,4,0, - 116,1,121,168,1,0,1,0,1,0,100,0,125,2,89,0, - 110,6,119,0,124,5,125,2,122,10,124,0,106,6,125,6, - 87,0,110,22,4,0,116,1,121,206,1,0,1,0,1,0, - 100,0,125,6,89,0,110,2,119,0,122,14,116,7,124,0, - 106,8,131,1,125,7,87,0,110,22,4,0,116,1,121,244, - 1,0,1,0,1,0,100,0,125,7,89,0,110,2,119,0, - 116,9,124,4,124,1,124,2,100,1,141,3,125,3,124,5, - 100,0,117,0,144,1,114,18,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,120,0,0,0,70,84,41,13, + 111,100,117,108,101,95,114,101,112,114,38,1,0,0,115,56, + 0,0,0,12,2,10,1,2,4,12,1,12,1,2,1,2, + 1,10,1,12,1,4,1,8,2,8,1,2,4,10,1,12, + 1,6,1,2,1,10,1,12,1,8,1,14,1,16,2,12, + 2,2,250,2,252,2,246,2,252,255,128,114,118,0,0,0, + 99,0,0,0,0,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,132,2,90,4,100,6,100,7, + 132,0,90,5,100,8,100,9,132,0,90,6,101,7,100,10, + 100,11,132,0,131,1,90,8,101,8,106,9,100,12,100,11, + 132,0,131,1,90,8,101,7,100,13,100,14,132,0,131,1, + 90,10,101,7,100,15,100,16,132,0,131,1,90,11,101,11, + 106,9,100,17,100,16,132,0,131,1,90,11,100,2,83,0, + 41,18,218,10,77,111,100,117,108,101,83,112,101,99,97,208, + 5,0,0,84,104,101,32,115,112,101,99,105,102,105,99,97, + 116,105,111,110,32,102,111,114,32,97,32,109,111,100,117,108, + 101,44,32,117,115,101,100,32,102,111,114,32,108,111,97,100, + 105,110,103,46,10,10,32,32,32,32,65,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,32,105,115,32,116,104,101, + 32,115,111,117,114,99,101,32,102,111,114,32,105,110,102,111, + 114,109,97,116,105,111,110,32,97,98,111,117,116,32,116,104, + 101,32,109,111,100,117,108,101,46,32,32,70,111,114,10,32, + 32,32,32,100,97,116,97,32,97,115,115,111,99,105,97,116, + 101,100,32,119,105,116,104,32,116,104,101,32,109,111,100,117, + 108,101,44,32,105,110,99,108,117,100,105,110,103,32,115,111, + 117,114,99,101,44,32,117,115,101,32,116,104,101,32,115,112, + 101,99,39,115,10,32,32,32,32,108,111,97,100,101,114,46, + 10,10,32,32,32,32,96,110,97,109,101,96,32,105,115,32, + 116,104,101,32,97,98,115,111,108,117,116,101,32,110,97,109, + 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,46, + 32,32,96,108,111,97,100,101,114,96,32,105,115,32,116,104, + 101,32,108,111,97,100,101,114,10,32,32,32,32,116,111,32, + 117,115,101,32,119,104,101,110,32,108,111,97,100,105,110,103, + 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,112, + 97,114,101,110,116,96,32,105,115,32,116,104,101,32,110,97, + 109,101,32,111,102,32,116,104,101,10,32,32,32,32,112,97, + 99,107,97,103,101,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,105,110,46,32,32,84,104,101,32,112,97,114, + 101,110,116,32,105,115,32,100,101,114,105,118,101,100,32,102, + 114,111,109,32,116,104,101,32,110,97,109,101,46,10,10,32, + 32,32,32,96,105,115,95,112,97,99,107,97,103,101,96,32, + 100,101,116,101,114,109,105,110,101,115,32,105,102,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,99,111,110,115, + 105,100,101,114,101,100,32,97,32,112,97,99,107,97,103,101, + 32,111,114,10,32,32,32,32,110,111,116,46,32,32,79,110, + 32,109,111,100,117,108,101,115,32,116,104,105,115,32,105,115, + 32,114,101,102,108,101,99,116,101,100,32,98,121,32,116,104, + 101,32,96,95,95,112,97,116,104,95,95,96,32,97,116,116, + 114,105,98,117,116,101,46,10,10,32,32,32,32,96,111,114, + 105,103,105,110,96,32,105,115,32,116,104,101,32,115,112,101, + 99,105,102,105,99,32,108,111,99,97,116,105,111,110,32,117, + 115,101,100,32,98,121,32,116,104,101,32,108,111,97,100,101, + 114,32,102,114,111,109,32,119,104,105,99,104,32,116,111,10, + 32,32,32,32,108,111,97,100,32,116,104,101,32,109,111,100, + 117,108,101,44,32,105,102,32,116,104,97,116,32,105,110,102, + 111,114,109,97,116,105,111,110,32,105,115,32,97,118,97,105, + 108,97,98,108,101,46,32,32,87,104,101,110,32,102,105,108, + 101,110,97,109,101,32,105,115,10,32,32,32,32,115,101,116, + 44,32,111,114,105,103,105,110,32,119,105,108,108,32,109,97, + 116,99,104,46,10,10,32,32,32,32,96,104,97,115,95,108, + 111,99,97,116,105,111,110,96,32,105,110,100,105,99,97,116, + 101,115,32,116,104,97,116,32,97,32,115,112,101,99,39,115, + 32,34,111,114,105,103,105,110,34,32,114,101,102,108,101,99, + 116,115,32,97,32,108,111,99,97,116,105,111,110,46,10,32, + 32,32,32,87,104,101,110,32,116,104,105,115,32,105,115,32, + 84,114,117,101,44,32,96,95,95,102,105,108,101,95,95,96, + 32,97,116,116,114,105,98,117,116,101,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,115,101,116,46, + 10,10,32,32,32,32,96,99,97,99,104,101,100,96,32,105, + 115,32,116,104,101,32,108,111,99,97,116,105,111,110,32,111, + 102,32,116,104,101,32,99,97,99,104,101,100,32,98,121,116, + 101,99,111,100,101,32,102,105,108,101,44,32,105,102,32,97, + 110,121,46,32,32,73,116,10,32,32,32,32,99,111,114,114, + 101,115,112,111,110,100,115,32,116,111,32,116,104,101,32,96, + 95,95,99,97,99,104,101,100,95,95,96,32,97,116,116,114, + 105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32, + 115,101,113,117,101,110,99,101,32,111,102,32,112,97,116,104, + 32,101,110,116,114,105,101,115,32,116,111,10,32,32,32,32, + 115,101,97,114,99,104,32,119,104,101,110,32,105,109,112,111, + 114,116,105,110,103,32,115,117,98,109,111,100,117,108,101,115, + 46,32,32,73,102,32,115,101,116,44,32,105,115,95,112,97, + 99,107,97,103,101,32,115,104,111,117,108,100,32,98,101,10, + 32,32,32,32,84,114,117,101,45,45,97,110,100,32,70,97, + 108,115,101,32,111,116,104,101,114,119,105,115,101,46,10,10, + 32,32,32,32,80,97,99,107,97,103,101,115,32,97,114,101, + 32,115,105,109,112,108,121,32,109,111,100,117,108,101,115,32, + 116,104,97,116,32,40,109,97,121,41,32,104,97,118,101,32, + 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32, + 97,32,115,112,101,99,10,32,32,32,32,104,97,115,32,97, + 32,110,111,110,45,78,111,110,101,32,118,97,108,117,101,32, + 105,110,32,96,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,96,44, + 32,116,104,101,32,105,109,112,111,114,116,10,32,32,32,32, + 115,121,115,116,101,109,32,119,105,108,108,32,99,111,110,115, + 105,100,101,114,32,109,111,100,117,108,101,115,32,108,111,97, + 100,101,100,32,102,114,111,109,32,116,104,101,32,115,112,101, + 99,32,97,115,32,112,97,99,107,97,103,101,115,46,10,10, + 32,32,32,32,79,110,108,121,32,102,105,110,100,101,114,115, + 32,40,115,101,101,32,105,109,112,111,114,116,108,105,98,46, + 97,98,99,46,77,101,116,97,80,97,116,104,70,105,110,100, + 101,114,32,97,110,100,10,32,32,32,32,105,109,112,111,114, + 116,108,105,98,46,97,98,99,46,80,97,116,104,69,110,116, + 114,121,70,105,110,100,101,114,41,32,115,104,111,117,108,100, + 32,109,111,100,105,102,121,32,77,111,100,117,108,101,83,112, + 101,99,32,105,110,115,116,97,110,99,101,115,46,10,10,32, + 32,32,32,78,41,3,218,6,111,114,105,103,105,110,218,12, + 108,111,97,100,101,114,95,115,116,97,116,101,218,10,105,115, + 95,112,97,99,107,97,103,101,99,3,0,0,0,0,0,0, + 0,3,0,0,0,6,0,0,0,2,0,0,0,67,0,0, + 0,115,54,0,0,0,124,1,124,0,95,0,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,41,2,78,70, + 41,7,114,20,0,0,0,114,116,0,0,0,114,120,0,0, + 0,114,121,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,33,0,0, + 0,114,20,0,0,0,114,116,0,0,0,114,120,0,0,0, + 114,121,0,0,0,114,122,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,34,0,0,0,111,1, + 0,0,115,16,0,0,0,6,2,6,1,6,1,6,1,14, + 1,6,3,10,1,255,128,122,19,77,111,100,117,108,101,83, + 112,101,99,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0, + 0,67,0,0,0,115,102,0,0,0,100,1,160,0,124,0, + 106,1,161,1,100,2,160,0,124,0,106,2,161,1,103,2, + 125,1,124,0,106,3,100,0,117,1,114,52,124,1,160,4, + 100,3,160,0,124,0,106,3,161,1,161,1,1,0,124,0, + 106,5,100,0,117,1,114,80,124,1,160,4,100,4,160,0, + 124,0,106,5,161,1,161,1,1,0,100,5,160,0,124,0, + 106,6,106,7,100,6,160,8,124,1,161,1,161,2,83,0, + 41,7,78,122,9,110,97,109,101,61,123,33,114,125,122,11, + 108,111,97,100,101,114,61,123,33,114,125,122,11,111,114,105, + 103,105,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,49,0,0,0,114,20,0,0,0,114, + 116,0,0,0,114,120,0,0,0,218,6,97,112,112,101,110, + 100,114,123,0,0,0,218,9,95,95,99,108,97,115,115,95, + 95,114,9,0,0,0,218,4,106,111,105,110,41,2,114,33, + 0,0,0,114,59,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,52,0,0,0,123,1,0,0, + 115,22,0,0,0,10,1,10,1,4,255,10,2,18,1,10, + 1,8,1,4,1,6,255,22,2,255,128,122,19,77,111,100, + 117,108,101,83,112,101,99,46,95,95,114,101,112,114,95,95, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,8,0,0,0,67,0,0,0,115,102,0,0,0,124,0, + 106,0,125,2,122,72,124,0,106,1,124,1,106,1,107,2, + 111,76,124,0,106,2,124,1,106,2,107,2,111,76,124,0, + 106,3,124,1,106,3,107,2,111,76,124,2,124,1,106,0, + 107,2,111,76,124,0,106,4,124,1,106,4,107,2,111,76, + 124,0,106,5,124,1,106,5,107,2,87,0,83,0,4,0, + 116,6,121,100,1,0,1,0,1,0,116,7,6,0,89,0, + 83,0,119,0,114,0,0,0,0,41,8,114,123,0,0,0, + 114,20,0,0,0,114,116,0,0,0,114,120,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,2,0,0,0,218,14,78,111,116,73, + 109,112,108,101,109,101,110,116,101,100,41,3,114,33,0,0, + 0,90,5,111,116,104,101,114,90,4,115,109,115,108,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 95,101,113,95,95,133,1,0,0,115,34,0,0,0,6,1, + 2,1,12,1,10,1,2,255,10,2,2,254,8,3,2,253, + 10,4,2,252,10,5,4,251,12,6,8,1,2,255,255,128, + 122,17,77,111,100,117,108,101,83,112,101,99,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,58,0,0, + 0,124,0,106,0,100,0,117,0,114,52,124,0,106,1,100, + 0,117,1,114,52,124,0,106,2,114,52,116,3,100,0,117, + 0,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,0,0,0,0, + 41,6,114,125,0,0,0,114,120,0,0,0,114,124,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,51,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,129,0,0, + 0,145,1,0,0,115,14,0,0,0,10,2,16,1,8,1, + 4,1,14,1,6,1,255,128,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,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,0,0,0,0,41,1,114,125,0,0,0,41, + 2,114,33,0,0,0,114,129,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,129,0,0,0,154, + 1,0,0,115,4,0,0,0,10,2,255,128,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, + 0,67,0,0,0,115,32,0,0,0,124,0,106,0,100,1, + 117,0,114,26,124,0,106,1,160,2,100,2,161,1,100,3, + 25,0,83,0,124,0,106,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,25,0,0,0,41,3,114,123,0,0,0,114,20, + 0,0,0,218,10,114,112,97,114,116,105,116,105,111,110,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,6,112,97,114,101,110,116,158,1,0,0,115, + 8,0,0,0,10,3,16,1,6,2,255,128,122,17,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,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,0,0,0,0,41,1,114,124,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,130,0,0,0,166,1,0,0,115,4,0,0, + 0,6,2,255,128,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,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,0,0,0,0,41, + 2,218,4,98,111,111,108,114,124,0,0,0,41,2,114,33, + 0,0,0,218,5,118,97,108,117,101,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,130,0,0,0,170,1, + 0,0,115,4,0,0,0,14,2,255,128,41,12,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,34,0,0,0,114,52,0,0,0,114,132,0,0,0, + 218,8,112,114,111,112,101,114,116,121,114,129,0,0,0,218, + 6,115,101,116,116,101,114,114,137,0,0,0,114,130,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,119,0,0,0,74,1,0,0,115,36, + 0,0,0,8,0,4,1,4,36,2,1,12,255,8,12,8, + 10,2,12,10,1,4,8,10,1,2,3,10,1,2,7,10, + 1,4,3,14,1,255,128,114,119,0,0,0,169,2,114,120, + 0,0,0,114,122,0,0,0,99,2,0,0,0,0,0,0, + 0,2,0,0,0,6,0,0,0,8,0,0,0,67,0,0, + 0,115,150,0,0,0,116,0,124,1,100,1,131,2,114,74, + 116,1,100,2,117,0,114,22,116,2,130,1,116,1,106,3, + 125,4,124,3,100,2,117,0,114,48,124,4,124,0,124,1, + 100,3,141,2,83,0,124,3,114,56,103,0,110,2,100,2, + 125,5,124,4,124,0,124,1,124,5,100,4,141,3,83,0, + 124,3,100,2,117,0,114,132,116,0,124,1,100,5,131,2, + 114,128,122,14,124,1,160,4,124,0,161,1,125,3,87,0, + 110,24,4,0,116,5,121,148,1,0,1,0,1,0,100,2, + 125,3,89,0,110,4,100,6,125,3,116,6,124,0,124,1, + 124,2,124,3,100,7,141,4,83,0,119,0,41,8,122,53, + 82,101,116,117,114,110,32,97,32,109,111,100,117,108,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,116,0,0,0,41,2,114,116,0, + 0,0,114,123,0,0,0,114,122,0,0,0,70,114,142,0, + 0,0,41,7,114,11,0,0,0,114,133,0,0,0,114,134, + 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,122,0,0, + 0,114,83,0,0,0,114,119,0,0,0,41,6,114,20,0, + 0,0,114,116,0,0,0,114,120,0,0,0,114,122,0,0, + 0,114,143,0,0,0,90,6,115,101,97,114,99,104,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,98,0, + 0,0,175,1,0,0,115,40,0,0,0,10,2,8,1,4, + 1,6,1,8,2,12,1,12,1,6,1,2,1,6,255,8, + 3,10,1,2,1,14,1,12,1,8,1,4,3,16,2,2, + 250,255,128,114,98,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,8,0,0,0,8,0,0,0,67,0,0, + 0,115,44,1,0,0,122,10,124,0,106,0,125,3,87,0, + 110,18,4,0,116,1,144,1,121,42,1,0,1,0,1,0, + 89,0,110,12,124,3,100,0,117,1,114,42,124,3,83,0, + 124,0,106,2,125,4,124,1,100,0,117,0,114,84,122,10, + 124,0,106,3,125,1,87,0,110,16,4,0,116,1,144,1, + 121,40,1,0,1,0,1,0,89,0,122,10,124,0,106,4, + 125,5,87,0,110,20,4,0,116,1,144,1,121,38,1,0, + 1,0,1,0,100,0,125,5,89,0,124,2,100,0,117,0, + 114,170,124,5,100,0,117,0,114,166,122,10,124,1,106,5, + 125,2,87,0,110,26,4,0,116,1,144,1,121,36,1,0, + 1,0,1,0,100,0,125,2,89,0,110,4,124,5,125,2, + 122,10,124,0,106,6,125,6,87,0,110,20,4,0,116,1, + 144,1,121,34,1,0,1,0,1,0,100,0,125,6,89,0, + 122,14,116,7,124,0,106,8,131,1,125,7,87,0,110,20, + 4,0,116,1,144,1,121,32,1,0,1,0,1,0,100,0, + 125,7,89,0,116,9,124,4,124,1,124,2,100,1,141,3, + 125,3,124,5,100,0,117,0,144,1,114,10,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,119,0,119,0,119,0,119,0,119,0, + 119,0,41,4,78,169,1,114,120,0,0,0,70,84,41,13, 114,113,0,0,0,114,2,0,0,0,114,9,0,0,0,114, 106,0,0,0,114,115,0,0,0,218,7,95,79,82,73,71, 73,78,218,10,95,95,99,97,99,104,101,100,95,95,218,4, @@ -835,1021 +836,1023 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 111,99,97,116,105,111,110,114,129,0,0,0,114,123,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, - 117,108,101,201,1,0,0,115,74,0,0,0,2,2,10,1, - 12,1,6,1,8,2,4,1,6,2,8,1,2,1,10,1, - 12,1,6,2,2,1,10,1,12,1,10,1,8,1,8,1, - 2,1,10,1,12,1,10,1,4,2,2,1,10,1,12,1, - 10,1,2,1,14,1,12,1,10,1,14,2,20,1,6,1, - 6,1,4,1,255,128,114,149,0,0,0,70,169,1,218,8, - 111,118,101,114,114,105,100,101,99,2,0,0,0,0,0,0, - 0,1,0,0,0,5,0,0,0,8,0,0,0,67,0,0, - 0,115,214,1,0,0,124,2,115,20,116,0,124,1,100,1, - 100,0,131,3,100,0,117,0,114,52,122,12,124,0,106,1, - 124,1,95,2,87,0,110,18,4,0,116,3,121,50,1,0, - 1,0,1,0,89,0,110,2,119,0,124,2,115,72,116,0, - 124,1,100,2,100,0,131,3,100,0,117,0,114,174,124,0, - 106,4,125,3,124,3,100,0,117,0,114,144,124,0,106,5, - 100,0,117,1,114,144,116,6,100,0,117,0,114,108,116,7, - 130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1, - 125,3,124,0,106,5,124,3,95,10,124,3,124,0,95,4, - 100,0,124,1,95,11,122,10,124,3,124,1,95,12,87,0, - 110,18,4,0,116,3,121,172,1,0,1,0,1,0,89,0, - 110,2,119,0,124,2,115,194,116,0,124,1,100,3,100,0, - 131,3,100,0,117,0,114,226,122,12,124,0,106,13,124,1, - 95,14,87,0,110,18,4,0,116,3,121,224,1,0,1,0, - 1,0,89,0,110,2,119,0,122,10,124,0,124,1,95,15, - 87,0,110,18,4,0,116,3,121,254,1,0,1,0,1,0, - 89,0,110,2,119,0,124,2,144,1,115,24,116,0,124,1, - 100,4,100,0,131,3,100,0,117,0,144,1,114,70,124,0, - 106,5,100,0,117,1,144,1,114,70,122,12,124,0,106,5, - 124,1,95,16,87,0,110,20,4,0,116,3,144,1,121,68, - 1,0,1,0,1,0,89,0,110,2,119,0,124,0,106,17, - 144,1,114,210,124,2,144,1,115,102,116,0,124,1,100,5, - 100,0,131,3,100,0,117,0,144,1,114,136,122,12,124,0, - 106,18,124,1,95,11,87,0,110,20,4,0,116,3,144,1, - 121,134,1,0,1,0,1,0,89,0,110,2,119,0,124,2, - 144,1,115,160,116,0,124,1,100,6,100,0,131,3,100,0, - 117,0,144,1,114,210,124,0,106,19,100,0,117,1,144,1, - 114,210,122,14,124,0,106,19,124,1,95,20,87,0,124,1, - 83,0,4,0,116,3,144,1,121,208,1,0,1,0,1,0, - 89,0,124,1,83,0,119,0,124,1,83,0,41,7,78,114, - 9,0,0,0,114,106,0,0,0,218,11,95,95,112,97,99, - 107,97,103,101,95,95,114,148,0,0,0,114,115,0,0,0, - 114,146,0,0,0,41,21,114,13,0,0,0,114,20,0,0, - 0,114,9,0,0,0,114,2,0,0,0,114,116,0,0,0, - 114,123,0,0,0,114,133,0,0,0,114,134,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,115,0,0,0,114,106,0,0,0,114,137,0,0,0, - 114,152,0,0,0,114,113,0,0,0,114,148,0,0,0,114, - 130,0,0,0,114,120,0,0,0,114,129,0,0,0,114,146, - 0,0,0,41,5,114,103,0,0,0,114,104,0,0,0,114, - 151,0,0,0,114,116,0,0,0,114,153,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,18,95, - 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, - 115,246,1,0,0,115,104,0,0,0,20,4,2,1,12,1, - 12,1,6,1,20,2,6,1,8,1,10,2,8,1,4,1, - 6,1,10,2,8,1,6,1,6,11,2,1,10,1,12,1, - 6,1,20,2,2,1,12,1,12,1,6,1,2,2,10,1, - 12,1,6,1,24,2,12,1,2,1,12,1,14,1,6,1, - 8,2,24,1,2,1,12,1,14,1,6,1,24,2,12,1, - 2,1,10,1,4,3,14,254,2,1,4,1,2,255,4,1, - 255,128,114,155,0,0,0,99,1,0,0,0,0,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, - 1,110,20,116,0,124,0,106,1,100,3,131,2,114,50,116, - 3,100,4,131,1,130,1,124,1,100,1,117,0,114,68,116, - 4,124,0,106,5,131,1,125,1,116,6,124,0,124,1,131, - 2,1,0,124,1,83,0,41,5,122,43,67,114,101,97,116, - 101,32,97,32,109,111,100,117,108,101,32,98,97,115,101,100, - 32,111,110,32,116,104,101,32,112,114,111,118,105,100,101,100, - 32,115,112,101,99,46,78,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,218,11,101,120,101,99,95,109,111,100, - 117,108,101,122,66,108,111,97,100,101,114,115,32,116,104,97, - 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,11,0,0,0,114,116, - 0,0,0,114,156,0,0,0,114,83,0,0,0,114,21,0, - 0,0,114,20,0,0,0,114,155,0,0,0,169,2,114,103, - 0,0,0,114,104,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,16,109,111,100,117,108,101,95, - 102,114,111,109,95,115,112,101,99,62,2,0,0,115,20,0, - 0,0,4,3,12,1,14,3,12,1,8,1,8,2,10,1, - 10,1,4,1,255,128,114,159,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,100,0,0,0,124,0,106,0,100,1,117, - 0,114,14,100,2,110,4,124,0,106,0,125,1,124,0,106, - 1,100,1,117,0,114,64,124,0,106,2,100,1,117,0,114, - 50,100,3,160,3,124,1,161,1,83,0,100,4,160,3,124, - 1,124,0,106,2,161,2,83,0,124,0,106,4,114,84,100, - 5,160,3,124,1,124,0,106,1,161,2,83,0,100,6,160, - 3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114,109,0, - 0,0,114,110,0,0,0,114,111,0,0,0,250,18,60,109, - 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, - 41,5,114,20,0,0,0,114,120,0,0,0,114,116,0,0, - 0,114,49,0,0,0,114,130,0,0,0,41,2,114,103,0, - 0,0,114,20,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,114,0,0,0,79,2,0,0,115, - 18,0,0,0,20,3,10,1,10,1,10,1,14,2,6,2, - 14,1,16,2,255,128,114,114,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,10,0,0,0, - 67,0,0,0,115,26,1,0,0,124,0,106,0,125,2,116, - 1,124,2,131,1,143,246,1,0,116,2,106,3,160,4,124, - 2,161,1,124,1,117,1,114,54,100,1,160,5,124,2,161, - 1,125,3,116,6,124,3,124,2,100,2,141,2,130,1,122, - 160,124,0,106,7,100,3,117,0,114,106,124,0,106,8,100, - 3,117,0,114,90,116,6,100,4,124,0,106,0,100,2,141, - 2,130,1,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,110,80,116,9,124,0,124,1,100,5,100,6,141,3,1, - 0,116,10,124,0,106,7,100,7,131,2,115,174,116,11,124, - 0,106,7,131,1,155,0,100,8,157,2,125,3,116,12,160, - 13,124,3,116,14,161,2,1,0,124,0,106,7,160,15,124, - 2,161,1,1,0,110,12,124,0,106,7,160,16,124,1,161, - 1,1,0,87,0,116,2,106,3,160,17,124,0,106,0,161, - 1,125,1,124,1,116,2,106,3,124,0,106,0,60,0,110, - 28,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,119,0,87,0,100, - 3,4,0,4,0,131,3,1,0,124,1,83,0,49,0,144, - 1,115,12,119,1,1,0,1,0,1,0,89,0,1,0,124, - 1,83,0,41,9,122,70,69,120,101,99,117,116,101,32,116, - 104,101,32,115,112,101,99,39,115,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,32,105,110,32,97,110, - 32,101,120,105,115,116,105,110,103,32,109,111,100,117,108,101, - 39,115,32,110,97,109,101,115,112,97,99,101,46,122,30,109, - 111,100,117,108,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,19,0, - 0,0,78,250,14,109,105,115,115,105,110,103,32,108,111,97, - 100,101,114,84,114,150,0,0,0,114,157,0,0,0,250,55, - 46,101,120,101,99,95,109,111,100,117,108,101,40,41,32,110, - 111,116,32,102,111,117,110,100,59,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,116,111,32,108,111,97,100,95,109, - 111,100,117,108,101,40,41,41,18,114,20,0,0,0,114,54, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, - 0,0,114,49,0,0,0,114,83,0,0,0,114,116,0,0, - 0,114,123,0,0,0,114,155,0,0,0,114,11,0,0,0, - 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,218, - 13,73,109,112,111,114,116,87,97,114,110,105,110,103,218,11, - 108,111,97,100,95,109,111,100,117,108,101,114,157,0,0,0, - 218,3,112,111,112,41,4,114,103,0,0,0,114,104,0,0, - 0,114,20,0,0,0,114,102,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,100,0,0,0,96, - 2,0,0,115,50,0,0,0,6,2,10,1,16,1,10,1, - 12,1,2,1,10,1,10,1,14,1,16,2,14,2,12,1, - 16,1,12,2,14,1,12,2,2,128,14,4,14,1,14,255, - 26,1,4,1,18,255,4,1,255,128,114,100,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 8,0,0,0,67,0,0,0,115,18,1,0,0,122,18,124, - 0,106,0,160,1,124,0,106,2,161,1,1,0,87,0,110, - 46,1,0,1,0,1,0,124,0,106,2,116,3,106,4,118, - 0,114,64,116,3,106,4,160,5,124,0,106,2,161,1,125, - 1,124,1,116,3,106,4,124,0,106,2,60,0,130,0,116, - 3,106,4,160,5,124,0,106,2,161,1,125,1,124,1,116, - 3,106,4,124,0,106,2,60,0,116,6,124,1,100,1,100, - 0,131,3,100,0,117,0,114,140,122,12,124,0,106,0,124, - 1,95,7,87,0,110,18,4,0,116,8,121,138,1,0,1, - 0,1,0,89,0,110,2,119,0,116,6,124,1,100,2,100, - 0,131,3,100,0,117,0,114,216,122,40,124,1,106,9,124, - 1,95,10,116,11,124,1,100,3,131,2,115,194,124,0,106, + 117,108,101,201,1,0,0,115,86,0,0,0,2,2,10,1, + 14,1,4,1,8,2,4,1,6,2,8,1,2,1,10,1, + 14,1,2,2,2,1,10,1,14,1,6,1,8,1,8,1, + 2,1,10,1,14,1,8,1,4,2,2,1,10,1,14,1, + 6,1,2,1,14,1,14,1,6,1,14,2,20,1,6,1, + 6,1,4,1,2,249,2,252,2,250,2,250,2,251,2,246, + 255,128,114,149,0,0,0,70,169,1,218,8,111,118,101,114, + 114,105,100,101,99,2,0,0,0,0,0,0,0,1,0,0, + 0,5,0,0,0,8,0,0,0,67,0,0,0,115,210,1, + 0,0,124,2,115,20,116,0,124,1,100,1,100,0,131,3, + 100,0,117,0,114,50,122,12,124,0,106,1,124,1,95,2, + 87,0,110,16,4,0,116,3,144,1,121,208,1,0,1,0, + 1,0,89,0,124,2,115,70,116,0,124,1,100,2,100,0, + 131,3,100,0,117,0,114,170,124,0,106,4,125,3,124,3, + 100,0,117,0,114,142,124,0,106,5,100,0,117,1,114,142, + 116,6,100,0,117,0,114,106,116,7,130,1,116,6,106,8, + 125,4,124,4,160,9,124,4,161,1,125,3,124,0,106,5, + 124,3,95,10,124,3,124,0,95,4,100,0,124,1,95,11, + 122,10,124,3,124,1,95,12,87,0,110,16,4,0,116,3, + 144,1,121,206,1,0,1,0,1,0,89,0,124,2,115,190, + 116,0,124,1,100,3,100,0,131,3,100,0,117,0,114,220, + 122,12,124,0,106,13,124,1,95,14,87,0,110,16,4,0, + 116,3,144,1,121,204,1,0,1,0,1,0,89,0,122,10, + 124,0,124,1,95,15,87,0,110,16,4,0,116,3,144,1, + 121,202,1,0,1,0,1,0,89,0,124,2,144,1,115,16, + 116,0,124,1,100,4,100,0,131,3,100,0,117,0,144,1, + 114,58,124,0,106,5,100,0,117,1,144,1,114,58,122,12, + 124,0,106,5,124,1,95,16,87,0,110,16,4,0,116,3, + 144,1,121,200,1,0,1,0,1,0,89,0,124,0,106,17, + 144,1,114,192,124,2,144,1,115,90,116,0,124,1,100,5, + 100,0,131,3,100,0,117,0,144,1,114,120,122,12,124,0, + 106,18,124,1,95,11,87,0,110,16,4,0,116,3,144,1, + 121,198,1,0,1,0,1,0,89,0,124,2,144,1,115,144, + 116,0,124,1,100,6,100,0,131,3,100,0,117,0,144,1, + 114,192,124,0,106,19,100,0,117,1,144,1,114,192,122,14, + 124,0,106,19,124,1,95,20,87,0,124,1,83,0,4,0, + 116,3,144,1,121,196,1,0,1,0,1,0,89,0,124,1, + 83,0,124,1,83,0,119,0,119,0,119,0,119,0,119,0, + 119,0,119,0,41,7,78,114,9,0,0,0,114,106,0,0, + 0,218,11,95,95,112,97,99,107,97,103,101,95,95,114,148, + 0,0,0,114,115,0,0,0,114,146,0,0,0,41,21,114, + 13,0,0,0,114,20,0,0,0,114,9,0,0,0,114,2, + 0,0,0,114,116,0,0,0,114,123,0,0,0,114,133,0, + 0,0,114,134,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,115,0,0,0,114,106, + 0,0,0,114,137,0,0,0,114,152,0,0,0,114,113,0, + 0,0,114,148,0,0,0,114,130,0,0,0,114,120,0,0, + 0,114,129,0,0,0,114,146,0,0,0,41,5,114,103,0, + 0,0,114,104,0,0,0,114,151,0,0,0,114,116,0,0, + 0,114,153,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,18,95,105,110,105,116,95,109,111,100, + 117,108,101,95,97,116,116,114,115,246,1,0,0,115,114,0, + 0,0,20,4,2,1,12,1,14,1,2,1,20,2,6,1, + 8,1,10,2,8,1,4,1,6,1,10,2,8,1,6,1, + 6,11,2,1,10,1,14,1,2,1,20,2,2,1,12,1, + 14,1,2,1,2,2,10,1,14,1,2,1,24,2,12,1, + 2,1,12,1,14,1,2,1,8,2,24,1,2,1,12,1, + 14,1,2,1,24,2,12,1,2,1,10,1,4,3,14,254, + 2,1,8,1,2,254,2,249,2,249,2,249,2,251,2,250, + 2,228,255,128,114,155,0,0,0,99,1,0,0,0,0,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,1,110,20,116,0,124,0,106,1,100,3,131,2,114, + 50,116,3,100,4,131,1,130,1,124,1,100,1,117,0,114, + 68,116,4,124,0,106,5,131,1,125,1,116,6,124,0,124, + 1,131,2,1,0,124,1,83,0,41,5,122,43,67,114,101, + 97,116,101,32,97,32,109,111,100,117,108,101,32,98,97,115, + 101,100,32,111,110,32,116,104,101,32,112,114,111,118,105,100, + 101,100,32,115,112,101,99,46,78,218,13,99,114,101,97,116, + 101,95,109,111,100,117,108,101,218,11,101,120,101,99,95,109, + 111,100,117,108,101,122,66,108,111,97,100,101,114,115,32,116, + 104,97,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,11,0,0,0, + 114,116,0,0,0,114,156,0,0,0,114,83,0,0,0,114, + 21,0,0,0,114,20,0,0,0,114,155,0,0,0,169,2, + 114,103,0,0,0,114,104,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,16,109,111,100,117,108, + 101,95,102,114,111,109,95,115,112,101,99,62,2,0,0,115, + 20,0,0,0,4,3,12,1,14,3,12,1,8,1,8,2, + 10,1,10,1,4,1,255,128,114,159,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,100,0,0,0,124,0,106,0,100, + 1,117,0,114,14,100,2,110,4,124,0,106,0,125,1,124, + 0,106,1,100,1,117,0,114,64,124,0,106,2,100,1,117, + 0,114,50,100,3,160,3,124,1,161,1,83,0,100,4,160, + 3,124,1,124,0,106,2,161,2,83,0,124,0,106,4,114, + 84,100,5,160,3,124,1,124,0,106,1,161,2,83,0,100, + 6,160,3,124,0,106,0,124,0,106,1,161,2,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,108,0,0,0,114, + 109,0,0,0,114,110,0,0,0,114,111,0,0,0,250,18, + 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125, + 41,62,41,5,114,20,0,0,0,114,120,0,0,0,114,116, + 0,0,0,114,49,0,0,0,114,130,0,0,0,41,2,114, + 103,0,0,0,114,20,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,114,0,0,0,79,2,0, + 0,115,18,0,0,0,20,3,10,1,10,1,10,1,14,2, + 6,2,14,1,16,2,255,128,114,114,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,10,0, + 0,0,67,0,0,0,115,26,1,0,0,124,0,106,0,125, + 2,116,1,124,2,131,1,143,246,1,0,116,2,106,3,160, + 4,124,2,161,1,124,1,117,1,114,54,100,1,160,5,124, + 2,161,1,125,3,116,6,124,3,124,2,100,2,141,2,130, + 1,122,160,124,0,106,7,100,3,117,0,114,106,124,0,106, + 8,100,3,117,0,114,90,116,6,100,4,124,0,106,0,100, + 2,141,2,130,1,116,9,124,0,124,1,100,5,100,6,141, + 3,1,0,110,80,116,9,124,0,124,1,100,5,100,6,141, + 3,1,0,116,10,124,0,106,7,100,7,131,2,115,174,116, + 11,124,0,106,7,131,1,155,0,100,8,157,2,125,3,116, + 12,160,13,124,3,116,14,161,2,1,0,124,0,106,7,160, + 15,124,2,161,1,1,0,110,12,124,0,106,7,160,16,124, + 1,161,1,1,0,87,0,116,2,106,3,160,17,124,0,106, + 0,161,1,125,1,124,1,116,2,106,3,124,0,106,0,60, + 0,110,28,116,2,106,3,160,17,124,0,106,0,161,1,125, + 1,124,1,116,2,106,3,124,0,106,0,60,0,119,0,87, + 0,100,3,4,0,4,0,131,3,1,0,124,1,83,0,49, + 0,144,1,115,12,119,1,1,0,1,0,1,0,89,0,1, + 0,124,1,83,0,41,9,122,70,69,120,101,99,117,116,101, + 32,116,104,101,32,115,112,101,99,39,115,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,32,105,110,32, + 97,110,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,39,115,32,110,97,109,101,115,112,97,99,101,46,122, + 30,109,111,100,117,108,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, + 19,0,0,0,78,250,14,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,84,114,150,0,0,0,114,157,0,0,0, + 250,55,46,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,108,111,97,100, + 95,109,111,100,117,108,101,40,41,41,18,114,20,0,0,0, + 114,54,0,0,0,114,18,0,0,0,114,99,0,0,0,114, + 38,0,0,0,114,49,0,0,0,114,83,0,0,0,114,116, + 0,0,0,114,123,0,0,0,114,155,0,0,0,114,11,0, + 0,0,114,7,0,0,0,114,95,0,0,0,114,96,0,0, + 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 218,11,108,111,97,100,95,109,111,100,117,108,101,114,157,0, + 0,0,218,3,112,111,112,41,4,114,103,0,0,0,114,104, + 0,0,0,114,20,0,0,0,114,102,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,100,0,0, + 0,96,2,0,0,115,50,0,0,0,6,2,10,1,16,1, + 10,1,12,1,2,1,10,1,10,1,14,1,16,2,14,2, + 12,1,16,1,12,2,14,1,12,2,2,128,14,4,14,1, + 14,255,26,1,4,1,18,255,4,1,255,128,114,100,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,8,0,0,0,67,0,0,0,115,18,1,0,0,122, + 18,124,0,106,0,160,1,124,0,106,2,161,1,1,0,87, + 0,110,46,1,0,1,0,1,0,124,0,106,2,116,3,106, + 4,118,0,114,64,116,3,106,4,160,5,124,0,106,2,161, + 1,125,1,124,1,116,3,106,4,124,0,106,2,60,0,130, + 0,116,3,106,4,160,5,124,0,106,2,161,1,125,1,124, + 1,116,3,106,4,124,0,106,2,60,0,116,6,124,1,100, + 1,100,0,131,3,100,0,117,0,114,138,122,12,124,0,106, + 0,124,1,95,7,87,0,110,16,4,0,116,8,144,1,121, + 16,1,0,1,0,1,0,89,0,116,6,124,1,100,2,100, + 0,131,3,100,0,117,0,114,212,122,40,124,1,106,9,124, + 1,95,10,116,11,124,1,100,3,131,2,115,192,124,0,106, 2,160,12,100,4,161,1,100,5,25,0,124,1,95,10,87, - 0,110,18,4,0,116,8,121,214,1,0,1,0,1,0,89, - 0,110,2,119,0,116,6,124,1,100,6,100,0,131,3,100, - 0,117,0,144,1,114,14,122,12,124,0,124,1,95,13,87, - 0,124,1,83,0,4,0,116,8,144,1,121,12,1,0,1, - 0,1,0,89,0,124,1,83,0,119,0,124,1,83,0,41, - 7,78,114,106,0,0,0,114,152,0,0,0,114,148,0,0, - 0,114,135,0,0,0,114,25,0,0,0,114,113,0,0,0, - 41,14,114,116,0,0,0,114,164,0,0,0,114,20,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,165,0,0,0, - 114,13,0,0,0,114,106,0,0,0,114,2,0,0,0,114, - 9,0,0,0,114,152,0,0,0,114,11,0,0,0,114,136, - 0,0,0,114,113,0,0,0,114,158,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,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,126,2,0,0,115,62,0,0,0, - 2,3,18,1,6,1,12,1,14,1,12,1,2,1,14,3, - 12,1,16,1,2,1,12,1,12,1,6,1,16,1,2,1, - 8,4,10,1,22,1,12,1,6,1,18,1,2,1,8,1, - 4,3,14,254,2,1,4,1,2,255,4,1,255,128,114,166, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,11,0,0,0,67,0,0,0,115,240,0,0, - 0,124,0,106,0,100,0,117,1,114,58,116,1,124,0,106, - 0,100,1,131,2,115,58,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,122,158,124,2,116,9,106, - 10,124,0,106,11,60,0,122,50,124,0,106,0,100,0,117, - 0,114,122,124,0,106,12,100,0,117,0,114,134,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,124,0,106,0,160, - 14,124,2,161,1,1,0,87,0,110,40,1,0,1,0,1, - 0,122,14,116,9,106,10,124,0,106,11,61,0,87,0,130, - 0,4,0,116,15,121,176,1,0,1,0,1,0,89,0,130, - 0,119,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,87,0,100, - 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,119, - 0,41,8,78,114,157,0,0,0,114,162,0,0,0,84,114, - 161,0,0,0,114,19,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,18, - 114,116,0,0,0,114,11,0,0,0,114,7,0,0,0,114, - 95,0,0,0,114,96,0,0,0,114,163,0,0,0,114,166, - 0,0,0,114,159,0,0,0,90,13,95,105,110,105,116,105, - 97,108,105,122,105,110,103,114,18,0,0,0,114,99,0,0, - 0,114,20,0,0,0,114,123,0,0,0,114,83,0,0,0, - 114,157,0,0,0,114,67,0,0,0,114,165,0,0,0,114, - 80,0,0,0,41,3,114,103,0,0,0,114,102,0,0,0, - 114,104,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,14,95,108,111,97,100,95,117,110,108,111, - 99,107,101,100,162,2,0,0,115,58,0,0,0,10,2,12, - 2,16,1,12,2,8,1,8,2,6,5,2,1,12,1,2, - 1,10,1,10,1,14,1,16,3,6,1,2,1,12,1,2, - 3,12,254,2,1,2,1,2,255,14,6,12,1,18,1,6, - 2,4,2,8,254,255,128,114,167,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,67,0,0,0,115,54,0,0,0,116,0,124,0,106,1, - 131,1,143,24,1,0,116,2,124,0,131,1,87,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,40, - 119,1,1,0,1,0,1,0,89,0,1,0,100,1,83,0, - 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, - 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, - 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, - 101,99,39,115,32,108,111,97,100,101,114,46,10,10,32,32, - 32,32,84,104,101,32,109,111,100,117,108,101,32,105,115,32, - 110,111,116,32,97,100,100,101,100,32,116,111,32,105,116,115, - 32,112,97,114,101,110,116,46,10,10,32,32,32,32,73,102, - 32,97,32,109,111,100,117,108,101,32,105,115,32,97,108,114, - 101,97,100,121,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,44,32,116,104,97,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,54,0,0,0,114,20,0,0,0, - 114,167,0,0,0,169,1,114,103,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,101,0,0,0, - 207,2,0,0,115,6,0,0,0,12,9,42,1,255,128,114, - 101,0,0,0,99,0,0,0,0,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,100,2, - 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, - 100,20,100,6,100,7,132,1,131,1,90,8,101,7,100,21, - 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, - 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, - 90,11,101,7,101,12,100,14,100,15,132,0,131,1,131,1, - 90,13,101,7,101,12,100,16,100,17,132,0,131,1,131,1, - 90,14,101,7,101,12,100,18,100,19,132,0,131,1,131,1, - 90,15,101,7,101,16,131,1,90,17,100,5,83,0,41,22, - 218,15,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,122,144,77,101,116,97,32,112,97,116,104,32,105,109,112, - 111,114,116,32,102,111,114,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, - 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, - 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, - 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, - 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, - 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, - 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, - 32,32,32,122,8,98,117,105,108,116,45,105,110,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0, - 0,0,67,0,0,0,115,22,0,0,0,100,1,124,0,106, - 0,155,2,100,2,116,1,106,2,155,0,100,3,157,5,83, - 0,41,5,250,115,82,101,116,117,114,110,32,114,101,112,114, - 32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,101,32,109,101, - 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,46,32,32,84,104,101,32,105,109,112,111,114,116,32, - 109,97,99,104,105,110,101,114,121,32,100,111,101,115,32,116, - 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,8,60,109,111,100,117,108, - 101,32,122,2,32,40,122,2,41,62,78,41,3,114,9,0, - 0,0,114,169,0,0,0,114,145,0,0,0,169,1,114,104, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,107,0,0,0,233,2,0,0,115,4,0,0,0, - 22,7,255,128,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,0,0,0,0,0,4, - 0,0,0,5,0,0,0,67,0,0,0,115,42,0,0,0, - 124,2,100,0,117,1,114,12,100,0,83,0,116,0,160,1, - 124,1,161,1,114,38,116,2,124,1,124,0,124,0,106,3, - 100,1,141,3,83,0,100,0,83,0,169,2,78,114,144,0, - 0,0,41,4,114,61,0,0,0,90,10,105,115,95,98,117, - 105,108,116,105,110,114,98,0,0,0,114,145,0,0,0,169, - 4,218,3,99,108,115,114,85,0,0,0,218,4,112,97,116, - 104,218,6,116,97,114,103,101,116,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,9,102,105,110,100,95,115, - 112,101,99,242,2,0,0,115,12,0,0,0,8,2,4,1, - 10,1,16,1,4,2,255,128,122,25,66,117,105,108,116,105, - 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,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0, - 0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100, - 1,117,1,114,26,124,3,106,1,83,0,100,1,83,0,41, - 2,122,175,70,105,110,100,32,116,104,101,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,73,102,32,39,112,97,116,104,39,32, - 105,115,32,101,118,101,114,32,115,112,101,99,105,102,105,101, - 100,32,116,104,101,110,32,116,104,101,32,115,101,97,114,99, - 104,32,105,115,32,99,111,110,115,105,100,101,114,101,100,32, - 97,32,102,97,105,108,117,114,101,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116,0,0,0,41, - 4,114,174,0,0,0,114,85,0,0,0,114,175,0,0,0, - 114,103,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,11,102,105,110,100,95,109,111,100,117,108, - 101,251,2,0,0,115,6,0,0,0,12,9,18,1,255,128, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, - 0,0,67,0,0,0,115,46,0,0,0,124,0,106,0,116, - 1,106,2,118,1,114,34,116,3,100,1,160,4,124,0,106, - 0,161,1,124,0,106,0,100,2,141,2,130,1,116,5,116, - 6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19,0,0,0,78, - 41,8,114,20,0,0,0,114,18,0,0,0,114,82,0,0, - 0,114,83,0,0,0,114,49,0,0,0,114,71,0,0,0, - 114,61,0,0,0,90,14,99,114,101,97,116,101,95,98,117, - 105,108,116,105,110,114,168,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,156,0,0,0,7,3, - 0,0,115,12,0,0,0,12,3,12,1,4,1,6,255,12, - 2,255,128,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,117, - 108,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,16,0,0,0, - 116,0,116,1,106,2,124,0,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,71,0, - 0,0,114,61,0,0,0,90,12,101,120,101,99,95,98,117, - 105,108,116,105,110,114,171,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,157,0,0,0,15,3, - 0,0,115,4,0,0,0,16,3,255,128,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,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,122,57,82,101, - 116,117,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,5,0,0,0,169,2,114, - 174,0,0,0,114,85,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,8,103,101,116,95,99,111, - 100,101,20,3,0,0,115,4,0,0,0,4,4,255,128,122, - 24,66,117,105,108,116,105,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,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,122,56,82, - 101,116,117,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,115,111,117,114,99, - 101,32,99,111,100,101,46,78,114,5,0,0,0,114,179,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,26,3,0, - 0,115,4,0,0,0,4,4,255,128,122,26,66,117,105,108, - 116,105,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,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,3,122,52,82,101,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,78,114,5,0,0,0,114,179,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,122,0,0,0, - 32,3,0,0,115,4,0,0,0,4,4,255,128,122,26,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,105, + 0,110,16,4,0,116,8,144,1,121,14,1,0,1,0,1, + 0,89,0,116,6,124,1,100,6,100,0,131,3,100,0,117, + 0,144,1,114,8,122,12,124,0,124,1,95,13,87,0,124, + 1,83,0,4,0,116,8,144,1,121,12,1,0,1,0,1, + 0,89,0,124,1,83,0,124,1,83,0,119,0,119,0,119, + 0,41,7,78,114,106,0,0,0,114,152,0,0,0,114,148, + 0,0,0,114,135,0,0,0,114,25,0,0,0,114,113,0, + 0,0,41,14,114,116,0,0,0,114,164,0,0,0,114,20, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,165,0, + 0,0,114,13,0,0,0,114,106,0,0,0,114,2,0,0, + 0,114,9,0,0,0,114,152,0,0,0,114,11,0,0,0, + 114,136,0,0,0,114,113,0,0,0,114,158,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,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,126,2,0,0,115,64,0, + 0,0,2,3,18,1,6,1,12,1,14,1,12,1,2,1, + 14,3,12,1,16,1,2,1,12,1,14,1,2,1,16,1, + 2,1,8,4,10,1,22,1,14,1,2,1,18,1,2,1, + 8,1,4,3,14,254,2,1,8,1,2,254,2,251,2,246, + 255,128,114,166,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0, + 115,240,0,0,0,124,0,106,0,100,0,117,1,114,58,116, + 1,124,0,106,0,100,1,131,2,115,58,116,2,124,0,106, + 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, + 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, + 7,124,0,131,1,125,2,100,3,124,0,95,8,122,156,124, + 2,116,9,106,10,124,0,106,11,60,0,122,50,124,0,106, + 0,100,0,117,0,114,122,124,0,106,12,100,0,117,0,114, + 134,116,13,100,4,124,0,106,11,100,5,141,2,130,1,124, + 0,106,0,160,14,124,2,161,1,1,0,87,0,110,38,1, + 0,1,0,1,0,122,14,116,9,106,10,124,0,106,11,61, + 0,87,0,130,0,4,0,116,15,121,238,1,0,1,0,1, + 0,89,0,130,0,116,9,106,10,160,16,124,0,106,11,161, + 1,125,2,124,2,116,9,106,10,124,0,106,11,60,0,116, + 17,100,6,124,0,106,11,124,0,106,0,131,3,1,0,87, + 0,100,7,124,0,95,8,124,2,83,0,100,7,124,0,95, + 8,119,0,119,0,41,8,78,114,157,0,0,0,114,162,0, + 0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7, + 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, + 0,0,114,166,0,0,0,114,159,0,0,0,90,13,95,105, + 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, + 114,99,0,0,0,114,20,0,0,0,114,123,0,0,0,114, + 83,0,0,0,114,157,0,0,0,114,67,0,0,0,114,165, + 0,0,0,114,80,0,0,0,41,3,114,103,0,0,0,114, + 102,0,0,0,114,104,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,14,95,108,111,97,100,95, + 117,110,108,111,99,107,101,100,162,2,0,0,115,58,0,0, + 0,10,2,12,2,16,1,12,2,8,1,8,2,6,5,2, + 1,12,1,2,1,10,1,10,1,14,1,16,3,6,1,2, + 1,12,1,2,3,12,254,2,1,2,1,14,5,12,1,18, + 1,6,2,4,2,8,254,2,245,255,128,114,167,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,8,0,0,0,67,0,0,0,115,54,0,0,0,116,0, + 124,0,106,1,131,1,143,24,1,0,116,2,124,0,131,1, + 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 49,0,115,40,119,1,1,0,1,0,1,0,89,0,1,0, + 100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,97, + 32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,101, + 99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,104, + 101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,46, + 10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,101, + 32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,111, + 32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,32, + 32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,115, + 32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114, + 20,0,0,0,114,167,0,0,0,169,1,114,103,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 101,0,0,0,207,2,0,0,115,6,0,0,0,12,9,42, + 1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,20,100,6,100,7,132,1,131,1,90,8, + 101,7,100,21,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,101,12,100,14,100,15,132,0, + 131,1,131,1,90,13,101,7,101,12,100,16,100,17,132,0, + 131,1,131,1,90,14,101,7,101,12,100,18,100,19,132,0, + 131,1,131,1,90,15,101,7,101,16,131,1,90,17,100,5, + 83,0,41,22,218,15,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,122,144,77,101,116,97,32,112,97,116,104, + 32,105,109,112,111,114,116,32,102,111,114,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,46,10,10,32, + 32,32,32,65,108,108,32,109,101,116,104,111,100,115,32,97, + 114,101,32,101,105,116,104,101,114,32,99,108,97,115,115,32, + 111,114,32,115,116,97,116,105,99,32,109,101,116,104,111,100, + 115,32,116,111,32,97,118,111,105,100,32,116,104,101,32,110, + 101,101,100,32,116,111,10,32,32,32,32,105,110,115,116,97, + 110,116,105,97,116,101,32,116,104,101,32,99,108,97,115,115, + 46,10,10,32,32,32,32,122,8,98,117,105,108,116,45,105, + 110,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,5,0,0,0,67,0,0,0,115,22,0,0,0,100, + 1,124,0,106,0,155,2,100,2,116,1,106,2,155,0,100, + 3,157,5,83,0,41,5,250,115,82,101,116,117,114,110,32, + 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, + 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, + 101,115,32,116,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,8,60,109, + 111,100,117,108,101,32,122,2,32,40,122,2,41,62,78,41, + 3,114,9,0,0,0,114,169,0,0,0,114,145,0,0,0, + 169,1,114,104,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,107,0,0,0,233,2,0,0,115, + 4,0,0,0,22,7,255,128,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,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 42,0,0,0,124,2,100,0,117,1,114,12,100,0,83,0, + 116,0,160,1,124,1,161,1,114,38,116,2,124,1,124,0, + 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, + 78,114,144,0,0,0,41,4,114,61,0,0,0,90,10,105, + 115,95,98,117,105,108,116,105,110,114,98,0,0,0,114,145, + 0,0,0,169,4,218,3,99,108,115,114,85,0,0,0,218, + 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,242,2,0,0,115,12,0,0,0, + 8,2,4,1,10,1,16,1,4,2,255,128,122,25,66,117, + 105,108,116,105,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,0, + 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, + 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, + 3,124,3,100,1,117,1,114,26,124,3,106,1,83,0,100, + 1,83,0,41,2,122,175,70,105,110,100,32,116,104,101,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, + 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, + 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, + 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, + 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116, + 0,0,0,41,4,114,174,0,0,0,114,85,0,0,0,114, + 175,0,0,0,114,103,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,11,102,105,110,100,95,109, + 111,100,117,108,101,251,2,0,0,115,6,0,0,0,12,9, + 18,1,255,128,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,67,0,0,0,115,46,0,0,0,124, + 0,106,0,116,1,106,2,118,1,114,34,116,3,100,1,160, + 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, + 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19, + 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, + 114,82,0,0,0,114,83,0,0,0,114,49,0,0,0,114, + 71,0,0,0,114,61,0,0,0,90,14,99,114,101,97,116, + 101,95,98,117,105,108,116,105,110,114,168,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,156,0, + 0,0,7,3,0,0,115,12,0,0,0,12,3,12,1,4, + 1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101,120,101, + 99,95,98,117,105,108,116,105,110,114,171,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,157,0, + 0,0,15,3,0,0,115,4,0,0,0,16,3,255,128,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,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, + 122,57,82,101,116,117,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,5,0,0, + 0,169,2,114,174,0,0,0,114,85,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,8,103,101, + 116,95,99,111,100,101,20,3,0,0,115,4,0,0,0,4, + 4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115, + 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, + 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,10,103,101,116,95,115,111,117,114,99, + 101,26,3,0,0,115,4,0,0,0,4,4,255,128,122,26, + 66,117,105,108,116,105,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,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,3,122,52, + 82,101,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,78,114,5,0,0,0,114,179,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 122,0,0,0,32,3,0,0,115,4,0,0,0,4,4,255, + 128,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,18,114,9,0,0,0,114,8,0,0,0, + 114,1,0,0,0,114,10,0,0,0,114,145,0,0,0,218, + 12,115,116,97,116,105,99,109,101,116,104,111,100,114,107,0, + 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, + 177,0,0,0,114,178,0,0,0,114,156,0,0,0,114,157, + 0,0,0,114,90,0,0,0,114,180,0,0,0,114,181,0, + 0,0,114,122,0,0,0,114,105,0,0,0,114,164,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,169,0,0,0,222,2,0,0,115,48, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, + 1,2,8,12,1,2,11,10,1,2,7,10,1,2,4,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,12,1,12, + 4,255,128,114,169,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,144,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,22,100,6,100,7,132,1,131,1,90,8, + 101,7,100,23,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,100,14,100,15,132,0,131,1, + 90,12,101,7,101,13,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,13,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,13,100,20,100,21,132,0,131,1,131,1, + 90,16,100,5,83,0,41,24,218,14,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,112, + 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,10, + 32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,32, + 97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,115, + 32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,111, + 100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,32, + 110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,116, + 97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,115, + 115,46,10,10,32,32,32,32,90,6,102,114,111,122,101,110, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,16,0,0,0,100,1, + 160,0,124,0,106,1,116,2,106,3,161,2,83,0,41,3, + 114,170,0,0,0,114,160,0,0,0,78,41,4,114,49,0, + 0,0,114,9,0,0,0,114,184,0,0,0,114,145,0,0, + 0,41,1,218,1,109,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,107,0,0,0,52,3,0,0,115,4, + 0,0,0,16,7,255,128,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,0,0,0,0,0,0,0, + 0,4,0,0,0,5,0,0,0,67,0,0,0,115,30,0, + 0,0,116,0,160,1,124,1,161,1,114,26,116,2,124,1, + 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, + 114,172,0,0,0,41,4,114,61,0,0,0,114,92,0,0, + 0,114,98,0,0,0,114,145,0,0,0,114,173,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 177,0,0,0,61,3,0,0,115,8,0,0,0,10,2,16, + 1,4,2,255,128,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,0,0,0,0,0,3,0,0,0, + 3,0,0,0,67,0,0,0,115,18,0,0,0,116,0,160, + 1,124,1,161,1,114,14,124,0,83,0,100,1,83,0,41, + 2,122,93,70,105,110,100,32,97,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, + 32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41,3,114, + 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,178,0, + 0,0,68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, + 42,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,5,0,0, + 0,114,168,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,156,0,0,0,77,3,0,0,115,4, + 0,0,0,4,0,255,128,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,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, + 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,91,0,0,0,41,10,114,113,0,0,0,114, + 20,0,0,0,114,61,0,0,0,114,92,0,0,0,114,83, + 0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0, + 0,0,114,20,0,0,0,218,4,99,111,100,101,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,157,0,0, + 0,81,3,0,0,115,16,0,0,0,8,2,10,1,10,1, + 2,1,6,255,12,2,16,1,255,128,122,26,70,114,111,122, + 101,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,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, + 10,0,0,0,116,0,124,0,124,1,131,2,83,0,41,2, + 122,95,76,111,97,100,32,97,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,164,0, + 0,0,90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,10,0,0,0,116,0,160,1,124,1,161, + 1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0, + 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,180,0,0,0,100,3,0,0,115,4, + 0,0,0,10,4,255,128,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,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,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,5,0, + 0,0,114,179,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,181,0,0,0,106,3,0,0,115, + 4,0,0,0,4,4,255,128,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,0,0,0,0, + 2,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2, + 114,61,0,0,0,90,17,105,115,95,102,114,111,122,101,110, + 95,112,97,99,107,97,103,101,114,179,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,122,0,0, + 0,112,3,0,0,115,4,0,0,0,10,4,255,128,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,18,114,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,145,0,0,0,218,12,115,116,97, - 116,105,99,109,101,116,104,111,100,114,107,0,0,0,218,11, - 99,108,97,115,115,109,101,116,104,111,100,114,177,0,0,0, - 114,178,0,0,0,114,156,0,0,0,114,157,0,0,0,114, - 90,0,0,0,114,180,0,0,0,114,181,0,0,0,114,122, - 0,0,0,114,105,0,0,0,114,164,0,0,0,114,5,0, + 41,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, + 0,114,10,0,0,0,114,145,0,0,0,114,182,0,0,0, + 114,107,0,0,0,114,183,0,0,0,114,177,0,0,0,114, + 178,0,0,0,114,156,0,0,0,114,157,0,0,0,114,164, + 0,0,0,114,94,0,0,0,114,180,0,0,0,114,181,0, + 0,0,114,122,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,184,0,0,0, + 41,3,0,0,115,50,0,0,0,8,0,4,2,4,7,2, + 2,10,1,2,8,12,1,2,6,12,1,2,8,10,1,2, + 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, + 1,12,1,2,4,2,1,16,1,255,128,114,184,0,0,0, + 99,0,0,0,0,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,83,0,41,7, + 218,18,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,122,36,67,111,110,116,101,120,116,32,109,97, + 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109, + 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 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,61,0,0,0,114,62,0,0,0,114,51,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,169,0,0,0,222,2,0,0,115,48,0,0,0,8, - 0,4,2,4,7,2,2,10,1,2,8,12,1,2,8,12, - 1,2,11,10,1,2,7,10,1,2,4,2,1,12,1,2, - 4,2,1,12,1,2,4,2,1,12,1,12,4,255,128,114, - 169,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,64,0,0,0,115,144,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, - 100,22,100,6,100,7,132,1,131,1,90,8,101,7,100,23, - 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, - 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, - 90,11,101,7,100,14,100,15,132,0,131,1,90,12,101,7, - 101,13,100,16,100,17,132,0,131,1,131,1,90,14,101,7, - 101,13,100,18,100,19,132,0,131,1,131,1,90,15,101,7, - 101,13,100,20,100,21,132,0,131,1,131,1,90,16,100,5, - 83,0,41,24,218,14,70,114,111,122,101,110,73,109,112,111, - 114,116,101,114,122,142,77,101,116,97,32,112,97,116,104,32, - 105,109,112,111,114,116,32,102,111,114,32,102,114,111,122,101, - 110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,32, - 65,108,108,32,109,101,116,104,111,100,115,32,97,114,101,32, - 101,105,116,104,101,114,32,99,108,97,115,115,32,111,114,32, - 115,116,97,116,105,99,32,109,101,116,104,111,100,115,32,116, - 111,32,97,118,111,105,100,32,116,104,101,32,110,101,101,100, - 32,116,111,10,32,32,32,32,105,110,115,116,97,110,116,105, - 97,116,101,32,116,104,101,32,99,108,97,115,115,46,10,10, - 32,32,32,32,90,6,102,114,111,122,101,110,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,67,0,0,0,115,16,0,0,0,100,1,160,0,124,0, - 106,1,116,2,106,3,161,2,83,0,41,3,114,170,0,0, - 0,114,160,0,0,0,78,41,4,114,49,0,0,0,114,9, - 0,0,0,114,184,0,0,0,114,145,0,0,0,41,1,218, - 1,109,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,107,0,0,0,52,3,0,0,115,4,0,0,0,16, - 7,255,128,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,0,0,0,0,0,0,0,0,4,0,0, - 0,5,0,0,0,67,0,0,0,115,30,0,0,0,116,0, - 160,1,124,1,161,1,114,26,116,2,124,1,124,0,124,0, - 106,3,100,1,141,3,83,0,100,0,83,0,114,172,0,0, - 0,41,4,114,61,0,0,0,114,92,0,0,0,114,98,0, - 0,0,114,145,0,0,0,114,173,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,177,0,0,0, - 61,3,0,0,115,8,0,0,0,10,2,16,1,4,2,255, - 128,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,0,0,0,0,0,3,0,0,0,3,0,0,0, - 67,0,0,0,115,18,0,0,0,116,0,160,1,124,1,161, - 1,114,14,124,0,83,0,100,1,83,0,41,2,122,93,70, - 105,110,100,32,97,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 105,115,32,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,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, - 61,0,0,0,114,92,0,0,0,41,3,114,174,0,0,0, - 114,85,0,0,0,114,175,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,178,0,0,0,68,3, - 0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,42,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,5,0,0,0,114,168,0, + 0,114,58,0,0,0,125,3,0,0,115,4,0,0,0,12, + 2,255,128,122,28,95,73,109,112,111,114,116,76,111,99,107, + 67,111,110,116,101,120,116,46,95,95,101,110,116,101,114,95, + 95,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, + 0,160,1,161,0,1,0,100,1,83,0,41,2,122,60,82, + 101,108,101,97,115,101,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,61, + 0,0,0,114,64,0,0,0,41,4,114,33,0,0,0,218, + 8,101,120,99,95,116,121,112,101,218,9,101,120,99,95,118, + 97,108,117,101,218,13,101,120,99,95,116,114,97,99,101,98, + 97,99,107,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,60,0,0,0,129,3,0,0,115,4,0,0,0, + 12,2,255,128,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,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,58,0,0,0,114,60,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,189,0,0,0,121,3,0,0,115, + 10,0,0,0,8,0,4,2,8,2,12,4,255,128,114,189, + 0,0,0,99,3,0,0,0,0,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, + 3,131,1,130,1,124,3,100,4,25,0,125,4,124,0,114, + 60,100,5,160,3,124,4,124,0,161,2,83,0,124,4,83, + 0,41,7,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,135,0,0,0,114,42,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, + 99,107,97,103,101,114,25,0,0,0,250,5,123,125,46,123, + 125,78,41,4,218,6,114,115,112,108,105,116,218,3,108,101, + 110,114,83,0,0,0,114,49,0,0,0,41,5,114,20,0, + 0,0,218,7,112,97,99,107,97,103,101,218,5,108,101,118, + 101,108,90,4,98,105,116,115,90,4,98,97,115,101,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,13,95, + 114,101,115,111,108,118,101,95,110,97,109,101,134,3,0,0, + 115,12,0,0,0,16,2,12,1,8,1,8,1,20,1,255, + 128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1, + 124,3,131,2,83,0,114,0,0,0,0,41,2,114,178,0, + 0,0,114,98,0,0,0,41,4,218,6,102,105,110,100,101, + 114,114,20,0,0,0,114,175,0,0,0,114,116,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, + 99,121,143,3,0,0,115,10,0,0,0,12,3,8,1,4, + 1,10,1,255,128,114,200,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,67, + 0,0,0,115,32,1,0,0,116,0,106,1,125,3,124,3, + 100,1,117,0,114,22,116,2,100,2,131,1,130,1,124,3, + 115,38,116,3,160,4,100,3,116,5,161,2,1,0,124,0, + 116,0,106,6,118,0,125,4,124,3,68,0,93,226,125,5, + 116,7,131,0,143,94,1,0,122,10,124,5,106,8,125,6, + 87,0,110,54,4,0,116,9,144,1,121,30,1,0,1,0, + 1,0,116,10,124,5,124,0,124,1,131,3,125,7,124,7, + 100,1,117,0,114,126,89,0,87,0,100,1,4,0,4,0, + 131,3,1,0,113,52,89,0,110,12,124,6,124,0,124,1, + 124,2,131,3,125,7,87,0,100,1,4,0,4,0,131,3, + 1,0,110,16,49,0,115,162,119,1,1,0,1,0,1,0, + 89,0,1,0,124,7,100,1,117,1,114,52,124,4,144,1, + 115,16,124,0,116,0,106,6,118,0,144,1,114,16,116,0, + 106,6,124,0,25,0,125,8,122,10,124,8,106,11,125,9, + 87,0,110,26,4,0,116,9,144,1,121,28,1,0,1,0, + 1,0,124,7,6,0,89,0,2,0,1,0,83,0,124,9, + 100,1,117,0,144,1,114,8,124,7,2,0,1,0,83,0, + 124,9,2,0,1,0,83,0,124,7,2,0,1,0,83,0, + 100,1,83,0,119,0,119,0,41,4,122,21,70,105,110,100, + 32,97,32,109,111,100,117,108,101,39,115,32,115,112,101,99, + 46,78,122,53,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,78,111,110,101,44,32,80,121,116,104,111, + 110,32,105,115,32,108,105,107,101,108,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,18,0,0,0,218,9,109,101,116,97,95,112, + 97,116,104,114,83,0,0,0,114,95,0,0,0,114,96,0, + 0,0,114,163,0,0,0,114,99,0,0,0,114,189,0,0, + 0,114,177,0,0,0,114,2,0,0,0,114,200,0,0,0, + 114,113,0,0,0,41,10,114,20,0,0,0,114,175,0,0, + 0,114,176,0,0,0,114,201,0,0,0,90,9,105,115,95, + 114,101,108,111,97,100,114,199,0,0,0,114,177,0,0,0, + 114,103,0,0,0,114,104,0,0,0,114,113,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,10, + 95,102,105,110,100,95,115,112,101,99,152,3,0,0,115,60, + 0,0,0,6,2,8,1,8,2,4,3,12,1,10,5,8, + 1,8,1,2,1,10,1,14,1,12,1,8,1,20,1,42, + 2,8,1,18,2,10,1,2,1,10,1,14,1,12,4,10, + 2,8,1,8,2,8,2,4,2,2,243,2,244,255,128,114, + 202,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,5,0,0,0,67,0,0,0,115,110,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,0,114,44,116,5,100,3,131,1,130,1,124,2, + 100,2,107,4,114,82,116,0,124,1,116,1,131,2,115,70, + 116,2,100,4,131,1,130,1,124,1,115,82,116,6,100,5, + 131,1,130,1,124,0,115,106,124,2,100,2,107,2,114,102, + 116,5,100,6,131,1,130,1,100,7,83,0,100,7,83,0, + 41,8,122,28,86,101,114,105,102,121,32,97,114,103,117,109, + 101,110,116,115,32,97,114,101,32,34,115,97,110,101,34,46, + 122,31,109,111,100,117,108,101,32,110,97,109,101,32,109,117, + 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,123, + 125,114,25,0,0,0,122,18,108,101,118,101,108,32,109,117, + 115,116,32,98,101,32,62,61,32,48,122,31,95,95,112,97, + 99,107,97,103,101,95,95,32,110,111,116,32,115,101,116,32, + 116,111,32,97,32,115,116,114,105,110,103,122,54,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,119,105,116,104,32,110,111,32,107, + 110,111,119,110,32,112,97,114,101,110,116,32,112,97,99,107, + 97,103,101,122,17,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,49,0,0,0,114,3,0,0,0,218, + 10,86,97,108,117,101,69,114,114,111,114,114,83,0,0,0, + 169,3,114,20,0,0,0,114,196,0,0,0,114,197,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,13,95,115,97,110,105,116,121,95,99,104,101,99,107,199, + 3,0,0,115,26,0,0,0,10,2,18,1,8,1,8,1, + 8,1,10,1,8,1,4,1,8,1,12,2,8,1,8,255, + 255,128,114,208,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,0,0,0,0,9,0,0,0, + 8,0,0,0,67,0,0,0,115,22,1,0,0,100,0,125, + 2,124,0,160,0,100,1,161,1,100,2,25,0,125,3,124, + 3,114,128,124,3,116,1,106,2,118,1,114,42,116,3,124, + 1,124,3,131,2,1,0,124,0,116,1,106,2,118,0,114, + 62,116,1,106,2,124,0,25,0,83,0,116,1,106,2,124, + 3,25,0,125,4,122,10,124,4,106,4,125,2,87,0,110, + 44,4,0,116,5,144,1,121,20,1,0,1,0,1,0,116, + 6,100,3,23,0,160,7,124,0,124,3,161,2,125,5,116, + 8,124,5,124,0,100,4,141,2,100,0,130,2,116,9,124, + 0,124,2,131,2,125,6,124,6,100,0,117,0,114,164,116, + 8,116,6,160,7,124,0,161,1,124,0,100,4,141,2,130, + 1,116,10,124,6,131,1,125,7,124,3,144,1,114,14,116, + 1,106,2,124,3,25,0,125,4,124,0,160,0,100,1,161, + 1,100,5,25,0,125,8,122,18,116,11,124,4,124,8,124, + 7,131,3,1,0,87,0,124,7,83,0,4,0,116,5,144, + 1,121,18,1,0,1,0,1,0,100,6,124,3,155,2,100, + 7,124,8,155,2,157,4,125,5,116,12,160,13,124,5,116, + 14,161,2,1,0,89,0,124,7,83,0,124,7,83,0,119, + 0,119,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0,233,2, + 0,0,0,122,27,67,97,110,110,111,116,32,115,101,116,32, + 97,110,32,97,116,116,114,105,98,117,116,101,32,111,110,32, + 122,18,32,102,111,114,32,99,104,105,108,100,32,109,111,100, + 117,108,101,32,41,15,114,136,0,0,0,114,18,0,0,0, + 114,99,0,0,0,114,71,0,0,0,114,148,0,0,0,114, + 2,0,0,0,218,8,95,69,82,82,95,77,83,71,114,49, + 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,202,0,0,0,114,167,0, + 0,0,114,12,0,0,0,114,95,0,0,0,114,96,0,0, + 0,114,163,0,0,0,41,9,114,20,0,0,0,218,7,105, + 109,112,111,114,116,95,114,175,0,0,0,114,137,0,0,0, + 90,13,112,97,114,101,110,116,95,109,111,100,117,108,101,114, + 102,0,0,0,114,103,0,0,0,114,104,0,0,0,90,5, + 99,104,105,108,100,114,5,0,0,0,114,5,0,0,0,114, + 6,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,218,3,0, + 0,115,60,0,0,0,4,1,14,1,4,1,10,1,10,1, + 10,2,10,1,10,1,2,1,10,1,14,1,16,1,14,1, + 10,1,8,1,18,1,8,2,6,1,10,2,14,1,2,1, + 14,1,4,4,14,253,16,1,14,1,8,1,2,253,2,242, + 255,128,114,213,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, + 115,128,0,0,0,116,0,124,0,131,1,143,62,1,0,116, + 1,106,2,160,3,124,0,116,4,161,2,125,2,124,2,116, + 4,117,0,114,56,116,5,124,0,124,1,131,2,87,0,2, + 0,100,1,4,0,4,0,131,3,1,0,83,0,87,0,100, + 1,4,0,4,0,131,3,1,0,110,16,49,0,115,76,119, + 1,1,0,1,0,1,0,89,0,1,0,124,2,100,1,117, + 0,114,116,100,2,160,6,124,0,161,1,125,3,116,7,124, + 3,124,0,100,3,141,2,130,1,116,8,124,0,131,1,1, + 0,124,2,83,0,41,4,122,25,70,105,110,100,32,97,110, + 100,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,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,19,0, + 0,0,41,9,114,54,0,0,0,114,18,0,0,0,114,99, + 0,0,0,114,38,0,0,0,218,14,95,78,69,69,68,83, + 95,76,79,65,68,73,78,71,114,213,0,0,0,114,49,0, + 0,0,114,211,0,0,0,114,69,0,0,0,41,4,114,20, + 0,0,0,114,212,0,0,0,114,104,0,0,0,114,79,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,156,0,0,0,77,3,0,0,115,4,0,0,0,4, - 0,255,128,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,0,0,0,0,0,0,3,0, - 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,124, - 0,106,0,106,1,125,1,116,2,160,3,124,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, - 91,0,0,0,41,10,114,113,0,0,0,114,20,0,0,0, - 114,61,0,0,0,114,92,0,0,0,114,83,0,0,0,114, - 49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0,0,0,114,20, - 0,0,0,218,4,99,111,100,101,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,157,0,0,0,81,3,0, - 0,115,16,0,0,0,8,2,10,1,10,1,2,1,6,255, - 12,2,16,1,255,128,122,26,70,114,111,122,101,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,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, - 116,0,124,0,124,1,131,2,83,0,41,2,122,95,76,111, - 97,100,32,97,32,102,114,111,122,101,110,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, - 115,32,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,78,41,1, - 114,105,0,0,0,114,179,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,164,0,0,0,90,3, - 0,0,115,4,0,0,0,10,8,255,128,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, - 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, - 115,10,0,0,0,116,0,160,1,124,1,161,1,83,0,41, - 2,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, - 78,41,2,114,61,0,0,0,114,186,0,0,0,114,179,0, + 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,253,3,0,0,115,24,0,0,0,10,2,14,1,8,1, + 54,1,8,2,4,1,2,1,4,255,12,2,8,2,4,1, + 255,128,114,215,0,0,0,114,25,0,0,0,99,3,0,0, + 0,0,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,3,125,0,116,2,124,0,116,3, + 131,2,83,0,41,3,97,50,1,0,0,73,109,112,111,114, + 116,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, + 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, + 32,105,116,115,32,110,97,109,101,44,32,116,104,101,32,112, + 97,99,107,97,103,101,32,116,104,101,32,99,97,108,108,32, + 105,115,10,32,32,32,32,98,101,105,110,103,32,109,97,100, + 101,32,102,114,111,109,44,32,97,110,100,32,116,104,101,32, + 108,101,118,101,108,32,97,100,106,117,115,116,109,101,110,116, + 46,10,10,32,32,32,32,84,104,105,115,32,102,117,110,99, + 116,105,111,110,32,114,101,112,114,101,115,101,110,116,115,32, + 116,104,101,32,103,114,101,97,116,101,115,116,32,99,111,109, + 109,111,110,32,100,101,110,111,109,105,110,97,116,111,114,32, + 111,102,32,102,117,110,99,116,105,111,110,97,108,105,116,121, + 10,32,32,32,32,98,101,116,119,101,101,110,32,105,109,112, + 111,114,116,95,109,111,100,117,108,101,32,97,110,100,32,95, + 95,105,109,112,111,114,116,95,95,46,32,84,104,105,115,32, + 105,110,99,108,117,100,101,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,25,0, + 0,0,78,41,4,114,208,0,0,0,114,198,0,0,0,114, + 215,0,0,0,218,11,95,103,99,100,95,105,109,112,111,114, + 116,114,207,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,216,0,0,0,13,4,0,0,115,10, + 0,0,0,12,9,8,1,12,1,10,1,255,128,114,216,0, + 0,0,169,1,218,9,114,101,99,117,114,115,105,118,101,99, + 3,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, + 11,0,0,0,67,0,0,0,115,216,0,0,0,124,1,68, + 0,93,204,125,4,116,0,124,4,116,1,131,2,115,64,124, + 3,114,34,124,0,106,2,100,1,23,0,125,5,110,4,100, + 2,125,5,116,3,100,3,124,5,155,0,100,4,116,4,124, + 4,131,1,106,2,155,0,157,4,131,1,130,1,124,4,100, + 5,107,2,114,106,124,3,115,4,116,5,124,0,100,6,131, + 2,114,4,116,6,124,0,124,0,106,7,124,2,100,7,100, + 8,141,4,1,0,113,4,116,5,124,0,124,4,131,2,115, + 4,100,9,160,8,124,0,106,2,124,4,161,2,125,6,122, + 14,116,9,124,2,124,6,131,2,1,0,87,0,113,4,4, + 0,116,10,121,214,1,0,125,7,1,0,122,42,124,7,106, + 11,124,6,107,2,114,200,116,12,106,13,160,14,124,6,116, + 15,161,2,100,10,117,1,114,200,87,0,89,0,100,10,125, + 7,126,7,113,4,130,0,100,10,125,7,126,7,119,1,124, + 0,83,0,119,0,41,11,122,238,70,105,103,117,114,101,32, + 111,117,116,32,119,104,97,116,32,95,95,105,109,112,111,114, + 116,95,95,32,115,104,111,117,108,100,32,114,101,116,117,114, + 110,46,10,10,32,32,32,32,84,104,101,32,105,109,112,111, + 114,116,95,32,112,97,114,97,109,101,116,101,114,32,105,115, + 32,97,32,99,97,108,108,97,98,108,101,32,119,104,105,99, + 104,32,116,97,107,101,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,109,111,100,117,108,101,32,116,111,10,32,32, + 32,32,105,109,112,111,114,116,46,32,73,116,32,105,115,32, + 114,101,113,117,105,114,101,100,32,116,111,32,100,101,99,111, + 117,112,108,101,32,116,104,101,32,102,117,110,99,116,105,111, + 110,32,102,114,111,109,32,97,115,115,117,109,105,110,103,32, + 105,109,112,111,114,116,108,105,98,39,115,10,32,32,32,32, + 105,109,112,111,114,116,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,105,115,32,100,101,115,105,114,101,100, + 46,10,10,32,32,32,32,122,8,46,95,95,97,108,108,95, + 95,122,13,96,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,217,0,0,0, + 114,193,0,0,0,78,41,16,114,203,0,0,0,114,204,0, + 0,0,114,9,0,0,0,114,205,0,0,0,114,3,0,0, + 0,114,11,0,0,0,218,16,95,104,97,110,100,108,101,95, + 102,114,111,109,108,105,115,116,114,220,0,0,0,114,49,0, + 0,0,114,71,0,0,0,114,211,0,0,0,114,20,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, + 114,214,0,0,0,41,8,114,104,0,0,0,218,8,102,114, + 111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,221,0,0,0,28,4, + 0,0,115,54,0,0,0,8,10,10,1,4,1,12,1,4, + 2,10,1,8,1,8,255,8,2,14,1,10,1,2,1,8, + 255,10,2,14,1,2,1,14,1,14,1,10,4,16,1,2, + 255,12,2,2,1,8,128,4,1,2,248,255,128,114,221,0, + 0,0,99,1,0,0,0,0,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,117,1,114,82,124,2,100,3, + 117,1,114,78,124,1,124,2,106,1,107,3,114,78,116,2, + 106,3,100,4,124,1,155,2,100,5,124,2,106,1,155,2, + 100,6,157,5,116,4,100,7,100,8,141,3,1,0,124,1, + 83,0,124,2,100,3,117,1,114,96,124,2,106,1,83,0, + 116,2,106,3,100,9,116,4,100,7,100,8,141,3,1,0, + 124,0,100,10,25,0,125,1,100,11,124,0,118,1,114,142, + 124,1,160,5,100,12,161,1,100,13,25,0,125,1,124,1, + 83,0,41,14,122,167,67,97,108,99,117,108,97,116,101,32, + 119,104,97,116,32,95,95,112,97,99,107,97,103,101,95,95, + 32,115,104,111,117,108,100,32,98,101,46,10,10,32,32,32, + 32,95,95,112,97,99,107,97,103,101,95,95,32,105,115,32, + 110,111,116,32,103,117,97,114,97,110,116,101,101,100,32,116, + 111,32,98,101,32,100,101,102,105,110,101,100,32,111,114,32, + 99,111,117,108,100,32,98,101,32,115,101,116,32,116,111,32, + 78,111,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,152,0, + 0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32,114,101, + 115,111,108,118,101,32,112,97,99,107,97,103,101,32,102,114, + 111,109,32,95,95,115,112,101,99,95,95,32,111,114,32,95, + 95,112,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,9,0,0,0,114,148,0,0,0,114,135,0,0,0, + 114,25,0,0,0,41,6,114,38,0,0,0,114,137,0,0, + 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, + 114,136,0,0,0,41,3,218,7,103,108,111,98,97,108,115, + 114,196,0,0,0,114,103,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,17,95,99,97,108,99, + 95,95,95,112,97,99,107,97,103,101,95,95,65,4,0,0, + 115,44,0,0,0,10,7,10,1,8,1,18,1,6,1,2, + 1,4,255,4,1,6,255,4,2,6,254,4,3,8,1,6, + 1,6,2,4,2,6,254,8,3,8,1,14,1,4,1,255, + 128,114,227,0,0,0,114,5,0,0,0,99,5,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, + 67,0,0,0,115,174,0,0,0,124,4,100,1,107,2,114, + 18,116,0,124,0,131,1,125,5,110,36,124,1,100,2,117, + 1,114,30,124,1,110,2,105,0,125,6,116,1,124,6,131, + 1,125,7,116,0,124,0,124,7,124,4,131,3,125,5,124, + 3,115,148,124,4,100,1,107,2,114,84,116,0,124,0,160, + 2,100,3,161,1,100,1,25,0,131,1,83,0,124,0,115, + 92,124,5,83,0,116,3,124,0,131,1,116,3,124,0,160, + 2,100,3,161,1,100,1,25,0,131,1,24,0,125,8,116, + 4,106,5,124,5,106,6,100,2,116,3,124,5,106,6,131, + 1,124,8,24,0,133,2,25,0,25,0,83,0,116,7,124, + 5,100,4,131,2,114,170,116,8,124,5,124,3,116,0,131, + 3,83,0,124,5,83,0,41,5,97,215,1,0,0,73,109, + 112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,115, + 39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,115, + 101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,114, + 101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,32, + 111,99,99,117,114,114,105,110,103,32,102,114,111,109,10,32, + 32,32,32,116,111,32,104,97,110,100,108,101,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,115,46,32,84, + 104,101,32,39,108,111,99,97,108,115,39,32,97,114,103,117, + 109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,46, + 32,84,104,101,10,32,32,32,32,39,102,114,111,109,108,105, + 115,116,39,32,97,114,103,117,109,101,110,116,32,115,112,101, + 99,105,102,105,101,115,32,119,104,97,116,32,115,104,111,117, + 108,100,32,101,120,105,115,116,32,97,115,32,97,116,116,114, + 105,98,117,116,101,115,32,111,110,32,116,104,101,32,109,111, + 100,117,108,101,10,32,32,32,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,32,40,101,46,103,46,32,96,96, + 102,114,111,109,32,109,111,100,117,108,101,32,105,109,112,111, + 114,116,32,60,102,114,111,109,108,105,115,116,62,96,96,41, + 46,32,32,84,104,101,32,39,108,101,118,101,108,39,10,32, + 32,32,32,97,114,103,117,109,101,110,116,32,114,101,112,114, + 101,115,101,110,116,115,32,116,104,101,32,112,97,99,107,97, + 103,101,32,108,111,99,97,116,105,111,110,32,116,111,32,105, + 109,112,111,114,116,32,102,114,111,109,32,105,110,32,97,32, + 114,101,108,97,116,105,118,101,10,32,32,32,32,105,109,112, + 111,114,116,32,40,101,46,103,46,32,96,96,102,114,111,109, + 32,46,46,112,107,103,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,25,0,0,0,78,114,135,0,0,0, + 114,148,0,0,0,41,9,114,216,0,0,0,114,227,0,0, + 0,218,9,112,97,114,116,105,116,105,111,110,114,195,0,0, + 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, + 114,11,0,0,0,114,221,0,0,0,41,9,114,20,0,0, + 0,114,226,0,0,0,218,6,108,111,99,97,108,115,114,222, + 0,0,0,114,197,0,0,0,114,104,0,0,0,90,8,103, + 108,111,98,97,108,115,95,114,196,0,0,0,90,7,99,117, + 116,95,111,102,102,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,95,105,109,112,111,114,116,95,95, + 92,4,0,0,115,32,0,0,0,8,11,10,1,16,2,8, + 1,12,1,4,1,8,3,18,1,4,1,4,1,26,4,30, + 3,10,1,12,1,4,2,255,128,114,230,0,0,0,99,1, + 0,0,0,0,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,117,0,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,169,0,0,0,114,177,0,0,0,114,83,0,0, + 0,114,167,0,0,0,41,2,114,20,0,0,0,114,103,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,180,0,0,0,100,3,0,0,115,4,0,0,0,10, - 4,255,128,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,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, - 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,5,0,0,0,114,179, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,181,0,0,0,106,3,0,0,115,4,0,0,0, - 4,4,255,128,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,0,0,0,0,2,0,0,0, - 3,0,0,0,67,0,0,0,115,10,0,0,0,116,0,160, - 1,124,1,161,1,83,0,41,2,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,78,41,2,114,61,0,0, - 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, - 107,97,103,101,114,179,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,122,0,0,0,112,3,0, - 0,115,4,0,0,0,10,4,255,128,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,17,114,9, - 0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0, - 0,0,114,145,0,0,0,114,182,0,0,0,114,107,0,0, - 0,114,183,0,0,0,114,177,0,0,0,114,178,0,0,0, - 114,156,0,0,0,114,157,0,0,0,114,164,0,0,0,114, - 94,0,0,0,114,180,0,0,0,114,181,0,0,0,114,122, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,184,0,0,0,41,3,0,0, - 115,50,0,0,0,8,0,4,2,4,7,2,2,10,1,2, - 8,12,1,2,6,12,1,2,8,10,1,2,3,10,1,2, - 8,10,1,2,9,2,1,12,1,2,4,2,1,12,1,2, - 4,2,1,16,1,255,128,114,184,0,0,0,99,0,0,0, - 0,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,83,0,41,7,218,18,95,73, - 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, - 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, - 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,2,0,0,0,67,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, - 61,0,0,0,114,62,0,0,0,114,51,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,58,0, - 0,0,125,3,0,0,115,4,0,0,0,12,2,255,128,122, - 28,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, - 101,120,116,46,95,95,101,110,116,101,114,95,95,99,4,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,0, - 0,0,67,0,0,0,115,12,0,0,0,116,0,160,1,161, - 0,1,0,100,1,83,0,41,2,122,60,82,101,108,101,97, - 115,101,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,61,0,0,0,114, - 64,0,0,0,41,4,114,33,0,0,0,218,8,101,120,99, - 95,116,121,112,101,218,9,101,120,99,95,118,97,108,117,101, - 218,13,101,120,99,95,116,114,97,99,101,98,97,99,107,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,60, - 0,0,0,129,3,0,0,115,4,0,0,0,12,2,255,128, - 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,9,0,0,0,114,8,0,0,0,114,1,0,0,0,114, - 10,0,0,0,114,58,0,0,0,114,60,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,189,0,0,0,121,3,0,0,115,10,0,0,0, - 8,0,4,2,8,2,12,4,255,128,114,189,0,0,0,99, - 3,0,0,0,0,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,3,131,1,130, - 1,124,3,100,4,25,0,125,4,124,0,114,60,100,5,160, - 3,124,4,124,0,161,2,83,0,124,4,83,0,41,7,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,135,0,0,0,114,42,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,99,107,97,103, - 101,114,25,0,0,0,250,5,123,125,46,123,125,78,41,4, - 218,6,114,115,112,108,105,116,218,3,108,101,110,114,83,0, - 0,0,114,49,0,0,0,41,5,114,20,0,0,0,218,7, - 112,97,99,107,97,103,101,218,5,108,101,118,101,108,90,4, - 98,105,116,115,90,4,98,97,115,101,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,13,95,114,101,115,111, - 108,118,101,95,110,97,109,101,134,3,0,0,115,12,0,0, - 0,16,2,12,1,8,1,8,1,20,1,255,128,114,198,0, - 0,0,99,3,0,0,0,0,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, - 117,0,114,24,100,0,83,0,116,1,124,1,124,3,131,2, - 83,0,114,0,0,0,0,41,2,114,178,0,0,0,114,98, - 0,0,0,41,4,218,6,102,105,110,100,101,114,114,20,0, - 0,0,114,175,0,0,0,114,116,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,17,95,102,105, - 110,100,95,115,112,101,99,95,108,101,103,97,99,121,143,3, - 0,0,115,10,0,0,0,12,3,8,1,4,1,10,1,255, - 128,114,200,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,10,0,0,0,10,0,0,0,67,0,0,0,115, - 28,1,0,0,116,0,106,1,125,3,124,3,100,1,117,0, - 114,22,116,2,100,2,131,1,130,1,124,3,115,38,116,3, - 160,4,100,3,116,5,161,2,1,0,124,0,116,0,106,6, - 118,0,125,4,124,3,68,0,93,226,125,5,116,7,131,0, - 143,94,1,0,122,10,124,5,106,8,125,6,87,0,110,54, - 4,0,116,9,121,128,1,0,1,0,1,0,116,10,124,5, - 124,0,124,1,131,3,125,7,124,7,100,1,117,0,114,124, - 89,0,87,0,100,1,4,0,4,0,131,3,1,0,113,52, - 89,0,110,14,119,0,124,6,124,0,124,1,124,2,131,3, - 125,7,87,0,100,1,4,0,4,0,131,3,1,0,110,16, - 49,0,115,162,119,1,1,0,1,0,1,0,89,0,1,0, - 124,7,100,1,117,1,114,52,124,4,144,1,115,16,124,0, - 116,0,106,6,118,0,144,1,114,16,116,0,106,6,124,0, - 25,0,125,8,122,10,124,8,106,11,125,9,87,0,110,26, - 4,0,116,9,121,244,1,0,1,0,1,0,124,7,6,0, - 89,0,2,0,1,0,83,0,119,0,124,9,100,1,117,0, - 144,1,114,8,124,7,2,0,1,0,83,0,124,9,2,0, - 1,0,83,0,124,7,2,0,1,0,83,0,100,1,83,0, - 41,4,122,21,70,105,110,100,32,97,32,109,111,100,117,108, - 101,39,115,32,115,112,101,99,46,78,122,53,115,121,115,46, - 109,101,116,97,95,112,97,116,104,32,105,115,32,78,111,110, - 101,44,32,80,121,116,104,111,110,32,105,115,32,108,105,107, - 101,108,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,18,0,0,0, - 218,9,109,101,116,97,95,112,97,116,104,114,83,0,0,0, - 114,95,0,0,0,114,96,0,0,0,114,163,0,0,0,114, - 99,0,0,0,114,189,0,0,0,114,177,0,0,0,114,2, - 0,0,0,114,200,0,0,0,114,113,0,0,0,41,10,114, - 20,0,0,0,114,175,0,0,0,114,176,0,0,0,114,201, - 0,0,0,90,9,105,115,95,114,101,108,111,97,100,114,199, - 0,0,0,114,177,0,0,0,114,103,0,0,0,114,104,0, - 0,0,114,113,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,10,95,102,105,110,100,95,115,112, - 101,99,152,3,0,0,115,56,0,0,0,6,2,8,1,8, - 2,4,3,12,1,10,5,8,1,8,1,2,1,10,1,12, - 1,12,1,8,1,22,1,42,2,8,1,18,2,10,1,2, - 1,10,1,12,1,14,4,10,2,8,1,8,2,8,2,4, - 2,255,128,114,202,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,5,0,0,0,67,0,0, - 0,115,110,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,0,114,44,116,5,100,3,131,1, - 130,1,124,2,100,2,107,4,114,82,116,0,124,1,116,1, - 131,2,115,70,116,2,100,4,131,1,130,1,124,1,115,82, - 116,6,100,5,131,1,130,1,124,0,115,106,124,2,100,2, - 107,2,114,102,116,5,100,6,131,1,130,1,100,7,83,0, - 100,7,83,0,41,8,122,28,86,101,114,105,102,121,32,97, - 114,103,117,109,101,110,116,115,32,97,114,101,32,34,115,97, - 110,101,34,46,122,31,109,111,100,117,108,101,32,110,97,109, - 101,32,109,117,115,116,32,98,101,32,115,116,114,44,32,110, - 111,116,32,123,125,114,25,0,0,0,122,18,108,101,118,101, - 108,32,109,117,115,116,32,98,101,32,62,61,32,48,122,31, - 95,95,112,97,99,107,97,103,101,95,95,32,110,111,116,32, - 115,101,116,32,116,111,32,97,32,115,116,114,105,110,103,122, - 54,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,119,105,116,104,32, - 110,111,32,107,110,111,119,110,32,112,97,114,101,110,116,32, - 112,97,99,107,97,103,101,122,17,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,49,0,0,0,114,3, - 0,0,0,218,10,86,97,108,117,101,69,114,114,111,114,114, - 83,0,0,0,169,3,114,20,0,0,0,114,196,0,0,0, - 114,197,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,13,95,115,97,110,105,116,121,95,99,104, - 101,99,107,199,3,0,0,115,26,0,0,0,10,2,18,1, - 8,1,8,1,8,1,10,1,8,1,4,1,8,1,12,2, - 8,1,8,255,255,128,114,208,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,0,0,0,0, - 9,0,0,0,8,0,0,0,67,0,0,0,115,20,1,0, - 0,100,0,125,2,124,0,160,0,100,1,161,1,100,2,25, - 0,125,3,124,3,114,128,124,3,116,1,106,2,118,1,114, - 42,116,3,124,1,124,3,131,2,1,0,124,0,116,1,106, - 2,118,0,114,62,116,1,106,2,124,0,25,0,83,0,116, - 1,106,2,124,3,25,0,125,4,122,10,124,4,106,4,125, - 2,87,0,110,44,4,0,116,5,121,126,1,0,1,0,1, - 0,116,6,100,3,23,0,160,7,124,0,124,3,161,2,125, - 5,116,8,124,5,124,0,100,4,141,2,100,0,130,2,119, - 0,116,9,124,0,124,2,131,2,125,6,124,6,100,0,117, - 0,114,164,116,8,116,6,160,7,124,0,161,1,124,0,100, - 4,141,2,130,1,116,10,124,6,131,1,125,7,124,3,144, - 1,114,16,116,1,106,2,124,3,25,0,125,4,124,0,160, - 0,100,1,161,1,100,5,25,0,125,8,122,18,116,11,124, - 4,124,8,124,7,131,3,1,0,87,0,124,7,83,0,4, - 0,116,5,144,1,121,14,1,0,1,0,1,0,100,6,124, - 3,155,2,100,7,124,8,155,2,157,4,125,5,116,12,160, - 13,124,5,116,14,161,2,1,0,89,0,124,7,83,0,119, - 0,124,7,83,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0, - 233,2,0,0,0,122,27,67,97,110,110,111,116,32,115,101, - 116,32,97,110,32,97,116,116,114,105,98,117,116,101,32,111, - 110,32,122,18,32,102,111,114,32,99,104,105,108,100,32,109, - 111,100,117,108,101,32,41,15,114,136,0,0,0,114,18,0, - 0,0,114,99,0,0,0,114,71,0,0,0,114,148,0,0, - 0,114,2,0,0,0,218,8,95,69,82,82,95,77,83,71, - 114,49,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,202,0,0,0,114, - 167,0,0,0,114,12,0,0,0,114,95,0,0,0,114,96, - 0,0,0,114,163,0,0,0,41,9,114,20,0,0,0,218, - 7,105,109,112,111,114,116,95,114,175,0,0,0,114,137,0, - 0,0,90,13,112,97,114,101,110,116,95,109,111,100,117,108, - 101,114,102,0,0,0,114,103,0,0,0,114,104,0,0,0, - 90,5,99,104,105,108,100,114,5,0,0,0,114,5,0,0, - 0,114,6,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,218, - 3,0,0,115,60,0,0,0,4,1,14,1,4,1,10,1, - 10,1,10,2,10,1,10,1,2,1,10,1,12,1,16,1, - 16,1,10,1,8,1,18,1,8,2,6,1,10,2,14,1, - 2,1,14,1,4,4,14,253,16,1,14,1,4,1,2,255, - 4,1,255,128,114,213,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,8,0,0,0,67,0, - 0,0,115,128,0,0,0,116,0,124,0,131,1,143,62,1, - 0,116,1,106,2,160,3,124,0,116,4,161,2,125,2,124, - 2,116,4,117,0,114,56,116,5,124,0,124,1,131,2,87, - 0,2,0,100,1,4,0,4,0,131,3,1,0,83,0,87, - 0,100,1,4,0,4,0,131,3,1,0,110,16,49,0,115, - 76,119,1,1,0,1,0,1,0,89,0,1,0,124,2,100, - 1,117,0,114,116,100,2,160,6,124,0,161,1,125,3,116, - 7,124,3,124,0,100,3,141,2,130,1,116,8,124,0,131, - 1,1,0,124,2,83,0,41,4,122,25,70,105,110,100,32, - 97,110,100,32,108,111,97,100,32,116,104,101,32,109,111,100, - 117,108,101,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, - 19,0,0,0,41,9,114,54,0,0,0,114,18,0,0,0, - 114,99,0,0,0,114,38,0,0,0,218,14,95,78,69,69, - 68,83,95,76,79,65,68,73,78,71,114,213,0,0,0,114, - 49,0,0,0,114,211,0,0,0,114,69,0,0,0,41,4, - 114,20,0,0,0,114,212,0,0,0,114,104,0,0,0,114, - 79,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,14,95,102,105,110,100,95,97,110,100,95,108, - 111,97,100,253,3,0,0,115,24,0,0,0,10,2,14,1, - 8,1,54,1,8,2,4,1,2,1,4,255,12,2,8,2, - 4,1,255,128,114,215,0,0,0,114,25,0,0,0,99,3, - 0,0,0,0,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,3,125,0,116,2,124,0, - 116,3,131,2,83,0,41,3,97,50,1,0,0,73,109,112, - 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, - 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, - 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, - 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, - 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, - 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, - 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, - 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, - 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, - 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, - 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, - 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, - 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, - 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, - 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, - 115,32,105,110,99,108,117,100,101,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, - 25,0,0,0,78,41,4,114,208,0,0,0,114,198,0,0, - 0,114,215,0,0,0,218,11,95,103,99,100,95,105,109,112, - 111,114,116,114,207,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,216,0,0,0,13,4,0,0, - 115,10,0,0,0,12,9,8,1,12,1,10,1,255,128,114, - 216,0,0,0,169,1,218,9,114,101,99,117,114,115,105,118, - 101,99,3,0,0,0,0,0,0,0,1,0,0,0,8,0, - 0,0,11,0,0,0,67,0,0,0,115,216,0,0,0,124, - 1,68,0,93,204,125,4,116,0,124,4,116,1,131,2,115, - 64,124,3,114,34,124,0,106,2,100,1,23,0,125,5,110, - 4,100,2,125,5,116,3,100,3,124,5,155,0,100,4,116, - 4,124,4,131,1,106,2,155,0,157,4,131,1,130,1,124, - 4,100,5,107,2,114,106,124,3,115,4,116,5,124,0,100, - 6,131,2,114,4,116,6,124,0,124,0,106,7,124,2,100, - 7,100,8,141,4,1,0,113,4,116,5,124,0,124,4,131, - 2,115,4,100,9,160,8,124,0,106,2,124,4,161,2,125, - 6,122,14,116,9,124,2,124,6,131,2,1,0,87,0,113, - 4,4,0,116,10,121,214,1,0,125,7,1,0,122,42,124, - 7,106,11,124,6,107,2,114,200,116,12,106,13,160,14,124, - 6,116,15,161,2,100,10,117,1,114,200,87,0,89,0,100, - 10,125,7,126,7,113,4,130,0,100,10,125,7,126,7,119, - 1,124,0,83,0,119,0,41,11,122,238,70,105,103,117,114, - 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, - 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, - 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, - 112,111,114,116,95,32,112,97,114,97,109,101,116,101,114,32, - 105,115,32,97,32,99,97,108,108,97,98,108,101,32,119,104, - 105,99,104,32,116,97,107,101,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,109,111,100,117,108,101,32,116,111,10, - 32,32,32,32,105,109,112,111,114,116,46,32,73,116,32,105, - 115,32,114,101,113,117,105,114,101,100,32,116,111,32,100,101, - 99,111,117,112,108,101,32,116,104,101,32,102,117,110,99,116, - 105,111,110,32,102,114,111,109,32,97,115,115,117,109,105,110, - 103,32,105,109,112,111,114,116,108,105,98,39,115,10,32,32, - 32,32,105,109,112,111,114,116,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,105,115,32,100,101,115,105,114, - 101,100,46,10,10,32,32,32,32,122,8,46,95,95,97,108, - 108,95,95,122,13,96,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,217,0, - 0,0,114,193,0,0,0,78,41,16,114,203,0,0,0,114, - 204,0,0,0,114,9,0,0,0,114,205,0,0,0,114,3, - 0,0,0,114,11,0,0,0,218,16,95,104,97,110,100,108, - 101,95,102,114,111,109,108,105,115,116,114,220,0,0,0,114, - 49,0,0,0,114,71,0,0,0,114,211,0,0,0,114,20, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,38,0, - 0,0,114,214,0,0,0,41,8,114,104,0,0,0,218,8, - 102,114,111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,221,0,0,0, - 28,4,0,0,115,54,0,0,0,8,10,10,1,4,1,12, - 1,4,2,10,1,8,1,8,255,8,2,14,1,10,1,2, - 1,8,255,10,2,14,1,2,1,14,1,14,1,10,4,16, - 1,2,255,12,2,2,1,8,128,4,1,2,248,255,128,114, - 221,0,0,0,99,1,0,0,0,0,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,117,1,114,82,124,2, - 100,3,117,1,114,78,124,1,124,2,106,1,107,3,114,78, - 116,2,106,3,100,4,124,1,155,2,100,5,124,2,106,1, - 155,2,100,6,157,5,116,4,100,7,100,8,141,3,1,0, - 124,1,83,0,124,2,100,3,117,1,114,96,124,2,106,1, - 83,0,116,2,106,3,100,9,116,4,100,7,100,8,141,3, - 1,0,124,0,100,10,25,0,125,1,100,11,124,0,118,1, - 114,142,124,1,160,5,100,12,161,1,100,13,25,0,125,1, - 124,1,83,0,41,14,122,167,67,97,108,99,117,108,97,116, - 101,32,119,104,97,116,32,95,95,112,97,99,107,97,103,101, - 95,95,32,115,104,111,117,108,100,32,98,101,46,10,10,32, - 32,32,32,95,95,112,97,99,107,97,103,101,95,95,32,105, - 115,32,110,111,116,32,103,117,97,114,97,110,116,101,101,100, - 32,116,111,32,98,101,32,100,101,102,105,110,101,100,32,111, - 114,32,99,111,117,108,100,32,98,101,32,115,101,116,32,116, - 111,32,78,111,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, - 152,0,0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32, - 114,101,115,111,108,118,101,32,112,97,99,107,97,103,101,32, - 102,114,111,109,32,95,95,115,112,101,99,95,95,32,111,114, - 32,95,95,112,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,9,0,0,0,114,148,0,0,0,114,135,0, - 0,0,114,25,0,0,0,41,6,114,38,0,0,0,114,137, - 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, - 0,0,114,136,0,0,0,41,3,218,7,103,108,111,98,97, - 108,115,114,196,0,0,0,114,103,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,17,95,99,97, - 108,99,95,95,95,112,97,99,107,97,103,101,95,95,65,4, - 0,0,115,44,0,0,0,10,7,10,1,8,1,18,1,6, - 1,2,1,4,255,4,1,6,255,4,2,6,254,4,3,8, - 1,6,1,6,2,4,2,6,254,8,3,8,1,14,1,4, - 1,255,128,114,227,0,0,0,114,5,0,0,0,99,5,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,5,0, - 0,0,67,0,0,0,115,174,0,0,0,124,4,100,1,107, - 2,114,18,116,0,124,0,131,1,125,5,110,36,124,1,100, - 2,117,1,114,30,124,1,110,2,105,0,125,6,116,1,124, - 6,131,1,125,7,116,0,124,0,124,7,124,4,131,3,125, - 5,124,3,115,148,124,4,100,1,107,2,114,84,116,0,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,83,0,124, - 0,115,92,124,5,83,0,116,3,124,0,131,1,116,3,124, - 0,160,2,100,3,161,1,100,1,25,0,131,1,24,0,125, - 8,116,4,106,5,124,5,106,6,100,2,116,3,124,5,106, - 6,131,1,124,8,24,0,133,2,25,0,25,0,83,0,116, - 7,124,5,100,4,131,2,114,170,116,8,124,5,124,3,116, - 0,131,3,83,0,124,5,83,0,41,5,97,215,1,0,0, - 73,109,112,111,114,116,32,97,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,84,104,101,32,39,103,108,111,98,97, - 108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 117,115,101,100,32,116,111,32,105,110,102,101,114,32,119,104, - 101,114,101,32,116,104,101,32,105,109,112,111,114,116,32,105, - 115,32,111,99,99,117,114,114,105,110,103,32,102,114,111,109, - 10,32,32,32,32,116,111,32,104,97,110,100,108,101,32,114, - 101,108,97,116,105,118,101,32,105,109,112,111,114,116,115,46, - 32,84,104,101,32,39,108,111,99,97,108,115,39,32,97,114, - 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, - 100,46,32,84,104,101,10,32,32,32,32,39,102,114,111,109, - 108,105,115,116,39,32,97,114,103,117,109,101,110,116,32,115, - 112,101,99,105,102,105,101,115,32,119,104,97,116,32,115,104, - 111,117,108,100,32,101,120,105,115,116,32,97,115,32,97,116, - 116,114,105,98,117,116,101,115,32,111,110,32,116,104,101,32, - 109,111,100,117,108,101,10,32,32,32,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,32,40,101,46,103,46,32, - 96,96,102,114,111,109,32,109,111,100,117,108,101,32,105,109, - 112,111,114,116,32,60,102,114,111,109,108,105,115,116,62,96, - 96,41,46,32,32,84,104,101,32,39,108,101,118,101,108,39, - 10,32,32,32,32,97,114,103,117,109,101,110,116,32,114,101, - 112,114,101,115,101,110,116,115,32,116,104,101,32,112,97,99, - 107,97,103,101,32,108,111,99,97,116,105,111,110,32,116,111, - 32,105,109,112,111,114,116,32,102,114,111,109,32,105,110,32, - 97,32,114,101,108,97,116,105,118,101,10,32,32,32,32,105, - 109,112,111,114,116,32,40,101,46,103,46,32,96,96,102,114, - 111,109,32,46,46,112,107,103,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,25,0,0,0,78,114,135,0, - 0,0,114,148,0,0,0,41,9,114,216,0,0,0,114,227, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,195, - 0,0,0,114,18,0,0,0,114,99,0,0,0,114,9,0, - 0,0,114,11,0,0,0,114,221,0,0,0,41,9,114,20, - 0,0,0,114,226,0,0,0,218,6,108,111,99,97,108,115, - 114,222,0,0,0,114,197,0,0,0,114,104,0,0,0,90, - 8,103,108,111,98,97,108,115,95,114,196,0,0,0,90,7, - 99,117,116,95,111,102,102,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,10,95,95,105,109,112,111,114,116, - 95,95,92,4,0,0,115,32,0,0,0,8,11,10,1,16, - 2,8,1,12,1,4,1,8,3,18,1,4,1,4,1,26, - 4,30,3,10,1,12,1,4,2,255,128,114,230,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,218,18,95,98,117,105,108,116,105,110,95,102,114,111,109, + 95,110,97,109,101,129,4,0,0,115,10,0,0,0,10,1, + 8,1,12,1,8,1,255,128,114,231,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,10,0,0,0,5,0, + 0,0,67,0,0,0,115,162,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,0,68,0,93,68,92,2,125,3,125,4,116,5,124, + 4,124,2,131,2,114,26,124,3,116,1,106,6,118,0,114, + 60,116,7,125,5,110,14,116,0,160,8,124,3,161,1,114, + 26,116,9,125,5,116,10,124,4,124,5,131,2,125,6,116, + 11,124,6,124,4,131,2,1,0,113,26,116,1,106,3,116, + 12,25,0,125,7,100,1,68,0,93,46,125,8,124,8,116, + 1,106,3,118,1,114,134,116,13,124,8,131,1,125,9,110, + 10,116,1,106,3,124,8,25,0,125,9,116,14,124,7,124, + 8,124,9,131,3,1,0,113,110,100,2,83,0,41,3,122, + 250,83,101,116,117,112,32,105,109,112,111,114,116,108,105,98, + 32,98,121,32,105,109,112,111,114,116,105,110,103,32,110,101, + 101,100,101,100,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116, + 105,110,103,32,116,104,101,109,10,32,32,32,32,105,110,116, + 111,32,116,104,101,32,103,108,111,98,97,108,32,110,97,109, + 101,115,112,97,99,101,46,10,10,32,32,32,32,65,115,32, + 115,121,115,32,105,115,32,110,101,101,100,101,100,32,102,111, + 114,32,115,121,115,46,109,111,100,117,108,101,115,32,97,99, + 99,101,115,115,32,97,110,100,32,95,105,109,112,32,105,115, + 32,110,101,101,100,101,100,32,116,111,32,108,111,97,100,32, + 98,117,105,108,116,45,105,110,10,32,32,32,32,109,111,100, + 117,108,101,115,44,32,116,104,111,115,101,32,116,119,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,26,0, + 0,0,114,95,0,0,0,114,68,0,0,0,78,41,15,114, + 61,0,0,0,114,18,0,0,0,114,3,0,0,0,114,99, + 0,0,0,218,5,105,116,101,109,115,114,203,0,0,0,114, + 82,0,0,0,114,169,0,0,0,114,92,0,0,0,114,184, + 0,0,0,114,149,0,0,0,114,155,0,0,0,114,9,0, + 0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0,114,116, + 0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,218,6,95,115,101,116,117,112,136,4,0,0,115,40, + 0,0,0,4,9,4,1,8,3,18,1,10,1,10,1,6, + 1,10,1,4,1,10,3,10,1,2,128,10,3,8,1,10, + 1,10,1,10,2,14,1,4,251,255,128,114,235,0,0,0, + 99,2,0,0,0,0,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,117,0,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,169,0,0,0,114,177,0,0,0,114,83, - 0,0,0,114,167,0,0,0,41,2,114,20,0,0,0,114, - 103,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,18,95,98,117,105,108,116,105,110,95,102,114, - 111,109,95,110,97,109,101,129,4,0,0,115,10,0,0,0, - 10,1,8,1,12,1,8,1,255,128,114,231,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 5,0,0,0,67,0,0,0,115,162,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,0,68,0,93,68,92,2,125,3,125,4,116, - 5,124,4,124,2,131,2,114,26,124,3,116,1,106,6,118, - 0,114,60,116,7,125,5,110,14,116,0,160,8,124,3,161, - 1,114,26,116,9,125,5,116,10,124,4,124,5,131,2,125, - 6,116,11,124,6,124,4,131,2,1,0,113,26,116,1,106, - 3,116,12,25,0,125,7,100,1,68,0,93,46,125,8,124, - 8,116,1,106,3,118,1,114,134,116,13,124,8,131,1,125, - 9,110,10,116,1,106,3,124,8,25,0,125,9,116,14,124, - 7,124,8,124,9,131,3,1,0,113,110,100,2,83,0,41, - 3,122,250,83,101,116,117,112,32,105,109,112,111,114,116,108, - 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32, - 110,101,101,100,101,100,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,115,32,97,110,100,32,105,110,106,101, - 99,116,105,110,103,32,116,104,101,109,10,32,32,32,32,105, - 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110, - 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,65, - 115,32,115,121,115,32,105,115,32,110,101,101,100,101,100,32, - 102,111,114,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,99,99,101,115,115,32,97,110,100,32,95,105,109,112,32, - 105,115,32,110,101,101,100,101,100,32,116,111,32,108,111,97, - 100,32,98,117,105,108,116,45,105,110,10,32,32,32,32,109, - 111,100,117,108,101,115,44,32,116,104,111,115,101,32,116,119, - 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, - 26,0,0,0,114,95,0,0,0,114,68,0,0,0,78,41, - 15,114,61,0,0,0,114,18,0,0,0,114,3,0,0,0, - 114,99,0,0,0,218,5,105,116,101,109,115,114,203,0,0, - 0,114,82,0,0,0,114,169,0,0,0,114,92,0,0,0, - 114,184,0,0,0,114,149,0,0,0,114,155,0,0,0,114, - 9,0,0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0, - 114,116,0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,6,95,115,101,116,117,112,136,4,0,0, - 115,40,0,0,0,4,9,4,1,8,3,18,1,10,1,10, - 1,6,1,10,1,4,1,10,3,10,1,2,128,10,3,8, - 1,10,1,10,1,10,2,14,1,4,251,255,128,114,235,0, - 0,0,99,2,0,0,0,0,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,106,2,160,3,116,5,161,1, - 1,0,100,1,83,0,41,2,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,235,0, - 0,0,114,18,0,0,0,114,201,0,0,0,114,126,0,0, - 0,114,169,0,0,0,114,184,0,0,0,41,2,114,233,0, - 0,0,114,234,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,8,95,105,110,115,116,97,108,108, - 171,4,0,0,115,8,0,0,0,10,2,12,2,16,1,255, - 128,114,236,0,0,0,99,0,0,0,0,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,1,0, - 100,2,83,0,41,3,122,57,73,110,115,116,97,108,108,32, - 105,109,112,111,114,116,101,114,115,32,116,104,97,116,32,114, - 101,113,117,105,114,101,32,101,120,116,101,114,110,97,108,32, - 102,105,108,101,115,121,115,116,101,109,32,97,99,99,101,115, - 115,114,25,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,133,0,0,0,114,236,0,0,0,114, - 18,0,0,0,114,99,0,0,0,114,9,0,0,0,41,1, - 114,237,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,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,179,4,0,0,115,8,0,0,0,8,3,4,1,20,1, - 255,128,114,238,0,0,0,41,2,78,78,41,1,78,41,2, - 78,114,25,0,0,0,41,4,78,78,114,5,0,0,0,114, - 25,0,0,0,41,54,114,10,0,0,0,114,7,0,0,0, - 114,26,0,0,0,114,95,0,0,0,114,68,0,0,0,114, - 133,0,0,0,114,17,0,0,0,114,21,0,0,0,114,63, - 0,0,0,114,37,0,0,0,114,47,0,0,0,114,22,0, - 0,0,114,23,0,0,0,114,53,0,0,0,114,54,0,0, - 0,114,57,0,0,0,114,69,0,0,0,114,71,0,0,0, - 114,80,0,0,0,114,90,0,0,0,114,94,0,0,0,114, - 105,0,0,0,114,118,0,0,0,114,119,0,0,0,114,98, - 0,0,0,114,149,0,0,0,114,155,0,0,0,114,159,0, - 0,0,114,114,0,0,0,114,100,0,0,0,114,166,0,0, - 0,114,167,0,0,0,114,101,0,0,0,114,169,0,0,0, - 114,184,0,0,0,114,189,0,0,0,114,198,0,0,0,114, - 200,0,0,0,114,202,0,0,0,114,208,0,0,0,90,15, - 95,69,82,82,95,77,83,71,95,80,82,69,70,73,88,114, - 210,0,0,0,114,213,0,0,0,218,6,111,98,106,101,99, - 116,114,214,0,0,0,114,215,0,0,0,114,216,0,0,0, - 114,221,0,0,0,114,227,0,0,0,114,230,0,0,0,114, - 231,0,0,0,114,235,0,0,0,114,236,0,0,0,114,238, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,8,60,109,111,100,117,108,101, - 62,1,0,0,0,115,106,0,0,0,4,0,8,22,4,9, - 4,1,4,1,4,3,8,3,8,8,4,8,4,2,16,3, - 14,4,14,77,14,21,8,16,8,37,8,17,14,11,8,8, - 8,11,8,12,8,19,14,36,16,101,10,26,14,45,8,72, - 8,17,8,17,8,30,8,36,8,45,14,15,14,75,14,80, - 8,13,8,9,10,9,8,47,4,16,8,1,8,2,6,32, - 8,3,10,16,14,15,8,37,10,27,8,37,8,7,8,35, - 12,8,255,128, + 124,0,124,1,131,2,1,0,116,1,106,2,160,3,116,4, + 161,1,1,0,116,1,106,2,160,3,116,5,161,1,1,0, + 100,1,83,0,41,2,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,235,0,0,0, + 114,18,0,0,0,114,201,0,0,0,114,126,0,0,0,114, + 169,0,0,0,114,184,0,0,0,41,2,114,233,0,0,0, + 114,234,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,8,95,105,110,115,116,97,108,108,171,4, + 0,0,115,8,0,0,0,10,2,12,2,16,1,255,128,114, + 236,0,0,0,99,0,0,0,0,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,1,0,100,2, + 83,0,41,3,122,57,73,110,115,116,97,108,108,32,105,109, + 112,111,114,116,101,114,115,32,116,104,97,116,32,114,101,113, + 117,105,114,101,32,101,120,116,101,114,110,97,108,32,102,105, + 108,101,115,121,115,116,101,109,32,97,99,99,101,115,115,114, + 25,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,133,0,0,0,114,236,0,0,0,114,18,0, + 0,0,114,99,0,0,0,114,9,0,0,0,41,1,114,237, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,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,179, + 4,0,0,115,8,0,0,0,8,3,4,1,20,1,255,128, + 114,238,0,0,0,41,2,78,78,41,1,78,41,2,78,114, + 25,0,0,0,41,4,78,78,114,5,0,0,0,114,25,0, + 0,0,41,54,114,10,0,0,0,114,7,0,0,0,114,26, + 0,0,0,114,95,0,0,0,114,68,0,0,0,114,133,0, + 0,0,114,17,0,0,0,114,21,0,0,0,114,63,0,0, + 0,114,37,0,0,0,114,47,0,0,0,114,22,0,0,0, + 114,23,0,0,0,114,53,0,0,0,114,54,0,0,0,114, + 57,0,0,0,114,69,0,0,0,114,71,0,0,0,114,80, + 0,0,0,114,90,0,0,0,114,94,0,0,0,114,105,0, + 0,0,114,118,0,0,0,114,119,0,0,0,114,98,0,0, + 0,114,149,0,0,0,114,155,0,0,0,114,159,0,0,0, + 114,114,0,0,0,114,100,0,0,0,114,166,0,0,0,114, + 167,0,0,0,114,101,0,0,0,114,169,0,0,0,114,184, + 0,0,0,114,189,0,0,0,114,198,0,0,0,114,200,0, + 0,0,114,202,0,0,0,114,208,0,0,0,90,15,95,69, + 82,82,95,77,83,71,95,80,82,69,70,73,88,114,210,0, + 0,0,114,213,0,0,0,218,6,111,98,106,101,99,116,114, + 214,0,0,0,114,215,0,0,0,114,216,0,0,0,114,221, + 0,0,0,114,227,0,0,0,114,230,0,0,0,114,231,0, + 0,0,114,235,0,0,0,114,236,0,0,0,114,238,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,106,0,0,0,4,0,8,22,4,9,4,1, + 4,1,4,3,8,3,8,8,4,8,4,2,16,3,14,4, + 14,77,14,21,8,16,8,37,8,17,14,11,8,8,8,11, + 8,12,8,19,14,36,16,101,10,26,14,45,8,72,8,17, + 8,17,8,30,8,36,8,45,14,15,14,75,14,80,8,13, + 8,9,10,9,8,47,4,16,8,1,8,2,6,32,8,3, + 10,16,14,15,8,37,10,27,8,37,8,7,8,35,12,8, + 255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index e420ef86662a9..f420fa1faaa3d 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -229,9 +229,9 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 114,57,0,0,0,99,2,0,0,0,0,0,0,0,0,0, 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, 0,0,0,122,12,116,0,124,0,131,1,125,2,87,0,110, - 20,4,0,116,1,121,32,1,0,1,0,1,0,89,0,100, - 1,83,0,119,0,124,2,106,2,100,2,64,0,124,1,107, - 2,83,0,41,4,122,49,84,101,115,116,32,119,104,101,116, + 18,4,0,116,1,121,46,1,0,1,0,1,0,89,0,100, + 1,83,0,124,2,106,2,100,2,64,0,124,1,107,2,83, + 0,119,0,41,4,122,49,84,101,115,116,32,119,104,101,116, 104,101,114,32,116,104,101,32,112,97,116,104,32,105,115,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, 100,101,32,116,121,112,101,46,70,105,0,240,0,0,78,41, @@ -240,2430 +240,2433 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,111, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, 18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,116, - 121,112,101,122,0,0,0,115,12,0,0,0,2,2,12,1, - 12,1,8,1,14,1,255,128,114,61,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,100, - 1,131,2,83,0,41,3,122,31,82,101,112,108,97,99,101, - 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, - 46,105,115,102,105,108,101,46,105,0,128,0,0,78,41,1, - 114,61,0,0,0,114,56,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,12,95,112,97,116,104, - 95,105,115,102,105,108,101,131,0,0,0,115,4,0,0,0, - 10,2,255,128,114,62,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,22,0,0,0,124,0,115,12,116,0,160,1,161, - 0,125,0,116,2,124,0,100,1,131,2,83,0,41,3,122, - 30,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114, - 32,111,115,46,112,97,116,104,46,105,115,100,105,114,46,105, - 0,64,0,0,78,41,3,114,18,0,0,0,218,6,103,101, - 116,99,119,100,114,61,0,0,0,114,56,0,0,0,114,7, + 121,112,101,122,0,0,0,115,14,0,0,0,2,2,12,1, + 12,1,6,1,14,1,2,254,255,128,114,61,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,10,0,0,0,116,0,124, + 0,100,1,131,2,83,0,41,3,122,31,82,101,112,108,97, + 99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,97, + 116,104,46,105,115,102,105,108,101,46,105,0,128,0,0,78, + 41,1,114,61,0,0,0,114,56,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, + 116,104,95,105,115,102,105,108,101,131,0,0,0,115,4,0, + 0,0,10,2,255,128,114,62,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,22,0,0,0,124,0,115,12,116,0,160, + 1,161,0,125,0,116,2,124,0,100,1,131,2,83,0,41, + 3,122,30,82,101,112,108,97,99,101,109,101,110,116,32,102, + 111,114,32,111,115,46,112,97,116,104,46,105,115,100,105,114, + 46,105,0,64,0,0,78,41,3,114,18,0,0,0,218,6, + 103,101,116,99,119,100,114,61,0,0,0,114,56,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,95,112,97,116,104,95,105,115,100,105,114,136,0,0,0, + 115,8,0,0,0,4,2,8,1,10,1,255,128,114,64,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,0, + 124,0,160,0,116,1,161,1,112,24,124,0,100,1,100,2, + 133,2,25,0,116,2,118,0,83,0,41,4,122,142,82,101, + 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115, + 46,112,97,116,104,46,105,115,97,98,115,46,10,10,32,32, + 32,32,67,111,110,115,105,100,101,114,115,32,97,32,87,105, + 110,100,111,119,115,32,100,114,105,118,101,45,114,101,108,97, + 116,105,118,101,32,112,97,116,104,32,40,110,111,32,100,114, + 105,118,101,44,32,98,117,116,32,115,116,97,114,116,115,32, + 119,105,116,104,32,115,108,97,115,104,41,32,116,111,10,32, + 32,32,32,115,116,105,108,108,32,98,101,32,34,97,98,115, + 111,108,117,116,101,34,46,10,32,32,32,32,114,3,0,0, + 0,233,3,0,0,0,78,41,3,114,23,0,0,0,114,42, + 0,0,0,218,20,95,112,97,116,104,115,101,112,115,95,119, + 105,116,104,95,99,111,108,111,110,114,56,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,105,115,100,105,114,136,0,0,0,115,8, - 0,0,0,4,2,8,1,10,1,255,128,114,64,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,26,0,0,0,124,0, - 160,0,116,1,161,1,112,24,124,0,100,1,100,2,133,2, - 25,0,116,2,118,0,83,0,41,4,122,142,82,101,112,108, - 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, - 97,116,104,46,105,115,97,98,115,46,10,10,32,32,32,32, - 67,111,110,115,105,100,101,114,115,32,97,32,87,105,110,100, - 111,119,115,32,100,114,105,118,101,45,114,101,108,97,116,105, - 118,101,32,112,97,116,104,32,40,110,111,32,100,114,105,118, - 101,44,32,98,117,116,32,115,116,97,114,116,115,32,119,105, - 116,104,32,115,108,97,115,104,41,32,116,111,10,32,32,32, - 32,115,116,105,108,108,32,98,101,32,34,97,98,115,111,108, - 117,116,101,34,46,10,32,32,32,32,114,3,0,0,0,233, - 3,0,0,0,78,41,3,114,23,0,0,0,114,42,0,0, - 0,218,20,95,112,97,116,104,115,101,112,115,95,119,105,116, - 104,95,99,111,108,111,110,114,56,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,143,0,0,0,115,4,0,0, - 0,26,6,255,128,114,67,0,0,0,233,182,1,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 11,0,0,0,67,0,0,0,115,170,0,0,0,100,1,160, - 0,124,0,116,1,124,0,131,1,161,2,125,3,116,2,160, - 3,124,3,116,2,106,4,116,2,106,5,66,0,116,2,106, - 6,66,0,124,2,100,2,64,0,161,3,125,4,122,72,116, - 7,160,8,124,4,100,3,161,2,143,26,125,5,124,5,160, - 9,124,1,161,1,1,0,87,0,100,4,4,0,4,0,131, - 3,1,0,110,16,49,0,115,94,119,1,1,0,1,0,1, - 0,89,0,1,0,116,2,160,10,124,3,124,0,161,2,1, - 0,87,0,100,4,83,0,4,0,116,11,121,168,1,0,1, - 0,1,0,122,14,116,2,160,12,124,3,161,1,1,0,87, - 0,130,0,4,0,116,11,121,166,1,0,1,0,1,0,89, - 0,130,0,119,0,119,0,41,5,122,162,66,101,115,116,45, - 101,102,102,111,114,116,32,102,117,110,99,116,105,111,110,32, - 116,111,32,119,114,105,116,101,32,100,97,116,97,32,116,111, - 32,97,32,112,97,116,104,32,97,116,111,109,105,99,97,108, - 108,121,46,10,32,32,32,32,66,101,32,112,114,101,112,97, - 114,101,100,32,116,111,32,104,97,110,100,108,101,32,97,32, - 70,105,108,101,69,120,105,115,116,115,69,114,114,111,114,32, - 105,102,32,99,111,110,99,117,114,114,101,110,116,32,119,114, - 105,116,105,110,103,32,111,102,32,116,104,101,10,32,32,32, - 32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32, - 105,115,32,97,116,116,101,109,112,116,101,100,46,250,5,123, - 125,46,123,125,114,68,0,0,0,90,2,119,98,78,41,13, - 218,6,102,111,114,109,97,116,218,2,105,100,114,18,0,0, - 0,90,4,111,112,101,110,90,6,79,95,69,88,67,76,90, - 7,79,95,67,82,69,65,84,90,8,79,95,87,82,79,78, - 76,89,218,3,95,105,111,218,6,70,105,108,101,73,79,218, - 5,119,114,105,116,101,218,7,114,101,112,108,97,99,101,114, - 58,0,0,0,90,6,117,110,108,105,110,107,41,6,114,52, - 0,0,0,114,37,0,0,0,114,60,0,0,0,90,8,112, - 97,116,104,95,116,109,112,90,2,102,100,218,4,102,105,108, + 112,97,116,104,95,105,115,97,98,115,143,0,0,0,115,4, + 0,0,0,26,6,255,128,114,67,0,0,0,233,182,1,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,11,0,0,0,67,0,0,0,115,174,0,0,0,100, + 1,160,0,124,0,116,1,124,0,131,1,161,2,125,3,116, + 2,160,3,124,3,116,2,106,4,116,2,106,5,66,0,116, + 2,106,6,66,0,124,2,100,2,64,0,161,3,125,4,122, + 72,116,7,160,8,124,4,100,3,161,2,143,26,125,5,124, + 5,160,9,124,1,161,1,1,0,87,0,100,4,4,0,4, + 0,131,3,1,0,110,16,49,0,115,94,119,1,1,0,1, + 0,1,0,89,0,1,0,116,2,160,10,124,3,124,0,161, + 2,1,0,87,0,100,4,83,0,4,0,116,11,121,172,1, + 0,1,0,1,0,122,14,116,2,160,12,124,3,161,1,1, + 0,87,0,130,0,4,0,116,11,121,166,1,0,1,0,1, + 0,89,0,130,0,119,0,100,4,83,0,119,0,41,5,122, + 162,66,101,115,116,45,101,102,102,111,114,116,32,102,117,110, + 99,116,105,111,110,32,116,111,32,119,114,105,116,101,32,100, + 97,116,97,32,116,111,32,97,32,112,97,116,104,32,97,116, + 111,109,105,99,97,108,108,121,46,10,32,32,32,32,66,101, + 32,112,114,101,112,97,114,101,100,32,116,111,32,104,97,110, + 100,108,101,32,97,32,70,105,108,101,69,120,105,115,116,115, + 69,114,114,111,114,32,105,102,32,99,111,110,99,117,114,114, + 101,110,116,32,119,114,105,116,105,110,103,32,111,102,32,116, + 104,101,10,32,32,32,32,116,101,109,112,111,114,97,114,121, + 32,102,105,108,101,32,105,115,32,97,116,116,101,109,112,116, + 101,100,46,250,5,123,125,46,123,125,114,68,0,0,0,90, + 2,119,98,78,41,13,218,6,102,111,114,109,97,116,218,2, + 105,100,114,18,0,0,0,90,4,111,112,101,110,90,6,79, + 95,69,88,67,76,90,7,79,95,67,82,69,65,84,90,8, + 79,95,87,82,79,78,76,89,218,3,95,105,111,218,6,70, + 105,108,101,73,79,218,5,119,114,105,116,101,218,7,114,101, + 112,108,97,99,101,114,58,0,0,0,90,6,117,110,108,105, + 110,107,41,6,114,52,0,0,0,114,37,0,0,0,114,60, + 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, + 100,218,4,102,105,108,101,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,13,95,119,114,105,116,101,95,97, + 116,111,109,105,99,152,0,0,0,115,38,0,0,0,16,5, + 6,1,22,1,4,255,2,2,14,3,40,1,18,1,12,1, + 2,1,12,1,2,3,12,254,2,1,2,1,2,254,4,252, + 2,1,255,128,114,77,0,0,0,105,105,13,0,0,114,39, + 0,0,0,114,29,0,0,0,115,2,0,0,0,13,10,90, + 11,95,95,112,121,99,97,99,104,101,95,95,122,4,111,112, + 116,45,122,3,46,112,121,122,4,46,112,121,119,122,4,46, + 112,121,99,41,1,218,12,111,112,116,105,109,105,122,97,116, + 105,111,110,99,2,0,0,0,0,0,0,0,1,0,0,0, + 12,0,0,0,5,0,0,0,67,0,0,0,115,88,1,0, + 0,124,1,100,1,117,1,114,52,116,0,160,1,100,2,116, + 2,161,2,1,0,124,2,100,1,117,1,114,40,100,3,125, + 3,116,3,124,3,131,1,130,1,124,1,114,48,100,4,110, + 2,100,5,125,2,116,4,160,5,124,0,161,1,125,0,116, + 6,124,0,131,1,92,2,125,4,125,5,124,5,160,7,100, + 6,161,1,92,3,125,6,125,7,125,8,116,8,106,9,106, + 10,125,9,124,9,100,1,117,0,114,114,116,11,100,7,131, + 1,130,1,100,4,160,12,124,6,114,126,124,6,110,2,124, + 8,124,7,124,9,103,3,161,1,125,10,124,2,100,1,117, + 0,114,172,116,8,106,13,106,14,100,8,107,2,114,164,100, + 4,125,2,110,8,116,8,106,13,106,14,125,2,116,15,124, + 2,131,1,125,2,124,2,100,4,107,3,114,224,124,2,160, + 16,161,0,115,210,116,17,100,9,160,18,124,2,161,1,131, + 1,130,1,100,10,160,18,124,10,116,19,124,2,161,3,125, + 10,124,10,116,20,100,8,25,0,23,0,125,11,116,8,106, + 21,100,1,117,1,144,1,114,76,116,22,124,4,131,1,144, + 1,115,16,116,23,116,4,160,24,161,0,124,4,131,2,125, + 4,124,4,100,5,25,0,100,11,107,2,144,1,114,56,124, + 4,100,8,25,0,116,25,118,1,144,1,114,56,124,4,100, + 12,100,1,133,2,25,0,125,4,116,23,116,8,106,21,124, + 4,160,26,116,25,161,1,124,11,131,3,83,0,116,23,124, + 4,116,27,124,11,131,3,83,0,41,13,97,254,2,0,0, + 71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,116, + 111,32,97,32,46,112,121,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, + 32,105,116,115,32,46,112,121,99,32,102,105,108,101,46,10, + 10,32,32,32,32,84,104,101,32,46,112,121,32,102,105,108, + 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, + 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, + 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, + 101,32,112,97,116,104,32,116,111,32,116,104,101,10,32,32, + 32,32,46,112,121,99,32,102,105,108,101,32,99,97,108,99, + 117,108,97,116,101,100,32,97,115,32,105,102,32,116,104,101, + 32,46,112,121,32,102,105,108,101,32,119,101,114,101,32,105, + 109,112,111,114,116,101,100,46,10,10,32,32,32,32,84,104, + 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, + 32,112,97,114,97,109,101,116,101,114,32,99,111,110,116,114, + 111,108,115,32,116,104,101,32,112,114,101,115,117,109,101,100, + 32,111,112,116,105,109,105,122,97,116,105,111,110,32,108,101, + 118,101,108,32,111,102,10,32,32,32,32,116,104,101,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,46,32,73,102, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 105,115,32,110,111,116,32,78,111,110,101,44,32,116,104,101, + 32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,110, + 116,97,116,105,111,110,10,32,32,32,32,111,102,32,116,104, + 101,32,97,114,103,117,109,101,110,116,32,105,115,32,116,97, + 107,101,110,32,97,110,100,32,118,101,114,105,102,105,101,100, + 32,116,111,32,98,101,32,97,108,112,104,97,110,117,109,101, + 114,105,99,32,40,101,108,115,101,32,86,97,108,117,101,69, + 114,114,111,114,10,32,32,32,32,105,115,32,114,97,105,115, + 101,100,41,46,10,10,32,32,32,32,84,104,101,32,100,101, + 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114, + 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,32,73,102,32,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,32,105,115,32,110,111,116,32,78, + 111,110,101,44,10,32,32,32,32,97,32,84,114,117,101,32, + 118,97,108,117,101,32,105,115,32,116,104,101,32,115,97,109, + 101,32,97,115,32,115,101,116,116,105,110,103,32,39,111,112, + 116,105,109,105,122,97,116,105,111,110,39,32,116,111,32,116, + 104,101,32,101,109,112,116,121,32,115,116,114,105,110,103,10, + 32,32,32,32,119,104,105,108,101,32,97,32,70,97,108,115, + 101,32,118,97,108,117,101,32,105,115,32,101,113,117,105,118, + 97,108,101,110,116,32,116,111,32,115,101,116,116,105,110,103, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 116,111,32,39,49,39,46,10,10,32,32,32,32,73,102,32, + 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, + 78,111,110,101,32,116,104,101,110,32,78,111,116,73,109,112, + 108,101,109,101,110,116,101,100,69,114,114,111,114,32,105,115, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,122, + 70,116,104,101,32,100,101,98,117,103,95,111,118,101,114,114, + 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,59,32,117,115,101, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 105,110,115,116,101,97,100,122,50,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,32,111,114,32,111,112,116,105,109, + 105,122,97,116,105,111,110,32,109,117,115,116,32,98,101,32, + 115,101,116,32,116,111,32,78,111,110,101,114,10,0,0,0, + 114,3,0,0,0,218,1,46,250,36,115,121,115,46,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,46,99,97,99, + 104,101,95,116,97,103,32,105,115,32,78,111,110,101,114,0, + 0,0,0,122,24,123,33,114,125,32,105,115,32,110,111,116, + 32,97,108,112,104,97,110,117,109,101,114,105,99,122,7,123, + 125,46,123,125,123,125,114,11,0,0,0,114,39,0,0,0, + 41,28,218,9,95,119,97,114,110,105,110,103,115,218,4,119, + 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, + 87,97,114,110,105,110,103,218,9,84,121,112,101,69,114,114, + 111,114,114,18,0,0,0,218,6,102,115,112,97,116,104,114, + 55,0,0,0,114,49,0,0,0,114,15,0,0,0,218,14, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9, + 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109, + 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,46, + 0,0,0,114,16,0,0,0,218,8,111,112,116,105,109,105, + 122,101,218,3,115,116,114,218,7,105,115,97,108,110,117,109, + 218,10,86,97,108,117,101,69,114,114,111,114,114,70,0,0, + 0,218,4,95,79,80,84,218,17,66,89,84,69,67,79,68, + 69,95,83,85,70,70,73,88,69,83,218,14,112,121,99,97, + 99,104,101,95,112,114,101,102,105,120,114,67,0,0,0,114, + 48,0,0,0,114,63,0,0,0,114,42,0,0,0,218,6, + 108,115,116,114,105,112,218,8,95,80,89,67,65,67,72,69, + 41,12,114,52,0,0,0,90,14,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,114,78,0,0,0,218,7,109,101, + 115,115,97,103,101,218,4,104,101,97,100,114,54,0,0,0, + 90,4,98,97,115,101,114,6,0,0,0,218,4,114,101,115, + 116,90,3,116,97,103,90,15,97,108,109,111,115,116,95,102, + 105,108,101,110,97,109,101,218,8,102,105,108,101,110,97,109, 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,13,95,119,114,105,116,101,95,97,116,111,109,105,99,152, - 0,0,0,115,36,0,0,0,16,5,6,1,22,1,4,255, - 2,2,14,3,40,1,18,1,12,1,2,1,12,1,2,3, - 12,254,2,1,2,1,2,255,2,1,255,128,114,77,0,0, - 0,105,105,13,0,0,114,39,0,0,0,114,29,0,0,0, - 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, - 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, - 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, - 112,116,105,109,105,122,97,116,105,111,110,99,2,0,0,0, - 0,0,0,0,1,0,0,0,12,0,0,0,5,0,0,0, - 67,0,0,0,115,88,1,0,0,124,1,100,1,117,1,114, - 52,116,0,160,1,100,2,116,2,161,2,1,0,124,2,100, - 1,117,1,114,40,100,3,125,3,116,3,124,3,131,1,130, - 1,124,1,114,48,100,4,110,2,100,5,125,2,116,4,160, + 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, + 114,99,101,85,1,0,0,115,74,0,0,0,8,18,6,1, + 2,1,4,255,8,2,4,1,8,1,12,1,10,1,12,1, + 16,1,8,1,8,1,8,1,24,1,8,1,12,1,6,1, + 8,2,8,1,8,1,8,1,14,1,14,1,12,1,12,1, + 10,9,14,1,28,5,12,1,2,4,4,1,8,1,2,1, + 4,253,12,5,255,128,114,102,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, + 67,0,0,0,115,44,1,0,0,116,0,106,1,106,2,100, + 1,117,0,114,20,116,3,100,2,131,1,130,1,116,4,160, 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, - 4,125,5,124,5,160,7,100,6,161,1,92,3,125,6,125, - 7,125,8,116,8,106,9,106,10,125,9,124,9,100,1,117, - 0,114,114,116,11,100,7,131,1,130,1,100,4,160,12,124, - 6,114,126,124,6,110,2,124,8,124,7,124,9,103,3,161, - 1,125,10,124,2,100,1,117,0,114,172,116,8,106,13,106, - 14,100,8,107,2,114,164,100,4,125,2,110,8,116,8,106, - 13,106,14,125,2,116,15,124,2,131,1,125,2,124,2,100, - 4,107,3,114,224,124,2,160,16,161,0,115,210,116,17,100, - 9,160,18,124,2,161,1,131,1,130,1,100,10,160,18,124, - 10,116,19,124,2,161,3,125,10,124,10,116,20,100,8,25, - 0,23,0,125,11,116,8,106,21,100,1,117,1,144,1,114, - 76,116,22,124,4,131,1,144,1,115,16,116,23,116,4,160, - 24,161,0,124,4,131,2,125,4,124,4,100,5,25,0,100, - 11,107,2,144,1,114,56,124,4,100,8,25,0,116,25,118, - 1,144,1,114,56,124,4,100,12,100,1,133,2,25,0,125, - 4,116,23,116,8,106,21,124,4,160,26,116,25,161,1,124, - 11,131,3,83,0,116,23,124,4,116,27,124,11,131,3,83, - 0,41,13,97,254,2,0,0,71,105,118,101,110,32,116,104, - 101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,32, - 102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,101, - 32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,121, - 99,32,102,105,108,101,46,10,10,32,32,32,32,84,104,101, - 32,46,112,121,32,102,105,108,101,32,100,111,101,115,32,110, - 111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,116, - 59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,101, - 116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,116, - 111,32,116,104,101,10,32,32,32,32,46,112,121,99,32,102, - 105,108,101,32,99,97,108,99,117,108,97,116,101,100,32,97, - 115,32,105,102,32,116,104,101,32,46,112,121,32,102,105,108, - 101,32,119,101,114,101,32,105,109,112,111,114,116,101,100,46, - 10,10,32,32,32,32,84,104,101,32,39,111,112,116,105,109, - 105,122,97,116,105,111,110,39,32,112,97,114,97,109,101,116, - 101,114,32,99,111,110,116,114,111,108,115,32,116,104,101,32, - 112,114,101,115,117,109,101,100,32,111,112,116,105,109,105,122, - 97,116,105,111,110,32,108,101,118,101,108,32,111,102,10,32, - 32,32,32,116,104,101,32,98,121,116,101,99,111,100,101,32, - 102,105,108,101,46,32,73,102,32,39,111,112,116,105,109,105, - 122,97,116,105,111,110,39,32,105,115,32,110,111,116,32,78, - 111,110,101,44,32,116,104,101,32,115,116,114,105,110,103,32, - 114,101,112,114,101,115,101,110,116,97,116,105,111,110,10,32, - 32,32,32,111,102,32,116,104,101,32,97,114,103,117,109,101, - 110,116,32,105,115,32,116,97,107,101,110,32,97,110,100,32, - 118,101,114,105,102,105,101,100,32,116,111,32,98,101,32,97, - 108,112,104,97,110,117,109,101,114,105,99,32,40,101,108,115, - 101,32,86,97,108,117,101,69,114,114,111,114,10,32,32,32, - 32,105,115,32,114,97,105,115,101,100,41,46,10,10,32,32, - 32,32,84,104,101,32,100,101,98,117,103,95,111,118,101,114, - 114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,73,102, - 32,100,101,98,117,103,95,111,118,101,114,114,105,100,101,32, - 105,115,32,110,111,116,32,78,111,110,101,44,10,32,32,32, - 32,97,32,84,114,117,101,32,118,97,108,117,101,32,105,115, - 32,116,104,101,32,115,97,109,101,32,97,115,32,115,101,116, - 116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,105, - 111,110,39,32,116,111,32,116,104,101,32,101,109,112,116,121, - 32,115,116,114,105,110,103,10,32,32,32,32,119,104,105,108, - 101,32,97,32,70,97,108,115,101,32,118,97,108,117,101,32, - 105,115,32,101,113,117,105,118,97,108,101,110,116,32,116,111, - 32,115,101,116,116,105,110,103,32,39,111,112,116,105,109,105, - 122,97,116,105,111,110,39,32,116,111,32,39,49,39,46,10, - 10,32,32,32,32,73,102,32,115,121,115,46,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,46,99,97,99,104,101, - 95,116,97,103,32,105,115,32,78,111,110,101,32,116,104,101, - 110,32,78,111,116,73,109,112,108,101,109,101,110,116,101,100, - 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,46, - 10,10,32,32,32,32,78,122,70,116,104,101,32,100,101,98, - 117,103,95,111,118,101,114,114,105,100,101,32,112,97,114,97, - 109,101,116,101,114,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,59,32,117,115,101,32,39,111,112,116,105,109,105, - 122,97,116,105,111,110,39,32,105,110,115,116,101,97,100,122, - 50,100,101,98,117,103,95,111,118,101,114,114,105,100,101,32, - 111,114,32,111,112,116,105,109,105,122,97,116,105,111,110,32, - 109,117,115,116,32,98,101,32,115,101,116,32,116,111,32,78, - 111,110,101,114,10,0,0,0,114,3,0,0,0,218,1,46, - 250,36,115,121,115,46,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,46,99,97,99,104,101,95,116,97,103,32,105, - 115,32,78,111,110,101,114,0,0,0,0,122,24,123,33,114, - 125,32,105,115,32,110,111,116,32,97,108,112,104,97,110,117, - 109,101,114,105,99,122,7,123,125,46,123,125,123,125,114,11, - 0,0,0,114,39,0,0,0,41,28,218,9,95,119,97,114, - 110,105,110,103,115,218,4,119,97,114,110,218,18,68,101,112, - 114,101,99,97,116,105,111,110,87,97,114,110,105,110,103,218, - 9,84,121,112,101,69,114,114,111,114,114,18,0,0,0,218, - 6,102,115,112,97,116,104,114,55,0,0,0,114,49,0,0, - 0,114,15,0,0,0,218,14,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,218,9,99,97,99,104,101,95,116,97, - 103,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, - 100,69,114,114,111,114,114,46,0,0,0,114,16,0,0,0, - 218,8,111,112,116,105,109,105,122,101,218,3,115,116,114,218, - 7,105,115,97,108,110,117,109,218,10,86,97,108,117,101,69, - 114,114,111,114,114,70,0,0,0,218,4,95,79,80,84,218, - 17,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, - 69,83,218,14,112,121,99,97,99,104,101,95,112,114,101,102, - 105,120,114,67,0,0,0,114,48,0,0,0,114,63,0,0, - 0,114,42,0,0,0,218,6,108,115,116,114,105,112,218,8, - 95,80,89,67,65,67,72,69,41,12,114,52,0,0,0,90, - 14,100,101,98,117,103,95,111,118,101,114,114,105,100,101,114, - 78,0,0,0,218,7,109,101,115,115,97,103,101,218,4,104, - 101,97,100,114,54,0,0,0,90,4,98,97,115,101,114,6, - 0,0,0,218,4,114,101,115,116,90,3,116,97,103,90,15, - 97,108,109,111,115,116,95,102,105,108,101,110,97,109,101,218, - 8,102,105,108,101,110,97,109,101,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,17,99,97,99,104,101,95, - 102,114,111,109,95,115,111,117,114,99,101,85,1,0,0,115, - 74,0,0,0,8,18,6,1,2,1,4,255,8,2,4,1, - 8,1,12,1,10,1,12,1,16,1,8,1,8,1,8,1, - 24,1,8,1,12,1,6,1,8,2,8,1,8,1,8,1, - 14,1,14,1,12,1,12,1,10,9,14,1,28,5,12,1, - 2,4,4,1,8,1,2,1,4,253,12,5,255,128,114,102, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 10,0,0,0,5,0,0,0,67,0,0,0,115,44,1,0, - 0,116,0,106,1,106,2,100,1,117,0,114,20,116,3,100, - 2,131,1,130,1,116,4,160,5,124,0,161,1,125,0,116, - 6,124,0,131,1,92,2,125,1,125,2,100,3,125,3,116, - 0,106,7,100,1,117,1,114,102,116,0,106,7,160,8,116, - 9,161,1,125,4,124,1,160,10,124,4,116,11,23,0,161, - 1,114,102,124,1,116,12,124,4,131,1,100,1,133,2,25, - 0,125,1,100,4,125,3,124,3,115,144,116,6,124,1,131, - 1,92,2,125,1,125,5,124,5,116,13,107,3,114,144,116, - 14,116,13,155,0,100,5,124,0,155,2,157,3,131,1,130, - 1,124,2,160,15,100,6,161,1,125,6,124,6,100,7,118, - 1,114,176,116,14,100,8,124,2,155,2,157,2,131,1,130, - 1,124,6,100,9,107,2,144,1,114,12,124,2,160,16,100, - 6,100,10,161,2,100,11,25,0,125,7,124,7,160,10,116, - 17,161,1,115,226,116,14,100,12,116,17,155,2,157,2,131, - 1,130,1,124,7,116,12,116,17,131,1,100,1,133,2,25, - 0,125,8,124,8,160,18,161,0,144,1,115,12,116,14,100, - 13,124,7,155,2,100,14,157,3,131,1,130,1,124,2,160, - 19,100,6,161,1,100,15,25,0,125,9,116,20,124,1,124, - 9,116,21,100,15,25,0,23,0,131,2,83,0,41,16,97, - 110,1,0,0,71,105,118,101,110,32,116,104,101,32,112,97, - 116,104,32,116,111,32,97,32,46,112,121,99,46,32,102,105, - 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, - 97,116,104,32,116,111,32,105,116,115,32,46,112,121,32,102, - 105,108,101,46,10,10,32,32,32,32,84,104,101,32,46,112, - 121,99,32,102,105,108,101,32,100,111,101,115,32,110,111,116, - 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, - 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, - 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,10, - 32,32,32,32,116,104,101,32,46,112,121,32,102,105,108,101, - 32,99,97,108,99,117,108,97,116,101,100,32,116,111,32,99, - 111,114,114,101,115,112,111,110,100,32,116,111,32,116,104,101, - 32,46,112,121,99,32,102,105,108,101,46,32,32,73,102,32, - 112,97,116,104,32,100,111,101,115,10,32,32,32,32,110,111, - 116,32,99,111,110,102,111,114,109,32,116,111,32,80,69,80, - 32,51,49,52,55,47,52,56,56,32,102,111,114,109,97,116, - 44,32,86,97,108,117,101,69,114,114,111,114,32,119,105,108, - 108,32,98,101,32,114,97,105,115,101,100,46,32,73,102,10, - 32,32,32,32,115,121,115,46,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, - 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, - 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, - 32,32,78,114,80,0,0,0,70,84,122,31,32,110,111,116, - 32,98,111,116,116,111,109,45,108,101,118,101,108,32,100,105, - 114,101,99,116,111,114,121,32,105,110,32,114,79,0,0,0, - 62,2,0,0,0,114,39,0,0,0,114,65,0,0,0,122, - 29,101,120,112,101,99,116,101,100,32,111,110,108,121,32,50, - 32,111,114,32,51,32,100,111,116,115,32,105,110,32,114,65, - 0,0,0,114,39,0,0,0,233,254,255,255,255,122,53,111, - 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116, - 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32, - 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119, - 105,116,104,32,122,19,111,112,116,105,109,105,122,97,116,105, - 111,110,32,108,101,118,101,108,32,122,29,32,105,115,32,110, - 111,116,32,97,110,32,97,108,112,104,97,110,117,109,101,114, - 105,99,32,118,97,108,117,101,114,0,0,0,0,41,22,114, - 15,0,0,0,114,86,0,0,0,114,87,0,0,0,114,88, - 0,0,0,114,18,0,0,0,114,85,0,0,0,114,55,0, - 0,0,114,95,0,0,0,114,41,0,0,0,114,42,0,0, - 0,114,23,0,0,0,114,45,0,0,0,114,4,0,0,0, - 114,97,0,0,0,114,92,0,0,0,218,5,99,111,117,110, - 116,114,51,0,0,0,114,93,0,0,0,114,91,0,0,0, - 218,9,112,97,114,116,105,116,105,111,110,114,48,0,0,0, - 218,15,83,79,85,82,67,69,95,83,85,70,70,73,88,69, - 83,41,10,114,52,0,0,0,114,99,0,0,0,90,16,112, - 121,99,97,99,104,101,95,102,105,108,101,110,97,109,101,90, - 23,102,111,117,110,100,95,105,110,95,112,121,99,97,99,104, - 101,95,112,114,101,102,105,120,90,13,115,116,114,105,112,112, - 101,100,95,112,97,116,104,90,7,112,121,99,97,99,104,101, - 90,9,100,111,116,95,99,111,117,110,116,114,78,0,0,0, - 90,9,111,112,116,95,108,101,118,101,108,90,13,98,97,115, - 101,95,102,105,108,101,110,97,109,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,115,111,117,114,99, - 101,95,102,114,111,109,95,99,97,99,104,101,156,1,0,0, - 115,62,0,0,0,12,9,8,1,10,1,12,1,4,1,10, - 1,12,1,14,1,16,1,4,1,4,1,12,1,8,1,8, - 1,2,1,8,255,10,2,8,1,14,1,10,1,16,1,10, - 1,4,1,2,1,8,255,16,2,10,1,16,1,14,2,18, - 1,255,128,114,107,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,9,0,0,0,67,0,0, - 0,115,124,0,0,0,116,0,124,0,131,1,100,1,107,2, - 114,16,100,2,83,0,124,0,160,1,100,3,161,1,92,3, - 125,1,125,2,125,3,124,1,114,56,124,3,160,2,161,0, - 100,4,100,5,133,2,25,0,100,6,107,3,114,60,124,0, - 83,0,122,12,116,3,124,0,131,1,125,4,87,0,110,34, - 4,0,116,4,116,5,102,2,121,106,1,0,1,0,1,0, - 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,2, - 119,0,116,6,124,4,131,1,114,120,124,4,83,0,124,0, - 83,0,41,7,122,188,67,111,110,118,101,114,116,32,97,32, - 98,121,116,101,99,111,100,101,32,102,105,108,101,32,112,97, - 116,104,32,116,111,32,97,32,115,111,117,114,99,101,32,112, - 97,116,104,32,40,105,102,32,112,111,115,115,105,98,108,101, - 41,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, - 99,116,105,111,110,32,101,120,105,115,116,115,32,112,117,114, - 101,108,121,32,102,111,114,32,98,97,99,107,119,97,114,100, - 115,45,99,111,109,112,97,116,105,98,105,108,105,116,121,32, - 102,111,114,10,32,32,32,32,80,121,73,109,112,111,114,116, - 95,69,120,101,99,67,111,100,101,77,111,100,117,108,101,87, - 105,116,104,70,105,108,101,110,97,109,101,115,40,41,32,105, - 110,32,116,104,101,32,67,32,65,80,73,46,10,10,32,32, - 32,32,114,0,0,0,0,78,114,79,0,0,0,233,253,255, - 255,255,233,255,255,255,255,90,2,112,121,41,7,114,4,0, - 0,0,114,49,0,0,0,218,5,108,111,119,101,114,114,107, - 0,0,0,114,88,0,0,0,114,92,0,0,0,114,62,0, - 0,0,41,5,218,13,98,121,116,101,99,111,100,101,95,112, - 97,116,104,114,100,0,0,0,114,53,0,0,0,90,9,101, - 120,116,101,110,115,105,111,110,218,11,115,111,117,114,99,101, - 95,112,97,116,104,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, - 101,102,105,108,101,196,1,0,0,115,22,0,0,0,12,7, - 4,1,16,1,24,1,4,1,2,1,12,1,16,1,18,1, - 16,1,255,128,114,113,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,8,0,0,0,67,0, - 0,0,115,68,0,0,0,124,0,160,0,116,1,116,2,131, - 1,161,1,114,46,122,10,116,3,124,0,131,1,87,0,83, - 0,4,0,116,4,121,44,1,0,1,0,1,0,89,0,100, - 0,83,0,119,0,124,0,160,0,116,1,116,5,131,1,161, - 1,114,64,124,0,83,0,100,0,83,0,169,1,78,41,6, - 218,8,101,110,100,115,119,105,116,104,218,5,116,117,112,108, - 101,114,106,0,0,0,114,102,0,0,0,114,88,0,0,0, - 114,94,0,0,0,41,1,114,101,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,215,1,0,0,115,18,0,0, - 0,14,1,2,1,10,1,12,1,8,1,14,1,4,1,4, - 2,255,128,114,117,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, - 0,115,50,0,0,0,122,14,116,0,124,0,131,1,106,1, - 125,1,87,0,110,22,4,0,116,2,121,36,1,0,1,0, - 1,0,100,1,125,1,89,0,110,2,119,0,124,1,100,2, - 79,0,125,1,124,1,83,0,41,4,122,51,67,97,108,99, - 117,108,97,116,101,32,116,104,101,32,109,111,100,101,32,112, - 101,114,109,105,115,115,105,111,110,115,32,102,111,114,32,97, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,46,114, - 68,0,0,0,233,128,0,0,0,78,41,3,114,57,0,0, - 0,114,59,0,0,0,114,58,0,0,0,41,2,114,52,0, - 0,0,114,60,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,10,95,99,97,108,99,95,109,111, - 100,101,227,1,0,0,115,14,0,0,0,2,2,14,1,12, - 1,10,1,8,3,4,1,255,128,114,119,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, - 0,0,0,3,0,0,0,115,52,0,0,0,100,6,135,0, - 102,1,100,2,100,3,132,9,125,1,116,0,100,1,117,1, - 114,30,116,0,106,1,125,2,110,8,100,4,100,5,132,0, - 125,2,124,2,124,1,136,0,131,2,1,0,124,1,83,0, - 41,7,122,252,68,101,99,111,114,97,116,111,114,32,116,111, - 32,118,101,114,105,102,121,32,116,104,97,116,32,116,104,101, - 32,109,111,100,117,108,101,32,98,101,105,110,103,32,114,101, - 113,117,101,115,116,101,100,32,109,97,116,99,104,101,115,32, - 116,104,101,32,111,110,101,32,116,104,101,10,32,32,32,32, - 108,111,97,100,101,114,32,99,97,110,32,104,97,110,100,108, - 101,46,10,10,32,32,32,32,84,104,101,32,102,105,114,115, - 116,32,97,114,103,117,109,101,110,116,32,40,115,101,108,102, - 41,32,109,117,115,116,32,100,101,102,105,110,101,32,95,110, - 97,109,101,32,119,104,105,99,104,32,116,104,101,32,115,101, - 99,111,110,100,32,97,114,103,117,109,101,110,116,32,105,115, - 10,32,32,32,32,99,111,109,112,97,114,101,100,32,97,103, - 97,105,110,115,116,46,32,73,102,32,116,104,101,32,99,111, - 109,112,97,114,105,115,111,110,32,102,97,105,108,115,32,116, - 104,101,110,32,73,109,112,111,114,116,69,114,114,111,114,32, - 105,115,32,114,97,105,115,101,100,46,10,10,32,32,32,32, - 78,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,31,0,0,0,115,72,0,0,0,124, - 1,100,0,117,0,114,16,124,0,106,0,125,1,110,32,124, - 0,106,0,124,1,107,3,114,48,116,1,100,1,124,0,106, - 0,124,1,102,2,22,0,124,1,100,2,141,2,130,1,136, - 0,124,0,124,1,103,2,124,2,162,1,82,0,105,0,124, - 3,164,1,142,1,83,0,41,3,78,122,30,108,111,97,100, - 101,114,32,102,111,114,32,37,115,32,99,97,110,110,111,116, - 32,104,97,110,100,108,101,32,37,115,169,1,218,4,110,97, - 109,101,41,2,114,121,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,121, - 0,0,0,218,4,97,114,103,115,218,6,107,119,97,114,103, - 115,169,1,218,6,109,101,116,104,111,100,114,7,0,0,0, - 114,8,0,0,0,218,19,95,99,104,101,99,107,95,110,97, - 109,101,95,119,114,97,112,112,101,114,247,1,0,0,115,20, - 0,0,0,8,1,8,1,10,1,4,1,8,1,2,255,2, - 1,6,255,24,2,255,128,122,40,95,99,104,101,99,107,95, - 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99, - 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, - 114,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,7,0,0,0,83,0,0,0,115,56,0,0,0,100, - 1,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, - 4,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, - 3,1,0,113,4,124,0,106,3,160,4,124,1,106,3,161, - 1,1,0,100,0,83,0,41,2,78,41,4,218,10,95,95, - 109,111,100,117,108,101,95,95,218,8,95,95,110,97,109,101, - 95,95,218,12,95,95,113,117,97,108,110,97,109,101,95,95, - 218,7,95,95,100,111,99,95,95,41,5,218,7,104,97,115, - 97,116,116,114,218,7,115,101,116,97,116,116,114,218,7,103, - 101,116,97,116,116,114,218,8,95,95,100,105,99,116,95,95, - 218,6,117,112,100,97,116,101,41,3,90,3,110,101,119,90, - 3,111,108,100,114,75,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,5,95,119,114,97,112,4, - 2,0,0,115,12,0,0,0,8,1,10,1,18,1,2,128, - 18,1,255,128,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,2,218,10,95,98,111,111,116,115,116,114,97, - 112,114,138,0,0,0,41,3,114,127,0,0,0,114,128,0, - 0,0,114,138,0,0,0,114,7,0,0,0,114,126,0,0, - 0,114,8,0,0,0,218,11,95,99,104,101,99,107,95,110, - 97,109,101,239,1,0,0,115,14,0,0,0,14,8,8,10, - 8,1,8,2,10,6,4,1,255,128,114,140,0,0,0,99, - 2,0,0,0,0,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,117, - 0,114,56,116,1,124,3,131,1,114,56,100,2,125,4,116, - 2,160,3,124,4,160,4,124,3,100,3,25,0,161,1,116, - 5,161,2,1,0,124,2,83,0,41,4,122,155,84,114,121, - 32,116,111,32,102,105,110,100,32,97,32,108,111,97,100,101, - 114,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,32,98,121,32,100,101, - 108,101,103,97,116,105,110,103,32,116,111,10,32,32,32,32, - 115,101,108,102,46,102,105,110,100,95,108,111,97,100,101,114, - 40,41,46,10,10,32,32,32,32,84,104,105,115,32,109,101, - 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,32,105,110,32,102,97,118,111,114,32,111,102,32,102, - 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,40, - 41,46,10,10,32,32,32,32,78,122,44,78,111,116,32,105, - 109,112,111,114,116,105,110,103,32,100,105,114,101,99,116,111, - 114,121,32,123,125,58,32,109,105,115,115,105,110,103,32,95, - 95,105,110,105,116,95,95,114,0,0,0,0,41,6,218,11, - 102,105,110,100,95,108,111,97,100,101,114,114,4,0,0,0, - 114,81,0,0,0,114,82,0,0,0,114,70,0,0,0,218, - 13,73,109,112,111,114,116,87,97,114,110,105,110,103,41,5, - 114,123,0,0,0,218,8,102,117,108,108,110,97,109,101,218, - 6,108,111,97,100,101,114,218,8,112,111,114,116,105,111,110, - 115,218,3,109,115,103,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,17,95,102,105,110,100,95,109,111,100, - 117,108,101,95,115,104,105,109,14,2,0,0,115,12,0,0, - 0,14,10,16,1,4,1,22,1,4,1,255,128,114,147,0, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,4,0,0,0,67,0,0,0,115,166,0,0,0, - 124,0,100,1,100,2,133,2,25,0,125,3,124,3,116,0, - 107,3,114,64,100,3,124,1,155,2,100,4,124,3,155,2, - 157,4,125,4,116,1,160,2,100,5,124,4,161,2,1,0, - 116,3,124,4,102,1,105,0,124,2,164,1,142,1,130,1, - 116,4,124,0,131,1,100,6,107,0,114,106,100,7,124,1, - 155,2,157,2,125,4,116,1,160,2,100,5,124,4,161,2, - 1,0,116,5,124,4,131,1,130,1,116,6,124,0,100,2, - 100,8,133,2,25,0,131,1,125,5,124,5,100,9,64,0, - 114,162,100,10,124,5,155,2,100,11,124,1,155,2,157,4, - 125,4,116,3,124,4,102,1,105,0,124,2,164,1,142,1, - 130,1,124,5,83,0,41,12,97,84,2,0,0,80,101,114, - 102,111,114,109,32,98,97,115,105,99,32,118,97,108,105,100, - 105,116,121,32,99,104,101,99,107,105,110,103,32,111,102,32, - 97,32,112,121,99,32,104,101,97,100,101,114,32,97,110,100, - 32,114,101,116,117,114,110,32,116,104,101,32,102,108,97,103, - 115,32,102,105,101,108,100,44,10,32,32,32,32,119,104,105, - 99,104,32,100,101,116,101,114,109,105,110,101,115,32,104,111, - 119,32,116,104,101,32,112,121,99,32,115,104,111,117,108,100, - 32,98,101,32,102,117,114,116,104,101,114,32,118,97,108,105, - 100,97,116,101,100,32,97,103,97,105,110,115,116,32,116,104, - 101,32,115,111,117,114,99,101,46,10,10,32,32,32,32,42, - 100,97,116,97,42,32,105,115,32,116,104,101,32,99,111,110, - 116,101,110,116,115,32,111,102,32,116,104,101,32,112,121,99, - 32,102,105,108,101,46,32,40,79,110,108,121,32,116,104,101, - 32,102,105,114,115,116,32,49,54,32,98,121,116,101,115,32, - 97,114,101,10,32,32,32,32,114,101,113,117,105,114,101,100, - 44,32,116,104,111,117,103,104,46,41,10,10,32,32,32,32, - 42,110,97,109,101,42,32,105,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,46, - 32,73,116,32,105,115,32,117,115,101,100,32,102,111,114,32, - 108,111,103,103,105,110,103,46,10,10,32,32,32,32,42,101, - 120,99,95,100,101,116,97,105,108,115,42,32,105,115,32,97, - 32,100,105,99,116,105,111,110,97,114,121,32,112,97,115,115, - 101,100,32,116,111,32,73,109,112,111,114,116,69,114,114,111, - 114,32,105,102,32,105,116,32,114,97,105,115,101,100,32,102, - 111,114,10,32,32,32,32,105,109,112,114,111,118,101,100,32, - 100,101,98,117,103,103,105,110,103,46,10,10,32,32,32,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,32,119,104,101,110,32,116,104,101,32,109, - 97,103,105,99,32,110,117,109,98,101,114,32,105,115,32,105, - 110,99,111,114,114,101,99,116,32,111,114,32,119,104,101,110, - 32,116,104,101,32,102,108,97,103,115,10,32,32,32,32,102, - 105,101,108,100,32,105,115,32,105,110,118,97,108,105,100,46, - 32,69,79,70,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,32,119,104,101,110,32,116,104,101,32,100,97,116, - 97,32,105,115,32,102,111,117,110,100,32,116,111,32,98,101, - 32,116,114,117,110,99,97,116,101,100,46,10,10,32,32,32, - 32,78,114,28,0,0,0,122,20,98,97,100,32,109,97,103, - 105,99,32,110,117,109,98,101,114,32,105,110,32,122,2,58, - 32,250,2,123,125,233,16,0,0,0,122,40,114,101,97,99, - 104,101,100,32,69,79,70,32,119,104,105,108,101,32,114,101, - 97,100,105,110,103,32,112,121,99,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,139,0,0,0,218,16,95,118,101,114,98, - 111,115,101,95,109,101,115,115,97,103,101,114,122,0,0,0, - 114,4,0,0,0,218,8,69,79,70,69,114,114,111,114,114, - 38,0,0,0,41,6,114,37,0,0,0,114,121,0,0,0, - 218,11,101,120,99,95,100,101,116,97,105,108,115,90,5,109, - 97,103,105,99,114,98,0,0,0,114,16,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,95, - 99,108,97,115,115,105,102,121,95,112,121,99,31,2,0,0, - 115,30,0,0,0,12,16,8,1,16,1,12,1,16,1,12, - 1,10,1,12,1,8,1,16,1,8,2,16,1,16,1,4, - 1,255,128,114,156,0,0,0,99,5,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, - 0,115,124,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,62,100,4, - 124,3,155,2,157,2,125,5,116,1,160,2,100,5,124,5, - 161,2,1,0,116,3,124,5,102,1,105,0,124,4,164,1, - 142,1,130,1,124,2,100,6,117,1,114,120,116,0,124,0, - 100,2,100,7,133,2,25,0,131,1,124,2,100,3,64,0, - 107,3,114,116,116,3,100,4,124,3,155,2,157,2,102,1, - 105,0,124,4,164,1,142,1,130,1,100,6,83,0,100,6, - 83,0,41,8,97,7,2,0,0,86,97,108,105,100,97,116, - 101,32,97,32,112,121,99,32,97,103,97,105,110,115,116,32, - 116,104,101,32,115,111,117,114,99,101,32,108,97,115,116,45, - 109,111,100,105,102,105,101,100,32,116,105,109,101,46,10,10, - 32,32,32,32,42,100,97,116,97,42,32,105,115,32,116,104, - 101,32,99,111,110,116,101,110,116,115,32,111,102,32,116,104, - 101,32,112,121,99,32,102,105,108,101,46,32,40,79,110,108, - 121,32,116,104,101,32,102,105,114,115,116,32,49,54,32,98, - 121,116,101,115,32,97,114,101,10,32,32,32,32,114,101,113, - 117,105,114,101,100,46,41,10,10,32,32,32,32,42,115,111, - 117,114,99,101,95,109,116,105,109,101,42,32,105,115,32,116, - 104,101,32,108,97,115,116,32,109,111,100,105,102,105,101,100, - 32,116,105,109,101,115,116,97,109,112,32,111,102,32,116,104, - 101,32,115,111,117,114,99,101,32,102,105,108,101,46,10,10, - 32,32,32,32,42,115,111,117,114,99,101,95,115,105,122,101, - 42,32,105,115,32,78,111,110,101,32,111,114,32,116,104,101, - 32,115,105,122,101,32,111,102,32,116,104,101,32,115,111,117, - 114,99,101,32,102,105,108,101,32,105,110,32,98,121,116,101, - 115,46,10,10,32,32,32,32,42,110,97,109,101,42,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,46,32,73,116,32,105,115,32,117, - 115,101,100,32,102,111,114,32,108,111,103,103,105,110,103,46, - 10,10,32,32,32,32,42,101,120,99,95,100,101,116,97,105, - 108,115,42,32,105,115,32,97,32,100,105,99,116,105,111,110, - 97,114,121,32,112,97,115,115,101,100,32,116,111,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,102,32,105,116,32, - 114,97,105,115,101,100,32,102,111,114,10,32,32,32,32,105, - 109,112,114,111,118,101,100,32,100,101,98,117,103,103,105,110, - 103,46,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,150,0,0,0,233,12,0,0,0,114,27,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,148,0,0,0,78,114,149,0, - 0,0,41,4,114,38,0,0,0,114,139,0,0,0,114,153, - 0,0,0,114,122,0,0,0,41,6,114,37,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,121,0,0,0,114, - 155,0,0,0,114,98,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,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,64,2,0,0,115,20,0,0,0,24,19,10,1,12,1, - 16,1,8,1,22,1,2,255,22,2,8,254,255,128,114,160, - 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,124,0,100,1,100,2,133,2,25,0,124,1,107,3,114, - 38,116,0,100,3,124,2,155,2,157,2,102,1,105,0,124, - 3,164,1,142,1,130,1,100,4,83,0,41,5,97,243,1, - 0,0,86,97,108,105,100,97,116,101,32,97,32,104,97,115, - 104,45,98,97,115,101,100,32,112,121,99,32,98,121,32,99, - 104,101,99,107,105,110,103,32,116,104,101,32,114,101,97,108, - 32,115,111,117,114,99,101,32,104,97,115,104,32,97,103,97, - 105,110,115,116,32,116,104,101,32,111,110,101,32,105,110,10, - 32,32,32,32,116,104,101,32,112,121,99,32,104,101,97,100, - 101,114,46,10,10,32,32,32,32,42,100,97,116,97,42,32, + 1,125,2,100,3,125,3,116,0,106,7,100,1,117,1,114, + 102,116,0,106,7,160,8,116,9,161,1,125,4,124,1,160, + 10,124,4,116,11,23,0,161,1,114,102,124,1,116,12,124, + 4,131,1,100,1,133,2,25,0,125,1,100,4,125,3,124, + 3,115,144,116,6,124,1,131,1,92,2,125,1,125,5,124, + 5,116,13,107,3,114,144,116,14,116,13,155,0,100,5,124, + 0,155,2,157,3,131,1,130,1,124,2,160,15,100,6,161, + 1,125,6,124,6,100,7,118,1,114,176,116,14,100,8,124, + 2,155,2,157,2,131,1,130,1,124,6,100,9,107,2,144, + 1,114,12,124,2,160,16,100,6,100,10,161,2,100,11,25, + 0,125,7,124,7,160,10,116,17,161,1,115,226,116,14,100, + 12,116,17,155,2,157,2,131,1,130,1,124,7,116,12,116, + 17,131,1,100,1,133,2,25,0,125,8,124,8,160,18,161, + 0,144,1,115,12,116,14,100,13,124,7,155,2,100,14,157, + 3,131,1,130,1,124,2,160,19,100,6,161,1,100,15,25, + 0,125,9,116,20,124,1,124,9,116,21,100,15,25,0,23, + 0,131,2,83,0,41,16,97,110,1,0,0,71,105,118,101, + 110,32,116,104,101,32,112,97,116,104,32,116,111,32,97,32, + 46,112,121,99,46,32,102,105,108,101,44,32,114,101,116,117, + 114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,105, + 116,115,32,46,112,121,32,102,105,108,101,46,10,10,32,32, + 32,32,84,104,101,32,46,112,121,99,32,102,105,108,101,32, + 100,111,101,115,32,110,111,116,32,110,101,101,100,32,116,111, + 32,101,120,105,115,116,59,32,116,104,105,115,32,115,105,109, + 112,108,121,32,114,101,116,117,114,110,115,32,116,104,101,32, + 112,97,116,104,32,116,111,10,32,32,32,32,116,104,101,32, + 46,112,121,32,102,105,108,101,32,99,97,108,99,117,108,97, + 116,101,100,32,116,111,32,99,111,114,114,101,115,112,111,110, + 100,32,116,111,32,116,104,101,32,46,112,121,99,32,102,105, + 108,101,46,32,32,73,102,32,112,97,116,104,32,100,111,101, + 115,10,32,32,32,32,110,111,116,32,99,111,110,102,111,114, + 109,32,116,111,32,80,69,80,32,51,49,52,55,47,52,56, + 56,32,102,111,114,109,97,116,44,32,86,97,108,117,101,69, + 114,114,111,114,32,119,105,108,108,32,98,101,32,114,97,105, + 115,101,100,46,32,73,102,10,32,32,32,32,115,121,115,46, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,46,99, + 97,99,104,101,95,116,97,103,32,105,115,32,78,111,110,101, + 32,116,104,101,110,32,78,111,116,73,109,112,108,101,109,101, + 110,116,101,100,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,46,10,10,32,32,32,32,78,114,80,0,0,0, + 70,84,122,31,32,110,111,116,32,98,111,116,116,111,109,45, + 108,101,118,101,108,32,100,105,114,101,99,116,111,114,121,32, + 105,110,32,114,79,0,0,0,62,2,0,0,0,114,39,0, + 0,0,114,65,0,0,0,122,29,101,120,112,101,99,116,101, + 100,32,111,110,108,121,32,50,32,111,114,32,51,32,100,111, + 116,115,32,105,110,32,114,65,0,0,0,114,39,0,0,0, + 233,254,255,255,255,122,53,111,112,116,105,109,105,122,97,116, + 105,111,110,32,112,111,114,116,105,111,110,32,111,102,32,102, + 105,108,101,110,97,109,101,32,100,111,101,115,32,110,111,116, + 32,115,116,97,114,116,32,119,105,116,104,32,122,19,111,112, + 116,105,109,105,122,97,116,105,111,110,32,108,101,118,101,108, + 32,122,29,32,105,115,32,110,111,116,32,97,110,32,97,108, + 112,104,97,110,117,109,101,114,105,99,32,118,97,108,117,101, + 114,0,0,0,0,41,22,114,15,0,0,0,114,86,0,0, + 0,114,87,0,0,0,114,88,0,0,0,114,18,0,0,0, + 114,85,0,0,0,114,55,0,0,0,114,95,0,0,0,114, + 41,0,0,0,114,42,0,0,0,114,23,0,0,0,114,45, + 0,0,0,114,4,0,0,0,114,97,0,0,0,114,92,0, + 0,0,218,5,99,111,117,110,116,114,51,0,0,0,114,93, + 0,0,0,114,91,0,0,0,218,9,112,97,114,116,105,116, + 105,111,110,114,48,0,0,0,218,15,83,79,85,82,67,69, + 95,83,85,70,70,73,88,69,83,41,10,114,52,0,0,0, + 114,99,0,0,0,90,16,112,121,99,97,99,104,101,95,102, + 105,108,101,110,97,109,101,90,23,102,111,117,110,100,95,105, + 110,95,112,121,99,97,99,104,101,95,112,114,101,102,105,120, + 90,13,115,116,114,105,112,112,101,100,95,112,97,116,104,90, + 7,112,121,99,97,99,104,101,90,9,100,111,116,95,99,111, + 117,110,116,114,78,0,0,0,90,9,111,112,116,95,108,101, + 118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,97, + 109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, + 97,99,104,101,156,1,0,0,115,62,0,0,0,12,9,8, + 1,10,1,12,1,4,1,10,1,12,1,14,1,16,1,4, + 1,4,1,12,1,8,1,8,1,2,1,8,255,10,2,8, + 1,14,1,10,1,16,1,10,1,4,1,2,1,8,255,16, + 2,10,1,16,1,14,2,18,1,255,128,114,107,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,9,0,0,0,67,0,0,0,115,122,0,0,0,116,0, + 124,0,131,1,100,1,107,2,114,16,100,2,83,0,124,0, + 160,1,100,3,161,1,92,3,125,1,125,2,125,3,124,1, + 114,56,124,3,160,2,161,0,100,4,100,5,133,2,25,0, + 100,6,107,3,114,60,124,0,83,0,122,12,116,3,124,0, + 131,1,125,4,87,0,110,30,4,0,116,4,116,5,102,2, + 121,120,1,0,1,0,1,0,124,0,100,2,100,5,133,2, + 25,0,125,4,89,0,116,6,124,4,131,1,114,116,124,4, + 83,0,124,0,83,0,119,0,41,7,122,188,67,111,110,118, + 101,114,116,32,97,32,98,121,116,101,99,111,100,101,32,102, + 105,108,101,32,112,97,116,104,32,116,111,32,97,32,115,111, + 117,114,99,101,32,112,97,116,104,32,40,105,102,32,112,111, + 115,115,105,98,108,101,41,46,10,10,32,32,32,32,84,104, + 105,115,32,102,117,110,99,116,105,111,110,32,101,120,105,115, + 116,115,32,112,117,114,101,108,121,32,102,111,114,32,98,97, + 99,107,119,97,114,100,115,45,99,111,109,112,97,116,105,98, + 105,108,105,116,121,32,102,111,114,10,32,32,32,32,80,121, + 73,109,112,111,114,116,95,69,120,101,99,67,111,100,101,77, + 111,100,117,108,101,87,105,116,104,70,105,108,101,110,97,109, + 101,115,40,41,32,105,110,32,116,104,101,32,67,32,65,80, + 73,46,10,10,32,32,32,32,114,0,0,0,0,78,114,79, + 0,0,0,233,253,255,255,255,233,255,255,255,255,90,2,112, + 121,41,7,114,4,0,0,0,114,49,0,0,0,218,5,108, + 111,119,101,114,114,107,0,0,0,114,88,0,0,0,114,92, + 0,0,0,114,62,0,0,0,41,5,218,13,98,121,116,101, + 99,111,100,101,95,112,97,116,104,114,100,0,0,0,114,53, + 0,0,0,90,9,101,120,116,101,110,115,105,111,110,218,11, + 115,111,117,114,99,101,95,112,97,116,104,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,15,95,103,101,116, + 95,115,111,117,114,99,101,102,105,108,101,196,1,0,0,115, + 24,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, + 12,1,16,1,14,1,16,1,2,254,255,128,114,113,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,8,0,0,0,67,0,0,0,115,68,0,0,0,124, + 0,160,0,116,1,116,2,131,1,161,1,114,44,122,10,116, + 3,124,0,131,1,87,0,83,0,4,0,116,4,121,66,1, + 0,1,0,1,0,89,0,100,0,83,0,124,0,160,0,116, + 1,116,5,131,1,161,1,114,62,124,0,83,0,100,0,83, + 0,119,0,169,1,78,41,6,218,8,101,110,100,115,119,105, + 116,104,218,5,116,117,112,108,101,114,106,0,0,0,114,102, + 0,0,0,114,88,0,0,0,114,94,0,0,0,41,1,114, + 101,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,95,103,101,116,95,99,97,99,104,101,100, + 215,1,0,0,115,20,0,0,0,14,1,2,1,10,1,12, + 1,6,1,14,1,4,1,4,2,2,251,255,128,114,117,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,8,0,0,0,67,0,0,0,115,48,0,0,0, + 122,14,116,0,124,0,131,1,106,1,125,1,87,0,110,18, + 4,0,116,2,121,46,1,0,1,0,1,0,100,1,125,1, + 89,0,124,1,100,2,79,0,125,1,124,1,83,0,119,0, + 41,4,122,51,67,97,108,99,117,108,97,116,101,32,116,104, + 101,32,109,111,100,101,32,112,101,114,109,105,115,115,105,111, + 110,115,32,102,111,114,32,97,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,46,114,68,0,0,0,233,128,0,0, + 0,78,41,3,114,57,0,0,0,114,59,0,0,0,114,58, + 0,0,0,41,2,114,52,0,0,0,114,60,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, + 95,99,97,108,99,95,109,111,100,101,227,1,0,0,115,16, + 0,0,0,2,2,14,1,12,1,6,1,8,3,4,1,2, + 251,255,128,114,119,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,4,0,0,0,3,0,0, + 0,115,52,0,0,0,100,6,135,0,102,1,100,2,100,3, + 132,9,125,1,116,0,100,1,117,1,114,30,116,0,106,1, + 125,2,110,8,100,4,100,5,132,0,125,2,124,2,124,1, + 136,0,131,2,1,0,124,1,83,0,41,7,122,252,68,101, + 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, + 121,32,116,104,97,116,32,116,104,101,32,109,111,100,117,108, + 101,32,98,101,105,110,103,32,114,101,113,117,101,115,116,101, + 100,32,109,97,116,99,104,101,115,32,116,104,101,32,111,110, + 101,32,116,104,101,10,32,32,32,32,108,111,97,100,101,114, + 32,99,97,110,32,104,97,110,100,108,101,46,10,10,32,32, + 32,32,84,104,101,32,102,105,114,115,116,32,97,114,103,117, + 109,101,110,116,32,40,115,101,108,102,41,32,109,117,115,116, + 32,100,101,102,105,110,101,32,95,110,97,109,101,32,119,104, + 105,99,104,32,116,104,101,32,115,101,99,111,110,100,32,97, + 114,103,117,109,101,110,116,32,105,115,10,32,32,32,32,99, + 111,109,112,97,114,101,100,32,97,103,97,105,110,115,116,46, + 32,73,102,32,116,104,101,32,99,111,109,112,97,114,105,115, + 111,110,32,102,97,105,108,115,32,116,104,101,110,32,73,109, + 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,46,10,10,32,32,32,32,78,99,2,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 31,0,0,0,115,72,0,0,0,124,1,100,0,117,0,114, + 16,124,0,106,0,125,1,110,32,124,0,106,0,124,1,107, + 3,114,48,116,1,100,1,124,0,106,0,124,1,102,2,22, + 0,124,1,100,2,141,2,130,1,136,0,124,0,124,1,103, + 2,124,2,162,1,82,0,105,0,124,3,164,1,142,1,83, + 0,41,3,78,122,30,108,111,97,100,101,114,32,102,111,114, + 32,37,115,32,99,97,110,110,111,116,32,104,97,110,100,108, + 101,32,37,115,169,1,218,4,110,97,109,101,41,2,114,121, + 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,121,0,0,0,218,4,97, + 114,103,115,218,6,107,119,97,114,103,115,169,1,218,6,109, + 101,116,104,111,100,114,7,0,0,0,114,8,0,0,0,218, + 19,95,99,104,101,99,107,95,110,97,109,101,95,119,114,97, + 112,112,101,114,247,1,0,0,115,20,0,0,0,8,1,8, + 1,10,1,4,1,8,1,2,255,2,1,6,255,24,2,255, + 128,122,40,95,99,104,101,99,107,95,110,97,109,101,46,60, + 108,111,99,97,108,115,62,46,95,99,104,101,99,107,95,110, + 97,109,101,95,119,114,97,112,112,101,114,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0, + 83,0,0,0,115,56,0,0,0,100,1,68,0,93,32,125, + 2,116,0,124,1,124,2,131,2,114,4,116,1,124,0,124, + 2,116,2,124,1,124,2,131,2,131,3,1,0,113,4,124, + 0,106,3,160,4,124,1,106,3,161,1,1,0,100,0,83, + 0,41,2,78,41,4,218,10,95,95,109,111,100,117,108,101, + 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95, + 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111, + 99,95,95,41,5,218,7,104,97,115,97,116,116,114,218,7, + 115,101,116,97,116,116,114,218,7,103,101,116,97,116,116,114, + 218,8,95,95,100,105,99,116,95,95,218,6,117,112,100,97, + 116,101,41,3,90,3,110,101,119,90,3,111,108,100,114,75, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,5,95,119,114,97,112,4,2,0,0,115,12,0, + 0,0,8,1,10,1,18,1,2,128,18,1,255,128,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,2,218, + 10,95,98,111,111,116,115,116,114,97,112,114,138,0,0,0, + 41,3,114,127,0,0,0,114,128,0,0,0,114,138,0,0, + 0,114,7,0,0,0,114,126,0,0,0,114,8,0,0,0, + 218,11,95,99,104,101,99,107,95,110,97,109,101,239,1,0, + 0,115,14,0,0,0,14,8,8,10,8,1,8,2,10,6, + 4,1,255,128,114,140,0,0,0,99,2,0,0,0,0,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,117,0,114,56,116,1,124, + 3,131,1,114,56,100,2,125,4,116,2,160,3,124,4,160, + 4,124,3,100,3,25,0,161,1,116,5,161,2,1,0,124, + 2,83,0,41,4,122,155,84,114,121,32,116,111,32,102,105, + 110,100,32,97,32,108,111,97,100,101,114,32,102,111,114,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,98,121,32,100,101,108,101,103,97,116,105, + 110,103,32,116,111,10,32,32,32,32,115,101,108,102,46,102, + 105,110,100,95,108,111,97,100,101,114,40,41,46,10,10,32, + 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,32,105,110,32, + 102,97,118,111,114,32,111,102,32,102,105,110,100,101,114,46, + 102,105,110,100,95,115,112,101,99,40,41,46,10,10,32,32, + 32,32,78,122,44,78,111,116,32,105,109,112,111,114,116,105, + 110,103,32,100,105,114,101,99,116,111,114,121,32,123,125,58, + 32,109,105,115,115,105,110,103,32,95,95,105,110,105,116,95, + 95,114,0,0,0,0,41,6,218,11,102,105,110,100,95,108, + 111,97,100,101,114,114,4,0,0,0,114,81,0,0,0,114, + 82,0,0,0,114,70,0,0,0,218,13,73,109,112,111,114, + 116,87,97,114,110,105,110,103,41,5,114,123,0,0,0,218, + 8,102,117,108,108,110,97,109,101,218,6,108,111,97,100,101, + 114,218,8,112,111,114,116,105,111,110,115,218,3,109,115,103, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 17,95,102,105,110,100,95,109,111,100,117,108,101,95,115,104, + 105,109,14,2,0,0,115,12,0,0,0,14,10,16,1,4, + 1,22,1,4,1,255,128,114,147,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, + 0,67,0,0,0,115,166,0,0,0,124,0,100,1,100,2, + 133,2,25,0,125,3,124,3,116,0,107,3,114,64,100,3, + 124,1,155,2,100,4,124,3,155,2,157,4,125,4,116,1, + 160,2,100,5,124,4,161,2,1,0,116,3,124,4,102,1, + 105,0,124,2,164,1,142,1,130,1,116,4,124,0,131,1, + 100,6,107,0,114,106,100,7,124,1,155,2,157,2,125,4, + 116,1,160,2,100,5,124,4,161,2,1,0,116,5,124,4, + 131,1,130,1,116,6,124,0,100,2,100,8,133,2,25,0, + 131,1,125,5,124,5,100,9,64,0,114,162,100,10,124,5, + 155,2,100,11,124,1,155,2,157,4,125,4,116,3,124,4, + 102,1,105,0,124,2,164,1,142,1,130,1,124,5,83,0, + 41,12,97,84,2,0,0,80,101,114,102,111,114,109,32,98, + 97,115,105,99,32,118,97,108,105,100,105,116,121,32,99,104, + 101,99,107,105,110,103,32,111,102,32,97,32,112,121,99,32, + 104,101,97,100,101,114,32,97,110,100,32,114,101,116,117,114, + 110,32,116,104,101,32,102,108,97,103,115,32,102,105,101,108, + 100,44,10,32,32,32,32,119,104,105,99,104,32,100,101,116, + 101,114,109,105,110,101,115,32,104,111,119,32,116,104,101,32, + 112,121,99,32,115,104,111,117,108,100,32,98,101,32,102,117, + 114,116,104,101,114,32,118,97,108,105,100,97,116,101,100,32, + 97,103,97,105,110,115,116,32,116,104,101,32,115,111,117,114, + 99,101,46,10,10,32,32,32,32,42,100,97,116,97,42,32, 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,46,41,10,10,32,32, - 32,32,42,115,111,117,114,99,101,95,104,97,115,104,42,32, - 105,115,32,116,104,101,32,105,109,112,111,114,116,108,105,98, - 46,117,116,105,108,46,115,111,117,114,99,101,95,104,97,115, - 104,40,41,32,111,102,32,116,104,101,32,115,111,117,114,99, - 101,32,102,105,108,101,46,10,10,32,32,32,32,42,110,97, - 109,101,42,32,105,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,32,98,101, - 105,110,103,32,105,109,112,111,114,116,101,100,46,32,73,116, - 32,105,115,32,117,115,101,100,32,102,111,114,32,108,111,103, - 103,105,110,103,46,10,10,32,32,32,32,42,101,120,99,95, - 100,101,116,97,105,108,115,42,32,105,115,32,97,32,100,105, - 99,116,105,111,110,97,114,121,32,112,97,115,115,101,100,32, - 116,111,32,73,109,112,111,114,116,69,114,114,111,114,32,105, - 102,32,105,116,32,114,97,105,115,101,100,32,102,111,114,10, - 32,32,32,32,105,109,112,114,111,118,101,100,32,100,101,98, - 117,103,103,105,110,103,46,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,150,0,0,0,114,149,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,122,0,0,0,41,4,114,37,0,0,0,218,11, - 115,111,117,114,99,101,95,104,97,115,104,114,121,0,0,0, - 114,155,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,18,95,118,97,108,105,100,97,116,101,95, - 104,97,115,104,95,112,121,99,92,2,0,0,115,16,0,0, - 0,16,17,2,1,8,1,4,255,2,2,6,254,4,255,255, - 128,114,162,0,0,0,99,4,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, - 76,0,0,0,116,0,160,1,124,0,161,1,125,4,116,2, - 124,4,116,3,131,2,114,56,116,4,160,5,100,1,124,2, - 161,2,1,0,124,3,100,2,117,1,114,52,116,6,160,7, - 124,4,124,3,161,2,1,0,124,4,83,0,116,8,100,3, - 160,9,124,2,161,1,124,1,124,2,100,4,141,3,130,1, - 41,5,122,35,67,111,109,112,105,108,101,32,98,121,116,101, - 99,111,100,101,32,97,115,32,102,111,117,110,100,32,105,110, - 32,97,32,112,121,99,46,122,21,99,111,100,101,32,111,98, - 106,101,99,116,32,102,114,111,109,32,123,33,114,125,78,122, - 23,78,111,110,45,99,111,100,101,32,111,98,106,101,99,116, - 32,105,110,32,123,33,114,125,169,2,114,121,0,0,0,114, - 52,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,139, - 0,0,0,114,153,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,122,0,0,0,114,70,0,0,0,41,5,114,37,0,0, - 0,114,121,0,0,0,114,111,0,0,0,114,112,0,0,0, - 218,4,99,111,100,101,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,17,95,99,111,109,112,105,108,101,95, - 98,121,116,101,99,111,100,101,116,2,0,0,115,20,0,0, - 0,10,2,10,1,12,1,8,1,12,1,4,1,10,2,4, - 1,6,255,255,128,114,169,0,0,0,99,3,0,0,0,0, - 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,131,1,161,1,1,0,124,3, - 160,2,116,3,124,1,131,1,161,1,1,0,124,3,160,2, - 116,3,124,2,131,1,161,1,1,0,124,3,160,2,116,4, - 160,5,124,0,161,1,161,1,1,0,124,3,83,0,41,3, - 122,43,80,114,111,100,117,99,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,0,0, - 0,0,78,41,6,218,9,98,121,116,101,97,114,114,97,121, - 114,152,0,0,0,218,6,101,120,116,101,110,100,114,33,0, - 0,0,114,164,0,0,0,218,5,100,117,109,112,115,41,4, - 114,168,0,0,0,218,5,109,116,105,109,101,114,159,0,0, - 0,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,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,129,2,0, - 0,115,14,0,0,0,8,2,14,1,14,1,14,1,16,1, - 4,1,255,128,114,174,0,0,0,84,99,3,0,0,0,0, - 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,2, - 116,3,124,4,131,1,161,1,1,0,116,4,124,1,131,1, - 100,2,107,2,115,50,74,0,130,1,124,3,160,2,124,1, - 161,1,1,0,124,3,160,2,116,5,160,6,124,0,161,1, - 161,1,1,0,124,3,83,0,41,4,122,38,80,114,111,100, + 32,32,114,101,113,117,105,114,101,100,44,32,116,104,111,117, + 103,104,46,41,10,10,32,32,32,32,42,110,97,109,101,42, + 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, + 116,104,101,32,109,111,100,117,108,101,32,98,101,105,110,103, + 32,105,109,112,111,114,116,101,100,46,32,73,116,32,105,115, + 32,117,115,101,100,32,102,111,114,32,108,111,103,103,105,110, + 103,46,10,10,32,32,32,32,42,101,120,99,95,100,101,116, + 97,105,108,115,42,32,105,115,32,97,32,100,105,99,116,105, + 111,110,97,114,121,32,112,97,115,115,101,100,32,116,111,32, + 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,105, + 116,32,114,97,105,115,101,100,32,102,111,114,10,32,32,32, + 32,105,109,112,114,111,118,101,100,32,100,101,98,117,103,103, + 105,110,103,46,10,10,32,32,32,32,73,109,112,111,114,116, + 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32, + 119,104,101,110,32,116,104,101,32,109,97,103,105,99,32,110, + 117,109,98,101,114,32,105,115,32,105,110,99,111,114,114,101, + 99,116,32,111,114,32,119,104,101,110,32,116,104,101,32,102, + 108,97,103,115,10,32,32,32,32,102,105,101,108,100,32,105, + 115,32,105,110,118,97,108,105,100,46,32,69,79,70,69,114, + 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, + 101,110,32,116,104,101,32,100,97,116,97,32,105,115,32,102, + 111,117,110,100,32,116,111,32,98,101,32,116,114,117,110,99, + 97,116,101,100,46,10,10,32,32,32,32,78,114,28,0,0, + 0,122,20,98,97,100,32,109,97,103,105,99,32,110,117,109, + 98,101,114,32,105,110,32,122,2,58,32,250,2,123,125,233, + 16,0,0,0,122,40,114,101,97,99,104,101,100,32,69,79, + 70,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32, + 112,121,99,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,139, + 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,114,122,0,0,0,114,4,0,0,0,218, + 8,69,79,70,69,114,114,111,114,114,38,0,0,0,41,6, + 114,37,0,0,0,114,121,0,0,0,218,11,101,120,99,95, + 100,101,116,97,105,108,115,90,5,109,97,103,105,99,114,98, + 0,0,0,114,16,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,13,95,99,108,97,115,115,105, + 102,121,95,112,121,99,31,2,0,0,115,30,0,0,0,12, + 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, + 1,16,1,8,2,16,1,16,1,4,1,255,128,114,156,0, + 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,4,0,0,0,67,0,0,0,115,124,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,62,100,4,124,3,155,2,157,2, + 125,5,116,1,160,2,100,5,124,5,161,2,1,0,116,3, + 124,5,102,1,105,0,124,4,164,1,142,1,130,1,124,2, + 100,6,117,1,114,120,116,0,124,0,100,2,100,7,133,2, + 25,0,131,1,124,2,100,3,64,0,107,3,114,116,116,3, + 100,4,124,3,155,2,157,2,102,1,105,0,124,4,164,1, + 142,1,130,1,100,6,83,0,100,6,83,0,41,8,97,7, + 2,0,0,86,97,108,105,100,97,116,101,32,97,32,112,121, + 99,32,97,103,97,105,110,115,116,32,116,104,101,32,115,111, + 117,114,99,101,32,108,97,115,116,45,109,111,100,105,102,105, + 101,100,32,116,105,109,101,46,10,10,32,32,32,32,42,100, + 97,116,97,42,32,105,115,32,116,104,101,32,99,111,110,116, + 101,110,116,115,32,111,102,32,116,104,101,32,112,121,99,32, + 102,105,108,101,46,32,40,79,110,108,121,32,116,104,101,32, + 102,105,114,115,116,32,49,54,32,98,121,116,101,115,32,97, + 114,101,10,32,32,32,32,114,101,113,117,105,114,101,100,46, + 41,10,10,32,32,32,32,42,115,111,117,114,99,101,95,109, + 116,105,109,101,42,32,105,115,32,116,104,101,32,108,97,115, + 116,32,109,111,100,105,102,105,101,100,32,116,105,109,101,115, + 116,97,109,112,32,111,102,32,116,104,101,32,115,111,117,114, + 99,101,32,102,105,108,101,46,10,10,32,32,32,32,42,115, + 111,117,114,99,101,95,115,105,122,101,42,32,105,115,32,78, + 111,110,101,32,111,114,32,116,104,101,32,115,105,122,101,32, + 111,102,32,116,104,101,32,115,111,117,114,99,101,32,102,105, + 108,101,32,105,110,32,98,121,116,101,115,46,10,10,32,32, + 32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, + 108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,101, + 100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,111, + 114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,32, + 42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,115, + 32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,97, + 115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,114, + 114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,100, + 32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,101, + 100,32,100,101,98,117,103,103,105,110,103,46,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,150,0,0,0,233, + 12,0,0,0,114,27,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,148,0,0,0,78,114,149,0,0,0,41,4,114,38, + 0,0,0,114,139,0,0,0,114,153,0,0,0,114,122,0, + 0,0,41,6,114,37,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,121,0,0,0,114,155,0,0,0,114,98, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,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,64,2,0,0,115, + 20,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, + 2,255,22,2,8,254,255,128,114,160,0,0,0,99,4,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, + 0,0,67,0,0,0,115,42,0,0,0,124,0,100,1,100, + 2,133,2,25,0,124,1,107,3,114,38,116,0,100,3,124, + 2,155,2,157,2,102,1,105,0,124,3,164,1,142,1,130, + 1,100,4,83,0,41,5,97,243,1,0,0,86,97,108,105, + 100,97,116,101,32,97,32,104,97,115,104,45,98,97,115,101, + 100,32,112,121,99,32,98,121,32,99,104,101,99,107,105,110, + 103,32,116,104,101,32,114,101,97,108,32,115,111,117,114,99, + 101,32,104,97,115,104,32,97,103,97,105,110,115,116,32,116, + 104,101,32,111,110,101,32,105,110,10,32,32,32,32,116,104, + 101,32,112,121,99,32,104,101,97,100,101,114,46,10,10,32, + 32,32,32,42,100,97,116,97,42,32,105,115,32,116,104,101, + 32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101, + 32,112,121,99,32,102,105,108,101,46,32,40,79,110,108,121, + 32,116,104,101,32,102,105,114,115,116,32,49,54,32,98,121, + 116,101,115,32,97,114,101,10,32,32,32,32,114,101,113,117, + 105,114,101,100,46,41,10,10,32,32,32,32,42,115,111,117, + 114,99,101,95,104,97,115,104,42,32,105,115,32,116,104,101, + 32,105,109,112,111,114,116,108,105,98,46,117,116,105,108,46, + 115,111,117,114,99,101,95,104,97,115,104,40,41,32,111,102, + 32,116,104,101,32,115,111,117,114,99,101,32,102,105,108,101, + 46,10,10,32,32,32,32,42,110,97,109,101,42,32,105,115, + 32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,32,98,101,105,110,103,32,105,109, + 112,111,114,116,101,100,46,32,73,116,32,105,115,32,117,115, + 101,100,32,102,111,114,32,108,111,103,103,105,110,103,46,10, + 10,32,32,32,32,42,101,120,99,95,100,101,116,97,105,108, + 115,42,32,105,115,32,97,32,100,105,99,116,105,111,110,97, + 114,121,32,112,97,115,115,101,100,32,116,111,32,73,109,112, + 111,114,116,69,114,114,111,114,32,105,102,32,105,116,32,114, + 97,105,115,101,100,32,102,111,114,10,32,32,32,32,105,109, + 112,114,111,118,101,100,32,100,101,98,117,103,103,105,110,103, + 46,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, + 150,0,0,0,114,149,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,122,0,0, + 0,41,4,114,37,0,0,0,218,11,115,111,117,114,99,101, + 95,104,97,115,104,114,121,0,0,0,114,155,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,18, + 95,118,97,108,105,100,97,116,101,95,104,97,115,104,95,112, + 121,99,92,2,0,0,115,16,0,0,0,16,17,2,1,8, + 1,4,255,2,2,6,254,4,255,255,128,114,162,0,0,0, + 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,5,0,0,0,67,0,0,0,115,76,0,0,0,116,0, + 160,1,124,0,161,1,125,4,116,2,124,4,116,3,131,2, + 114,56,116,4,160,5,100,1,124,2,161,2,1,0,124,3, + 100,2,117,1,114,52,116,6,160,7,124,4,124,3,161,2, + 1,0,124,4,83,0,116,8,100,3,160,9,124,2,161,1, + 124,1,124,2,100,4,141,3,130,1,41,5,122,35,67,111, + 109,112,105,108,101,32,98,121,116,101,99,111,100,101,32,97, + 115,32,102,111,117,110,100,32,105,110,32,97,32,112,121,99, + 46,122,21,99,111,100,101,32,111,98,106,101,99,116,32,102, + 114,111,109,32,123,33,114,125,78,122,23,78,111,110,45,99, + 111,100,101,32,111,98,106,101,99,116,32,105,110,32,123,33, + 114,125,169,2,114,121,0,0,0,114,52,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,139,0,0,0,114,153,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,122,0,0,0,114, + 70,0,0,0,41,5,114,37,0,0,0,114,121,0,0,0, + 114,111,0,0,0,114,112,0,0,0,218,4,99,111,100,101, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 17,95,99,111,109,112,105,108,101,95,98,121,116,101,99,111, + 100,101,116,2,0,0,115,20,0,0,0,10,2,10,1,12, + 1,8,1,12,1,4,1,10,2,4,1,6,255,255,128,114, + 169,0,0,0,99,3,0,0,0,0,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,131,1,161,1,1,0,124,3,160,2,116,3,124,1, + 131,1,161,1,1,0,124,3,160,2,116,3,124,2,131,1, + 161,1,1,0,124,3,160,2,116,4,160,5,124,0,161,1, + 161,1,1,0,124,3,83,0,41,3,122,43,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,3,0,0,0,114,150,0,0,0,78,41,7,114, - 170,0,0,0,114,152,0,0,0,114,171,0,0,0,114,33, - 0,0,0,114,4,0,0,0,114,164,0,0,0,114,172,0, - 0,0,41,5,114,168,0,0,0,114,161,0,0,0,90,7, - 99,104,101,99,107,101,100,114,37,0,0,0,114,16,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,17,95,99,111,100,101,95,116,111,95,104,97,115,104,95, - 112,121,99,139,2,0,0,115,16,0,0,0,8,2,12,1, - 14,1,16,1,10,1,16,1,4,1,255,128,114,175,0,0, - 0,99,1,0,0,0,0,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,100,2,100,3,161,2,125,4,124,4,160,6,124,0,160, - 6,124,3,100,1,25,0,161,1,161,1,83,0,41,4,122, - 121,68,101,99,111,100,101,32,98,121,116,101,115,32,114,101, - 112,114,101,115,101,110,116,105,110,103,32,115,111,117,114,99, - 101,32,99,111,100,101,32,97,110,100,32,114,101,116,117,114, - 110,32,116,104,101,32,115,116,114,105,110,103,46,10,10,32, - 32,32,32,85,110,105,118,101,114,115,97,108,32,110,101,119, - 108,105,110,101,32,115,117,112,112,111,114,116,32,105,115,32, - 117,115,101,100,32,105,110,32,116,104,101,32,100,101,99,111, - 100,105,110,103,46,10,32,32,32,32,114,0,0,0,0,78, - 84,41,7,218,8,116,111,107,101,110,105,122,101,114,72,0, - 0,0,90,7,66,121,116,101,115,73,79,90,8,114,101,97, - 100,108,105,110,101,90,15,100,101,116,101,99,116,95,101,110, - 99,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,176,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, + 32,97,32,116,105,109,101,115,116,97,109,112,45,98,97,115, + 101,100,32,112,121,99,46,114,0,0,0,0,78,41,6,218, + 9,98,121,116,101,97,114,114,97,121,114,152,0,0,0,218, + 6,101,120,116,101,110,100,114,33,0,0,0,114,164,0,0, + 0,218,5,100,117,109,112,115,41,4,114,168,0,0,0,218, + 5,109,116,105,109,101,114,159,0,0,0,114,37,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 13,100,101,99,111,100,101,95,115,111,117,114,99,101,150,2, - 0,0,115,12,0,0,0,8,5,12,1,10,1,12,1,20, - 1,255,128,114,180,0,0,0,169,2,114,144,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, - 0,0,0,0,2,0,0,0,9,0,0,0,8,0,0,0, - 67,0,0,0,115,8,1,0,0,124,1,100,1,117,0,114, - 56,100,2,125,1,116,0,124,2,100,3,131,2,114,66,122, - 14,124,2,160,1,124,0,161,1,125,1,87,0,110,28,4, - 0,116,2,121,54,1,0,1,0,1,0,89,0,110,12,119, - 0,116,3,160,4,124,1,161,1,125,1,116,5,106,6,124, - 0,124,2,124,1,100,4,141,3,125,4,100,5,124,4,95, - 7,124,2,100,1,117,0,114,148,116,8,131,0,68,0,93, - 40,92,2,125,5,125,6,124,1,160,9,116,10,124,6,131, - 1,161,1,114,102,124,5,124,0,124,1,131,2,125,2,124, - 2,124,4,95,11,1,0,113,148,100,1,83,0,124,3,116, - 12,117,0,114,212,116,0,124,2,100,6,131,2,114,218,122, - 14,124,2,160,13,124,0,161,1,125,7,87,0,110,18,4, - 0,116,2,121,198,1,0,1,0,1,0,89,0,110,20,119, - 0,124,7,114,218,103,0,124,4,95,14,110,6,124,3,124, - 4,95,14,124,4,106,14,103,0,107,2,144,1,114,4,124, - 1,144,1,114,4,116,15,124,1,131,1,100,7,25,0,125, - 8,124,4,106,14,160,16,124,8,161,1,1,0,124,4,83, - 0,41,8,97,61,1,0,0,82,101,116,117,114,110,32,97, - 32,109,111,100,117,108,101,32,115,112,101,99,32,98,97,115, - 101,100,32,111,110,32,97,32,102,105,108,101,32,108,111,99, - 97,116,105,111,110,46,10,10,32,32,32,32,84,111,32,105, - 110,100,105,99,97,116,101,32,116,104,97,116,32,116,104,101, - 32,109,111,100,117,108,101,32,105,115,32,97,32,112,97,99, - 107,97,103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105, - 115,116,32,111,102,32,100,105,114,101,99,116,111,114,121,32, - 112,97,116,104,115,46,32,32,65,110,10,32,32,32,32,101, - 109,112,116,121,32,108,105,115,116,32,105,115,32,115,117,102, - 102,105,99,105,101,110,116,44,32,116,104,111,117,103,104,32, - 105,116,115,32,110,111,116,32,111,116,104,101,114,119,105,115, - 101,32,117,115,101,102,117,108,32,116,111,32,116,104,101,10, - 32,32,32,32,105,109,112,111,114,116,32,115,121,115,116,101, - 109,46,10,10,32,32,32,32,84,104,101,32,108,111,97,100, - 101,114,32,109,117,115,116,32,116,97,107,101,32,97,32,115, - 112,101,99,32,97,115,32,105,116,115,32,111,110,108,121,32, - 95,95,105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0, - 0,0,114,183,0,0,0,114,122,0,0,0,114,18,0,0, - 0,114,85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0, - 0,0,218,9,95,80,79,80,85,76,65,84,69,114,186,0, - 0,0,114,182,0,0,0,114,55,0,0,0,218,6,97,112, - 112,101,110,100,41,9,114,121,0,0,0,90,8,108,111,99, - 97,116,105,111,110,114,144,0,0,0,114,182,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,186,0, - 0,0,90,7,100,105,114,110,97,109,101,114,7,0,0,0, - 114,7,0,0,0,114,8,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,167,2,0,0,115,64,0,0,0,8,12,4,4, - 10,1,2,2,14,1,12,1,6,1,10,2,16,8,6,1, - 8,3,14,1,14,1,10,1,6,1,4,1,4,2,8,3, - 10,2,2,1,14,1,12,1,6,1,4,2,8,1,6,2, - 12,1,6,1,12,1,12,1,4,2,255,128,114,194,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,64,0,0,0,115,88,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,100, - 3,90,5,101,6,111,30,100,4,101,7,118,0,90,8,101, - 9,100,5,100,6,132,0,131,1,90,10,101,11,100,7,100, - 8,132,0,131,1,90,12,101,11,100,14,100,10,100,11,132, - 1,131,1,90,13,101,11,100,15,100,12,100,13,132,1,131, - 1,90,14,100,9,83,0,41,16,218,21,87,105,110,100,111, - 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, - 122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,100, - 101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,100, - 101,99,108,97,114,101,100,32,105,110,32,116,104,101,32,87, - 105,110,100,111,119,115,32,114,101,103,105,115,116,114,121,46, - 122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,111, - 110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,121, - 115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,108, - 101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,83, - 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, - 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, - 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, - 123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,103, - 122,6,95,100,46,112,121,100,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, - 0,115,50,0,0,0,122,16,116,0,160,1,116,0,106,2, - 124,0,161,2,87,0,83,0,4,0,116,3,121,48,1,0, - 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, - 6,0,89,0,83,0,119,0,114,114,0,0,0,41,5,218, - 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, - 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, - 83,69,82,114,58,0,0,0,90,18,72,75,69,89,95,76, - 79,67,65,76,95,77,65,67,72,73,78,69,114,19,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 247,2,0,0,115,10,0,0,0,2,2,16,1,12,1,20, - 1,255,128,122,36,87,105,110,100,111,119,115,82,101,103,105, - 115,116,114,121,70,105,110,100,101,114,46,95,111,112,101,110, - 95,114,101,103,105,115,116,114,121,99,2,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0, - 0,0,115,130,0,0,0,124,0,106,0,114,14,124,0,106, - 1,125,2,110,6,124,0,106,2,125,2,124,2,106,3,124, - 1,100,1,116,4,106,5,100,0,100,2,133,2,25,0,22, - 0,100,3,141,2,125,3,122,60,124,0,160,6,124,3,161, - 1,143,28,125,4,116,7,160,8,124,4,100,4,161,2,125, - 5,87,0,100,0,4,0,4,0,131,3,1,0,110,16,49, - 0,115,94,119,1,1,0,1,0,1,0,89,0,1,0,87, - 0,124,5,83,0,4,0,116,9,121,128,1,0,1,0,1, - 0,89,0,100,0,83,0,119,0,41,5,78,122,5,37,100, - 46,37,100,114,39,0,0,0,41,2,114,143,0,0,0,90, - 11,115,121,115,95,118,101,114,115,105,111,110,114,10,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,70,0,0,0,114,15,0,0,0,218,12,118,101, - 114,115,105,111,110,95,105,110,102,111,114,197,0,0,0,114, - 196,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, - 114,58,0,0,0,41,6,218,3,99,108,115,114,143,0,0, - 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, - 20,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, - 112,97,116,104,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, - 105,115,116,114,121,254,2,0,0,115,26,0,0,0,6,2, - 8,1,6,2,6,1,16,1,6,255,2,2,12,1,44,1, - 4,3,12,254,8,1,255,128,122,38,87,105,110,100,111,119, - 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,46, - 95,115,101,97,114,99,104,95,114,101,103,105,115,116,114,121, - 78,99,4,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,8,0,0,0,67,0,0,0,115,118,0,0,0,124, - 0,160,0,124,1,161,1,125,4,124,4,100,0,117,0,114, - 22,100,0,83,0,122,12,116,1,124,4,131,1,1,0,87, - 0,110,20,4,0,116,2,121,54,1,0,1,0,1,0,89, - 0,100,0,83,0,119,0,116,3,131,0,68,0,93,50,92, - 2,125,5,125,6,124,4,160,4,116,5,124,6,131,1,161, - 1,114,62,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,100,0,83,0,41,2,78,114,184,0,0,0,41,8,114, - 204,0,0,0,114,57,0,0,0,114,58,0,0,0,114,188, - 0,0,0,114,115,0,0,0,114,116,0,0,0,114,139,0, - 0,0,218,16,115,112,101,99,95,102,114,111,109,95,108,111, - 97,100,101,114,41,8,114,202,0,0,0,114,143,0,0,0, - 114,52,0,0,0,218,6,116,97,114,103,101,116,114,203,0, - 0,0,114,144,0,0,0,114,193,0,0,0,114,191,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,9,102,105,110,100,95,115,112,101,99,13,3,0,0,115, - 32,0,0,0,10,2,8,1,4,1,2,1,12,1,12,1, - 8,1,14,1,14,1,6,1,8,1,2,1,6,254,8,3, - 4,251,255,128,122,31,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,115,112,101,99,99,3,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, - 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, - 3,100,1,117,1,114,26,124,3,106,1,83,0,100,1,83, - 0,41,2,122,108,70,105,110,100,32,109,111,100,117,108,101, - 32,110,97,109,101,100,32,105,110,32,116,104,101,32,114,101, - 103,105,115,116,114,121,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,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,78,169,2,114,207,0,0,0,114,144,0,0,0,169,4, - 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, - 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, - 29,3,0,0,115,10,0,0,0,12,7,8,1,6,1,4, - 2,255,128,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,2,78,78,41,1,78,41,15,114, - 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,200,0,0,0,114,199,0,0,0,218,11,95, - 77,83,95,87,73,78,68,79,87,83,218,18,69,88,84,69, - 78,83,73,79,78,95,83,85,70,70,73,88,69,83,114,198, - 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111, - 100,114,197,0,0,0,218,11,99,108,97,115,115,109,101,116, - 104,111,100,114,204,0,0,0,114,207,0,0,0,114,210,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,195,0,0,0,235,2,0,0,115, - 32,0,0,0,8,0,4,2,2,3,2,255,2,4,2,255, - 12,3,2,2,10,1,2,6,10,1,2,14,12,1,2,15, - 16,1,255,128,114,195,0,0,0,99,0,0,0,0,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,4,100,5,132, - 0,90,5,100,6,100,7,132,0,90,6,100,8,100,9,132, - 0,90,7,100,10,83,0,41,11,218,13,95,76,111,97,100, - 101,114,66,97,115,105,99,115,122,83,66,97,115,101,32,99, - 108,97,115,115,32,111,102,32,99,111,109,109,111,110,32,99, - 111,100,101,32,110,101,101,100,101,100,32,98,121,32,98,111, - 116,104,32,83,111,117,114,99,101,76,111,97,100,101,114,32, - 97,110,100,10,32,32,32,32,83,111,117,114,99,101,108,101, - 115,115,70,105,108,101,76,111,97,100,101,114,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0, - 0,0,67,0,0,0,115,64,0,0,0,116,0,124,0,160, - 1,124,1,161,1,131,1,100,1,25,0,125,2,124,2,160, - 2,100,2,100,1,161,2,100,3,25,0,125,3,124,1,160, - 3,100,2,161,1,100,4,25,0,125,4,124,3,100,5,107, - 2,111,62,124,4,100,5,107,3,83,0,41,7,122,141,67, - 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, - 116,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97, - 103,101,32,98,121,32,99,104,101,99,107,105,110,103,32,105, - 102,10,32,32,32,32,32,32,32,32,116,104,101,32,112,97, - 116,104,32,114,101,116,117,114,110,101,100,32,98,121,32,103, - 101,116,95,102,105,108,101,110,97,109,101,32,104,97,115,32, - 97,32,102,105,108,101,110,97,109,101,32,111,102,32,39,95, - 95,105,110,105,116,95,95,46,112,121,39,46,114,3,0,0, - 0,114,79,0,0,0,114,0,0,0,0,114,39,0,0,0, - 218,8,95,95,105,110,105,116,95,95,78,41,4,114,55,0, - 0,0,114,183,0,0,0,114,51,0,0,0,114,49,0,0, - 0,41,5,114,123,0,0,0,114,143,0,0,0,114,101,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,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,186,0,0,0, - 48,3,0,0,115,10,0,0,0,18,3,16,1,14,1,16, - 1,255,128,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,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,169, - 2,122,42,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,7, - 0,0,0,169,2,114,123,0,0,0,114,191,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,13, - 99,114,101,97,116,101,95,109,111,100,117,108,101,56,3,0, - 0,115,4,0,0,0,4,0,255,128,122,27,95,76,111,97, - 100,101,114,66,97,115,105,99,115,46,99,114,101,97,116,101, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, - 115,56,0,0,0,124,0,160,0,124,1,106,1,161,1,125, - 2,124,2,100,1,117,0,114,36,116,2,100,2,160,3,124, - 1,106,1,161,1,131,1,130,1,116,4,160,5,116,6,124, - 2,124,1,106,7,161,3,1,0,100,1,83,0,41,3,122, - 19,69,120,101,99,117,116,101,32,116,104,101,32,109,111,100, - 117,108,101,46,78,122,52,99,97,110,110,111,116,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,130,0,0,0,114,122,0,0, - 0,114,70,0,0,0,114,139,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,136,0,0, - 0,41,3,114,123,0,0,0,218,6,109,111,100,117,108,101, - 114,168,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108, - 101,59,3,0,0,115,14,0,0,0,12,2,8,1,6,1, - 4,1,6,255,20,2,255,128,122,25,95,76,111,97,100,101, - 114,66,97,115,105,99,115,46,101,120,101,99,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,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,2,122, - 26,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,46,78,41,2,114,139, - 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,123,0,0,0,114,143,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,67,3, - 0,0,115,4,0,0,0,12,3,255,128,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,130,0,0,0,114,129, - 0,0,0,114,131,0,0,0,114,132,0,0,0,114,186,0, - 0,0,114,219,0,0,0,114,224,0,0,0,114,227,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,215,0,0,0,43,3,0,0,115,14, - 0,0,0,8,0,4,2,8,3,8,8,8,3,12,8,255, - 128,114,215,0,0,0,99,0,0,0,0,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,100,6, - 132,0,90,5,100,7,100,8,132,0,90,6,100,9,100,10, - 132,0,90,7,100,11,100,12,156,1,100,13,100,14,132,2, - 90,8,100,15,100,16,132,0,90,9,100,17,83,0,41,18, - 218,12,83,111,117,114,99,101,76,111,97,100,101,114,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, - 0,0,0,67,0,0,0,115,4,0,0,0,116,0,130,1, - 41,2,122,165,79,112,116,105,111,110,97,108,32,109,101,116, - 104,111,100,32,116,104,97,116,32,114,101,116,117,114,110,115, - 32,116,104,101,32,109,111,100,105,102,105,99,97,116,105,111, - 110,32,116,105,109,101,32,40,97,110,32,105,110,116,41,32, - 102,111,114,32,116,104,101,10,32,32,32,32,32,32,32,32, - 115,112,101,99,105,102,105,101,100,32,112,97,116,104,32,40, - 97,32,115,116,114,41,46,10,10,32,32,32,32,32,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,78,41,1,114,58,0,0, - 0,169,2,114,123,0,0,0,114,52,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,10,112,97, - 116,104,95,109,116,105,109,101,75,3,0,0,115,4,0,0, - 0,4,6,255,128,122,23,83,111,117,114,99,101,76,111,97, - 100,101,114,46,112,97,116,104,95,109,116,105,109,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,14,0,0,0,100,1,124,0, - 160,0,124,1,161,1,105,1,83,0,41,3,97,158,1,0, - 0,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100, - 32,114,101,116,117,114,110,105,110,103,32,97,32,109,101,116, - 97,100,97,116,97,32,100,105,99,116,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,10,32,32,32, - 32,32,32,32,32,112,97,116,104,32,40,97,32,115,116,114, - 41,46,10,10,32,32,32,32,32,32,32,32,80,111,115,115, - 105,98,108,101,32,107,101,121,115,58,10,32,32,32,32,32, - 32,32,32,45,32,39,109,116,105,109,101,39,32,40,109,97, - 110,100,97,116,111,114,121,41,32,105,115,32,116,104,101,32, - 110,117,109,101,114,105,99,32,116,105,109,101,115,116,97,109, - 112,32,111,102,32,108,97,115,116,32,115,111,117,114,99,101, - 10,32,32,32,32,32,32,32,32,32,32,99,111,100,101,32, - 109,111,100,105,102,105,99,97,116,105,111,110,59,10,32,32, - 32,32,32,32,32,32,45,32,39,115,105,122,101,39,32,40, - 111,112,116,105,111,110,97,108,41,32,105,115,32,116,104,101, - 32,115,105,122,101,32,105,110,32,98,121,116,101,115,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,99,111,100, - 101,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108, - 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101, - 116,104,111,100,32,97,108,108,111,119,115,32,116,104,101,32, - 108,111,97,100,101,114,32,116,111,32,114,101,97,100,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,32, - 32,32,32,32,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, - 173,0,0,0,78,41,1,114,230,0,0,0,114,229,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,10,112,97,116,104,95,115,116,97,116,115,83,3,0,0, - 115,4,0,0,0,14,12,255,128,122,23,83,111,117,114,99, - 101,76,111,97,100,101,114,46,112,97,116,104,95,115,116,97, - 116,115,99,4,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,4,0,0,0,67,0,0,0,115,12,0,0,0, - 124,0,160,0,124,2,124,3,161,2,83,0,41,2,122,228, - 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, - 119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116, - 97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102, - 105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41, - 46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101, - 109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116, - 104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116, - 104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121, - 116,101,99,111,100,101,32,102,105,108,101,115,46,10,10,32, - 32,32,32,32,32,32,32,84,104,101,32,115,111,117,114,99, - 101,32,112,97,116,104,32,105,115,32,110,101,101,100,101,100, - 32,105,110,32,111,114,100,101,114,32,116,111,32,99,111,114, - 114,101,99,116,108,121,32,116,114,97,110,115,102,101,114,32, - 112,101,114,109,105,115,115,105,111,110,115,10,32,32,32,32, - 32,32,32,32,78,41,1,218,8,115,101,116,95,100,97,116, - 97,41,4,114,123,0,0,0,114,112,0,0,0,90,10,99, - 97,99,104,101,95,112,97,116,104,114,37,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,15,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,97,3, - 0,0,115,4,0,0,0,12,8,255,128,122,28,83,111,117, - 114,99,101,76,111,97,100,101,114,46,95,99,97,99,104,101, - 95,98,121,116,101,99,111,100,101,99,3,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,1,83,0,41,2,122,150,79, - 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,119, - 104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,97, - 32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,105, - 108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,46, - 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, - 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, - 111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,104, - 101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,32, - 32,32,32,32,32,78,114,7,0,0,0,41,3,114,123,0, - 0,0,114,52,0,0,0,114,37,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,232,0,0,0, - 107,3,0,0,115,4,0,0,0,4,0,255,128,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,0,0,0, - 0,5,0,0,0,10,0,0,0,67,0,0,0,115,70,0, - 0,0,124,0,160,0,124,1,161,1,125,2,122,20,124,0, - 160,1,124,2,161,1,125,3,87,0,116,4,124,3,131,1, - 83,0,4,0,116,2,121,68,1,0,125,4,1,0,122,14, - 116,3,100,1,124,1,100,2,141,2,124,4,130,2,100,3, - 125,4,126,4,119,1,119,0,41,4,122,52,67,111,110,99, - 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, - 97,100,101,114,46,103,101,116,95,115,111,117,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,120,0,0,0,78,41, - 5,114,183,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,58,0,0,0,114,122,0,0,0,114,180,0,0,0,41, - 5,114,123,0,0,0,114,143,0,0,0,114,52,0,0,0, - 114,178,0,0,0,218,3,101,120,99,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,10,103,101,116,95,115, - 111,117,114,99,101,114,3,0,0,115,26,0,0,0,10,2, - 2,1,12,1,8,4,14,253,4,1,2,1,4,255,2,1, - 2,255,8,128,2,255,255,128,122,23,83,111,117,114,99,101, - 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, - 101,114,109,0,0,0,41,1,218,9,95,111,112,116,105,109, - 105,122,101,99,3,0,0,0,0,0,0,0,1,0,0,0, - 4,0,0,0,8,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,106,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,141,6,83,0,41,5,122,130,82,101,116,117,114, - 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, - 116,32,99,111,109,112,105,108,101,100,32,102,114,111,109,32, - 115,111,117,114,99,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,101,32,39,100,97,116,97,39,32,97,114,103,117, - 109,101,110,116,32,99,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,222,0, - 0,0,84,41,2,218,12,100,111,110,116,95,105,110,104,101, - 114,105,116,114,89,0,0,0,78,41,3,114,139,0,0,0, - 114,221,0,0,0,218,7,99,111,109,112,105,108,101,41,4, - 114,123,0,0,0,114,37,0,0,0,114,52,0,0,0,114, - 237,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,14,115,111,117,114,99,101,95,116,111,95,99, - 111,100,101,124,3,0,0,115,8,0,0,0,12,5,4,1, - 6,255,255,128,122,27,83,111,117,114,99,101,76,111,97,100, - 101,114,46,115,111,117,114,99,101,95,116,111,95,99,111,100, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,15,0, - 0,0,9,0,0,0,67,0,0,0,115,28,2,0,0,124, - 0,160,0,124,1,161,1,125,2,100,1,125,3,100,1,125, - 4,100,1,125,5,100,2,125,6,100,3,125,7,122,12,116, - 1,124,2,131,1,125,8,87,0,110,24,4,0,116,2,121, - 66,1,0,1,0,1,0,100,1,125,8,89,0,144,1,110, - 42,119,0,122,14,124,0,160,3,124,2,161,1,125,9,87, - 0,110,20,4,0,116,4,121,102,1,0,1,0,1,0,89, - 0,144,1,110,6,119,0,116,5,124,9,100,4,25,0,131, - 1,125,3,122,14,124,0,160,6,124,8,161,1,125,10,87, - 0,110,18,4,0,116,4,121,148,1,0,1,0,1,0,89, - 0,110,216,119,0,124,1,124,8,100,5,156,2,125,11,122, - 148,116,7,124,10,124,1,124,11,131,3,125,12,116,8,124, - 10,131,1,100,6,100,1,133,2,25,0,125,13,124,12,100, - 7,64,0,100,8,107,3,125,6,124,6,144,1,114,30,124, - 12,100,9,64,0,100,8,107,3,125,7,116,9,106,10,100, - 10,107,3,144,1,114,50,124,7,115,248,116,9,106,10,100, - 11,107,2,144,1,114,50,124,0,160,6,124,2,161,1,125, - 4,116,9,160,11,116,12,124,4,161,2,125,5,116,13,124, - 10,124,5,124,1,124,11,131,4,1,0,110,20,116,14,124, - 10,124,3,124,9,100,12,25,0,124,1,124,11,131,5,1, - 0,87,0,110,24,4,0,116,15,116,16,102,2,144,1,121, - 76,1,0,1,0,1,0,89,0,110,32,119,0,116,17,160, - 18,100,13,124,8,124,2,161,3,1,0,116,19,124,13,124, - 1,124,8,124,2,100,14,141,4,83,0,124,4,100,1,117, - 0,144,1,114,128,124,0,160,6,124,2,161,1,125,4,124, - 0,160,20,124,4,124,2,161,2,125,14,116,17,160,18,100, - 15,124,2,161,2,1,0,116,21,106,22,144,2,115,24,124, - 8,100,1,117,1,144,2,114,24,124,3,100,1,117,1,144, - 2,114,24,124,6,144,1,114,220,124,5,100,1,117,0,144, - 1,114,206,116,9,160,11,124,4,161,1,125,5,116,23,124, - 14,124,5,124,7,131,3,125,10,110,16,116,24,124,14,124, - 3,116,25,124,4,131,1,131,3,125,10,122,20,124,0,160, - 26,124,2,124,8,124,10,161,3,1,0,87,0,124,14,83, - 0,4,0,116,2,144,2,121,22,1,0,1,0,1,0,89, - 0,124,14,83,0,119,0,124,14,83,0,41,16,122,190,67, - 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, - 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, - 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, - 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, - 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, - 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, - 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, - 32,32,32,32,32,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,173,0,0,0,114,163,0,0,0,114,149,0,0,0,114, - 3,0,0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112, - 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,183,0,0,0,114, - 102,0,0,0,114,88,0,0,0,114,231,0,0,0,114,58, - 0,0,0,114,30,0,0,0,114,234,0,0,0,114,156,0, - 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,167, - 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,161,0,0,0,218, - 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, - 69,82,114,162,0,0,0,114,160,0,0,0,114,122,0,0, - 0,114,154,0,0,0,114,139,0,0,0,114,153,0,0,0, - 114,169,0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4, - 0,0,0,114,233,0,0,0,41,15,114,123,0,0,0,114, - 143,0,0,0,114,112,0,0,0,114,158,0,0,0,114,178, - 0,0,0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0, - 114,155,0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,220,0,0,0,132,3,0,0,115,160,0,0,0, - 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, - 12,1,12,1,2,2,14,1,12,1,8,1,12,2,2,1, - 14,1,12,1,6,1,2,3,2,1,6,254,2,4,12,1, - 16,1,12,1,6,1,12,1,12,1,2,1,2,255,8,2, - 4,254,10,3,4,1,2,1,2,1,4,254,8,4,2,1, - 6,255,2,3,2,1,2,1,6,1,2,1,2,1,8,251, - 18,7,6,1,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,10,3,10,1,12,1,12,1,18,1,6,1,4,255, - 6,2,10,1,10,1,14,1,6,2,6,1,4,255,2,2, - 16,1,4,3,14,254,2,1,4,1,2,255,4,1,255,128, - 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,130,0,0,0,114, - 129,0,0,0,114,131,0,0,0,114,230,0,0,0,114,231, - 0,0,0,114,233,0,0,0,114,232,0,0,0,114,236,0, - 0,0,114,240,0,0,0,114,220,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,228,0,0,0,73,3,0,0,115,18,0,0,0,8,0, - 8,2,8,8,8,14,8,10,8,7,14,10,12,8,255,128, - 114,228,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,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,4,100,5,132,0,90,5,100, - 6,100,7,132,0,90,6,101,7,135,0,102,1,100,8,100, - 9,132,8,131,1,90,8,101,7,100,10,100,11,132,0,131, - 1,90,9,100,12,100,13,132,0,90,10,101,7,100,14,100, - 15,132,0,131,1,90,11,135,0,4,0,90,12,83,0,41, - 16,218,10,70,105,108,101,76,111,97,100,101,114,122,103,66, - 97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,32, - 99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,108, - 101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,101, - 114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,111, - 100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,117, - 105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,32, - 117,115,97,103,101,46,99,3,0,0,0,0,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,1,83,0,41,2,122,75,67,97,99,104,101,32,116,104, - 101,32,109,111,100,117,108,101,32,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,163,0,0,0,41,3,114,123,0,0,0, - 114,143,0,0,0,114,52,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,216,0,0,0,222,3, - 0,0,115,6,0,0,0,6,3,10,1,255,128,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,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,114,0,0,0,169,2,218, - 9,95,95,99,108,97,115,115,95,95,114,136,0,0,0,169, - 2,114,123,0,0,0,90,5,111,116,104,101,114,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,6,95,95, - 101,113,95,95,228,3,0,0,115,8,0,0,0,12,1,10, - 1,2,255,255,128,122,17,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,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,114,0,0,0,169, - 3,218,4,104,97,115,104,114,121,0,0,0,114,52,0,0, - 0,169,1,114,123,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,8,95,95,104,97,115,104,95, - 95,232,3,0,0,115,4,0,0,0,20,1,255,128,122,19, - 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,0,0,0,0, - 2,0,0,0,3,0,0,0,3,0,0,0,115,16,0,0, - 0,116,0,116,1,124,0,131,2,160,2,124,1,161,1,83, - 0,41,2,122,100,76,111,97,100,32,97,32,109,111,100,117, - 108,101,32,102,114,111,109,32,97,32,102,105,108,101,46,10, + 22,95,99,111,100,101,95,116,111,95,116,105,109,101,115,116, + 97,109,112,95,112,121,99,129,2,0,0,115,14,0,0,0, + 8,2,14,1,14,1,14,1,16,1,4,1,255,128,114,174, + 0,0,0,84,99,3,0,0,0,0,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,2,116,3,124,4,131,1, + 161,1,1,0,116,4,124,1,131,1,100,2,107,2,115,50, + 74,0,130,1,124,3,160,2,124,1,161,1,1,0,124,3, + 160,2,116,5,160,6,124,0,161,1,161,1,1,0,124,3, + 83,0,41,4,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,3,0,0, + 0,114,150,0,0,0,78,41,7,114,170,0,0,0,114,152, + 0,0,0,114,171,0,0,0,114,33,0,0,0,114,4,0, + 0,0,114,164,0,0,0,114,172,0,0,0,41,5,114,168, + 0,0,0,114,161,0,0,0,90,7,99,104,101,99,107,101, + 100,114,37,0,0,0,114,16,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,17,95,99,111,100, + 101,95,116,111,95,104,97,115,104,95,112,121,99,139,2,0, + 0,115,16,0,0,0,8,2,12,1,14,1,16,1,10,1, + 16,1,4,1,255,128,114,175,0,0,0,99,1,0,0,0, + 0,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,100,2,100,3,161, + 2,125,4,124,4,160,6,124,0,160,6,124,3,100,1,25, + 0,161,1,161,1,83,0,41,4,122,121,68,101,99,111,100, + 101,32,98,121,116,101,115,32,114,101,112,114,101,115,101,110, + 116,105,110,103,32,115,111,117,114,99,101,32,99,111,100,101, + 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, + 115,116,114,105,110,103,46,10,10,32,32,32,32,85,110,105, + 118,101,114,115,97,108,32,110,101,119,108,105,110,101,32,115, + 117,112,112,111,114,116,32,105,115,32,117,115,101,100,32,105, + 110,32,116,104,101,32,100,101,99,111,100,105,110,103,46,10, + 32,32,32,32,114,0,0,0,0,78,84,41,7,218,8,116, + 111,107,101,110,105,122,101,114,72,0,0,0,90,7,66,121, + 116,101,115,73,79,90,8,114,101,97,100,108,105,110,101,90, + 15,100,101,116,101,99,116,95,101,110,99,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,176,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,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,13,100,101,99,111,100, + 101,95,115,111,117,114,99,101,150,2,0,0,115,12,0,0, + 0,8,5,12,1,10,1,12,1,20,1,255,128,114,180,0, + 0,0,169,2,114,144,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,0,0,0,0,2,0, + 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,12, + 1,0,0,124,1,100,1,117,0,114,56,100,2,125,1,116, + 0,124,2,100,3,131,2,114,66,122,14,124,2,160,1,124, + 0,161,1,125,1,87,0,110,28,4,0,116,2,144,1,121, + 10,1,0,1,0,1,0,89,0,110,10,116,3,160,4,124, + 1,161,1,125,1,116,5,106,6,124,0,124,2,124,1,100, + 4,141,3,125,4,100,5,124,4,95,7,124,2,100,1,117, + 0,114,148,116,8,131,0,68,0,93,40,92,2,125,5,125, + 6,124,1,160,9,116,10,124,6,131,1,161,1,114,102,124, + 5,124,0,124,1,131,2,125,2,124,2,124,4,95,11,1, + 0,113,148,100,1,83,0,124,3,116,12,117,0,114,212,116, + 0,124,2,100,6,131,2,114,218,122,14,124,2,160,13,124, + 0,161,1,125,7,87,0,110,18,4,0,116,2,144,1,121, + 8,1,0,1,0,1,0,89,0,110,18,124,7,114,218,103, + 0,124,4,95,14,110,6,124,3,124,4,95,14,124,4,106, + 14,103,0,107,2,144,1,114,4,124,1,144,1,114,4,116, + 15,124,1,131,1,100,7,25,0,125,8,124,4,106,14,160, + 16,124,8,161,1,1,0,124,4,83,0,119,0,119,0,41, + 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109, + 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, + 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116, + 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100, + 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109, + 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, + 103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105,115,116, + 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97, + 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112, + 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105, + 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116, + 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32, + 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32, + 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46, + 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114, + 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101, + 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95, + 105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0,0,0, + 114,183,0,0,0,114,122,0,0,0,114,18,0,0,0,114, + 85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0,0,0, + 218,9,95,80,79,80,85,76,65,84,69,114,186,0,0,0, + 114,182,0,0,0,114,55,0,0,0,218,6,97,112,112,101, + 110,100,41,9,114,121,0,0,0,90,8,108,111,99,97,116, + 105,111,110,114,144,0,0,0,114,182,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,186,0,0,0, + 90,7,100,105,114,110,97,109,101,114,7,0,0,0,114,7, + 0,0,0,114,8,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,167,2,0,0,115,68,0,0,0,8,12,4,4,10,1, + 2,2,14,1,14,1,4,1,10,2,16,8,6,1,8,3, + 14,1,14,1,10,1,6,1,4,1,4,2,8,3,10,2, + 2,1,14,1,14,1,4,1,4,2,8,1,6,2,12,1, + 6,1,12,1,12,1,4,2,2,244,2,226,255,128,114,194, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,64,0,0,0,115,88,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, + 4,100,3,90,5,101,6,111,30,100,4,101,7,118,0,90, + 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, + 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, + 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, + 1,131,1,90,14,100,9,83,0,41,16,218,21,87,105,110, + 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, + 101,114,122,62,77,101,116,97,32,112,97,116,104,32,102,105, + 110,100,101,114,32,102,111,114,32,109,111,100,117,108,101,115, + 32,100,101,99,108,97,114,101,100,32,105,110,32,116,104,101, + 32,87,105,110,100,111,119,115,32,114,101,103,105,115,116,114, + 121,46,122,59,83,111,102,116,119,97,114,101,92,80,121,116, + 104,111,110,92,80,121,116,104,111,110,67,111,114,101,92,123, + 115,121,115,95,118,101,114,115,105,111,110,125,92,77,111,100, + 117,108,101,115,92,123,102,117,108,108,110,97,109,101,125,122, + 65,83,111,102,116,119,97,114,101,92,80,121,116,104,111,110, + 92,80,121,116,104,111,110,67,111,114,101,92,123,115,121,115, + 95,118,101,114,115,105,111,110,125,92,77,111,100,117,108,101, + 115,92,123,102,117,108,108,110,97,109,101,125,92,68,101,98, + 117,103,122,6,95,100,46,112,121,100,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, + 0,0,0,115,50,0,0,0,122,16,116,0,160,1,116,0, + 106,2,124,0,161,2,87,0,83,0,4,0,116,3,121,48, + 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,0, + 161,2,6,0,89,0,83,0,119,0,114,114,0,0,0,41, + 5,218,6,119,105,110,114,101,103,90,7,79,112,101,110,75, + 101,121,90,17,72,75,69,89,95,67,85,82,82,69,78,84, + 95,85,83,69,82,114,58,0,0,0,90,18,72,75,69,89, + 95,76,79,67,65,76,95,77,65,67,72,73,78,69,114,19, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, + 114,121,247,2,0,0,115,12,0,0,0,2,2,16,1,12, + 1,18,1,2,255,255,128,122,36,87,105,110,100,111,119,115, + 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,95, + 111,112,101,110,95,114,101,103,105,115,116,114,121,99,2,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, + 0,0,67,0,0,0,115,130,0,0,0,124,0,106,0,114, + 14,124,0,106,1,125,2,110,6,124,0,106,2,125,2,124, + 2,106,3,124,1,100,1,116,4,106,5,100,0,100,2,133, + 2,25,0,22,0,100,3,141,2,125,3,122,60,124,0,160, + 6,124,3,161,1,143,28,125,4,116,7,160,8,124,4,100, + 4,161,2,125,5,87,0,100,0,4,0,4,0,131,3,1, + 0,110,16,49,0,115,94,119,1,1,0,1,0,1,0,89, + 0,1,0,87,0,124,5,83,0,4,0,116,9,121,128,1, + 0,1,0,1,0,89,0,100,0,83,0,119,0,41,5,78, + 122,5,37,100,46,37,100,114,39,0,0,0,41,2,114,143, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,10,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,70,0,0,0,114,15,0,0,0, + 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,197, + 0,0,0,114,196,0,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,58,0,0,0,41,6,218,3,99,108,115, + 114,143,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,20,0,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,16,95,115,101,97,114,99,104, + 95,114,101,103,105,115,116,114,121,254,2,0,0,115,28,0, + 0,0,6,2,8,1,6,2,6,1,16,1,6,255,2,2, + 12,1,44,1,4,3,12,254,6,1,2,255,255,128,122,38, + 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, + 105,110,100,101,114,46,95,115,101,97,114,99,104,95,114,101, + 103,105,115,116,114,121,78,99,4,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,8,0,0,0,67,0,0,0, + 115,118,0,0,0,124,0,160,0,124,1,161,1,125,4,124, + 4,100,0,117,0,114,22,100,0,83,0,122,12,116,1,124, + 4,131,1,1,0,87,0,110,18,4,0,116,2,121,116,1, + 0,1,0,1,0,89,0,100,0,83,0,116,3,131,0,68, + 0,93,50,92,2,125,5,125,6,124,4,160,4,116,5,124, + 6,131,1,161,1,114,60,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,100,0,83,0,119,0,41,2,78,114,184, + 0,0,0,41,8,114,204,0,0,0,114,57,0,0,0,114, + 58,0,0,0,114,188,0,0,0,114,115,0,0,0,114,116, + 0,0,0,114,139,0,0,0,218,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,41,8,114,202,0,0, + 0,114,143,0,0,0,114,52,0,0,0,218,6,116,97,114, + 103,101,116,114,203,0,0,0,114,144,0,0,0,114,193,0, + 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,9,102,105,110,100,95,115,112,101, + 99,13,3,0,0,115,34,0,0,0,10,2,8,1,4,1, + 2,1,12,1,12,1,6,1,14,1,14,1,6,1,8,1, + 2,1,6,254,8,3,4,251,2,254,255,128,122,31,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,115,112,101,99,99,3,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, + 0,0,67,0,0,0,115,30,0,0,0,124,0,160,0,124, + 1,124,2,161,2,125,3,124,3,100,1,117,1,114,26,124, + 3,106,1,83,0,100,1,83,0,41,2,122,108,70,105,110, + 100,32,109,111,100,117,108,101,32,110,97,109,101,100,32,105, + 110,32,116,104,101,32,114,101,103,105,115,116,114,121,46,10, 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,78,41,3,218,5,115,117, - 112,101,114,114,246,0,0,0,114,227,0,0,0,114,226,0, - 0,0,169,1,114,248,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,227,0,0,0,235,3,0,0,115,4,0,0, - 0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114,110,32,116,104,101,32, - 112,97,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,78, - 114,56,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,183,0,0,0,247,3, - 0,0,115,4,0,0,0,6,3,255,128,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,0,0,0, - 0,3,0,0,0,8,0,0,0,67,0,0,0,115,128,0, - 0,0,116,0,124,0,116,1,116,2,102,2,131,2,114,72, - 116,3,160,4,116,5,124,1,131,1,161,1,143,24,125,2, - 124,2,160,6,161,0,87,0,2,0,100,1,4,0,4,0, - 131,3,1,0,83,0,49,0,115,58,119,1,1,0,1,0, - 1,0,89,0,1,0,100,1,83,0,116,3,160,7,124,1, - 100,2,161,2,143,24,125,2,124,2,160,6,161,0,87,0, - 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, - 115,114,119,1,1,0,1,0,1,0,89,0,1,0,100,1, - 83,0,41,3,122,39,82,101,116,117,114,110,32,116,104,101, - 32,100,97,116,97,32,102,114,111,109,32,112,97,116,104,32, - 97,115,32,114,97,119,32,98,121,116,101,115,46,78,218,1, - 114,41,8,114,165,0,0,0,114,228,0,0,0,218,19,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,114,72,0,0,0,90,9,111,112,101,110,95,99,111, - 100,101,114,90,0,0,0,90,4,114,101,97,100,114,73,0, - 0,0,41,3,114,123,0,0,0,114,52,0,0,0,114,76, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,234,0,0,0,252,3,0,0,115,14,0,0,0, - 14,2,16,1,42,1,14,2,38,1,4,128,255,128,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,0,0,0,0, - 3,0,0,0,2,0,0,0,67,0,0,0,115,20,0,0, - 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,124, - 0,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, - 10,70,105,108,101,82,101,97,100,101,114,41,2,90,17,105, - 109,112,111,114,116,108,105,98,46,114,101,97,100,101,114,115, - 114,4,1,0,0,41,3,114,123,0,0,0,114,223,0,0, - 0,114,4,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,5,4,0,0,115,6, - 0,0,0,12,2,8,1,255,128,122,30,70,105,108,101,76, - 111,97,100,101,114,46,103,101,116,95,114,101,115,111,117,114, - 99,101,95,114,101,97,100,101,114,41,13,114,130,0,0,0, - 114,129,0,0,0,114,131,0,0,0,114,132,0,0,0,114, - 216,0,0,0,114,250,0,0,0,114,254,0,0,0,114,140, - 0,0,0,114,227,0,0,0,114,183,0,0,0,114,234,0, - 0,0,114,5,1,0,0,90,13,95,95,99,108,97,115,115, - 99,101,108,108,95,95,114,7,0,0,0,114,7,0,0,0, - 114,0,1,0,0,114,8,0,0,0,114,246,0,0,0,217, - 3,0,0,115,26,0,0,0,8,0,4,2,8,3,8,6, - 8,4,2,3,14,1,2,11,10,1,8,4,2,9,18,1, - 255,128,114,246,0,0,0,99,0,0,0,0,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,7,156,1,100,8,100,9,132,2,90,6,100, - 10,83,0,41,11,218,16,83,111,117,114,99,101,70,105,108, - 101,76,111,97,100,101,114,122,62,67,111,110,99,114,101,116, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,83,111,117,114,99,101,76,111,97,100,101,114, - 32,117,115,105,110,103,32,116,104,101,32,102,105,108,101,32, - 115,121,115,116,101,109,46,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, - 115,22,0,0,0,116,0,124,1,131,1,125,2,124,2,106, - 1,124,2,106,2,100,1,156,2,83,0,41,3,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,173,0,0,0,114,241,0,0,0,78,41,3,114, - 57,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,123,0,0,0,114,52, - 0,0,0,114,245,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,231,0,0,0,15,4,0,0, - 115,6,0,0,0,8,2,14,1,255,128,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,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,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,119,0,0, - 0,114,232,0,0,0,41,5,114,123,0,0,0,114,112,0, - 0,0,114,111,0,0,0,114,37,0,0,0,114,60,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,233,0,0,0,20,4,0,0,115,6,0,0,0,8,2, - 16,1,255,128,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,68,0,0,0,114,8,1,0,0, - 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, - 0,11,0,0,0,67,0,0,0,115,4,1,0,0,116,0, - 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, - 114,62,116,1,124,4,131,1,115,62,116,0,124,4,131,1, - 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 124,4,114,62,116,1,124,4,131,1,114,28,116,3,124,6, - 131,1,68,0,93,98,125,7,116,4,124,4,124,7,131,2, - 125,4,122,14,116,5,160,6,124,4,161,1,1,0,87,0, - 113,70,4,0,116,7,121,116,1,0,1,0,1,0,89,0, - 113,70,4,0,116,8,144,1,121,2,1,0,125,8,1,0, - 122,30,116,9,160,10,100,1,124,4,124,8,161,3,1,0, - 87,0,89,0,100,2,125,8,126,8,1,0,100,2,83,0, - 100,2,125,8,126,8,119,1,122,30,116,11,124,1,124,2, - 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, - 1,0,87,0,100,2,83,0,4,0,116,8,121,252,1,0, - 125,8,1,0,122,28,116,9,160,10,100,1,124,1,124,8, - 161,3,1,0,87,0,89,0,100,2,125,8,126,8,100,2, - 83,0,100,2,125,8,126,8,119,1,119,0,100,2,83,0, - 119,0,41,4,122,27,87,114,105,116,101,32,98,121,116,101, - 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101, - 46,122,27,99,111,117,108,100,32,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, - 55,0,0,0,114,64,0,0,0,114,190,0,0,0,114,50, - 0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139,0,0,0,114, - 153,0,0,0,114,77,0,0,0,41,9,114,123,0,0,0, - 114,52,0,0,0,114,37,0,0,0,114,9,1,0,0,218, - 6,112,97,114,101,110,116,114,101,0,0,0,114,47,0,0, - 0,114,43,0,0,0,114,235,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,232,0,0,0,25, - 4,0,0,115,60,0,0,0,12,2,4,1,12,2,12,1, - 10,1,12,254,12,4,10,1,2,1,14,1,12,1,4,2, - 16,1,6,3,4,1,4,255,16,2,8,128,2,1,12,1, - 18,1,14,1,8,2,2,1,18,255,8,128,2,254,4,255, - 2,248,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0, - 0,114,132,0,0,0,114,231,0,0,0,114,233,0,0,0, - 114,232,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,6,1,0,0,11,4, - 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, - 5,255,128,114,6,1,0,0,99,0,0,0,0,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,83,0,41,7,218,20,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, - 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, - 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, - 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, - 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,124, - 1,161,1,125,2,124,0,160,1,124,2,161,1,125,3,124, - 1,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,163,0,0,0,114,149,0,0,0,41,2,114,121, - 0,0,0,114,111,0,0,0,41,5,114,183,0,0,0,114, - 234,0,0,0,114,156,0,0,0,114,169,0,0,0,114,242, - 0,0,0,41,5,114,123,0,0,0,114,143,0,0,0,114, - 52,0,0,0,114,37,0,0,0,114,155,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, - 0,0,60,4,0,0,115,24,0,0,0,10,1,10,1,2, - 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, - 253,255,128,122,29,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,99,111, - 100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,236,0,0,0,76,4, - 0,0,115,4,0,0,0,4,2,255,128,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, + 10,32,32,32,32,32,32,32,32,78,169,2,114,207,0,0, + 0,114,144,0,0,0,169,4,114,202,0,0,0,114,143,0, + 0,0,114,52,0,0,0,114,191,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,102,105,110, + 100,95,109,111,100,117,108,101,29,3,0,0,115,10,0,0, + 0,12,7,8,1,6,1,4,2,255,128,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,2, + 78,78,41,1,78,41,15,114,130,0,0,0,114,129,0,0, + 0,114,131,0,0,0,114,132,0,0,0,114,200,0,0,0, + 114,199,0,0,0,218,11,95,77,83,95,87,73,78,68,79, + 87,83,218,18,69,88,84,69,78,83,73,79,78,95,83,85, + 70,70,73,88,69,83,114,198,0,0,0,218,12,115,116,97, + 116,105,99,109,101,116,104,111,100,114,197,0,0,0,218,11, + 99,108,97,115,115,109,101,116,104,111,100,114,204,0,0,0, + 114,207,0,0,0,114,210,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,195, + 0,0,0,235,2,0,0,115,32,0,0,0,8,0,4,2, + 2,3,2,255,2,4,2,255,12,3,2,2,10,1,2,6, + 10,1,2,14,12,1,2,15,16,1,255,128,114,195,0,0, + 0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132, + 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, + 11,218,13,95,76,111,97,100,101,114,66,97,115,105,99,115, + 122,83,66,97,115,101,32,99,108,97,115,115,32,111,102,32, + 99,111,109,109,111,110,32,99,111,100,101,32,110,101,101,100, + 101,100,32,98,121,32,98,111,116,104,32,83,111,117,114,99, + 101,76,111,97,100,101,114,32,97,110,100,10,32,32,32,32, + 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, + 97,100,101,114,46,99,2,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,116,0,124,0,160,1,124,1,161,1,131,1,100, + 1,25,0,125,2,124,2,160,2,100,2,100,1,161,2,100, + 3,25,0,125,3,124,1,160,3,100,2,161,1,100,4,25, + 0,125,4,124,3,100,5,107,2,111,62,124,4,100,5,107, + 3,83,0,41,7,122,141,67,111,110,99,114,101,116,101,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, + 102,32,73,110,115,112,101,99,116,76,111,97,100,101,114,46, + 105,115,95,112,97,99,107,97,103,101,32,98,121,32,99,104, + 101,99,107,105,110,103,32,105,102,10,32,32,32,32,32,32, + 32,32,116,104,101,32,112,97,116,104,32,114,101,116,117,114, + 110,101,100,32,98,121,32,103,101,116,95,102,105,108,101,110, + 97,109,101,32,104,97,115,32,97,32,102,105,108,101,110,97, + 109,101,32,111,102,32,39,95,95,105,110,105,116,95,95,46, + 112,121,39,46,114,3,0,0,0,114,79,0,0,0,114,0, + 0,0,0,114,39,0,0,0,218,8,95,95,105,110,105,116, + 95,95,78,41,4,114,55,0,0,0,114,183,0,0,0,114, + 51,0,0,0,114,49,0,0,0,41,5,114,123,0,0,0, + 114,143,0,0,0,114,101,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,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,186,0,0,0,48,3,0,0,115,10,0,0, + 0,18,3,16,1,14,1,16,1,255,128,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,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,169,2,122,42,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,7,0,0,0,169,2,114,123,0, + 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,13,99,114,101,97,116,101,95,109, + 111,100,117,108,101,56,3,0,0,115,4,0,0,0,4,0, + 255,128,122,27,95,76,111,97,100,101,114,66,97,115,105,99, + 115,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 5,0,0,0,67,0,0,0,115,56,0,0,0,124,0,160, + 0,124,1,106,1,161,1,125,2,124,2,100,1,117,0,114, + 36,116,2,100,2,160,3,124,1,106,1,161,1,131,1,130, + 1,116,4,160,5,116,6,124,2,124,1,106,7,161,3,1, + 0,100,1,83,0,41,3,122,19,69,120,101,99,117,116,101, + 32,116,104,101,32,109,111,100,117,108,101,46,78,122,52,99, + 97,110,110,111,116,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, + 130,0,0,0,114,122,0,0,0,114,70,0,0,0,114,139, + 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,136,0,0,0,41,3,114,123,0,0,0, + 218,6,109,111,100,117,108,101,114,168,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,101,120, + 101,99,95,109,111,100,117,108,101,59,3,0,0,115,14,0, + 0,0,12,2,8,1,6,1,4,1,6,255,20,2,255,128, + 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, + 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,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,2,122,26,84,104,105,115,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,46,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, + 109,111,100,117,108,101,67,3,0,0,115,4,0,0,0,12, + 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0, + 114,132,0,0,0,114,186,0,0,0,114,219,0,0,0,114, + 224,0,0,0,114,227,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,215,0, + 0,0,43,3,0,0,115,14,0,0,0,8,0,4,2,8, + 3,8,8,8,3,12,8,255,128,114,215,0,0,0,99,0, + 0,0,0,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,100,6,132,0,90,5,100,7,100,8, + 132,0,90,6,100,9,100,10,132,0,90,7,100,11,100,12, + 156,1,100,13,100,14,132,2,90,8,100,15,100,16,132,0, + 90,9,100,17,83,0,41,18,218,12,83,111,117,114,99,101, + 76,111,97,100,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, + 4,0,0,0,116,0,130,1,41,2,122,165,79,112,116,105, + 111,110,97,108,32,109,101,116,104,111,100,32,116,104,97,116, + 32,114,101,116,117,114,110,115,32,116,104,101,32,109,111,100, + 105,102,105,99,97,116,105,111,110,32,116,105,109,101,32,40, + 97,110,32,105,110,116,41,32,102,111,114,32,116,104,101,10, + 32,32,32,32,32,32,32,32,115,112,101,99,105,102,105,101, + 100,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, + 10,32,32,32,32,32,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,78,41,1,114,58,0,0,0,169,2,114,123,0,0,0, + 114,52,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, + 75,3,0,0,115,4,0,0,0,4,6,255,128,122,23,83, + 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, + 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, + 14,0,0,0,100,1,124,0,160,0,124,1,161,1,105,1, + 83,0,41,3,97,158,1,0,0,79,112,116,105,111,110,97, + 108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,105, + 110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,105, + 99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,10,32,32,32,32,32,32,32,32,112,97,116, + 104,32,40,97,32,115,116,114,41,46,10,10,32,32,32,32, + 32,32,32,32,80,111,115,115,105,98,108,101,32,107,101,121, + 115,58,10,32,32,32,32,32,32,32,32,45,32,39,109,116, + 105,109,101,39,32,40,109,97,110,100,97,116,111,114,121,41, + 32,105,115,32,116,104,101,32,110,117,109,101,114,105,99,32, + 116,105,109,101,115,116,97,109,112,32,111,102,32,108,97,115, + 116,32,115,111,117,114,99,101,10,32,32,32,32,32,32,32, + 32,32,32,99,111,100,101,32,109,111,100,105,102,105,99,97, + 116,105,111,110,59,10,32,32,32,32,32,32,32,32,45,32, + 39,115,105,122,101,39,32,40,111,112,116,105,111,110,97,108, + 41,32,105,115,32,116,104,101,32,115,105,122,101,32,105,110, + 32,98,121,116,101,115,32,111,102,32,116,104,101,32,115,111, + 117,114,99,101,32,99,111,100,101,46,10,10,32,32,32,32, + 32,32,32,32,73,109,112,108,101,109,101,110,116,105,110,103, + 32,116,104,105,115,32,109,101,116,104,111,100,32,97,108,108, + 111,119,115,32,116,104,101,32,108,111,97,100,101,114,32,116, + 111,32,114,101,97,100,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,115,46,10,32,32,32,32,32,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,173,0,0,0,78,41,1,114, + 230,0,0,0,114,229,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,10,112,97,116,104,95,115, + 116,97,116,115,83,3,0,0,115,4,0,0,0,14,12,255, + 128,122,23,83,111,117,114,99,101,76,111,97,100,101,114,46, + 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,12,0,0,0,124,0,160,0,124,2,124,3, + 161,2,83,0,41,2,122,228,79,112,116,105,111,110,97,108, + 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114, + 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115, + 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104, + 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, + 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32, + 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111, + 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105, + 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102, + 105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,105, + 115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,101, + 114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,116, + 114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,105, + 111,110,115,10,32,32,32,32,32,32,32,32,78,41,1,218, + 8,115,101,116,95,100,97,116,97,41,4,114,123,0,0,0, + 114,112,0,0,0,90,10,99,97,99,104,101,95,112,97,116, + 104,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,15,95,99,97,99,104,101,95,98,121, + 116,101,99,111,100,101,97,3,0,0,115,4,0,0,0,12, + 8,255,128,122,28,83,111,117,114,99,101,76,111,97,100,101, + 114,46,95,99,97,99,104,101,95,98,121,116,101,99,111,100, + 101,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, + 1,83,0,41,2,122,150,79,112,116,105,111,110,97,108,32, + 109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,105, + 116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,41, + 32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,32, + 40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,32, + 32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,116, + 104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,119, + 115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,110, + 103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,115,46,10,32,32,32,32,32,32,32,32,78,114,7, + 0,0,0,41,3,114,123,0,0,0,114,52,0,0,0,114, + 37,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,232,0,0,0,107,3,0,0,115,4,0,0, + 0,4,0,255,128,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,0,0,0,0,5,0,0,0,10,0,0, + 0,67,0,0,0,115,70,0,0,0,124,0,160,0,124,1, + 161,1,125,2,122,20,124,0,160,1,124,2,161,1,125,3, + 87,0,116,4,124,3,131,1,83,0,4,0,116,2,121,68, + 1,0,125,4,1,0,122,14,116,3,100,1,124,1,100,2, + 141,2,124,4,130,2,100,3,125,4,126,4,119,1,119,0, + 41,4,122,52,67,111,110,99,114,101,116,101,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,73, + 110,115,112,101,99,116,76,111,97,100,101,114,46,103,101,116, + 95,115,111,117,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,120,0,0,0,78,41,5,114,183,0,0,0,218,8, + 103,101,116,95,100,97,116,97,114,58,0,0,0,114,122,0, + 0,0,114,180,0,0,0,41,5,114,123,0,0,0,114,143, + 0,0,0,114,52,0,0,0,114,178,0,0,0,218,3,101, + 120,99,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,114,3,0, + 0,115,26,0,0,0,10,2,2,1,12,1,8,4,14,253, + 4,1,2,1,4,255,2,1,2,255,8,128,2,255,255,128, + 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,103, + 101,116,95,115,111,117,114,99,101,114,109,0,0,0,41,1, + 218,9,95,111,112,116,105,109,105,122,101,99,3,0,0,0, + 0,0,0,0,1,0,0,0,4,0,0,0,8,0,0,0, + 67,0,0,0,115,22,0,0,0,116,0,106,1,116,2,124, + 1,124,2,100,1,100,2,124,3,100,3,141,6,83,0,41, + 5,122,130,82,101,116,117,114,110,32,116,104,101,32,99,111, + 100,101,32,111,98,106,101,99,116,32,99,111,109,112,105,108, + 101,100,32,102,114,111,109,32,115,111,117,114,99,101,46,10, + 10,32,32,32,32,32,32,32,32,84,104,101,32,39,100,97, + 116,97,39,32,97,114,103,117,109,101,110,116,32,99,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,222,0,0,0,84,41,2,218,12,100, + 111,110,116,95,105,110,104,101,114,105,116,114,89,0,0,0, + 78,41,3,114,139,0,0,0,114,221,0,0,0,218,7,99, + 111,109,112,105,108,101,41,4,114,123,0,0,0,114,37,0, + 0,0,114,52,0,0,0,114,237,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,14,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,124,3,0,0,115, + 8,0,0,0,12,5,4,1,6,255,255,128,122,27,83,111, + 117,114,99,101,76,111,97,100,101,114,46,115,111,117,114,99, + 101,95,116,111,95,99,111,100,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,15,0,0,0,9,0,0,0,67,0, + 0,0,115,34,2,0,0,124,0,160,0,124,1,161,1,125, + 2,100,1,125,3,100,1,125,4,100,1,125,5,100,2,125, + 6,100,3,125,7,122,12,116,1,124,2,131,1,125,8,87, + 0,110,24,4,0,116,2,144,2,121,32,1,0,1,0,1, + 0,100,1,125,8,89,0,144,1,110,38,122,14,124,0,160, + 3,124,2,161,1,125,9,87,0,110,20,4,0,116,4,144, + 2,121,30,1,0,1,0,1,0,89,0,144,1,110,2,116, + 5,124,9,100,4,25,0,131,1,125,3,122,14,124,0,160, + 6,124,8,161,1,125,10,87,0,110,18,4,0,116,4,144, + 2,121,28,1,0,1,0,1,0,89,0,110,212,124,1,124, + 8,100,5,156,2,125,11,122,148,116,7,124,10,124,1,124, + 11,131,3,125,12,116,8,124,10,131,1,100,6,100,1,133, + 2,25,0,125,13,124,12,100,7,64,0,100,8,107,3,125, + 6,124,6,144,1,114,30,124,12,100,9,64,0,100,8,107, + 3,125,7,116,9,106,10,100,10,107,3,144,1,114,50,124, + 7,115,248,116,9,106,10,100,11,107,2,144,1,114,50,124, + 0,160,6,124,2,161,1,125,4,116,9,160,11,116,12,124, + 4,161,2,125,5,116,13,124,10,124,5,124,1,124,11,131, + 4,1,0,110,20,116,14,124,10,124,3,124,9,100,12,25, + 0,124,1,124,11,131,5,1,0,87,0,110,22,4,0,116, + 15,116,16,102,2,144,2,121,26,1,0,1,0,1,0,89, + 0,110,30,116,17,160,18,100,13,124,8,124,2,161,3,1, + 0,116,19,124,13,124,1,124,8,124,2,100,14,141,4,83, + 0,124,4,100,1,117,0,144,1,114,126,124,0,160,6,124, + 2,161,1,125,4,124,0,160,20,124,4,124,2,161,2,125, + 14,116,17,160,18,100,15,124,2,161,2,1,0,116,21,106, + 22,144,2,115,20,124,8,100,1,117,1,144,2,114,20,124, + 3,100,1,117,1,144,2,114,20,124,6,144,1,114,218,124, + 5,100,1,117,0,144,1,114,204,116,9,160,11,124,4,161, + 1,125,5,116,23,124,14,124,5,124,7,131,3,125,10,110, + 16,116,24,124,14,124,3,116,25,124,4,131,1,131,3,125, + 10,122,20,124,0,160,26,124,2,124,8,124,10,161,3,1, + 0,87,0,124,14,83,0,4,0,116,2,144,2,121,24,1, + 0,1,0,1,0,89,0,124,14,83,0,124,14,83,0,119, + 0,119,0,119,0,119,0,119,0,41,16,122,190,67,111,110, + 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, + 111,97,100,101,114,46,103,101,116,95,99,111,100,101,46,10, + 10,32,32,32,32,32,32,32,32,82,101,97,100,105,110,103, + 32,111,102,32,98,121,116,101,99,111,100,101,32,114,101,113, + 117,105,114,101,115,32,112,97,116,104,95,115,116,97,116,115, + 32,116,111,32,98,101,32,105,109,112,108,101,109,101,110,116, + 101,100,46,32,84,111,32,119,114,105,116,101,10,32,32,32, + 32,32,32,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,173, + 0,0,0,114,163,0,0,0,114,149,0,0,0,114,3,0, + 0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112,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,183,0,0,0,114,102,0, + 0,0,114,88,0,0,0,114,231,0,0,0,114,58,0,0, + 0,114,30,0,0,0,114,234,0,0,0,114,156,0,0,0, + 218,10,109,101,109,111,114,121,118,105,101,119,114,167,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,161,0,0,0,218,17,95, + 82,65,87,95,77,65,71,73,67,95,78,85,77,66,69,82, + 114,162,0,0,0,114,160,0,0,0,114,122,0,0,0,114, + 154,0,0,0,114,139,0,0,0,114,153,0,0,0,114,169, + 0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4,0,0, + 0,114,233,0,0,0,41,15,114,123,0,0,0,114,143,0, + 0,0,114,112,0,0,0,114,158,0,0,0,114,178,0,0, + 0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0,114,155, + 0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,220,0,0,0,132,3,0,0,115,166,0,0,0,10,7, + 4,1,4,1,4,1,4,1,4,1,2,1,12,1,14,1, + 10,1,2,2,14,1,14,1,6,1,12,2,2,1,14,1, + 14,1,4,1,2,3,2,1,6,254,2,4,12,1,16,1, + 12,1,6,1,12,1,12,1,2,1,2,255,8,2,4,254, + 10,3,4,1,2,1,2,1,4,254,8,4,2,1,6,255, + 2,3,2,1,2,1,6,1,2,1,2,1,8,251,18,7, + 4,1,8,2,2,1,4,255,6,2,2,1,2,1,6,254, + 10,3,10,1,12,1,12,1,18,1,6,1,4,255,6,2, + 10,1,10,1,14,1,6,2,6,1,4,255,2,2,16,1, + 4,3,14,254,2,1,8,1,2,254,2,233,2,225,2,250, + 2,251,255,128,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,130, + 0,0,0,114,129,0,0,0,114,131,0,0,0,114,230,0, + 0,0,114,231,0,0,0,114,233,0,0,0,114,232,0,0, + 0,114,236,0,0,0,114,240,0,0,0,114,220,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,228,0,0,0,73,3,0,0,115,18,0, + 0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10, + 12,8,255,128,114,228,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,4,100,5,132, + 0,90,5,100,6,100,7,132,0,90,6,101,7,135,0,102, + 1,100,8,100,9,132,8,131,1,90,8,101,7,100,10,100, + 11,132,0,131,1,90,9,100,12,100,13,132,0,90,10,101, + 7,100,14,100,15,132,0,131,1,90,11,135,0,4,0,90, + 12,83,0,41,16,218,10,70,105,108,101,76,111,97,100,101, + 114,122,103,66,97,115,101,32,102,105,108,101,32,108,111,97, + 100,101,114,32,99,108,97,115,115,32,119,104,105,99,104,32, + 105,109,112,108,101,109,101,110,116,115,32,116,104,101,32,108, + 111,97,100,101,114,32,112,114,111,116,111,99,111,108,32,109, + 101,116,104,111,100,115,32,116,104,97,116,10,32,32,32,32, + 114,101,113,117,105,114,101,32,102,105,108,101,32,115,121,115, + 116,101,109,32,117,115,97,103,101,46,99,3,0,0,0,0, + 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,1,83,0,41,2,122,75,67,97,99,104, + 101,32,116,104,101,32,109,111,100,117,108,101,32,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,163,0,0,0,41,3,114, + 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, + 0,0,222,3,0,0,115,6,0,0,0,6,3,10,1,255, + 128,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,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,114,0,0, + 0,169,2,218,9,95,95,99,108,97,115,115,95,95,114,136, + 0,0,0,169,2,114,123,0,0,0,90,5,111,116,104,101, + 114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,6,95,95,101,113,95,95,228,3,0,0,115,8,0,0, + 0,12,1,10,1,2,255,255,128,122,17,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,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,114, + 0,0,0,169,3,218,4,104,97,115,104,114,121,0,0,0, + 114,52,0,0,0,169,1,114,123,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,8,95,95,104, + 97,115,104,95,95,232,3,0,0,115,4,0,0,0,20,1, + 255,128,122,19,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, + 0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0, + 115,16,0,0,0,116,0,116,1,124,0,131,2,160,2,124, + 1,161,1,83,0,41,2,122,100,76,111,97,100,32,97,32, + 109,111,100,117,108,101,32,102,114,111,109,32,97,32,102,105, + 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,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,78,41,3, + 218,5,115,117,112,101,114,114,246,0,0,0,114,227,0,0, + 0,114,226,0,0,0,169,1,114,248,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,227,0,0,0,235,3,0,0, + 115,4,0,0,0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114,110,32, + 116,104,101,32,112,97,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,78,114,56,0,0,0,114,226,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,183,0, + 0,0,247,3,0,0,115,4,0,0,0,6,3,255,128,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,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,128,0,0,0,116,0,124,0,116,1,116,2,102,2, + 131,2,114,72,116,3,160,4,116,5,124,1,131,1,161,1, + 143,24,125,2,124,2,160,6,161,0,87,0,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,49,0,115,58,119,1, + 1,0,1,0,1,0,89,0,1,0,100,1,83,0,116,3, + 160,7,124,1,100,2,161,2,143,24,125,2,124,2,160,6, + 161,0,87,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,49,0,115,114,119,1,1,0,1,0,1,0,89,0, + 1,0,100,1,83,0,41,3,122,39,82,101,116,117,114,110, + 32,116,104,101,32,100,97,116,97,32,102,114,111,109,32,112, + 97,116,104,32,97,115,32,114,97,119,32,98,121,116,101,115, + 46,78,218,1,114,41,8,114,165,0,0,0,114,228,0,0, + 0,218,19,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,114,72,0,0,0,90,9,111,112,101, + 110,95,99,111,100,101,114,90,0,0,0,90,4,114,101,97, + 100,114,73,0,0,0,41,3,114,123,0,0,0,114,52,0, + 0,0,114,76,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,234,0,0,0,252,3,0,0,115, + 14,0,0,0,14,2,16,1,42,1,14,2,38,1,4,128, + 255,128,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, + 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, + 115,20,0,0,0,100,1,100,2,108,0,109,1,125,2,1, + 0,124,2,124,0,131,1,83,0,41,3,78,114,0,0,0, + 0,41,1,218,10,70,105,108,101,82,101,97,100,101,114,41, + 2,90,17,105,109,112,111,114,116,108,105,98,46,114,101,97, + 100,101,114,115,114,4,1,0,0,41,3,114,123,0,0,0, + 114,223,0,0,0,114,4,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,19,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,5,4, + 0,0,115,6,0,0,0,12,2,8,1,255,128,122,30,70, + 105,108,101,76,111,97,100,101,114,46,103,101,116,95,114,101, + 115,111,117,114,99,101,95,114,101,97,100,101,114,41,13,114, 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,220,0,0,0,114,236,0,0,0,114,7,0, + 0,0,0,114,216,0,0,0,114,250,0,0,0,114,254,0, + 0,0,114,140,0,0,0,114,227,0,0,0,114,183,0,0, + 0,114,234,0,0,0,114,5,1,0,0,90,13,95,95,99, + 108,97,115,115,99,101,108,108,95,95,114,7,0,0,0,114, + 7,0,0,0,114,0,1,0,0,114,8,0,0,0,114,246, + 0,0,0,217,3,0,0,115,26,0,0,0,8,0,4,2, + 8,3,8,6,8,4,2,3,14,1,2,11,10,1,8,4, + 2,9,18,1,255,128,114,246,0,0,0,99,0,0,0,0, + 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,7,156,1,100,8,100,9,132, + 2,90,6,100,10,83,0,41,11,218,16,83,111,117,114,99, + 101,70,105,108,101,76,111,97,100,101,114,122,62,67,111,110, + 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,83,111,117,114,99,101,76,111, + 97,100,101,114,32,117,115,105,110,103,32,116,104,101,32,102, + 105,108,101,32,115,121,115,116,101,109,46,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, + 67,0,0,0,115,22,0,0,0,116,0,124,1,131,1,125, + 2,124,2,106,1,124,2,106,2,100,1,156,2,83,0,41, + 3,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,173,0,0,0,114,241,0,0,0, + 78,41,3,114,57,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,123,0, + 0,0,114,52,0,0,0,114,245,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,231,0,0,0, + 15,4,0,0,115,6,0,0,0,8,2,14,1,255,128,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,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, + 0,67,0,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,119,0,0,0,114,232,0,0,0,41,5,114,123,0,0, + 0,114,112,0,0,0,114,111,0,0,0,114,37,0,0,0, + 114,60,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,233,0,0,0,20,4,0,0,115,6,0, + 0,0,8,2,16,1,255,128,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,68,0,0,0,114, + 8,1,0,0,99,3,0,0,0,0,0,0,0,1,0,0, + 0,9,0,0,0,11,0,0,0,67,0,0,0,115,4,1, + 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, + 125,6,124,4,114,62,116,1,124,4,131,1,115,62,116,0, + 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, + 161,1,1,0,124,4,114,62,116,1,124,4,131,1,114,28, + 116,3,124,6,131,1,68,0,93,98,125,7,116,4,124,4, + 124,7,131,2,125,4,122,14,116,5,160,6,124,4,161,1, + 1,0,87,0,113,70,4,0,116,7,121,116,1,0,1,0, + 1,0,89,0,113,70,4,0,116,8,144,1,121,2,1,0, + 125,8,1,0,122,30,116,9,160,10,100,1,124,4,124,8, + 161,3,1,0,87,0,89,0,100,2,125,8,126,8,1,0, + 100,2,83,0,100,2,125,8,126,8,119,1,122,30,116,11, + 124,1,124,2,124,3,131,3,1,0,116,9,160,10,100,3, + 124,1,161,2,1,0,87,0,100,2,83,0,4,0,116,8, + 121,252,1,0,125,8,1,0,122,28,116,9,160,10,100,1, + 124,1,124,8,161,3,1,0,87,0,89,0,100,2,125,8, + 126,8,100,2,83,0,100,2,125,8,126,8,119,1,119,0, + 100,2,83,0,119,0,41,4,122,27,87,114,105,116,101,32, + 98,121,116,101,115,32,100,97,116,97,32,116,111,32,97,32, + 102,105,108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0, + 0,0,114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139, + 0,0,0,114,153,0,0,0,114,77,0,0,0,41,9,114, + 123,0,0,0,114,52,0,0,0,114,37,0,0,0,114,9, + 1,0,0,218,6,112,97,114,101,110,116,114,101,0,0,0, + 114,47,0,0,0,114,43,0,0,0,114,235,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,232, + 0,0,0,25,4,0,0,115,60,0,0,0,12,2,4,1, + 12,2,12,1,10,1,12,254,12,4,10,1,2,1,14,1, + 12,1,4,2,16,1,6,3,4,1,4,255,16,2,8,128, + 2,1,12,1,18,1,14,1,8,2,2,1,18,255,8,128, + 2,254,4,255,2,248,255,128,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,130,0,0,0,114,129,0,0,0, + 114,131,0,0,0,114,132,0,0,0,114,231,0,0,0,114, + 233,0,0,0,114,232,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,6,1, + 0,0,11,4,0,0,115,12,0,0,0,8,0,4,2,8, + 2,8,5,18,5,255,128,114,6,1,0,0,99,0,0,0, + 0,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,83,0,41,7,218,20,83,111, + 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, + 101,114,122,45,76,111,97,100,101,114,32,119,104,105,99,104, + 32,104,97,110,100,108,101,115,32,115,111,117,114,99,101,108, + 101,115,115,32,102,105,108,101,32,105,109,112,111,114,116,115, + 46,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,5,0,0,0,67,0,0,0,115,68,0,0,0,124, + 0,160,0,124,1,161,1,125,2,124,0,160,1,124,2,161, + 1,125,3,124,1,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,163,0,0,0,114,149,0,0,0, + 41,2,114,121,0,0,0,114,111,0,0,0,41,5,114,183, + 0,0,0,114,234,0,0,0,114,156,0,0,0,114,169,0, + 0,0,114,242,0,0,0,41,5,114,123,0,0,0,114,143, + 0,0,0,114,52,0,0,0,114,37,0,0,0,114,155,0, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,12,1,0,0,56,4,0,0,115,10,0,0,0,8, - 0,4,2,8,2,12,16,255,128,114,12,1,0,0,99,0, - 0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, - 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, - 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, - 100,16,100,17,132,0,90,11,101,12,100,18,100,19,132,0, - 131,1,90,13,100,20,83,0,41,21,114,3,1,0,0,122, - 93,76,111,97,100,101,114,32,102,111,114,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,115,46,10,10, - 32,32,32,32,84,104,101,32,99,111,110,115,116,114,117,99, - 116,111,114,32,105,115,32,100,101,115,105,103,110,101,100,32, - 116,111,32,119,111,114,107,32,119,105,116,104,32,70,105,108, - 101,70,105,110,100,101,114,46,10,10,32,32,32,32,99,3, - 0,0,0,0,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,114,0,0, - 0,114,163,0,0,0,41,3,114,123,0,0,0,114,121,0, - 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,216,0,0,0,89,4,0,0,115, - 6,0,0,0,6,1,10,1,255,128,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,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,114, - 0,0,0,114,247,0,0,0,114,249,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,250,0,0, - 0,93,4,0,0,115,8,0,0,0,12,1,10,1,2,255, - 255,128,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,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,114,0,0,0,114,251,0,0,0,114,253,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,254, - 0,0,0,97,4,0,0,115,4,0,0,0,20,1,255,128, - 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,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, - 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, - 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, - 41,3,122,38,67,114,101,97,116,101,32,97,110,32,117,110, - 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, - 105,111,110,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,78,41,7,114,139,0,0,0,114,221,0,0,0,114, - 167,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, - 97,109,105,99,114,153,0,0,0,114,121,0,0,0,114,52, - 0,0,0,41,3,114,123,0,0,0,114,191,0,0,0,114, - 223,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,219,0,0,0,100,4,0,0,115,16,0,0, - 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, - 128,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,108,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, - 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, - 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, - 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, - 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, - 110,32,109,111,100,117,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,139,0,0,0,114,221,0,0,0,114, - 167,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, - 105,99,114,153,0,0,0,114,121,0,0,0,114,52,0,0, - 0,169,2,114,123,0,0,0,114,223,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,224,0,0, - 0,108,4,0,0,115,10,0,0,0,14,2,6,1,8,1, - 8,255,255,128,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,0,0,0, - 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,36, - 0,0,0,116,0,124,0,106,1,131,1,100,1,25,0,137, - 0,116,2,135,0,102,1,100,2,100,3,132,8,116,3,68, - 0,131,1,131,1,83,0,41,5,122,49,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,105, - 115,32,97,32,112,97,99,107,97,103,101,46,114,3,0,0, - 0,99,1,0,0,0,0,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,216,0,0,0, - 78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0,114,9,0,0, - 0,117,4,0,0,115,8,0,0,0,4,0,2,1,20,255, - 255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, - 101,120,112,114,62,78,41,4,114,55,0,0,0,114,52,0, - 0,0,218,3,97,110,121,114,212,0,0,0,114,226,0,0, - 0,114,7,0,0,0,114,16,1,0,0,114,8,0,0,0, - 114,186,0,0,0,114,4,0,0,115,10,0,0,0,14,2, - 12,1,2,1,8,255,255,128,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,101,99,2,0,0,0,0,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,122,63,82,101, - 116,117,114,110,32,78,111,110,101,32,97,115,32,97,110,32, + 0,114,220,0,0,0,60,4,0,0,115,24,0,0,0,10, + 1,10,1,2,4,2,1,6,254,12,4,2,1,14,1,2, + 1,2,1,6,253,255,128,122,29,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,99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,236,0, + 0,0,76,4,0,0,115,4,0,0,0,4,2,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0, + 0,0,114,132,0,0,0,114,220,0,0,0,114,236,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,12,1,0,0,56,4,0,0,115,10, + 0,0,0,8,0,4,2,8,2,12,16,255,128,114,12,1, + 0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7, + 132,0,90,6,100,8,100,9,132,0,90,7,100,10,100,11, + 132,0,90,8,100,12,100,13,132,0,90,9,100,14,100,15, + 132,0,90,10,100,16,100,17,132,0,90,11,101,12,100,18, + 100,19,132,0,131,1,90,13,100,20,83,0,41,21,114,3, + 1,0,0,122,93,76,111,97,100,101,114,32,102,111,114,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,7, - 0,0,0,114,226,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,220,0,0,0,120,4,0,0, - 115,4,0,0,0,4,2,255,128,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,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,122,53,82,101,116, - 117,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,7,0,0,0,114,226,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,236,0,0, - 0,124,4,0,0,115,4,0,0,0,4,2,255,128,122,30, + 115,46,10,10,32,32,32,32,84,104,101,32,99,111,110,115, + 116,114,117,99,116,111,114,32,105,115,32,100,101,115,105,103, + 110,101,100,32,116,111,32,119,111,114,107,32,119,105,116,104, + 32,70,105,108,101,70,105,110,100,101,114,46,10,10,32,32, + 32,32,99,3,0,0,0,0,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,114,0,0,0,114,163,0,0,0,41,3,114,123,0,0, + 0,114,121,0,0,0,114,52,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,216,0,0,0,89, + 4,0,0,115,6,0,0,0,6,1,10,1,255,128,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,115,111,117,114,99,101,99,2, - 0,0,0,0,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,1,1,0,0,114,56,0,0,0,114,226,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,183,0,0,0,128,4,0,0,115,4,0,0,0,6,3, - 255,128,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,130,0,0,0,114,129,0,0, - 0,114,131,0,0,0,114,132,0,0,0,114,216,0,0,0, - 114,250,0,0,0,114,254,0,0,0,114,219,0,0,0,114, - 224,0,0,0,114,186,0,0,0,114,220,0,0,0,114,236, - 0,0,0,114,140,0,0,0,114,183,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,3,1,0,0,81,4,0,0,115,26,0,0,0,8, - 0,4,2,8,6,8,4,8,4,8,3,8,8,8,6,8, - 6,8,4,2,4,14,1,255,128,114,3,1,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,64,0,0,0,115,104,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,90,6, - 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8, - 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10, - 100,16,100,17,132,0,90,11,100,18,100,19,132,0,90,12, - 100,20,100,21,132,0,90,13,100,22,100,23,132,0,90,14, - 100,24,83,0,41,25,218,14,95,78,97,109,101,115,112,97, - 99,101,80,97,116,104,97,38,1,0,0,82,101,112,114,101, - 115,101,110,116,115,32,97,32,110,97,109,101,115,112,97,99, - 101,32,112,97,99,107,97,103,101,39,115,32,112,97,116,104, - 46,32,32,73,116,32,117,115,101,115,32,116,104,101,32,109, - 111,100,117,108,101,32,110,97,109,101,10,32,32,32,32,116, - 111,32,102,105,110,100,32,105,116,115,32,112,97,114,101,110, - 116,32,109,111,100,117,108,101,44,32,97,110,100,32,102,114, - 111,109,32,116,104,101,114,101,32,105,116,32,108,111,111,107, - 115,32,117,112,32,116,104,101,32,112,97,114,101,110,116,39, - 115,10,32,32,32,32,95,95,112,97,116,104,95,95,46,32, - 32,87,104,101,110,32,116,104,105,115,32,99,104,97,110,103, - 101,115,44,32,116,104,101,32,109,111,100,117,108,101,39,115, - 32,111,119,110,32,112,97,116,104,32,105,115,32,114,101,99, - 111,109,112,117,116,101,100,44,10,32,32,32,32,117,115,105, - 110,103,32,112,97,116,104,95,102,105,110,100,101,114,46,32, - 32,70,111,114,32,116,111,112,45,108,101,118,101,108,32,109, - 111,100,117,108,101,115,44,32,116,104,101,32,112,97,114,101, - 110,116,32,109,111,100,117,108,101,39,115,32,112,97,116,104, - 10,32,32,32,32,105,115,32,115,121,115,46,112,97,116,104, - 46,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124, - 1,124,0,95,0,124,2,124,0,95,1,116,2,124,0,160, - 3,161,0,131,1,124,0,95,4,124,3,124,0,95,5,100, - 0,83,0,114,114,0,0,0,41,6,218,5,95,110,97,109, - 101,218,5,95,112,97,116,104,114,116,0,0,0,218,16,95, - 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,218, - 17,95,108,97,115,116,95,112,97,114,101,110,116,95,112,97, - 116,104,218,12,95,112,97,116,104,95,102,105,110,100,101,114, - 169,4,114,123,0,0,0,114,121,0,0,0,114,52,0,0, - 0,90,11,112,97,116,104,95,102,105,110,100,101,114,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,141,4,0,0,115,10,0,0,0,6,1,6,1,14, - 1,10,1,255,128,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,0,0,0,0,4,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,124,0,106,0, - 160,1,100,1,161,1,92,3,125,1,125,2,125,3,124,2, - 100,2,107,2,114,30,100,3,83,0,124,1,100,4,102,2, - 83,0,41,6,122,62,82,101,116,117,114,110,115,32,97,32, - 116,117,112,108,101,32,111,102,32,40,112,97,114,101,110,116, - 45,109,111,100,117,108,101,45,110,97,109,101,44,32,112,97, - 114,101,110,116,45,112,97,116,104,45,97,116,116,114,45,110, - 97,109,101,41,114,79,0,0,0,114,10,0,0,0,41,2, - 114,15,0,0,0,114,52,0,0,0,90,8,95,95,112,97, - 116,104,95,95,78,41,2,114,19,1,0,0,114,49,0,0, - 0,41,4,114,123,0,0,0,114,11,1,0,0,218,3,100, - 111,116,90,2,109,101,114,7,0,0,0,114,7,0,0,0, - 114,8,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,147,4, - 0,0,115,10,0,0,0,18,2,8,1,4,2,8,3,255, - 128,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, - 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26,1,0,0,114, - 135,0,0,0,114,15,0,0,0,218,7,109,111,100,117,108, - 101,115,41,3,114,123,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,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,21,1,0, - 0,157,4,0,0,115,6,0,0,0,12,1,16,1,255,128, - 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,0,0,0,0,3,0, - 0,0,4,0,0,0,67,0,0,0,115,80,0,0,0,116, - 0,124,0,160,1,161,0,131,1,125,1,124,1,124,0,106, - 2,107,3,114,74,124,0,160,3,124,0,106,4,124,1,161, - 2,125,2,124,2,100,0,117,1,114,68,124,2,106,5,100, - 0,117,0,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, - 114,0,0,0,41,8,114,116,0,0,0,114,21,1,0,0, - 114,22,1,0,0,114,23,1,0,0,114,19,1,0,0,114, - 144,0,0,0,114,182,0,0,0,114,20,1,0,0,41,3, - 114,123,0,0,0,90,11,112,97,114,101,110,116,95,112,97, - 116,104,114,191,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,12,95,114,101,99,97,108,99,117, - 108,97,116,101,161,4,0,0,115,18,0,0,0,12,2,10, - 1,14,1,18,3,6,1,8,1,6,1,6,1,255,128,122, - 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0, - 0,0,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,114,0,0,0,41,2,218,4,105, - 116,101,114,114,28,1,0,0,114,253,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,8,95,95, - 105,116,101,114,95,95,174,4,0,0,115,4,0,0,0,12, - 1,255,128,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,2,0,0, + 100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, - 0,67,0,0,0,115,12,0,0,0,124,0,160,0,161,0, - 124,1,25,0,83,0,114,114,0,0,0,169,1,114,28,1, - 0,0,41,2,114,123,0,0,0,218,5,105,110,100,101,120, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,103,101,116,105,116,101,109,95,95,177,4,0,0, - 115,4,0,0,0,12,1,255,128,122,26,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,103,101,116,105, - 116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0,0,41,3,114, - 123,0,0,0,114,32,1,0,0,114,52,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 95,115,101,116,105,116,101,109,95,95,180,4,0,0,115,4, - 0,0,0,14,1,255,128,122,26,95,78,97,109,101,115,112, - 97,99,101,80,97,116,104,46,95,95,115,101,116,105,116,101, - 109,95,95,99,1,0,0,0,0,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,114,0, - 0,0,41,2,114,4,0,0,0,114,28,1,0,0,114,253, + 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,114,0,0,0,114,247,0,0,0,114,249,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,250,0,0,0,93,4,0,0,115,8,0,0,0,12,1, + 10,1,2,255,255,128,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,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,114,0,0,0,114,251,0,0,0,114,253, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,7,95,95,108,101,110,95,95,183,4,0,0,115, - 4,0,0,0,12,1,255,128,122,22,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95, + 0,0,114,254,0,0,0,97,4,0,0,115,4,0,0,0, + 20,1,255,128,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,0,0,0,0,3, + 0,0,0,5,0,0,0,67,0,0,0,115,36,0,0,0, + 116,0,160,1,116,2,106,3,124,1,161,2,125,2,116,0, + 160,4,100,1,124,1,106,5,124,0,106,6,161,3,1,0, + 124,2,83,0,41,3,122,38,67,114,101,97,116,101,32,97, + 110,32,117,110,105,116,105,97,108,105,122,101,100,32,101,120, + 116,101,110,115,105,111,110,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,78,41,7,114,139,0,0,0,114,221, + 0,0,0,114,167,0,0,0,90,14,99,114,101,97,116,101, + 95,100,121,110,97,109,105,99,114,153,0,0,0,114,121,0, + 0,0,114,52,0,0,0,41,3,114,123,0,0,0,114,191, + 0,0,0,114,223,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,219,0,0,0,100,4,0,0, + 115,16,0,0,0,4,2,6,1,4,255,6,2,8,1,4, + 255,4,2,255,128,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,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0, + 0,115,36,0,0,0,116,0,160,1,116,2,106,3,124,1, + 161,2,1,0,116,0,160,4,100,1,124,0,106,5,124,0, + 106,6,161,3,1,0,100,2,83,0,41,3,122,30,73,110, + 105,116,105,97,108,105,122,101,32,97,110,32,101,120,116,101, + 110,115,105,111,110,32,109,111,100,117,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,139,0,0,0,114,221, + 0,0,0,114,167,0,0,0,90,12,101,120,101,99,95,100, + 121,110,97,109,105,99,114,153,0,0,0,114,121,0,0,0, + 114,52,0,0,0,169,2,114,123,0,0,0,114,223,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,224,0,0,0,108,4,0,0,115,10,0,0,0,14,2, + 6,1,8,1,8,255,255,128,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,0,0,0,0,0,2,0,0,0,4,0,0,0,3,0, + 0,0,115,36,0,0,0,116,0,124,0,106,1,131,1,100, + 1,25,0,137,0,116,2,135,0,102,1,100,2,100,3,132, + 8,116,3,68,0,131,1,131,1,83,0,41,5,122,49,82, + 101,116,117,114,110,32,84,114,117,101,32,105,102,32,116,104, + 101,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, + 114,3,0,0,0,99,1,0,0,0,0,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, + 216,0,0,0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0, + 114,9,0,0,0,117,4,0,0,115,8,0,0,0,4,0, + 2,1,20,255,255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,78,41,4,114,55,0,0, + 0,114,52,0,0,0,218,3,97,110,121,114,212,0,0,0, + 114,226,0,0,0,114,7,0,0,0,114,16,1,0,0,114, + 8,0,0,0,114,186,0,0,0,114,4,0,0,115,10,0, + 0,0,14,2,12,1,2,1,8,255,255,128,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,101,99,2,0,0, + 0,0,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, + 122,63,82,101,116,117,114,110,32,78,111,110,101,32,97,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,7,0,0,0,114,226,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, + 120,4,0,0,115,4,0,0,0,4,2,255,128,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,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,122, + 53,82,101,116,117,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,7,0,0,0,114,226,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,236,0,0,0,124,4,0,0,115,4,0,0,0,4,2, + 255,128,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,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,1,1,0,0,114,56,0,0,0, + 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,183,0,0,0,128,4,0,0,115,4,0, + 0,0,6,3,255,128,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,130,0,0,0, + 114,129,0,0,0,114,131,0,0,0,114,132,0,0,0,114, + 216,0,0,0,114,250,0,0,0,114,254,0,0,0,114,219, + 0,0,0,114,224,0,0,0,114,186,0,0,0,114,220,0, + 0,0,114,236,0,0,0,114,140,0,0,0,114,183,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,3,1,0,0,81,4,0,0,115,26, + 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, + 8,8,6,8,6,8,4,2,4,14,1,255,128,114,3,1, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,64,0,0,0,115,104,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,90,6,100,8,100,9,132,0,90,7,100,10,100,11, + 132,0,90,8,100,12,100,13,132,0,90,9,100,14,100,15, + 132,0,90,10,100,16,100,17,132,0,90,11,100,18,100,19, + 132,0,90,12,100,20,100,21,132,0,90,13,100,22,100,23, + 132,0,90,14,100,24,83,0,41,25,218,14,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,97,38,1,0,0,82, + 101,112,114,101,115,101,110,116,115,32,97,32,110,97,109,101, + 115,112,97,99,101,32,112,97,99,107,97,103,101,39,115,32, + 112,97,116,104,46,32,32,73,116,32,117,115,101,115,32,116, + 104,101,32,109,111,100,117,108,101,32,110,97,109,101,10,32, + 32,32,32,116,111,32,102,105,110,100,32,105,116,115,32,112, + 97,114,101,110,116,32,109,111,100,117,108,101,44,32,97,110, + 100,32,102,114,111,109,32,116,104,101,114,101,32,105,116,32, + 108,111,111,107,115,32,117,112,32,116,104,101,32,112,97,114, + 101,110,116,39,115,10,32,32,32,32,95,95,112,97,116,104, + 95,95,46,32,32,87,104,101,110,32,116,104,105,115,32,99, + 104,97,110,103,101,115,44,32,116,104,101,32,109,111,100,117, + 108,101,39,115,32,111,119,110,32,112,97,116,104,32,105,115, + 32,114,101,99,111,109,112,117,116,101,100,44,10,32,32,32, + 32,117,115,105,110,103,32,112,97,116,104,95,102,105,110,100, + 101,114,46,32,32,70,111,114,32,116,111,112,45,108,101,118, + 101,108,32,109,111,100,117,108,101,115,44,32,116,104,101,32, + 112,97,114,101,110,116,32,109,111,100,117,108,101,39,115,32, + 112,97,116,104,10,32,32,32,32,105,115,32,115,121,115,46, + 112,97,116,104,46,99,4,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,36, + 0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,116, + 2,124,0,160,3,161,0,131,1,124,0,95,4,124,3,124, + 0,95,5,100,0,83,0,114,114,0,0,0,41,6,218,5, + 95,110,97,109,101,218,5,95,112,97,116,104,114,116,0,0, + 0,218,16,95,103,101,116,95,112,97,114,101,110,116,95,112, + 97,116,104,218,17,95,108,97,115,116,95,112,97,114,101,110, + 116,95,112,97,116,104,218,12,95,112,97,116,104,95,102,105, + 110,100,101,114,169,4,114,123,0,0,0,114,121,0,0,0, + 114,52,0,0,0,90,11,112,97,116,104,95,102,105,110,100, + 101,114,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,216,0,0,0,141,4,0,0,115,10,0,0,0,6, + 1,6,1,14,1,10,1,255,128,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,0,0,0,0,4, + 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, + 124,0,106,0,160,1,100,1,161,1,92,3,125,1,125,2, + 125,3,124,2,100,2,107,2,114,30,100,3,83,0,124,1, + 100,4,102,2,83,0,41,6,122,62,82,101,116,117,114,110, + 115,32,97,32,116,117,112,108,101,32,111,102,32,40,112,97, + 114,101,110,116,45,109,111,100,117,108,101,45,110,97,109,101, + 44,32,112,97,114,101,110,116,45,112,97,116,104,45,97,116, + 116,114,45,110,97,109,101,41,114,79,0,0,0,114,10,0, + 0,0,41,2,114,15,0,0,0,114,52,0,0,0,90,8, + 95,95,112,97,116,104,95,95,78,41,2,114,19,1,0,0, + 114,49,0,0,0,41,4,114,123,0,0,0,114,11,1,0, + 0,218,3,100,111,116,90,2,109,101,114,7,0,0,0,114, + 7,0,0,0,114,8,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,147,4,0,0,115,10,0,0,0,18,2,8,1,4, + 2,8,3,255,128,122,38,95,78,97,109,101,115,112,97,99, + 101,80,97,116,104,46,95,102,105,110,100,95,112,97,114,101, + 110,116,95,112,97,116,104,95,110,97,109,101,115,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26, + 1,0,0,114,135,0,0,0,114,15,0,0,0,218,7,109, + 111,100,117,108,101,115,41,3,114,123,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,21,1,0,0,157,4,0,0,115,6,0,0,0,12,1, + 16,1,255,128,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,0,0, + 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,80, + 0,0,0,116,0,124,0,160,1,161,0,131,1,125,1,124, + 1,124,0,106,2,107,3,114,74,124,0,160,3,124,0,106, + 4,124,1,161,2,125,2,124,2,100,0,117,1,114,68,124, + 2,106,5,100,0,117,0,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,114,0,0,0,41,8,114,116,0,0,0,114, + 21,1,0,0,114,22,1,0,0,114,23,1,0,0,114,19, + 1,0,0,114,144,0,0,0,114,182,0,0,0,114,20,1, + 0,0,41,3,114,123,0,0,0,90,11,112,97,114,101,110, + 116,95,112,97,116,104,114,191,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,12,95,114,101,99, + 97,108,99,117,108,97,116,101,161,4,0,0,115,18,0,0, + 0,12,2,10,1,14,1,18,3,6,1,8,1,6,1,6, + 1,255,128,122,27,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,114,101,99,97,108,99,117,108,97,116,101, 99,1,0,0,0,0,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,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,70,0,0,0,114,20,1,0,0,114, - 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,8,95,95,114,101,112,114,95,95,186,4,0, - 0,115,4,0,0,0,12,1,255,128,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,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,118,0,83,0,114,114,0, - 0,0,114,31,1,0,0,169,2,114,123,0,0,0,218,4, - 105,116,101,109,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, - 95,189,4,0,0,115,4,0,0,0,12,1,255,128,122,27, + 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,114,0,0,0,41, + 2,218,4,105,116,101,114,114,28,1,0,0,114,253,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,8,95,95,105,116,101,114,95,95,174,4,0,0,115,4, + 0,0,0,12,1,255,128,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,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,2,0,0,0,67,0,0,0,115,12,0,0,0,124,0, + 160,0,161,0,124,1,25,0,83,0,114,114,0,0,0,169, + 1,114,28,1,0,0,41,2,114,123,0,0,0,218,5,105, + 110,100,101,120,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,95,95,103,101,116,105,116,101,109,95,95, + 177,4,0,0,115,4,0,0,0,12,1,255,128,122,26,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, + 103,101,116,105,116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0, + 0,41,3,114,123,0,0,0,114,32,1,0,0,114,52,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,95,95,115,101,116,105,116,101,109,95,95,180,4, + 0,0,115,4,0,0,0,14,1,255,128,122,26,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,95,115,101, + 116,105,116,101,109,95,95,99,1,0,0,0,0,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,114,0,0,0,41,2,114,4,0,0,0,114,28,1, + 0,0,114,253,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,7,95,95,108,101,110,95,95,183, + 4,0,0,115,4,0,0,0,12,1,255,128,122,22,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,108, + 101,110,95,95,99,1,0,0,0,0,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, + 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,70,0,0,0,114,20, + 1,0,0,114,253,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,8,95,95,114,101,112,114,95, + 95,186,4,0,0,115,4,0,0,0,12,1,255,128,122,23, 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0, - 0,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,114,0,0,0,41,2, - 114,20,1,0,0,114,190,0,0,0,114,37,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, - 0,0,0,192,4,0,0,115,4,0,0,0,16,1,255,128, - 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,15,114,130,0,0,0,114, - 129,0,0,0,114,131,0,0,0,114,132,0,0,0,114,216, - 0,0,0,114,26,1,0,0,114,21,1,0,0,114,28,1, - 0,0,114,30,1,0,0,114,33,1,0,0,114,34,1,0, - 0,114,35,1,0,0,114,36,1,0,0,114,39,1,0,0, - 114,190,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,18,1,0,0,134,4, - 0,0,115,28,0,0,0,8,0,4,1,8,6,8,6,8, - 10,8,4,8,13,8,3,8,3,8,3,8,3,8,3,12, - 3,255,128,114,18,1,0,0,99,0,0,0,0,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,4,132,0,131,1, - 90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, - 90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, - 90,9,100,13,100,14,132,0,90,10,100,15,100,16,132,0, - 90,11,100,17,83,0,41,18,218,16,95,78,97,109,101,115, - 112,97,99,101,76,111,97,100,101,114,99,4,0,0,0,0, - 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,114,0,0,0,41, - 2,114,18,1,0,0,114,20,1,0,0,114,24,1,0,0, + 95,114,101,112,114,95,95,99,2,0,0,0,0,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,118,0,83, + 0,114,114,0,0,0,114,31,1,0,0,169,2,114,123,0, + 0,0,218,4,105,116,101,109,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,12,95,95,99,111,110,116,97, + 105,110,115,95,95,189,4,0,0,115,4,0,0,0,12,1, + 255,128,122,27,95,78,97,109,101,115,112,97,99,101,80,97, + 116,104,46,95,95,99,111,110,116,97,105,110,115,95,95,99, + 2,0,0,0,0,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,114,0, + 0,0,41,2,114,20,1,0,0,114,190,0,0,0,114,37, + 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,190,0,0,0,192,4,0,0,115,4,0,0,0, + 16,1,255,128,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,15,114,130, + 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, + 0,0,114,216,0,0,0,114,26,1,0,0,114,21,1,0, + 0,114,28,1,0,0,114,30,1,0,0,114,33,1,0,0, + 114,34,1,0,0,114,35,1,0,0,114,36,1,0,0,114, + 39,1,0,0,114,190,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,18,1, + 0,0,134,4,0,0,115,28,0,0,0,8,0,4,1,8, + 6,8,6,8,10,8,4,8,13,8,3,8,3,8,3,8, + 3,8,3,12,3,255,128,114,18,1,0,0,99,0,0,0, + 0,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,4, + 132,0,131,1,90,5,100,5,100,6,132,0,90,6,100,7, + 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11, + 100,12,132,0,90,9,100,13,100,14,132,0,90,10,100,15, + 100,16,132,0,90,11,100,17,83,0,41,18,218,16,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,99,4, + 0,0,0,0,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,114, + 0,0,0,41,2,114,18,1,0,0,114,20,1,0,0,114, + 24,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,216,0,0,0,198,4,0,0,115,4,0,0, + 0,18,1,255,128,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,1,0,0,0,0,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,3,122,115,82,101, + 116,117,114,110,32,114,101,112,114,32,102,111,114,32,116,104, + 101,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,101,32,109,101,116,104,111,100,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,46,32,32,84,104, + 101,32,105,109,112,111,114,116,32,109,97,99,104,105,110,101, + 114,121,32,100,111,101,115,32,116,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,78,41,2,114, + 70,0,0,0,114,130,0,0,0,41,1,114,223,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,109,111,100,117,108,101,95,114,101,112,114,201,4,0,0, + 115,4,0,0,0,12,7,255,128,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, + 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,7,0, + 0,0,114,226,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,186,0,0,0,210,4,0,0,115, + 4,0,0,0,4,1,255,128,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,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,10,0,0,0,114, + 7,0,0,0,114,226,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,236,0,0,0,213,4,0, + 0,115,4,0,0,0,4,1,255,128,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, + 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,10,0,0,0,122,8,60, + 115,116,114,105,110,103,62,114,222,0,0,0,84,41,1,114, + 238,0,0,0,41,1,114,239,0,0,0,114,226,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 216,0,0,0,198,4,0,0,115,4,0,0,0,18,1,255, + 220,0,0,0,216,4,0,0,115,4,0,0,0,16,1,255, 128,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,1,0,0, - 0,0,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,3,122,115,82,101,116,117,114,110, - 32,114,101,112,114,32,102,111,114,32,116,104,101,32,109,111, - 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,109,101,116,104,111,100,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,46,32,32,84,104,101,32,105,109, - 112,111,114,116,32,109,97,99,104,105,110,101,114,121,32,100, - 111,101,115,32,116,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,78,41,2,114,70,0,0,0, - 114,130,0,0,0,41,1,114,223,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,201,4,0,0,115,4,0,0, - 0,12,7,255,128,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,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,7,0,0,0,114,226, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,186,0,0,0,210,4,0,0,115,4,0,0,0, - 4,1,255,128,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,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,10,0,0,0,114,7,0,0,0, - 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,236,0,0,0,213,4,0,0,115,4,0, - 0,0,4,1,255,128,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,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,10,0,0,0,122,8,60,115,116,114,105, - 110,103,62,114,222,0,0,0,84,41,1,114,238,0,0,0, - 41,1,114,239,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, - 216,4,0,0,115,4,0,0,0,16,1,255,128,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,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,217,0,0,0,114, - 7,0,0,0,114,218,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,219,0,0,0,219,4,0, - 0,115,4,0,0,0,4,0,255,128,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,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,114,0,0, - 0,114,7,0,0,0,114,13,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,224,0,0,0,222, - 4,0,0,115,4,0,0,0,4,1,255,128,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,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, - 0,0,0,115,26,0,0,0,116,0,160,1,100,1,124,0, - 106,2,161,2,1,0,116,0,160,3,124,0,124,1,161,2, - 83,0,41,3,122,98,76,111,97,100,32,97,32,110,97,109, - 101,115,112,97,99,101,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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, - 78,41,4,114,139,0,0,0,114,153,0,0,0,114,20,1, - 0,0,114,225,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,227,0,0,0, - 225,4,0,0,115,10,0,0,0,6,7,4,1,4,255,12, - 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131, - 0,0,0,114,216,0,0,0,114,213,0,0,0,114,41,1, - 0,0,114,186,0,0,0,114,236,0,0,0,114,220,0,0, - 0,114,219,0,0,0,114,224,0,0,0,114,227,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,40,1,0,0,197,4,0,0,115,22,0, - 0,0,8,0,8,1,2,3,10,1,8,8,8,3,8,3, - 8,3,8,3,12,3,255,128,114,40,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131,1,90,6,101, - 7,100,6,100,7,132,0,131,1,90,8,101,7,100,8,100, - 9,132,0,131,1,90,9,101,7,100,19,100,11,100,12,132, - 1,131,1,90,10,101,7,100,20,100,13,100,14,132,1,131, - 1,90,11,101,7,100,21,100,15,100,16,132,1,131,1,90, - 12,101,4,100,17,100,18,132,0,131,1,90,13,100,10,83, - 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, - 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, - 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, - 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, - 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, - 1,106,2,160,3,161,0,131,1,68,0,93,44,92,2,125, - 0,125,1,124,1,100,1,117,0,114,40,116,1,106,2,124, - 0,61,0,113,14,116,4,124,1,100,2,131,2,114,14,124, - 1,160,5,161,0,1,0,113,14,100,1,83,0,41,3,122, - 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, - 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, - 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, - 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, - 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, - 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, - 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, - 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,15,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,133,0,0,0, - 114,43,1,0,0,41,2,114,121,0,0,0,218,6,102,105, - 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,43,1,0,0,244,4,0,0,115,16,0,0, - 0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,255, - 128,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, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 9,0,0,0,67,0,0,0,115,76,0,0,0,116,0,106, - 1,100,1,117,1,114,28,116,0,106,1,115,28,116,2,160, - 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, - 36,125,1,122,14,124,1,124,0,131,1,87,0,2,0,1, - 0,83,0,4,0,116,5,121,70,1,0,1,0,1,0,89, - 0,113,34,119,0,100,1,83,0,41,3,122,46,83,101,97, - 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, - 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, - 102,111,114,32,39,112,97,116,104,39,46,78,122,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,15,0,0,0,218,10,112,97, - 116,104,95,104,111,111,107,115,114,81,0,0,0,114,82,0, - 0,0,114,142,0,0,0,114,122,0,0,0,41,2,114,52, - 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, - 104,111,111,107,115,254,4,0,0,115,18,0,0,0,16,3, - 12,1,10,1,2,1,14,1,12,1,6,1,4,2,255,128, - 122,22,80,97,116,104,70,105,110,100,101,114,46,95,112,97, - 116,104,95,104,111,111,107,115,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,100,0,0,0,124,1,100,1,107,2,114,42,122,12, - 116,0,160,1,161,0,125,1,87,0,110,20,4,0,116,2, - 121,40,1,0,1,0,1,0,89,0,100,2,83,0,119,0, - 122,16,116,3,106,4,124,1,25,0,125,2,87,0,124,2, - 83,0,4,0,116,5,121,98,1,0,1,0,1,0,124,0, - 160,6,124,1,161,1,125,2,124,2,116,3,106,4,124,1, - 60,0,89,0,124,2,83,0,119,0,41,3,122,210,71,101, - 116,32,116,104,101,32,102,105,110,100,101,114,32,102,111,114, - 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32, - 102,114,111,109,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,10,32, - 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, - 116,104,32,101,110,116,114,121,32,105,115,32,110,111,116,32, - 105,110,32,116,104,101,32,99,97,99,104,101,44,32,102,105, - 110,100,32,116,104,101,32,97,112,112,114,111,112,114,105,97, - 116,101,32,102,105,110,100,101,114,10,32,32,32,32,32,32, - 32,32,97,110,100,32,99,97,99,104,101,32,105,116,46,32, - 73,102,32,110,111,32,102,105,110,100,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,10,0,0,0,78,41,7,114,18,0,0,0,114,63,0, - 0,0,218,17,70,105,108,101,78,111,116,70,111,117,110,100, - 69,114,114,111,114,114,15,0,0,0,114,45,1,0,0,218, - 8,75,101,121,69,114,114,111,114,114,49,1,0,0,41,3, - 114,202,0,0,0,114,52,0,0,0,114,47,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,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,11,5,0,0,115,28,0,0,0,8,8,2, - 1,12,1,12,1,8,3,2,1,12,1,4,4,12,253,10, - 1,12,1,4,1,2,255,255,128,122,31,80,97,116,104,70, - 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,99,3,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,67, - 0,0,0,115,82,0,0,0,116,0,124,2,100,1,131,2, - 114,26,124,2,160,1,124,1,161,1,92,2,125,3,125,4, - 110,14,124,2,160,2,124,1,161,1,125,3,103,0,125,4, - 124,3,100,0,117,1,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,141,0, - 0,0,41,7,114,133,0,0,0,114,141,0,0,0,114,210, - 0,0,0,114,139,0,0,0,114,205,0,0,0,114,187,0, - 0,0,114,182,0,0,0,41,6,114,202,0,0,0,114,143, - 0,0,0,114,47,1,0,0,114,144,0,0,0,114,145,0, - 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,33,5,0,0,115,20,0,0, - 0,10,4,16,1,10,2,4,1,8,1,12,1,12,1,6, - 1,4,1,255,128,122,27,80,97,116,104,70,105,110,100,101, - 114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112, - 101,99,78,99,4,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,5,0,0,0,67,0,0,0,115,166,0,0, - 0,103,0,125,4,124,2,68,0,93,134,125,5,116,0,124, - 5,116,1,116,2,102,2,131,2,115,28,113,8,124,0,160, - 3,124,5,161,1,125,6,124,6,100,1,117,1,114,8,116, - 4,124,6,100,2,131,2,114,70,124,6,160,5,124,1,124, - 3,161,2,125,7,110,12,124,0,160,6,124,1,124,6,161, - 2,125,7,124,7,100,1,117,0,114,92,113,8,124,7,106, - 7,100,1,117,1,114,110,124,7,2,0,1,0,83,0,124, - 7,106,8,125,8,124,8,100,1,117,0,114,132,116,9,100, - 3,131,1,130,1,124,4,160,10,124,8,161,1,1,0,113, - 8,116,11,160,12,124,1,100,1,161,2,125,7,124,4,124, - 7,95,8,124,7,83,0,41,4,122,63,70,105,110,100,32, - 116,104,101,32,108,111,97,100,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,207,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,165,0,0,0,114,90,0,0, - 0,218,5,98,121,116,101,115,114,52,1,0,0,114,133,0, - 0,0,114,207,0,0,0,114,53,1,0,0,114,144,0,0, - 0,114,182,0,0,0,114,122,0,0,0,114,171,0,0,0, - 114,139,0,0,0,114,187,0,0,0,41,9,114,202,0,0, - 0,114,143,0,0,0,114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0, - 0,114,145,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,9,95,103,101,116,95,115,112,101,99, - 48,5,0,0,115,44,0,0,0,4,5,8,1,14,1,2, - 1,10,1,8,1,10,1,14,1,12,2,8,1,2,1,10, - 1,8,1,6,1,8,1,8,1,10,5,2,128,12,2,6, - 1,4,1,255,128,122,20,80,97,116,104,70,105,110,100,101, - 114,46,95,103,101,116,95,115,112,101,99,99,4,0,0,0, - 0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0, - 67,0,0,0,115,94,0,0,0,124,2,100,1,117,0,114, - 14,116,0,106,1,125,2,124,0,160,2,124,1,124,2,124, - 3,161,3,125,4,124,4,100,1,117,0,114,40,100,1,83, - 0,124,4,106,3,100,1,117,0,114,90,124,4,106,4,125, - 5,124,5,114,86,100,1,124,4,95,5,116,6,124,1,124, - 5,124,0,106,2,131,3,124,4,95,4,124,4,83,0,100, - 1,83,0,124,4,83,0,41,2,122,141,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,111, - 114,32,39,102,117,108,108,110,97,109,101,39,32,111,110,32, - 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, - 104,39,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,115,101,97,114,99,104,32,105,115,32,98,97,115,101,100, + 100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0, + 0,0,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,217, + 0,0,0,114,7,0,0,0,114,218,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,219,0,0, + 0,219,4,0,0,115,4,0,0,0,4,0,255,128,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,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,114,0,0,0,114,7,0,0,0,114,13,1,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,224, + 0,0,0,222,4,0,0,115,4,0,0,0,4,1,255,128, + 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,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,67,0,0,0,115,26,0,0,0,116,0,160,1, + 100,1,124,0,106,2,161,2,1,0,116,0,160,3,124,0, + 124,1,161,2,83,0,41,3,122,98,76,111,97,100,32,97, + 32,110,97,109,101,115,112,97,99,101,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, + 32,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,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,78,41,4,114,139,0,0,0,114,153,0,0, + 0,114,20,1,0,0,114,225,0,0,0,114,226,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 227,0,0,0,225,4,0,0,115,10,0,0,0,6,7,4, + 1,4,255,12,3,255,128,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,130,0,0,0,114,129,0, + 0,0,114,131,0,0,0,114,216,0,0,0,114,213,0,0, + 0,114,41,1,0,0,114,186,0,0,0,114,236,0,0,0, + 114,220,0,0,0,114,219,0,0,0,114,224,0,0,0,114, + 227,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,40,1,0,0,197,4,0, + 0,115,22,0,0,0,8,0,8,1,2,3,10,1,8,8, + 8,3,8,3,8,3,8,3,12,3,255,128,114,40,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131, + 1,90,6,101,7,100,6,100,7,132,0,131,1,90,8,101, + 7,100,8,100,9,132,0,131,1,90,9,101,7,100,19,100, + 11,100,12,132,1,131,1,90,10,101,7,100,20,100,13,100, + 14,132,1,131,1,90,11,101,7,100,21,100,15,100,16,132, + 1,131,1,90,12,101,4,100,17,100,18,132,0,131,1,90, + 13,100,10,83,0,41,22,218,10,80,97,116,104,70,105,110, + 100,101,114,122,62,77,101,116,97,32,112,97,116,104,32,102, + 105,110,100,101,114,32,102,111,114,32,115,121,115,46,112,97, + 116,104,32,97,110,100,32,112,97,99,107,97,103,101,32,95, + 95,112,97,116,104,95,95,32,97,116,116,114,105,98,117,116, + 101,115,46,99,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, + 0,116,0,116,1,106,2,160,3,161,0,131,1,68,0,93, + 44,92,2,125,0,125,1,124,1,100,1,117,0,114,40,116, + 1,106,2,124,0,61,0,113,14,116,4,124,1,100,2,131, + 2,114,14,124,1,160,5,161,0,1,0,113,14,100,1,83, + 0,41,3,122,125,67,97,108,108,32,116,104,101,32,105,110, + 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,40, + 41,32,109,101,116,104,111,100,32,111,110,32,97,108,108,32, + 112,97,116,104,32,101,110,116,114,121,32,102,105,110,100,101, + 114,115,10,32,32,32,32,32,32,32,32,115,116,111,114,101, + 100,32,105,110,32,115,121,115,46,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,115,32,40,119, + 104,101,114,101,32,105,109,112,108,101,109,101,110,116,101,100, + 41,46,78,218,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,15, + 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, + 133,0,0,0,114,43,1,0,0,41,2,114,121,0,0,0, + 218,6,102,105,110,100,101,114,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,43,1,0,0,244,4,0,0, + 115,16,0,0,0,22,4,8,1,10,1,10,1,8,1,2, + 128,4,252,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,9,0,0,0,67,0,0,0,115,76,0,0, + 0,116,0,106,1,100,1,117,1,114,28,116,0,106,1,115, + 28,116,2,160,3,100,2,116,4,161,2,1,0,116,0,106, + 1,68,0,93,34,125,1,122,14,124,1,124,0,131,1,87, + 0,2,0,1,0,83,0,4,0,116,5,121,74,1,0,1, + 0,1,0,89,0,113,34,100,1,83,0,119,0,41,3,122, + 46,83,101,97,114,99,104,32,115,121,115,46,112,97,116,104, + 95,104,111,111,107,115,32,102,111,114,32,97,32,102,105,110, + 100,101,114,32,102,111,114,32,39,112,97,116,104,39,46,78, + 122,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,15,0,0,0, + 218,10,112,97,116,104,95,104,111,111,107,115,114,81,0,0, + 0,114,82,0,0,0,114,142,0,0,0,114,122,0,0,0, + 41,2,114,52,0,0,0,90,4,104,111,111,107,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,112, + 97,116,104,95,104,111,111,107,115,254,4,0,0,115,20,0, + 0,0,16,3,12,1,10,1,2,1,14,1,12,1,4,1, + 4,2,2,253,255,128,122,22,80,97,116,104,70,105,110,100, + 101,114,46,95,112,97,116,104,95,104,111,111,107,115,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, + 0,0,0,67,0,0,0,115,100,0,0,0,124,1,100,1, + 107,2,114,40,122,12,116,0,160,1,161,0,125,1,87,0, + 110,18,4,0,116,2,121,98,1,0,1,0,1,0,89,0, + 100,2,83,0,122,16,116,3,106,4,124,1,25,0,125,2, + 87,0,124,2,83,0,4,0,116,5,121,96,1,0,1,0, + 1,0,124,0,160,6,124,1,161,1,125,2,124,2,116,3, + 106,4,124,1,60,0,89,0,124,2,83,0,119,0,119,0, + 41,3,122,210,71,101,116,32,116,104,101,32,102,105,110,100, + 101,114,32,102,111,114,32,116,104,101,32,112,97,116,104,32, + 101,110,116,114,121,32,102,114,111,109,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,10,32,32,32,32,32,32,32,32,73,102,32, + 116,104,101,32,112,97,116,104,32,101,110,116,114,121,32,105, + 115,32,110,111,116,32,105,110,32,116,104,101,32,99,97,99, + 104,101,44,32,102,105,110,100,32,116,104,101,32,97,112,112, + 114,111,112,114,105,97,116,101,32,102,105,110,100,101,114,10, + 32,32,32,32,32,32,32,32,97,110,100,32,99,97,99,104, + 101,32,105,116,46,32,73,102,32,110,111,32,102,105,110,100, + 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,10,0,0,0,78,41,7,114,18, + 0,0,0,114,63,0,0,0,218,17,70,105,108,101,78,111, + 116,70,111,117,110,100,69,114,114,111,114,114,15,0,0,0, + 114,45,1,0,0,218,8,75,101,121,69,114,114,111,114,114, + 49,1,0,0,41,3,114,202,0,0,0,114,52,0,0,0, + 114,47,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,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,11,5,0,0,115,30, + 0,0,0,8,8,2,1,12,1,12,1,6,3,2,1,12, + 1,4,4,12,253,10,1,12,1,4,1,2,253,2,250,255, + 128,122,31,80,97,116,104,70,105,110,100,101,114,46,95,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,99,3,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,4,0,0,0,67,0,0,0,115,82,0,0,0, + 116,0,124,2,100,1,131,2,114,26,124,2,160,1,124,1, + 161,1,92,2,125,3,125,4,110,14,124,2,160,2,124,1, + 161,1,125,3,103,0,125,4,124,3,100,0,117,1,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,141,0,0,0,41,7,114,133,0,0, + 0,114,141,0,0,0,114,210,0,0,0,114,139,0,0,0, + 114,205,0,0,0,114,187,0,0,0,114,182,0,0,0,41, + 6,114,202,0,0,0,114,143,0,0,0,114,47,1,0,0, + 114,144,0,0,0,114,145,0,0,0,114,191,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,16, + 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, + 33,5,0,0,115,20,0,0,0,10,4,16,1,10,2,4, + 1,8,1,12,1,12,1,6,1,4,1,255,128,122,27,80, + 97,116,104,70,105,110,100,101,114,46,95,108,101,103,97,99, + 121,95,103,101,116,95,115,112,101,99,78,99,4,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, + 67,0,0,0,115,166,0,0,0,103,0,125,4,124,2,68, + 0,93,134,125,5,116,0,124,5,116,1,116,2,102,2,131, + 2,115,28,113,8,124,0,160,3,124,5,161,1,125,6,124, + 6,100,1,117,1,114,8,116,4,124,6,100,2,131,2,114, + 70,124,6,160,5,124,1,124,3,161,2,125,7,110,12,124, + 0,160,6,124,1,124,6,161,2,125,7,124,7,100,1,117, + 0,114,92,113,8,124,7,106,7,100,1,117,1,114,110,124, + 7,2,0,1,0,83,0,124,7,106,8,125,8,124,8,100, + 1,117,0,114,132,116,9,100,3,131,1,130,1,124,4,160, + 10,124,8,161,1,1,0,113,8,116,11,160,12,124,1,100, + 1,161,2,125,7,124,4,124,7,95,8,124,7,83,0,41, + 4,122,63,70,105,110,100,32,116,104,101,32,108,111,97,100, + 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,207,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, + 165,0,0,0,114,90,0,0,0,218,5,98,121,116,101,115, + 114,52,1,0,0,114,133,0,0,0,114,207,0,0,0,114, + 53,1,0,0,114,144,0,0,0,114,182,0,0,0,114,122, + 0,0,0,114,171,0,0,0,114,139,0,0,0,114,187,0, + 0,0,41,9,114,202,0,0,0,114,143,0,0,0,114,52, + 0,0,0,114,206,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, + 47,1,0,0,114,191,0,0,0,114,145,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,9,95, + 103,101,116,95,115,112,101,99,48,5,0,0,115,44,0,0, + 0,4,5,8,1,14,1,2,1,10,1,8,1,10,1,14, + 1,12,2,8,1,2,1,10,1,8,1,6,1,8,1,8, + 1,10,5,2,128,12,2,6,1,4,1,255,128,122,20,80, + 97,116,104,70,105,110,100,101,114,46,95,103,101,116,95,115, + 112,101,99,99,4,0,0,0,0,0,0,0,0,0,0,0, + 6,0,0,0,5,0,0,0,67,0,0,0,115,94,0,0, + 0,124,2,100,1,117,0,114,14,116,0,106,1,125,2,124, + 0,160,2,124,1,124,2,124,3,161,3,125,4,124,4,100, + 1,117,0,114,40,100,1,83,0,124,4,106,3,100,1,117, + 0,114,90,124,4,106,4,125,5,124,5,114,86,100,1,124, + 4,95,5,116,6,124,1,124,5,124,0,106,2,131,3,124, + 4,95,4,124,4,83,0,100,1,83,0,124,4,83,0,41, + 2,122,141,84,114,121,32,116,111,32,102,105,110,100,32,97, + 32,115,112,101,99,32,102,111,114,32,39,102,117,108,108,110, + 97,109,101,39,32,111,110,32,115,121,115,46,112,97,116,104, + 32,111,114,32,39,112,97,116,104,39,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,115,101,97,114,99,104,32, + 105,115,32,98,97,115,101,100,32,111,110,32,115,121,115,46, + 112,97,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,15,0,0,0,114,52,0,0,0,114,56,1, + 0,0,114,144,0,0,0,114,182,0,0,0,114,185,0,0, + 0,114,18,1,0,0,41,6,114,202,0,0,0,114,143,0, + 0,0,114,52,0,0,0,114,206,0,0,0,114,191,0,0, + 0,114,55,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,207,0,0,0,80,5,0,0,115,28, + 0,0,0,8,6,6,1,14,1,8,1,4,1,10,1,6, + 1,4,1,6,3,16,1,4,1,4,2,4,2,255,128,122, + 20,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100, + 95,115,112,101,99,99,3,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, + 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, + 3,100,1,117,0,114,24,100,1,83,0,124,3,106,1,83, + 0,41,2,122,170,102,105,110,100,32,116,104,101,32,109,111, + 100,117,108,101,32,111,110,32,115,121,115,46,112,97,116,104, + 32,111,114,32,39,112,97,116,104,39,32,98,97,115,101,100, 32,111,110,32,115,121,115,46,112,97,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,15,0,0,0, - 114,52,0,0,0,114,56,1,0,0,114,144,0,0,0,114, - 182,0,0,0,114,185,0,0,0,114,18,1,0,0,41,6, - 114,202,0,0,0,114,143,0,0,0,114,52,0,0,0,114, - 206,0,0,0,114,191,0,0,0,114,55,1,0,0,114,7, + 107,115,32,97,110,100,10,32,32,32,32,32,32,32,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,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,210,0,0,0,104,5, + 0,0,115,10,0,0,0,12,8,8,1,4,1,6,1,255, + 128,122,22,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,99,0,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,4,0,0,0,79,0, + 0,0,115,28,0,0,0,100,1,100,2,108,0,109,1,125, + 2,1,0,124,2,106,2,124,0,105,0,124,1,164,1,142, + 1,83,0,41,4,97,32,1,0,0,10,32,32,32,32,32, + 32,32,32,70,105,110,100,32,100,105,115,116,114,105,98,117, + 116,105,111,110,115,46,10,10,32,32,32,32,32,32,32,32, + 82,101,116,117,114,110,32,97,110,32,105,116,101,114,97,98, + 108,101,32,111,102,32,97,108,108,32,68,105,115,116,114,105, + 98,117,116,105,111,110,32,105,110,115,116,97,110,99,101,115, + 32,99,97,112,97,98,108,101,32,111,102,10,32,32,32,32, + 32,32,32,32,108,111,97,100,105,110,103,32,116,104,101,32, + 109,101,116,97,100,97,116,97,32,102,111,114,32,112,97,99, + 107,97,103,101,115,32,109,97,116,99,104,105,110,103,32,96, + 96,99,111,110,116,101,120,116,46,110,97,109,101,96,96,10, + 32,32,32,32,32,32,32,32,40,111,114,32,97,108,108,32, + 110,97,109,101,115,32,105,102,32,96,96,78,111,110,101,96, + 96,32,105,110,100,105,99,97,116,101,100,41,32,97,108,111, + 110,103,32,116,104,101,32,112,97,116,104,115,32,105,110,32, + 116,104,101,32,108,105,115,116,10,32,32,32,32,32,32,32, + 32,111,102,32,100,105,114,101,99,116,111,114,105,101,115,32, + 96,96,99,111,110,116,101,120,116,46,112,97,116,104,96,96, + 46,10,32,32,32,32,32,32,32,32,114,0,0,0,0,41, + 1,218,18,77,101,116,97,100,97,116,97,80,97,116,104,70, + 105,110,100,101,114,78,41,3,90,18,105,109,112,111,114,116, + 108,105,98,46,109,101,116,97,100,97,116,97,114,57,1,0, + 0,218,18,102,105,110,100,95,100,105,115,116,114,105,98,117, + 116,105,111,110,115,41,3,114,124,0,0,0,114,125,0,0, + 0,114,57,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,58,1,0,0,117,5,0,0,115,6, + 0,0,0,12,10,16,1,255,128,122,29,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,100,105,115,116,114, + 105,98,117,116,105,111,110,115,41,1,78,41,2,78,78,41, + 1,78,41,14,114,130,0,0,0,114,129,0,0,0,114,131, + 0,0,0,114,132,0,0,0,114,213,0,0,0,114,43,1, + 0,0,114,49,1,0,0,114,214,0,0,0,114,52,1,0, + 0,114,53,1,0,0,114,56,1,0,0,114,207,0,0,0, + 114,210,0,0,0,114,58,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,42, + 1,0,0,240,4,0,0,115,38,0,0,0,8,0,4,2, + 2,2,10,1,2,9,10,1,2,12,10,1,2,21,10,1, + 2,14,12,1,2,31,12,1,2,23,12,1,2,12,14,1, + 255,128,114,42,1,0,0,99,0,0,0,0,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,90, + 5,101,6,90,7,100,6,100,7,132,0,90,8,100,8,100, + 9,132,0,90,9,100,19,100,11,100,12,132,1,90,10,100, + 13,100,14,132,0,90,11,101,12,100,15,100,16,132,0,131, + 1,90,13,100,17,100,18,132,0,90,14,100,10,83,0,41, + 20,218,10,70,105,108,101,70,105,110,100,101,114,122,172,70, + 105,108,101,45,98,97,115,101,100,32,102,105,110,100,101,114, + 46,10,10,32,32,32,32,73,110,116,101,114,97,99,116,105, + 111,110,115,32,119,105,116,104,32,116,104,101,32,102,105,108, + 101,32,115,121,115,116,101,109,32,97,114,101,32,99,97,99, + 104,101,100,32,102,111,114,32,112,101,114,102,111,114,109,97, + 110,99,101,44,32,98,101,105,110,103,10,32,32,32,32,114, + 101,102,114,101,115,104,101,100,32,119,104,101,110,32,116,104, + 101,32,100,105,114,101,99,116,111,114,121,32,116,104,101,32, + 102,105,110,100,101,114,32,105,115,32,104,97,110,100,108,105, + 110,103,32,104,97,115,32,98,101,101,110,32,109,111,100,105, + 102,105,101,100,46,10,10,32,32,32,32,99,2,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, + 7,0,0,0,115,84,0,0,0,103,0,125,3,124,2,68, + 0,93,32,92,2,137,0,125,4,124,3,160,0,135,0,102, + 1,100,1,100,2,132,8,124,4,68,0,131,1,161,1,1, + 0,113,8,124,3,124,0,95,1,124,1,112,54,100,3,124, + 0,95,2,100,4,124,0,95,3,116,4,131,0,124,0,95, + 5,116,4,131,0,124,0,95,6,100,5,83,0,41,6,122, + 154,73,110,105,116,105,97,108,105,122,101,32,119,105,116,104, + 32,116,104,101,32,112,97,116,104,32,116,111,32,115,101,97, + 114,99,104,32,111,110,32,97,110,100,32,97,32,118,97,114, + 105,97,98,108,101,32,110,117,109,98,101,114,32,111,102,10, + 32,32,32,32,32,32,32,32,50,45,116,117,112,108,101,115, + 32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,32, + 108,111,97,100,101,114,32,97,110,100,32,116,104,101,32,102, + 105,108,101,32,115,117,102,102,105,120,101,115,32,116,104,101, + 32,108,111,97,100,101,114,10,32,32,32,32,32,32,32,32, + 114,101,99,111,103,110,105,122,101,115,46,99,1,0,0,0, + 0,0,0,0,0,0,0,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, + 114,0,0,0,114,7,0,0,0,114,14,1,0,0,169,1, + 114,144,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 9,0,0,0,146,5,0,0,115,4,0,0,0,22,0,255, + 128,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,79,0,0,0,114,109, + 0,0,0,78,41,7,114,171,0,0,0,218,8,95,108,111, + 97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0,114,7,0,0,0,114,60,1, + 0,0,114,8,0,0,0,114,216,0,0,0,140,5,0,0, + 115,18,0,0,0,4,4,12,1,26,1,6,1,10,2,6, + 1,8,1,12,1,255,128,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,0,0,0,0,1,0,0,0,2,0,0, + 0,67,0,0,0,115,10,0,0,0,100,1,124,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,109,0,0,0,78,41,1,114, + 62,1,0,0,114,253,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,43,1,0,0,154,5,0, + 0,115,4,0,0,0,10,2,255,128,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,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, + 0,115,42,0,0,0,124,0,160,0,124,1,161,1,125,2, + 124,2,100,1,117,0,114,26,100,1,103,0,102,2,83,0, + 124,2,106,1,124,2,106,2,112,38,103,0,102,2,83,0, + 41,2,122,197,84,114,121,32,116,111,32,102,105,110,100,32, + 97,32,108,111,97,100,101,114,32,102,111,114,32,116,104,101, + 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, + 101,44,32,111,114,32,116,104,101,32,110,97,109,101,115,112, + 97,99,101,10,32,32,32,32,32,32,32,32,112,97,99,107, + 97,103,101,32,112,111,114,116,105,111,110,115,46,32,82,101, + 116,117,114,110,115,32,40,108,111,97,100,101,114,44,32,108, + 105,115,116,45,111,102,45,112,111,114,116,105,111,110,115,41, + 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 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,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,207,0,0, + 0,114,144,0,0,0,114,182,0,0,0,41,3,114,123,0, + 0,0,114,143,0,0,0,114,191,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,141,0,0,0, + 160,5,0,0,115,10,0,0,0,10,7,8,1,8,1,16, + 1,255,128,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,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,181,0,0,0,41,1,114,194,0, + 0,0,41,7,114,123,0,0,0,114,192,0,0,0,114,143, + 0,0,0,114,52,0,0,0,90,4,115,109,115,108,114,206, + 0,0,0,114,144,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,56,1,0,0,172,5,0,0, + 115,10,0,0,0,10,1,8,1,2,1,6,255,255,128,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,0,0,0,0,0, + 0,0,0,14,0,0,0,8,0,0,0,67,0,0,0,115, + 92,1,0,0,100,1,125,3,124,1,160,0,100,2,161,1, + 100,3,25,0,125,4,122,24,116,1,124,0,106,2,112,34, + 116,3,160,4,161,0,131,1,106,5,125,5,87,0,110,20, + 4,0,116,6,144,1,121,90,1,0,1,0,1,0,100,4, + 125,5,89,0,124,5,124,0,106,7,107,3,114,88,124,0, + 160,8,161,0,1,0,124,5,124,0,95,7,116,9,131,0, + 114,110,124,0,106,10,125,6,124,4,160,11,161,0,125,7, + 110,10,124,0,106,12,125,6,124,4,125,7,124,7,124,6, + 118,0,114,212,116,13,124,0,106,2,124,4,131,2,125,8, + 124,0,106,14,68,0,93,56,92,2,125,9,125,10,100,5, + 124,9,23,0,125,11,116,13,124,8,124,11,131,2,125,12, + 116,15,124,12,131,1,114,146,124,0,160,16,124,10,124,1, + 124,12,124,8,103,1,124,2,161,5,2,0,1,0,83,0, + 116,17,124,8,131,1,125,3,124,0,106,14,68,0,93,80, + 92,2,125,9,125,10,116,13,124,0,106,2,124,4,124,9, + 23,0,131,2,125,12,116,18,106,19,100,6,124,12,100,3, + 100,7,141,3,1,0,124,7,124,9,23,0,124,6,118,0, + 114,218,116,15,124,12,131,1,114,218,124,0,160,16,124,10, + 124,1,124,12,100,8,124,2,161,5,2,0,1,0,83,0, + 124,3,144,1,114,86,116,18,160,19,100,9,124,8,161,2, + 1,0,116,18,160,20,124,1,100,8,161,2,125,13,124,8, + 103,1,124,13,95,21,124,13,83,0,100,8,83,0,119,0, + 41,10,122,111,84,114,121,32,116,111,32,102,105,110,100,32, + 97,32,115,112,101,99,32,102,111,114,32,116,104,101,32,115, + 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 115,32,116,104,101,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,79,0,0,0,114,39,0,0,0,114,109, + 0,0,0,114,216,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,49, + 0,0,0,114,57,0,0,0,114,52,0,0,0,114,18,0, + 0,0,114,63,0,0,0,114,7,1,0,0,114,58,0,0, + 0,114,62,1,0,0,218,11,95,102,105,108,108,95,99,97, + 99,104,101,114,21,0,0,0,114,65,1,0,0,114,110,0, + 0,0,114,64,1,0,0,114,48,0,0,0,114,61,1,0, + 0,114,62,0,0,0,114,56,1,0,0,114,64,0,0,0, + 114,139,0,0,0,114,153,0,0,0,114,187,0,0,0,114, + 182,0,0,0,41,14,114,123,0,0,0,114,143,0,0,0, + 114,206,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,173,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,15,1,0,0,114,192,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,191,0,0,0,114,7, 0,0,0,114,7,0,0,0,114,8,0,0,0,114,207,0, - 0,0,80,5,0,0,115,28,0,0,0,8,6,6,1,14, - 1,8,1,4,1,10,1,6,1,4,1,6,3,16,1,4, - 1,4,2,4,2,255,128,122,20,80,97,116,104,70,105,110, - 100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, - 0,0,67,0,0,0,115,30,0,0,0,124,0,160,0,124, - 1,124,2,161,2,125,3,124,3,100,1,117,0,114,24,100, - 1,83,0,124,3,106,1,83,0,41,2,122,170,102,105,110, - 100,32,116,104,101,32,109,111,100,117,108,101,32,111,110,32, - 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, - 104,39,32,98,97,115,101,100,32,111,110,32,115,121,115,46, - 112,97,116,104,95,104,111,111,107,115,32,97,110,100,10,32, - 32,32,32,32,32,32,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, - 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,210,0,0,0,104,5,0,0,115,10,0,0,0,12, - 8,8,1,4,1,6,1,255,128,122,22,80,97,116,104,70, - 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,4,0,0,0,79,0,0,0,115,28,0,0,0,100, - 1,100,2,108,0,109,1,125,2,1,0,124,2,106,2,124, - 0,105,0,124,1,164,1,142,1,83,0,41,4,97,32,1, - 0,0,10,32,32,32,32,32,32,32,32,70,105,110,100,32, - 100,105,115,116,114,105,98,117,116,105,111,110,115,46,10,10, - 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,97, - 110,32,105,116,101,114,97,98,108,101,32,111,102,32,97,108, - 108,32,68,105,115,116,114,105,98,117,116,105,111,110,32,105, - 110,115,116,97,110,99,101,115,32,99,97,112,97,98,108,101, - 32,111,102,10,32,32,32,32,32,32,32,32,108,111,97,100, - 105,110,103,32,116,104,101,32,109,101,116,97,100,97,116,97, - 32,102,111,114,32,112,97,99,107,97,103,101,115,32,109,97, - 116,99,104,105,110,103,32,96,96,99,111,110,116,101,120,116, - 46,110,97,109,101,96,96,10,32,32,32,32,32,32,32,32, - 40,111,114,32,97,108,108,32,110,97,109,101,115,32,105,102, - 32,96,96,78,111,110,101,96,96,32,105,110,100,105,99,97, - 116,101,100,41,32,97,108,111,110,103,32,116,104,101,32,112, - 97,116,104,115,32,105,110,32,116,104,101,32,108,105,115,116, - 10,32,32,32,32,32,32,32,32,111,102,32,100,105,114,101, - 99,116,111,114,105,101,115,32,96,96,99,111,110,116,101,120, - 116,46,112,97,116,104,96,96,46,10,32,32,32,32,32,32, - 32,32,114,0,0,0,0,41,1,218,18,77,101,116,97,100, - 97,116,97,80,97,116,104,70,105,110,100,101,114,78,41,3, - 90,18,105,109,112,111,114,116,108,105,98,46,109,101,116,97, - 100,97,116,97,114,57,1,0,0,218,18,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,3,114, - 124,0,0,0,114,125,0,0,0,114,57,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,58,1, - 0,0,117,5,0,0,115,6,0,0,0,12,10,16,1,255, - 128,122,29,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, - 41,1,78,41,2,78,78,41,1,78,41,14,114,130,0,0, - 0,114,129,0,0,0,114,131,0,0,0,114,132,0,0,0, - 114,213,0,0,0,114,43,1,0,0,114,49,1,0,0,114, - 214,0,0,0,114,52,1,0,0,114,53,1,0,0,114,56, - 1,0,0,114,207,0,0,0,114,210,0,0,0,114,58,1, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,42,1,0,0,240,4,0,0,115, - 38,0,0,0,8,0,4,2,2,2,10,1,2,9,10,1, - 2,12,10,1,2,21,10,1,2,14,12,1,2,31,12,1, - 2,23,12,1,2,12,14,1,255,128,114,42,1,0,0,99, - 0,0,0,0,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,90,5,101,6,90,7,100,6,100, - 7,132,0,90,8,100,8,100,9,132,0,90,9,100,19,100, - 11,100,12,132,1,90,10,100,13,100,14,132,0,90,11,101, - 12,100,15,100,16,132,0,131,1,90,13,100,17,100,18,132, - 0,90,14,100,10,83,0,41,20,218,10,70,105,108,101,70, - 105,110,100,101,114,122,172,70,105,108,101,45,98,97,115,101, - 100,32,102,105,110,100,101,114,46,10,10,32,32,32,32,73, - 110,116,101,114,97,99,116,105,111,110,115,32,119,105,116,104, - 32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,109, - 32,97,114,101,32,99,97,99,104,101,100,32,102,111,114,32, - 112,101,114,102,111,114,109,97,110,99,101,44,32,98,101,105, - 110,103,10,32,32,32,32,114,101,102,114,101,115,104,101,100, - 32,119,104,101,110,32,116,104,101,32,100,105,114,101,99,116, - 111,114,121,32,116,104,101,32,102,105,110,100,101,114,32,105, - 115,32,104,97,110,100,108,105,110,103,32,104,97,115,32,98, - 101,101,110,32,109,111,100,105,102,105,101,100,46,10,10,32, - 32,32,32,99,2,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,6,0,0,0,7,0,0,0,115,84,0,0, - 0,103,0,125,3,124,2,68,0,93,32,92,2,137,0,125, - 4,124,3,160,0,135,0,102,1,100,1,100,2,132,8,124, - 4,68,0,131,1,161,1,1,0,113,8,124,3,124,0,95, - 1,124,1,112,54,100,3,124,0,95,2,100,4,124,0,95, - 3,116,4,131,0,124,0,95,5,116,4,131,0,124,0,95, - 6,100,5,83,0,41,6,122,154,73,110,105,116,105,97,108, - 105,122,101,32,119,105,116,104,32,116,104,101,32,112,97,116, - 104,32,116,111,32,115,101,97,114,99,104,32,111,110,32,97, - 110,100,32,97,32,118,97,114,105,97,98,108,101,32,110,117, - 109,98,101,114,32,111,102,10,32,32,32,32,32,32,32,32, - 50,45,116,117,112,108,101,115,32,99,111,110,116,97,105,110, - 105,110,103,32,116,104,101,32,108,111,97,100,101,114,32,97, - 110,100,32,116,104,101,32,102,105,108,101,32,115,117,102,102, - 105,120,101,115,32,116,104,101,32,108,111,97,100,101,114,10, - 32,32,32,32,32,32,32,32,114,101,99,111,103,110,105,122, - 101,115,46,99,1,0,0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0, - 0,114,14,1,0,0,169,1,114,144,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,9,0,0,0,146,5,0,0, - 115,4,0,0,0,22,0,255,128,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,79,0,0,0,114,109,0,0,0,78,41,7,114,171, - 0,0,0,218,8,95,108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0, - 114,7,0,0,0,114,60,1,0,0,114,8,0,0,0,114, - 216,0,0,0,140,5,0,0,115,18,0,0,0,4,4,12, - 1,26,1,6,1,10,2,6,1,8,1,12,1,255,128,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,0,0,0, - 0,1,0,0,0,2,0,0,0,67,0,0,0,115,10,0, - 0,0,100,1,124,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, - 109,0,0,0,78,41,1,114,62,1,0,0,114,253,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,43,1,0,0,154,5,0,0,115,4,0,0,0,10,2, - 255,128,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,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,67,0,0,0,115,42,0,0,0,124,0, - 160,0,124,1,161,1,125,2,124,2,100,1,117,0,114,26, - 100,1,103,0,102,2,83,0,124,2,106,1,124,2,106,2, - 112,38,103,0,102,2,83,0,41,2,122,197,84,114,121,32, - 116,111,32,102,105,110,100,32,97,32,108,111,97,100,101,114, - 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, - 101,100,32,109,111,100,117,108,101,44,32,111,114,32,116,104, - 101,32,110,97,109,101,115,112,97,99,101,10,32,32,32,32, - 32,32,32,32,112,97,99,107,97,103,101,32,112,111,114,116, - 105,111,110,115,46,32,82,101,116,117,114,110,115,32,40,108, - 111,97,100,101,114,44,32,108,105,115,116,45,111,102,45,112, - 111,114,116,105,111,110,115,41,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,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,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,207,0,0,0,114,144,0,0,0,114,182, - 0,0,0,41,3,114,123,0,0,0,114,143,0,0,0,114, - 191,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,141,0,0,0,160,5,0,0,115,10,0,0, - 0,10,7,8,1,8,1,16,1,255,128,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,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,181, - 0,0,0,41,1,114,194,0,0,0,41,7,114,123,0,0, - 0,114,192,0,0,0,114,143,0,0,0,114,52,0,0,0, - 90,4,115,109,115,108,114,206,0,0,0,114,144,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 56,1,0,0,172,5,0,0,115,10,0,0,0,10,1,8, - 1,2,1,6,255,255,128,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,0,0,0,0,0,0,0,0,14,0,0,0,8, - 0,0,0,67,0,0,0,115,92,1,0,0,100,1,125,3, - 124,1,160,0,100,2,161,1,100,3,25,0,125,4,122,24, - 116,1,124,0,106,2,112,34,116,3,160,4,161,0,131,1, - 106,5,125,5,87,0,110,22,4,0,116,6,121,64,1,0, - 1,0,1,0,100,4,125,5,89,0,110,2,119,0,124,5, - 124,0,106,7,107,3,114,90,124,0,160,8,161,0,1,0, - 124,5,124,0,95,7,116,9,131,0,114,112,124,0,106,10, - 125,6,124,4,160,11,161,0,125,7,110,10,124,0,106,12, - 125,6,124,4,125,7,124,7,124,6,118,0,114,214,116,13, - 124,0,106,2,124,4,131,2,125,8,124,0,106,14,68,0, - 93,56,92,2,125,9,125,10,100,5,124,9,23,0,125,11, - 116,13,124,8,124,11,131,2,125,12,116,15,124,12,131,1, - 114,148,124,0,160,16,124,10,124,1,124,12,124,8,103,1, - 124,2,161,5,2,0,1,0,83,0,116,17,124,8,131,1, - 125,3,124,0,106,14,68,0,93,80,92,2,125,9,125,10, - 116,13,124,0,106,2,124,4,124,9,23,0,131,2,125,12, - 116,18,106,19,100,6,124,12,100,3,100,7,141,3,1,0, - 124,7,124,9,23,0,124,6,118,0,114,220,116,15,124,12, - 131,1,114,220,124,0,160,16,124,10,124,1,124,12,100,8, - 124,2,161,5,2,0,1,0,83,0,124,3,144,1,114,88, - 116,18,160,19,100,9,124,8,161,2,1,0,116,18,160,20, - 124,1,100,8,161,2,125,13,124,8,103,1,124,13,95,21, - 124,13,83,0,100,8,83,0,41,10,122,111,84,114,121,32, - 116,111,32,102,105,110,100,32,97,32,115,112,101,99,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,82,101,116,117,114,110,115,32,116,104,101,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,79,0,0, - 0,114,39,0,0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0,0,0, - 114,52,0,0,0,114,18,0,0,0,114,63,0,0,0,114, - 7,1,0,0,114,58,0,0,0,114,62,1,0,0,218,11, - 95,102,105,108,108,95,99,97,99,104,101,114,21,0,0,0, - 114,65,1,0,0,114,110,0,0,0,114,64,1,0,0,114, - 48,0,0,0,114,61,1,0,0,114,62,0,0,0,114,56, - 1,0,0,114,64,0,0,0,114,139,0,0,0,114,153,0, - 0,0,114,187,0,0,0,114,182,0,0,0,41,14,114,123, - 0,0,0,114,143,0,0,0,114,206,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,173,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,15,1, - 0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,207,0,0,0,177,5,0,0,115,74, - 0,0,0,4,5,14,1,2,1,24,1,12,1,10,1,10, - 1,8,1,6,1,6,2,6,1,10,1,6,2,4,1,8, - 2,12,1,14,1,8,1,10,1,8,1,24,1,8,4,14, - 2,16,1,16,1,12,1,8,1,10,1,4,1,8,255,6, - 2,12,1,12,1,8,1,4,1,4,1,255,128,122,20,70, - 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,115, - 112,101,99,99,1,0,0,0,0,0,0,0,0,0,0,0, - 9,0,0,0,10,0,0,0,67,0,0,0,115,192,0,0, - 0,124,0,106,0,125,1,122,22,116,1,160,2,124,1,112, - 22,116,1,160,3,161,0,161,1,125,2,87,0,110,28,4, - 0,116,4,116,5,116,6,102,3,121,56,1,0,1,0,1, - 0,103,0,125,2,89,0,110,2,119,0,116,7,106,8,160, - 9,100,1,161,1,115,82,116,10,124,2,131,1,124,0,95, - 11,110,74,116,10,131,0,125,3,124,2,68,0,93,56,125, - 4,124,4,160,12,100,2,161,1,92,3,125,5,125,6,125, - 7,124,6,114,134,100,3,160,13,124,5,124,7,160,14,161, - 0,161,2,125,8,110,4,124,5,125,8,124,3,160,15,124, - 8,161,1,1,0,113,92,124,3,124,0,95,11,116,7,106, - 8,160,9,116,16,161,1,114,188,100,4,100,5,132,0,124, - 2,68,0,131,1,124,0,95,17,100,6,83,0,100,6,83, - 0,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97, - 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108, - 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99, - 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100, - 105,114,101,99,116,111,114,121,46,114,14,0,0,0,114,79, - 0,0,0,114,69,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0, - 0,115,20,0,0,0,104,0,124,0,93,12,125,1,124,1, - 160,0,161,0,146,2,113,4,83,0,114,7,0,0,0,41, - 1,114,110,0,0,0,41,2,114,5,0,0,0,90,2,102, - 110,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,13,0,0,0,254,5,0,0,115,4,0,0,0,20,0, - 255,128,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,52,0,0,0,114,18,0,0,0,90,7,108,105,115,116, - 100,105,114,114,63,0,0,0,114,50,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,15,0,0,0,114,22,0,0,0,114,23,0,0, - 0,114,63,1,0,0,114,64,1,0,0,114,105,0,0,0, - 114,70,0,0,0,114,110,0,0,0,218,3,97,100,100,114, - 24,0,0,0,114,65,1,0,0,41,9,114,123,0,0,0, - 114,52,0,0,0,90,8,99,111,110,116,101,110,116,115,90, - 21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,111, - 110,116,101,110,116,115,114,38,1,0,0,114,121,0,0,0, - 114,25,1,0,0,114,15,1,0,0,90,8,110,101,119,95, - 110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,67,1,0,0,225,5,0,0,115,38,0,0, - 0,6,2,2,1,22,1,18,1,10,3,12,3,12,1,6, - 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, - 1,20,1,4,255,255,128,122,22,70,105,108,101,70,105,110, - 100,101,114,46,95,102,105,108,108,95,99,97,99,104,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,7,0,0,0,115,18,0,0,0,135,0,135, - 1,102,2,100,1,100,2,132,8,125,2,124,2,83,0,41, - 4,97,20,1,0,0,65,32,99,108,97,115,115,32,109,101, - 116,104,111,100,32,119,104,105,99,104,32,114,101,116,117,114, - 110,115,32,97,32,99,108,111,115,117,114,101,32,116,111,32, - 117,115,101,32,111,110,32,115,121,115,46,112,97,116,104,95, - 104,111,111,107,10,32,32,32,32,32,32,32,32,119,104,105, - 99,104,32,119,105,108,108,32,114,101,116,117,114,110,32,97, - 110,32,105,110,115,116,97,110,99,101,32,117,115,105,110,103, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,108, - 111,97,100,101,114,115,32,97,110,100,32,116,104,101,32,112, - 97,116,104,10,32,32,32,32,32,32,32,32,99,97,108,108, - 101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,114, - 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,116, - 104,101,32,112,97,116,104,32,99,97,108,108,101,100,32,111, - 110,32,116,104,101,32,99,108,111,115,117,114,101,32,105,115, - 32,110,111,116,32,97,32,100,105,114,101,99,116,111,114,121, - 44,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, - 10,32,32,32,32,32,32,32,32,114,97,105,115,101,100,46, - 10,10,32,32,32,32,32,32,32,32,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,19, - 0,0,0,115,36,0,0,0,116,0,124,0,131,1,115,20, - 116,1,100,1,124,0,100,2,141,2,130,1,136,0,124,0, - 103,1,136,1,162,1,82,0,142,0,83,0,41,4,122,45, - 80,97,116,104,32,104,111,111,107,32,102,111,114,32,105,109, - 112,111,114,116,108,105,98,46,109,97,99,104,105,110,101,114, - 121,46,70,105,108,101,70,105,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,56,0, - 0,0,78,41,2,114,64,0,0,0,114,122,0,0,0,114, - 56,0,0,0,169,2,114,202,0,0,0,114,66,1,0,0, - 114,7,0,0,0,114,8,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,10,6,0,0,115,8,0,0,0,8,2,12, - 1,16,1,255,128,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,78,114,7, - 0,0,0,41,3,114,202,0,0,0,114,66,1,0,0,114, - 72,1,0,0,114,7,0,0,0,114,71,1,0,0,114,8, - 0,0,0,218,9,112,97,116,104,95,104,111,111,107,0,6, - 0,0,115,6,0,0,0,14,10,4,6,255,128,122,20,70, - 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, - 111,111,107,99,1,0,0,0,0,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,78, - 122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114, - 125,41,41,2,114,70,0,0,0,114,52,0,0,0,114,253, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,36,1,0,0,18,6,0,0,115,4,0,0,0, - 12,1,255,128,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,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, - 0,0,114,216,0,0,0,114,43,1,0,0,114,147,0,0, - 0,114,210,0,0,0,114,141,0,0,0,114,56,1,0,0, - 114,207,0,0,0,114,67,1,0,0,114,214,0,0,0,114, - 73,1,0,0,114,36,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,59,1, - 0,0,131,5,0,0,115,26,0,0,0,8,0,4,2,8, - 7,8,14,4,4,8,2,8,12,10,5,8,48,2,31,10, - 1,12,17,255,128,114,59,1,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, - 0,0,0,115,144,0,0,0,124,0,160,0,100,1,161,1, - 125,4,124,0,160,0,100,2,161,1,125,5,124,4,115,66, - 124,5,114,36,124,5,106,1,125,4,110,30,124,2,124,3, - 107,2,114,56,116,2,124,1,124,2,131,2,125,4,110,10, - 116,3,124,1,124,2,131,2,125,4,124,5,115,84,116,4, - 124,1,124,2,124,4,100,3,141,3,125,5,122,38,124,5, - 124,0,100,2,60,0,124,4,124,0,100,1,60,0,124,2, - 124,0,100,4,60,0,124,3,124,0,100,5,60,0,87,0, - 100,0,83,0,4,0,116,5,121,142,1,0,1,0,1,0, - 89,0,100,0,83,0,119,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,60,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,144,0,0,0,114,12,1,0,0,114,6,1, - 0,0,114,194,0,0,0,218,9,69,120,99,101,112,116,105, - 111,110,41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,14,95,102,105, - 120,95,117,112,95,109,111,100,117,108,101,24,6,0,0,115, - 36,0,0,0,10,2,10,1,4,1,4,1,8,1,8,1, - 12,1,10,2,4,1,14,1,2,1,8,1,8,1,8,1, - 14,1,12,1,8,2,255,128,114,78,1,0,0,99,0,0, - 0,0,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, - 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83, - 0,41,2,122,95,82,101,116,117,114,110,115,32,97,32,108, - 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101, - 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115, - 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,78,41,7,114,3,1,0,0,114,167,0,0, - 0,218,18,101,120,116,101,110,115,105,111,110,95,115,117,102, - 102,105,120,101,115,114,6,1,0,0,114,106,0,0,0,114, - 12,1,0,0,114,94,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,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,188,0,0,0,47,6,0, - 0,115,10,0,0,0,12,5,8,1,8,1,10,1,255,128, - 114,188,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,8, - 0,0,0,124,0,97,0,100,0,83,0,114,114,0,0,0, - 41,1,114,139,0,0,0,41,1,218,17,95,98,111,111,116, - 115,116,114,97,112,95,109,111,100,117,108,101,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,21,95,115,101, - 116,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, - 108,101,58,6,0,0,115,4,0,0,0,8,2,255,128,114, - 81,1,0,0,99,1,0,0,0,0,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,1, - 161,1,1,0,116,2,106,7,160,8,116,9,161,1,1,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,81,1,0,0,114,188,0,0,0,114,15, - 0,0,0,114,48,1,0,0,114,171,0,0,0,114,59,1, - 0,0,114,73,1,0,0,218,9,109,101,116,97,95,112,97, - 116,104,114,190,0,0,0,114,42,1,0,0,41,2,114,80, - 1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,108, - 111,97,100,101,114,115,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,105,110,115,116,97,108,108,63, - 6,0,0,115,10,0,0,0,8,2,6,1,20,1,16,1, - 255,128,114,83,1,0,0,41,1,114,68,0,0,0,41,1, - 78,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, - 0,0,41,1,84,41,1,78,41,1,78,41,83,114,132,0, - 0,0,114,139,0,0,0,114,167,0,0,0,114,72,0,0, - 0,114,15,0,0,0,114,81,0,0,0,114,164,0,0,0, - 114,22,0,0,0,114,211,0,0,0,90,2,110,116,114,18, - 0,0,0,114,196,0,0,0,90,5,112,111,115,105,120,114, - 42,0,0,0,218,3,97,108,108,114,45,0,0,0,114,46, - 0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0,114,21, - 0,0,0,114,33,0,0,0,114,38,0,0,0,114,40,0, - 0,0,114,48,0,0,0,114,55,0,0,0,114,57,0,0, - 0,114,61,0,0,0,114,62,0,0,0,114,64,0,0,0, - 114,67,0,0,0,114,77,0,0,0,218,4,116,121,112,101, - 218,8,95,95,99,111,100,101,95,95,114,166,0,0,0,114, - 31,0,0,0,114,152,0,0,0,114,30,0,0,0,114,35, - 0,0,0,114,243,0,0,0,114,97,0,0,0,114,93,0, - 0,0,114,106,0,0,0,114,190,0,0,0,114,79,1,0, - 0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0,0,0, - 114,117,0,0,0,114,119,0,0,0,114,140,0,0,0,114, - 147,0,0,0,114,156,0,0,0,114,160,0,0,0,114,162, - 0,0,0,114,169,0,0,0,114,174,0,0,0,114,175,0, - 0,0,114,180,0,0,0,218,6,111,98,106,101,99,116,114, - 189,0,0,0,114,194,0,0,0,114,195,0,0,0,114,215, - 0,0,0,114,228,0,0,0,114,246,0,0,0,114,6,1, - 0,0,114,12,1,0,0,114,3,1,0,0,114,18,1,0, - 0,114,40,1,0,0,114,42,1,0,0,114,59,1,0,0, - 114,78,1,0,0,114,188,0,0,0,114,81,1,0,0,114, - 83,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,172,0,0,0,4,0,4,22,8, - 3,8,1,8,1,8,1,8,1,10,3,4,1,8,1,10, - 1,8,2,4,3,10,1,6,2,22,2,8,1,10,1,14, - 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, - 3,8,5,8,5,8,6,8,6,8,12,8,10,8,9,8, - 5,8,7,10,9,10,22,0,127,16,24,12,1,4,2,4, - 1,6,2,6,1,10,1,8,2,6,2,8,2,16,2,8, - 71,8,40,8,19,8,12,8,12,8,31,8,17,8,33,8, - 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, - 255,14,68,14,64,16,30,0,127,14,17,18,50,18,45,18, - 25,14,53,14,63,14,43,0,127,14,20,0,127,10,22,8, - 23,8,11,12,5,255,128, + 0,0,177,5,0,0,115,76,0,0,0,4,5,14,1,2, + 1,24,1,14,1,6,1,10,1,8,1,6,1,6,2,6, + 1,10,1,6,2,4,1,8,2,12,1,14,1,8,1,10, + 1,8,1,24,1,8,4,14,2,16,1,16,1,12,1,8, + 1,10,1,4,1,8,255,6,2,12,1,12,1,8,1,4, + 1,4,1,2,219,255,128,122,20,70,105,108,101,70,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,99,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,10,0, + 0,0,67,0,0,0,115,190,0,0,0,124,0,106,0,125, + 1,122,22,116,1,160,2,124,1,112,22,116,1,160,3,161, + 0,161,1,125,2,87,0,110,24,4,0,116,4,116,5,116, + 6,102,3,121,188,1,0,1,0,1,0,103,0,125,2,89, + 0,116,7,106,8,160,9,100,1,161,1,115,78,116,10,124, + 2,131,1,124,0,95,11,110,74,116,10,131,0,125,3,124, + 2,68,0,93,56,125,4,124,4,160,12,100,2,161,1,92, + 3,125,5,125,6,125,7,124,6,114,130,100,3,160,13,124, + 5,124,7,160,14,161,0,161,2,125,8,110,4,124,5,125, + 8,124,3,160,15,124,8,161,1,1,0,113,88,124,3,124, + 0,95,11,116,7,106,8,160,9,116,16,161,1,114,184,100, + 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, + 6,83,0,100,6,83,0,119,0,41,7,122,68,70,105,108, + 108,32,116,104,101,32,99,97,99,104,101,32,111,102,32,112, + 111,116,101,110,116,105,97,108,32,109,111,100,117,108,101,115, + 32,97,110,100,32,112,97,99,107,97,103,101,115,32,102,111, + 114,32,116,104,105,115,32,100,105,114,101,99,116,111,114,121, + 46,114,14,0,0,0,114,79,0,0,0,114,69,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,83,0,0,0,115,20,0,0,0,104,0, + 124,0,93,12,125,1,124,1,160,0,161,0,146,2,113,4, + 83,0,114,7,0,0,0,41,1,114,110,0,0,0,41,2, + 114,5,0,0,0,90,2,102,110,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,13,0,0,0,254,5,0, + 0,115,4,0,0,0,20,0,255,128,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,52,0,0,0,114,18,0, + 0,0,90,7,108,105,115,116,100,105,114,114,63,0,0,0, + 114,50,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,15,0,0,0,114, + 22,0,0,0,114,23,0,0,0,114,63,1,0,0,114,64, + 1,0,0,114,105,0,0,0,114,70,0,0,0,114,110,0, + 0,0,218,3,97,100,100,114,24,0,0,0,114,65,1,0, + 0,41,9,114,123,0,0,0,114,52,0,0,0,90,8,99, + 111,110,116,101,110,116,115,90,21,108,111,119,101,114,95,115, + 117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,38, + 1,0,0,114,121,0,0,0,114,25,1,0,0,114,15,1, + 0,0,90,8,110,101,119,95,110,97,109,101,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,67,1,0,0, + 225,5,0,0,115,40,0,0,0,6,2,2,1,22,1,18, + 1,6,3,12,3,12,1,6,7,8,1,16,1,4,1,18, + 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,255, + 128,122,22,70,105,108,101,70,105,110,100,101,114,46,95,102, + 105,108,108,95,99,97,99,104,101,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,7,0, + 0,0,115,18,0,0,0,135,0,135,1,102,2,100,1,100, + 2,132,8,125,2,124,2,83,0,41,4,97,20,1,0,0, + 65,32,99,108,97,115,115,32,109,101,116,104,111,100,32,119, + 104,105,99,104,32,114,101,116,117,114,110,115,32,97,32,99, + 108,111,115,117,114,101,32,116,111,32,117,115,101,32,111,110, + 32,115,121,115,46,112,97,116,104,95,104,111,111,107,10,32, + 32,32,32,32,32,32,32,119,104,105,99,104,32,119,105,108, + 108,32,114,101,116,117,114,110,32,97,110,32,105,110,115,116, + 97,110,99,101,32,117,115,105,110,103,32,116,104,101,32,115, + 112,101,99,105,102,105,101,100,32,108,111,97,100,101,114,115, + 32,97,110,100,32,116,104,101,32,112,97,116,104,10,32,32, + 32,32,32,32,32,32,99,97,108,108,101,100,32,111,110,32, + 116,104,101,32,99,108,111,115,117,114,101,46,10,10,32,32, + 32,32,32,32,32,32,73,102,32,116,104,101,32,112,97,116, + 104,32,99,97,108,108,101,100,32,111,110,32,116,104,101,32, + 99,108,111,115,117,114,101,32,105,115,32,110,111,116,32,97, + 32,100,105,114,101,99,116,111,114,121,44,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,115,10,32,32,32,32,32, + 32,32,32,114,97,105,115,101,100,46,10,10,32,32,32,32, + 32,32,32,32,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,4,0,0,0,19,0,0,0,115,36,0, + 0,0,116,0,124,0,131,1,115,20,116,1,100,1,124,0, + 100,2,141,2,130,1,136,0,124,0,103,1,136,1,162,1, + 82,0,142,0,83,0,41,4,122,45,80,97,116,104,32,104, + 111,111,107,32,102,111,114,32,105,109,112,111,114,116,108,105, + 98,46,109,97,99,104,105,110,101,114,121,46,70,105,108,101, + 70,105,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,56,0,0,0,78,41,2,114, + 64,0,0,0,114,122,0,0,0,114,56,0,0,0,169,2, + 114,202,0,0,0,114,66,1,0,0,114,7,0,0,0,114, + 8,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,10,6, + 0,0,115,8,0,0,0,8,2,12,1,16,1,255,128,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,78,114,7,0,0,0,41,3,114, + 202,0,0,0,114,66,1,0,0,114,72,1,0,0,114,7, + 0,0,0,114,71,1,0,0,114,8,0,0,0,218,9,112, + 97,116,104,95,104,111,111,107,0,6,0,0,115,6,0,0, + 0,14,10,4,6,255,128,122,20,70,105,108,101,70,105,110, + 100,101,114,46,112,97,116,104,95,104,111,111,107,99,1,0, + 0,0,0,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,78,122,16,70,105,108,101, + 70,105,110,100,101,114,40,123,33,114,125,41,41,2,114,70, + 0,0,0,114,52,0,0,0,114,253,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,36,1,0, + 0,18,6,0,0,115,4,0,0,0,12,1,255,128,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,130,0,0,0,114,129,0, + 0,0,114,131,0,0,0,114,132,0,0,0,114,216,0,0, + 0,114,43,1,0,0,114,147,0,0,0,114,210,0,0,0, + 114,141,0,0,0,114,56,1,0,0,114,207,0,0,0,114, + 67,1,0,0,114,214,0,0,0,114,73,1,0,0,114,36, + 1,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,59,1,0,0,131,5,0,0, + 115,26,0,0,0,8,0,4,2,8,7,8,14,4,4,8, + 2,8,12,10,5,8,48,2,31,10,1,12,17,255,128,114, + 59,1,0,0,99,4,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,8,0,0,0,67,0,0,0,115,148,0, + 0,0,124,0,160,0,100,1,161,1,125,4,124,0,160,0, + 100,2,161,1,125,5,124,4,115,66,124,5,114,36,124,5, + 106,1,125,4,110,30,124,2,124,3,107,2,114,56,116,2, + 124,1,124,2,131,2,125,4,110,10,116,3,124,1,124,2, + 131,2,125,4,124,5,115,84,116,4,124,1,124,2,124,4, + 100,3,141,3,125,5,122,38,124,5,124,0,100,2,60,0, + 124,4,124,0,100,1,60,0,124,2,124,0,100,4,60,0, + 124,3,124,0,100,5,60,0,87,0,100,0,83,0,4,0, + 116,5,121,142,1,0,1,0,1,0,89,0,100,0,83,0, + 119,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, + 60,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,144,0,0,0,114,12,1,0,0,114,6,1,0,0, + 114,194,0,0,0,218,9,69,120,99,101,112,116,105,111,110, + 41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,14,95,102,105,120,95, + 117,112,95,109,111,100,117,108,101,24,6,0,0,115,40,0, + 0,0,10,2,10,1,4,1,4,1,8,1,8,1,12,1, + 10,2,4,1,14,1,2,1,8,1,8,1,8,1,14,1, + 12,1,6,2,2,254,4,255,255,128,114,78,1,0,0,99, + 0,0,0,0,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,5,116,6,102,2,125,2,124,0,124,1,124,2,103, + 3,83,0,41,2,122,95,82,101,116,117,114,110,115,32,97, + 32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,97, + 115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,101, + 114,115,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,78,41,7,114,3,1,0,0,114,167, + 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, + 117,102,102,105,120,101,115,114,6,1,0,0,114,106,0,0, + 0,114,12,1,0,0,114,94,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,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,188,0,0,0,47, + 6,0,0,115,10,0,0,0,12,5,8,1,8,1,10,1, + 255,128,114,188,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, + 115,8,0,0,0,124,0,97,0,100,0,83,0,114,114,0, + 0,0,41,1,114,139,0,0,0,41,1,218,17,95,98,111, + 111,116,115,116,114,97,112,95,109,111,100,117,108,101,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,21,95, + 115,101,116,95,98,111,111,116,115,116,114,97,112,95,109,111, + 100,117,108,101,58,6,0,0,115,4,0,0,0,8,2,255, + 128,114,81,1,0,0,99,1,0,0,0,0,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,1,161,1,1,0,116,2,106,7,160,8,116,9,161,1, + 1,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,81,1,0,0,114,188,0,0,0, + 114,15,0,0,0,114,48,1,0,0,114,171,0,0,0,114, + 59,1,0,0,114,73,1,0,0,218,9,109,101,116,97,95, + 112,97,116,104,114,190,0,0,0,114,42,1,0,0,41,2, + 114,80,1,0,0,90,17,115,117,112,112,111,114,116,101,100, + 95,108,111,97,100,101,114,115,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,8,95,105,110,115,116,97,108, + 108,63,6,0,0,115,10,0,0,0,8,2,6,1,20,1, + 16,1,255,128,114,83,1,0,0,41,1,114,68,0,0,0, + 41,1,78,41,3,78,78,78,41,2,114,0,0,0,0,114, + 0,0,0,0,41,1,84,41,1,78,41,1,78,41,83,114, + 132,0,0,0,114,139,0,0,0,114,167,0,0,0,114,72, + 0,0,0,114,15,0,0,0,114,81,0,0,0,114,164,0, + 0,0,114,22,0,0,0,114,211,0,0,0,90,2,110,116, + 114,18,0,0,0,114,196,0,0,0,90,5,112,111,115,105, + 120,114,42,0,0,0,218,3,97,108,108,114,45,0,0,0, + 114,46,0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0, + 114,21,0,0,0,114,33,0,0,0,114,38,0,0,0,114, + 40,0,0,0,114,48,0,0,0,114,55,0,0,0,114,57, + 0,0,0,114,61,0,0,0,114,62,0,0,0,114,64,0, + 0,0,114,67,0,0,0,114,77,0,0,0,218,4,116,121, + 112,101,218,8,95,95,99,111,100,101,95,95,114,166,0,0, + 0,114,31,0,0,0,114,152,0,0,0,114,30,0,0,0, + 114,35,0,0,0,114,243,0,0,0,114,97,0,0,0,114, + 93,0,0,0,114,106,0,0,0,114,190,0,0,0,114,79, + 1,0,0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0, + 0,0,114,117,0,0,0,114,119,0,0,0,114,140,0,0, + 0,114,147,0,0,0,114,156,0,0,0,114,160,0,0,0, + 114,162,0,0,0,114,169,0,0,0,114,174,0,0,0,114, + 175,0,0,0,114,180,0,0,0,218,6,111,98,106,101,99, + 116,114,189,0,0,0,114,194,0,0,0,114,195,0,0,0, + 114,215,0,0,0,114,228,0,0,0,114,246,0,0,0,114, + 6,1,0,0,114,12,1,0,0,114,3,1,0,0,114,18, + 1,0,0,114,40,1,0,0,114,42,1,0,0,114,59,1, + 0,0,114,78,1,0,0,114,188,0,0,0,114,81,1,0, + 0,114,83,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,8,60,109,111,100, + 117,108,101,62,1,0,0,0,115,172,0,0,0,4,0,4, + 22,8,3,8,1,8,1,8,1,8,1,10,3,4,1,8, + 1,10,1,8,2,4,3,10,1,6,2,22,2,8,1,10, + 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, + 16,8,3,8,5,8,5,8,6,8,6,8,12,8,10,8, + 9,8,5,8,7,10,9,10,22,0,127,16,24,12,1,4, + 2,4,1,6,2,6,1,10,1,8,2,6,2,8,2,16, + 2,8,71,8,40,8,19,8,12,8,12,8,31,8,17,8, + 33,8,28,10,24,10,13,10,10,8,11,6,14,4,3,2, + 1,12,255,14,68,14,64,16,30,0,127,14,17,18,50,18, + 45,18,25,14,53,14,63,14,43,0,127,14,20,0,127,10, + 22,8,23,8,11,12,5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 96169c16edcd6..66e0f3f7f0405 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -118,66 +118,115 @@ const unsigned char _Py_M__zipimport[] = { 104,101,10,32,32,32,32,122,105,112,102,105,108,101,32,116, 97,114,103,101,116,101,100,46,10,32,32,32,32,99,2,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,9,0, - 0,0,67,0,0,0,115,36,1,0,0,116,0,124,1,116, + 0,0,67,0,0,0,115,38,1,0,0,116,0,124,1,116, 1,131,2,115,28,100,1,100,0,108,2,125,2,124,2,160, 3,124,1,161,1,125,1,124,1,115,44,116,4,100,2,124, 1,100,3,141,2,130,1,116,5,114,60,124,1,160,6,116, 5,116,7,161,2,125,1,103,0,125,3,9,0,122,14,116, 8,160,9,124,1,161,1,125,4,87,0,110,70,4,0,116, - 10,116,11,102,2,121,150,1,0,1,0,1,0,116,8,160, - 12,124,1,161,1,92,2,125,5,125,6,124,5,124,1,107, - 2,114,132,116,4,100,5,124,1,100,3,141,2,130,1,124, - 5,125,1,124,3,160,13,124,6,161,1,1,0,89,0,110, - 28,119,0,124,4,106,14,100,6,64,0,100,7,107,3,114, + 10,116,11,102,2,144,1,121,36,1,0,1,0,1,0,116, + 8,160,12,124,1,161,1,92,2,125,5,125,6,124,5,124, + 1,107,2,114,134,116,4,100,5,124,1,100,3,141,2,130, + 1,124,5,125,1,124,3,160,13,124,6,161,1,1,0,89, + 0,110,26,124,4,106,14,100,6,64,0,100,7,107,3,114, 180,116,4,100,5,124,1,100,3,141,2,130,1,113,66,122, - 12,116,15,124,1,25,0,125,7,87,0,110,34,4,0,116, - 16,121,226,1,0,1,0,1,0,116,17,124,1,131,1,125, - 7,124,7,116,15,124,1,60,0,89,0,110,2,119,0,124, - 7,124,0,95,18,124,1,124,0,95,19,116,8,106,20,124, - 3,100,0,100,0,100,8,133,3,25,0,142,0,124,0,95, - 21,124,0,106,21,144,1,114,32,124,0,4,0,106,21,116, - 7,55,0,2,0,95,21,100,0,83,0,100,0,83,0,41, - 9,78,114,0,0,0,0,122,21,97,114,99,104,105,118,101, - 32,112,97,116,104,32,105,115,32,101,109,112,116,121,169,1, - 218,4,112,97,116,104,84,122,14,110,111,116,32,97,32,90, - 105,112,32,102,105,108,101,105,0,240,0,0,105,0,128,0, - 0,233,255,255,255,255,41,22,218,10,105,115,105,110,115,116, - 97,110,99,101,218,3,115,116,114,218,2,111,115,90,8,102, - 115,100,101,99,111,100,101,114,3,0,0,0,218,12,97,108, - 116,95,112,97,116,104,95,115,101,112,218,7,114,101,112,108, - 97,99,101,218,8,112,97,116,104,95,115,101,112,218,19,95, - 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, - 97,108,90,10,95,112,97,116,104,95,115,116,97,116,218,7, - 79,83,69,114,114,111,114,218,10,86,97,108,117,101,69,114, - 114,111,114,90,11,95,112,97,116,104,95,115,112,108,105,116, - 218,6,97,112,112,101,110,100,90,7,115,116,95,109,111,100, - 101,218,20,95,122,105,112,95,100,105,114,101,99,116,111,114, - 121,95,99,97,99,104,101,218,8,75,101,121,69,114,114,111, - 114,218,15,95,114,101,97,100,95,100,105,114,101,99,116,111, - 114,121,218,6,95,102,105,108,101,115,218,7,97,114,99,104, - 105,118,101,218,10,95,112,97,116,104,95,106,111,105,110,218, - 6,112,114,101,102,105,120,41,8,218,4,115,101,108,102,114, - 13,0,0,0,114,17,0,0,0,114,31,0,0,0,90,2, - 115,116,90,7,100,105,114,110,97,109,101,90,8,98,97,115, - 101,110,97,109,101,218,5,102,105,108,101,115,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,8,95,95,105, - 110,105,116,95,95,64,0,0,0,115,64,0,0,0,10,1, - 8,1,10,1,4,1,12,1,4,1,12,1,4,2,2,1, - 2,1,14,1,16,1,14,3,8,1,12,1,4,1,16,1, - 14,3,12,2,2,241,2,18,12,1,12,1,8,1,14,1, - 6,1,6,1,22,2,8,1,18,1,4,255,255,128,122,20, - 122,105,112,105,109,112,111,114,116,101,114,46,95,95,105,110, - 105,116,95,95,78,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,78, - 0,0,0,116,0,124,0,124,1,131,2,125,3,124,3,100, - 1,117,1,114,26,124,0,103,0,102,2,83,0,116,1,124, - 0,124,1,131,2,125,4,116,2,124,0,124,4,131,2,114, - 70,100,1,124,0,106,3,155,0,116,4,155,0,124,4,155, - 0,157,3,103,1,102,2,83,0,100,1,103,0,102,2,83, - 0,41,2,97,47,2,0,0,102,105,110,100,95,108,111,97, - 100,101,114,40,102,117,108,108,110,97,109,101,44,32,112,97, - 116,104,61,78,111,110,101,41,32,45,62,32,115,101,108,102, - 44,32,115,116,114,32,111,114,32,78,111,110,101,46,10,10, + 12,116,15,124,1,25,0,125,7,87,0,110,32,4,0,116, + 16,144,1,121,34,1,0,1,0,1,0,116,17,124,1,131, + 1,125,7,124,7,116,15,124,1,60,0,89,0,124,7,124, + 0,95,18,124,1,124,0,95,19,116,8,106,20,124,3,100, + 0,100,0,100,8,133,3,25,0,142,0,124,0,95,21,124, + 0,106,21,144,1,114,30,124,0,4,0,106,21,116,7,55, + 0,2,0,95,21,100,0,83,0,100,0,83,0,119,0,119, + 0,41,9,78,114,0,0,0,0,122,21,97,114,99,104,105, + 118,101,32,112,97,116,104,32,105,115,32,101,109,112,116,121, + 169,1,218,4,112,97,116,104,84,122,14,110,111,116,32,97, + 32,90,105,112,32,102,105,108,101,105,0,240,0,0,105,0, + 128,0,0,233,255,255,255,255,41,22,218,10,105,115,105,110, + 115,116,97,110,99,101,218,3,115,116,114,218,2,111,115,90, + 8,102,115,100,101,99,111,100,101,114,3,0,0,0,218,12, + 97,108,116,95,112,97,116,104,95,115,101,112,218,7,114,101, + 112,108,97,99,101,218,8,112,97,116,104,95,115,101,112,218, + 19,95,98,111,111,116,115,116,114,97,112,95,101,120,116,101, + 114,110,97,108,90,10,95,112,97,116,104,95,115,116,97,116, + 218,7,79,83,69,114,114,111,114,218,10,86,97,108,117,101, + 69,114,114,111,114,90,11,95,112,97,116,104,95,115,112,108, + 105,116,218,6,97,112,112,101,110,100,90,7,115,116,95,109, + 111,100,101,218,20,95,122,105,112,95,100,105,114,101,99,116, + 111,114,121,95,99,97,99,104,101,218,8,75,101,121,69,114, + 114,111,114,218,15,95,114,101,97,100,95,100,105,114,101,99, + 116,111,114,121,218,6,95,102,105,108,101,115,218,7,97,114, + 99,104,105,118,101,218,10,95,112,97,116,104,95,106,111,105, + 110,218,6,112,114,101,102,105,120,41,8,218,4,115,101,108, + 102,114,13,0,0,0,114,17,0,0,0,114,31,0,0,0, + 90,2,115,116,90,7,100,105,114,110,97,109,101,90,8,98, + 97,115,101,110,97,109,101,218,5,102,105,108,101,115,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,95, + 95,105,110,105,116,95,95,64,0,0,0,115,68,0,0,0, + 10,1,8,1,10,1,4,1,12,1,4,1,12,1,4,2, + 2,1,2,1,14,1,18,1,14,3,8,1,12,1,4,1, + 14,1,14,3,12,2,2,241,2,18,12,1,14,1,8,1, + 10,1,6,1,6,1,22,2,8,1,18,1,4,255,2,249, + 2,239,255,128,122,20,122,105,112,105,109,112,111,114,116,101, + 114,46,95,95,105,110,105,116,95,95,78,99,3,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, + 67,0,0,0,115,78,0,0,0,116,0,124,0,124,1,131, + 2,125,3,124,3,100,1,117,1,114,26,124,0,103,0,102, + 2,83,0,116,1,124,0,124,1,131,2,125,4,116,2,124, + 0,124,4,131,2,114,70,100,1,124,0,106,3,155,0,116, + 4,155,0,124,4,155,0,157,3,103,1,102,2,83,0,100, + 1,103,0,102,2,83,0,41,2,97,47,2,0,0,102,105, + 110,100,95,108,111,97,100,101,114,40,102,117,108,108,110,97, + 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, + 62,32,115,101,108,102,44,32,115,116,114,32,111,114,32,78, + 111,110,101,46,10,10,32,32,32,32,32,32,32,32,83,101, + 97,114,99,104,32,102,111,114,32,97,32,109,111,100,117,108, + 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,39, + 102,117,108,108,110,97,109,101,39,46,32,39,102,117,108,108, + 110,97,109,101,39,32,109,117,115,116,32,98,101,32,116,104, + 101,10,32,32,32,32,32,32,32,32,102,117,108,108,121,32, + 113,117,97,108,105,102,105,101,100,32,40,100,111,116,116,101, + 100,41,32,109,111,100,117,108,101,32,110,97,109,101,46,32, + 73,116,32,114,101,116,117,114,110,115,32,116,104,101,32,122, + 105,112,105,109,112,111,114,116,101,114,10,32,32,32,32,32, + 32,32,32,105,110,115,116,97,110,99,101,32,105,116,115,101, + 108,102,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,119,97,115,32,102,111,117,110,100,44,32,97,32,115,116, + 114,105,110,103,32,99,111,110,116,97,105,110,105,110,103,32, + 116,104,101,10,32,32,32,32,32,32,32,32,102,117,108,108, + 32,112,97,116,104,32,110,97,109,101,32,105,102,32,105,116, + 39,115,32,112,111,115,115,105,98,108,121,32,97,32,112,111, + 114,116,105,111,110,32,111,102,32,97,32,110,97,109,101,115, + 112,97,99,101,32,112,97,99,107,97,103,101,44,10,32,32, + 32,32,32,32,32,32,111,114,32,78,111,110,101,32,111,116, + 104,101,114,119,105,115,101,46,32,84,104,101,32,111,112,116, + 105,111,110,97,108,32,39,112,97,116,104,39,32,97,114,103, + 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, + 32,45,45,32,105,116,39,115,10,32,32,32,32,32,32,32, + 32,116,104,101,114,101,32,102,111,114,32,99,111,109,112,97, + 116,105,98,105,108,105,116,121,32,119,105,116,104,32,116,104, + 101,32,105,109,112,111,114,116,101,114,32,112,114,111,116,111, + 99,111,108,46,10,10,32,32,32,32,32,32,32,32,68,101, + 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, + 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,78,41,5, + 218,16,95,103,101,116,95,109,111,100,117,108,101,95,105,110, + 102,111,218,16,95,103,101,116,95,109,111,100,117,108,101,95, + 112,97,116,104,218,7,95,105,115,95,100,105,114,114,29,0, + 0,0,114,20,0,0,0,41,5,114,32,0,0,0,218,8, + 102,117,108,108,110,97,109,101,114,13,0,0,0,218,2,109, + 105,218,7,109,111,100,112,97,116,104,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,11,102,105,110,100,95, + 108,111,97,100,101,114,110,0,0,0,115,16,0,0,0,10, + 12,8,1,8,2,10,7,10,1,24,4,8,2,255,128,122, + 23,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, + 100,95,108,111,97,100,101,114,99,3,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,0, + 0,115,16,0,0,0,124,0,160,0,124,1,124,2,161,2, + 100,1,25,0,83,0,41,3,97,203,1,0,0,102,105,110, + 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, + 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, + 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, @@ -190,785 +239,739 @@ const unsigned char _Py_M__zipimport[] = { 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, - 111,117,110,100,44,32,97,32,115,116,114,105,110,103,32,99, - 111,110,116,97,105,110,105,110,103,32,116,104,101,10,32,32, - 32,32,32,32,32,32,102,117,108,108,32,112,97,116,104,32, - 110,97,109,101,32,105,102,32,105,116,39,115,32,112,111,115, - 115,105,98,108,121,32,97,32,112,111,114,116,105,111,110,32, - 111,102,32,97,32,110,97,109,101,115,112,97,99,101,32,112, - 97,99,107,97,103,101,44,10,32,32,32,32,32,32,32,32, - 111,114,32,78,111,110,101,32,111,116,104,101,114,119,105,115, - 101,46,32,84,104,101,32,111,112,116,105,111,110,97,108,32, - 39,112,97,116,104,39,32,97,114,103,117,109,101,110,116,32, - 105,115,32,105,103,110,111,114,101,100,32,45,45,32,105,116, - 39,115,10,32,32,32,32,32,32,32,32,116,104,101,114,101, - 32,102,111,114,32,99,111,109,112,97,116,105,98,105,108,105, - 116,121,32,119,105,116,104,32,116,104,101,32,105,109,112,111, - 114,116,101,114,32,112,114,111,116,111,99,111,108,46,10,10, - 32,32,32,32,32,32,32,32,68,101,112,114,101,99,97,116, - 101,100,32,115,105,110,99,101,32,80,121,116,104,111,110,32, - 51,46,49,48,46,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,32, - 32,32,32,32,32,32,32,78,41,5,218,16,95,103,101,116, - 95,109,111,100,117,108,101,95,105,110,102,111,218,16,95,103, - 101,116,95,109,111,100,117,108,101,95,112,97,116,104,218,7, - 95,105,115,95,100,105,114,114,29,0,0,0,114,20,0,0, - 0,41,5,114,32,0,0,0,218,8,102,117,108,108,110,97, - 109,101,114,13,0,0,0,218,2,109,105,218,7,109,111,100, - 112,97,116,104,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,11,102,105,110,100,95,108,111,97,100,101,114, - 110,0,0,0,115,16,0,0,0,10,12,8,1,8,2,10, - 7,10,1,24,4,8,2,255,128,122,23,122,105,112,105,109, - 112,111,114,116,101,114,46,102,105,110,100,95,108,111,97,100, - 101,114,99,3,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,0, - 124,0,160,0,124,1,124,2,161,2,100,1,25,0,83,0, - 41,3,97,203,1,0,0,102,105,110,100,95,109,111,100,117, - 108,101,40,102,117,108,108,110,97,109,101,44,32,112,97,116, - 104,61,78,111,110,101,41,32,45,62,32,115,101,108,102,32, - 111,114,32,78,111,110,101,46,10,10,32,32,32,32,32,32, - 32,32,83,101,97,114,99,104,32,102,111,114,32,97,32,109, - 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, - 98,121,32,39,102,117,108,108,110,97,109,101,39,46,32,39, - 102,117,108,108,110,97,109,101,39,32,109,117,115,116,32,98, - 101,32,116,104,101,10,32,32,32,32,32,32,32,32,102,117, - 108,108,121,32,113,117,97,108,105,102,105,101,100,32,40,100, - 111,116,116,101,100,41,32,109,111,100,117,108,101,32,110,97, - 109,101,46,32,73,116,32,114,101,116,117,114,110,115,32,116, - 104,101,32,122,105,112,105,109,112,111,114,116,101,114,10,32, - 32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,32, - 105,116,115,101,108,102,32,105,102,32,116,104,101,32,109,111, - 100,117,108,101,32,119,97,115,32,102,111,117,110,100,44,32, - 111,114,32,78,111,110,101,32,105,102,32,105,116,32,119,97, - 115,110,39,116,46,10,32,32,32,32,32,32,32,32,84,104, - 101,32,111,112,116,105,111,110,97,108,32,39,112,97,116,104, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,105,103, - 110,111,114,101,100,32,45,45,32,105,116,39,115,32,116,104, - 101,114,101,32,102,111,114,32,99,111,109,112,97,116,105,98, - 105,108,105,116,121,10,32,32,32,32,32,32,32,32,119,105, - 116,104,32,116,104,101,32,105,109,112,111,114,116,101,114,32, - 112,114,111,116,111,99,111,108,46,10,10,32,32,32,32,32, - 32,32,32,68,101,112,114,101,99,97,116,101,100,32,115,105, - 110,99,101,32,80,121,116,104,111,110,32,51,46,49,48,46, - 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,32,32,32,32,32,32, - 32,32,114,0,0,0,0,78,41,1,114,41,0,0,0,41, - 3,114,32,0,0,0,114,38,0,0,0,114,13,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 11,102,105,110,100,95,109,111,100,117,108,101,144,0,0,0, - 115,4,0,0,0,16,11,255,128,122,23,122,105,112,105,109, - 112,111,114,116,101,114,46,102,105,110,100,95,109,111,100,117, - 108,101,99,3,0,0,0,0,0,0,0,0,0,0,0,7, - 0,0,0,5,0,0,0,67,0,0,0,115,108,0,0,0, - 116,0,124,0,124,1,131,2,125,3,124,3,100,1,117,1, - 114,34,116,1,106,2,124,1,124,0,124,3,100,2,141,3, - 83,0,116,3,124,0,124,1,131,2,125,4,116,4,124,0, - 124,4,131,2,114,104,124,0,106,5,155,0,116,6,155,0, - 124,4,155,0,157,3,125,5,116,1,106,7,124,1,100,1, - 100,3,100,4,141,3,125,6,124,6,106,8,160,9,124,5, - 161,1,1,0,124,6,83,0,100,1,83,0,41,5,122,107, - 67,114,101,97,116,101,32,97,32,77,111,100,117,108,101,83, - 112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,78, - 111,110,101,32,105,102,32,116,104,101,32,109,111,100,117,108, - 101,32,99,97,110,110,111,116,32,98,101,32,102,111,117,110, - 100,46,10,32,32,32,32,32,32,32,32,78,41,1,218,10, - 105,115,95,112,97,99,107,97,103,101,84,41,3,218,4,110, - 97,109,101,90,6,108,111,97,100,101,114,114,43,0,0,0, - 41,10,114,35,0,0,0,218,10,95,98,111,111,116,115,116, - 114,97,112,90,16,115,112,101,99,95,102,114,111,109,95,108, - 111,97,100,101,114,114,36,0,0,0,114,37,0,0,0,114, - 29,0,0,0,114,20,0,0,0,90,10,77,111,100,117,108, - 101,83,112,101,99,90,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,114,24,0,0,0,41,7,114,32,0,0,0,114,38,0, - 0,0,90,6,116,97,114,103,101,116,90,11,109,111,100,117, - 108,101,95,105,110,102,111,114,40,0,0,0,114,13,0,0, - 0,90,4,115,112,101,99,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,9,102,105,110,100,95,115,112,101, - 99,157,0,0,0,115,26,0,0,0,10,5,8,1,16,1, - 10,7,10,1,18,4,8,1,2,1,6,255,12,2,4,1, - 4,2,255,128,122,21,122,105,112,105,109,112,111,114,116,101, - 114,46,102,105,110,100,95,115,112,101,99,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, - 67,0,0,0,115,20,0,0,0,116,0,124,0,124,1,131, - 2,92,3,125,2,125,3,125,4,124,2,83,0,41,2,122, - 166,103,101,116,95,99,111,100,101,40,102,117,108,108,110,97, - 109,101,41,32,45,62,32,99,111,100,101,32,111,98,106,101, - 99,116,46,10,10,32,32,32,32,32,32,32,32,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,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,97, - 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,32, - 32,32,32,32,32,32,32,78,169,1,218,16,95,103,101,116, - 95,109,111,100,117,108,101,95,99,111,100,101,169,5,114,32, - 0,0,0,114,38,0,0,0,218,4,99,111,100,101,218,9, - 105,115,112,97,99,107,97,103,101,114,40,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,103, - 101,116,95,99,111,100,101,184,0,0,0,115,6,0,0,0, - 16,6,4,1,255,128,122,20,122,105,112,105,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,0,0,0,0,4,0,0,0,8,0,0, - 0,67,0,0,0,115,112,0,0,0,116,0,114,16,124,1, - 160,1,116,0,116,2,161,2,125,1,124,1,125,2,124,1, - 160,3,124,0,106,4,116,2,23,0,161,1,114,58,124,1, - 116,5,124,0,106,4,116,2,23,0,131,1,100,1,133,2, - 25,0,125,2,122,14,124,0,106,6,124,2,25,0,125,3, - 87,0,110,26,4,0,116,7,121,98,1,0,1,0,1,0, - 116,8,100,2,100,3,124,2,131,3,130,1,119,0,116,9, - 124,0,106,4,124,3,131,2,83,0,41,4,122,154,103,101, - 116,95,100,97,116,97,40,112,97,116,104,110,97,109,101,41, - 32,45,62,32,115,116,114,105,110,103,32,119,105,116,104,32, - 102,105,108,101,32,100,97,116,97,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,100, - 97,116,97,32,97,115,115,111,99,105,97,116,101,100,32,119, - 105,116,104,32,39,112,97,116,104,110,97,109,101,39,46,32, - 82,97,105,115,101,32,79,83,69,114,114,111,114,32,105,102, - 10,32,32,32,32,32,32,32,32,116,104,101,32,102,105,108, - 101,32,119,97,115,110,39,116,32,102,111,117,110,100,46,10, - 32,32,32,32,32,32,32,32,78,114,0,0,0,0,218,0, - 41,10,114,18,0,0,0,114,19,0,0,0,114,20,0,0, - 0,218,10,115,116,97,114,116,115,119,105,116,104,114,29,0, - 0,0,218,3,108,101,110,114,28,0,0,0,114,26,0,0, - 0,114,22,0,0,0,218,9,95,103,101,116,95,100,97,116, - 97,41,4,114,32,0,0,0,218,8,112,97,116,104,110,97, - 109,101,90,3,107,101,121,218,9,116,111,99,95,101,110,116, - 114,121,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,8,103,101,116,95,100,97,116,97,194,0,0,0,115, - 22,0,0,0,4,6,12,1,4,2,16,1,22,1,2,2, - 14,1,12,1,14,1,12,1,255,128,122,20,122,105,112,105, - 109,112,111,114,116,101,114,46,103,101,116,95,100,97,116,97, - 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,3,0,0,0,67,0,0,0,115,20,0,0,0,116,0, - 124,0,124,1,131,2,92,3,125,2,125,3,125,4,124,4, - 83,0,41,2,122,165,103,101,116,95,102,105,108,101,110,97, - 109,101,40,102,117,108,108,110,97,109,101,41,32,45,62,32, - 102,105,108,101,110,97,109,101,32,115,116,114,105,110,103,46, - 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, - 32,116,104,101,32,102,105,108,101,110,97,109,101,32,102,111, - 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,32,111,114,32,114,97,105,115,101,32, - 90,105,112,73,109,112,111,114,116,69,114,114,111,114,10,32, - 32,32,32,32,32,32,32,105,102,32,105,116,32,99,111,117, - 108,100,110,39,116,32,98,101,32,105,109,112,111,114,116,101, - 100,46,10,32,32,32,32,32,32,32,32,78,114,47,0,0, - 0,114,49,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,12,103,101,116,95,102,105,108,101,110, - 97,109,101,215,0,0,0,115,6,0,0,0,16,8,4,1, - 255,128,122,24,122,105,112,105,109,112,111,114,116,101,114,46, - 103,101,116,95,102,105,108,101,110,97,109,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, - 0,67,0,0,0,115,126,0,0,0,116,0,124,0,124,1, - 131,2,125,2,124,2,100,1,117,0,114,36,116,1,100,2, - 124,1,155,2,157,2,124,1,100,3,141,2,130,1,116,2, - 124,0,124,1,131,2,125,3,124,2,114,64,116,3,160,4, - 124,3,100,4,161,2,125,4,110,10,124,3,155,0,100,5, - 157,2,125,4,122,14,124,0,106,5,124,4,25,0,125,5, - 87,0,110,20,4,0,116,6,121,108,1,0,1,0,1,0, - 89,0,100,1,83,0,119,0,116,7,124,0,106,8,124,5, - 131,2,160,9,161,0,83,0,41,6,122,253,103,101,116,95, - 115,111,117,114,99,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,115,111,117,114,99,101,32,115,116,114,105,110, - 103,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, - 114,110,32,116,104,101,32,115,111,117,114,99,101,32,99,111, - 100,101,32,102,111,114,32,116,104,101,32,115,112,101,99,105, - 102,105,101,100,32,109,111,100,117,108,101,46,32,82,97,105, - 115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,111, - 114,10,32,32,32,32,32,32,32,32,105,102,32,116,104,101, - 32,109,111,100,117,108,101,32,99,111,117,108,100,110,39,116, - 32,98,101,32,102,111,117,110,100,44,32,114,101,116,117,114, - 110,32,78,111,110,101,32,105,102,32,116,104,101,32,97,114, - 99,104,105,118,101,32,100,111,101,115,10,32,32,32,32,32, - 32,32,32,99,111,110,116,97,105,110,32,116,104,101,32,109, - 111,100,117,108,101,44,32,98,117,116,32,104,97,115,32,110, - 111,32,115,111,117,114,99,101,32,102,111,114,32,105,116,46, - 10,32,32,32,32,32,32,32,32,78,250,18,99,97,110,39, - 116,32,102,105,110,100,32,109,111,100,117,108,101,32,169,1, - 114,44,0,0,0,250,11,95,95,105,110,105,116,95,95,46, - 112,121,250,3,46,112,121,41,10,114,35,0,0,0,114,3, - 0,0,0,114,36,0,0,0,114,21,0,0,0,114,30,0, - 0,0,114,28,0,0,0,114,26,0,0,0,114,56,0,0, - 0,114,29,0,0,0,218,6,100,101,99,111,100,101,41,6, - 114,32,0,0,0,114,38,0,0,0,114,39,0,0,0,114, - 13,0,0,0,218,8,102,117,108,108,112,97,116,104,114,58, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,10,103,101,116,95,115,111,117,114,99,101,227,0, - 0,0,115,26,0,0,0,10,7,8,1,18,1,10,2,4, - 1,14,1,10,2,2,2,14,1,12,1,8,2,16,1,255, - 128,122,22,122,105,112,105,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,0,0,0,0,3,0,0,0,4,0,0,0,67,0, - 0,0,115,40,0,0,0,116,0,124,0,124,1,131,2,125, - 2,124,2,100,1,117,0,114,36,116,1,100,2,124,1,155, - 2,157,2,124,1,100,3,141,2,130,1,124,2,83,0,41, - 4,122,171,105,115,95,112,97,99,107,97,103,101,40,102,117, - 108,108,110,97,109,101,41,32,45,62,32,98,111,111,108,46, + 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, + 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, + 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, + 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, + 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, + 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, + 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, + 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, + 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, + 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, + 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, + 32,51,46,49,48,46,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, + 32,32,32,32,32,32,32,32,114,0,0,0,0,78,41,1, + 114,41,0,0,0,41,3,114,32,0,0,0,114,38,0,0, + 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, + 108,101,144,0,0,0,115,4,0,0,0,16,11,255,128,122, + 23,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,3,0,0,0,0,0,0, + 0,0,0,0,0,7,0,0,0,5,0,0,0,67,0,0, + 0,115,108,0,0,0,116,0,124,0,124,1,131,2,125,3, + 124,3,100,1,117,1,114,34,116,1,106,2,124,1,124,0, + 124,3,100,2,141,3,83,0,116,3,124,0,124,1,131,2, + 125,4,116,4,124,0,124,4,131,2,114,104,124,0,106,5, + 155,0,116,6,155,0,124,4,155,0,157,3,125,5,116,1, + 106,7,124,1,100,1,100,3,100,4,141,3,125,6,124,6, + 106,8,160,9,124,5,161,1,1,0,124,6,83,0,100,1, + 83,0,41,5,122,107,67,114,101,97,116,101,32,97,32,77, + 111,100,117,108,101,83,112,101,99,32,102,111,114,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,46,10,10,32,32,32,32,32,32,32,32,82,101,116, + 117,114,110,115,32,78,111,110,101,32,105,102,32,116,104,101, + 32,109,111,100,117,108,101,32,99,97,110,110,111,116,32,98, + 101,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32, + 32,78,41,1,218,10,105,115,95,112,97,99,107,97,103,101, + 84,41,3,218,4,110,97,109,101,90,6,108,111,97,100,101, + 114,114,43,0,0,0,41,10,114,35,0,0,0,218,10,95, + 98,111,111,116,115,116,114,97,112,90,16,115,112,101,99,95, + 102,114,111,109,95,108,111,97,100,101,114,114,36,0,0,0, + 114,37,0,0,0,114,29,0,0,0,114,20,0,0,0,90, + 10,77,111,100,117,108,101,83,112,101,99,90,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,114,24,0,0,0,41,7,114,32, + 0,0,0,114,38,0,0,0,90,6,116,97,114,103,101,116, + 90,11,109,111,100,117,108,101,95,105,110,102,111,114,40,0, + 0,0,114,13,0,0,0,90,4,115,112,101,99,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,157,0,0,0,115,26,0,0,0, + 10,5,8,1,16,1,10,7,10,1,18,4,8,1,2,1, + 6,255,12,2,4,1,4,2,255,128,122,21,122,105,112,105, + 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, + 99,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, + 0,124,0,124,1,131,2,92,3,125,2,125,3,125,4,124, + 2,83,0,41,2,122,166,103,101,116,95,99,111,100,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,99,111,100, + 101,32,111,98,106,101,99,116,46,10,10,32,32,32,32,32, + 32,32,32,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,115,112,101,99,105,102,105,101,100,32,109,111,100,117, + 108,101,46,32,82,97,105,115,101,32,90,105,112,73,109,112, + 111,114,116,69,114,114,111,114,10,32,32,32,32,32,32,32, + 32,105,102,32,116,104,101,32,109,111,100,117,108,101,32,99, + 111,117,108,100,110,39,116,32,98,101,32,105,109,112,111,114, + 116,101,100,46,10,32,32,32,32,32,32,32,32,78,169,1, + 218,16,95,103,101,116,95,109,111,100,117,108,101,95,99,111, + 100,101,169,5,114,32,0,0,0,114,38,0,0,0,218,4, + 99,111,100,101,218,9,105,115,112,97,99,107,97,103,101,114, + 40,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,8,103,101,116,95,99,111,100,101,184,0,0, + 0,115,6,0,0,0,16,6,4,1,255,128,122,20,122,105, + 112,105,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,0,0,0,0,4, + 0,0,0,8,0,0,0,67,0,0,0,115,112,0,0,0, + 116,0,114,16,124,1,160,1,116,0,116,2,161,2,125,1, + 124,1,125,2,124,1,160,3,124,0,106,4,116,2,23,0, + 161,1,114,58,124,1,116,5,124,0,106,4,116,2,23,0, + 131,1,100,1,133,2,25,0,125,2,122,14,124,0,106,6, + 124,2,25,0,125,3,87,0,110,24,4,0,116,7,121,110, + 1,0,1,0,1,0,116,8,100,2,100,3,124,2,131,3, + 130,1,116,9,124,0,106,4,124,3,131,2,83,0,119,0, + 41,4,122,154,103,101,116,95,100,97,116,97,40,112,97,116, + 104,110,97,109,101,41,32,45,62,32,115,116,114,105,110,103, + 32,119,105,116,104,32,102,105,108,101,32,100,97,116,97,46, 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, - 32,84,114,117,101,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,121, - 32,102,117,108,108,110,97,109,101,32,105,115,32,97,32,112, - 97,99,107,97,103,101,46,10,32,32,32,32,32,32,32,32, - 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,32,105,102,32,116,104,101,32,109,111,100,117, - 108,101,32,99,111,117,108,100,110,39,116,32,98,101,32,102, + 32,116,104,101,32,100,97,116,97,32,97,115,115,111,99,105, + 97,116,101,100,32,119,105,116,104,32,39,112,97,116,104,110, + 97,109,101,39,46,32,82,97,105,115,101,32,79,83,69,114, + 114,111,114,32,105,102,10,32,32,32,32,32,32,32,32,116, + 104,101,32,102,105,108,101,32,119,97,115,110,39,116,32,102, 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,114, - 61,0,0,0,114,62,0,0,0,41,2,114,35,0,0,0, - 114,3,0,0,0,41,3,114,32,0,0,0,114,38,0,0, - 0,114,39,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,43,0,0,0,253,0,0,0,115,10, - 0,0,0,10,6,8,1,18,1,4,1,255,128,122,22,122, - 105,112,105,109,112,111,114,116,101,114,46,105,115,95,112,97, - 99,107,97,103,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,252, - 0,0,0,100,1,125,2,116,0,160,1,124,2,116,2,161, - 2,1,0,116,3,124,0,124,1,131,2,92,3,125,3,125, - 4,125,5,116,4,106,5,160,6,124,1,161,1,125,6,124, - 6,100,2,117,0,115,62,116,7,124,6,116,8,131,2,115, - 80,116,8,124,1,131,1,125,6,124,6,116,4,106,5,124, - 1,60,0,124,0,124,6,95,9,122,84,124,4,114,124,116, - 10,124,0,124,1,131,2,125,7,116,11,160,12,124,0,106, - 13,124,7,161,2,125,8,124,8,103,1,124,6,95,14,116, - 15,124,6,100,3,131,2,115,140,116,16,124,6,95,16,116, - 11,160,17,124,6,106,18,124,1,124,5,161,3,1,0,116, - 19,124,3,124,6,106,18,131,2,1,0,87,0,110,16,1, - 0,1,0,1,0,116,4,106,5,124,1,61,0,130,0,122, - 14,116,4,106,5,124,1,25,0,125,6,87,0,110,30,4, - 0,116,20,121,232,1,0,1,0,1,0,116,21,100,4,124, - 1,155,2,100,5,157,3,131,1,130,1,119,0,116,22,160, - 23,100,6,124,1,124,5,161,3,1,0,124,6,83,0,41, - 7,97,64,1,0,0,108,111,97,100,95,109,111,100,117,108, - 101,40,102,117,108,108,110,97,109,101,41,32,45,62,32,109, - 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, - 76,111,97,100,32,116,104,101,32,109,111,100,117,108,101,32, - 115,112,101,99,105,102,105,101,100,32,98,121,32,39,102,117, - 108,108,110,97,109,101,39,46,32,39,102,117,108,108,110,97, - 109,101,39,32,109,117,115,116,32,98,101,32,116,104,101,10, - 32,32,32,32,32,32,32,32,102,117,108,108,121,32,113,117, - 97,108,105,102,105,101,100,32,40,100,111,116,116,101,100,41, - 32,109,111,100,117,108,101,32,110,97,109,101,46,32,73,116, - 32,114,101,116,117,114,110,115,32,116,104,101,32,105,109,112, - 111,114,116,101,100,10,32,32,32,32,32,32,32,32,109,111, - 100,117,108,101,44,32,111,114,32,114,97,105,115,101,115,32, + 0,0,0,0,218,0,41,10,114,18,0,0,0,114,19,0, + 0,0,114,20,0,0,0,218,10,115,116,97,114,116,115,119, + 105,116,104,114,29,0,0,0,218,3,108,101,110,114,28,0, + 0,0,114,26,0,0,0,114,22,0,0,0,218,9,95,103, + 101,116,95,100,97,116,97,41,4,114,32,0,0,0,218,8, + 112,97,116,104,110,97,109,101,90,3,107,101,121,218,9,116, + 111,99,95,101,110,116,114,121,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,8,103,101,116,95,100,97,116, + 97,194,0,0,0,115,24,0,0,0,4,6,12,1,4,2, + 16,1,22,1,2,2,14,1,12,1,12,1,12,1,2,254, + 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, + 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,3,0,0,0,67,0,0, + 0,115,20,0,0,0,116,0,124,0,124,1,131,2,92,3, + 125,2,125,3,125,4,124,4,83,0,41,2,122,165,103,101, + 116,95,102,105,108,101,110,97,109,101,40,102,117,108,108,110, + 97,109,101,41,32,45,62,32,102,105,108,101,110,97,109,101, + 32,115,116,114,105,110,103,46,10,10,32,32,32,32,32,32, + 32,32,82,101,116,117,114,110,32,116,104,101,32,102,105,108, + 101,110,97,109,101,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,111, + 114,32,114,97,105,115,101,32,90,105,112,73,109,112,111,114, + 116,69,114,114,111,114,10,32,32,32,32,32,32,32,32,105, + 102,32,105,116,32,99,111,117,108,100,110,39,116,32,98,101, + 32,105,109,112,111,114,116,101,100,46,10,32,32,32,32,32, + 32,32,32,78,114,47,0,0,0,114,49,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,12,103, + 101,116,95,102,105,108,101,110,97,109,101,215,0,0,0,115, + 6,0,0,0,16,8,4,1,255,128,122,24,122,105,112,105, + 109,112,111,114,116,101,114,46,103,101,116,95,102,105,108,101, + 110,97,109,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,8,0,0,0,67,0,0,0,115,126,0, + 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, + 117,0,114,36,116,1,100,2,124,1,155,2,157,2,124,1, + 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, + 124,2,114,64,116,3,160,4,124,3,100,4,161,2,125,4, + 110,10,124,3,155,0,100,5,157,2,125,4,122,14,124,0, + 106,5,124,4,25,0,125,5,87,0,110,18,4,0,116,6, + 121,124,1,0,1,0,1,0,89,0,100,1,83,0,116,7, + 124,0,106,8,124,5,131,2,160,9,161,0,83,0,119,0, + 41,6,122,253,103,101,116,95,115,111,117,114,99,101,40,102, + 117,108,108,110,97,109,101,41,32,45,62,32,115,111,117,114, + 99,101,32,115,116,114,105,110,103,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,115, + 111,117,114,99,101,32,99,111,100,101,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, + 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, + 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, + 99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,110, + 100,44,32,114,101,116,117,114,110,32,78,111,110,101,32,105, + 102,32,116,104,101,32,97,114,99,104,105,118,101,32,100,111, + 101,115,10,32,32,32,32,32,32,32,32,99,111,110,116,97, + 105,110,32,116,104,101,32,109,111,100,117,108,101,44,32,98, + 117,116,32,104,97,115,32,110,111,32,115,111,117,114,99,101, + 32,102,111,114,32,105,116,46,10,32,32,32,32,32,32,32, + 32,78,250,18,99,97,110,39,116,32,102,105,110,100,32,109, + 111,100,117,108,101,32,169,1,114,44,0,0,0,250,11,95, + 95,105,110,105,116,95,95,46,112,121,250,3,46,112,121,41, + 10,114,35,0,0,0,114,3,0,0,0,114,36,0,0,0, + 114,21,0,0,0,114,30,0,0,0,114,28,0,0,0,114, + 26,0,0,0,114,56,0,0,0,114,29,0,0,0,218,6, + 100,101,99,111,100,101,41,6,114,32,0,0,0,114,38,0, + 0,0,114,39,0,0,0,114,13,0,0,0,218,8,102,117, + 108,108,112,97,116,104,114,58,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,10,103,101,116,95, + 115,111,117,114,99,101,227,0,0,0,115,28,0,0,0,10, + 7,8,1,18,1,10,2,4,1,14,1,10,2,2,2,14, + 1,12,1,6,2,16,1,2,253,255,128,122,22,122,105,112, + 105,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,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,40,0,0, + 0,116,0,124,0,124,1,131,2,125,2,124,2,100,1,117, + 0,114,36,116,1,100,2,124,1,155,2,157,2,124,1,100, + 3,141,2,130,1,124,2,83,0,41,4,122,171,105,115,95, + 112,97,99,107,97,103,101,40,102,117,108,108,110,97,109,101, + 41,32,45,62,32,98,111,111,108,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,32,84,114,117,101,32, + 105,102,32,116,104,101,32,109,111,100,117,108,101,32,115,112, + 101,99,105,102,105,101,100,32,98,121,32,102,117,108,108,110, + 97,109,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,10,32,32,32,32,32,32,32,32,82,97,105,115,101,32, 90,105,112,73,109,112,111,114,116,69,114,114,111,114,32,105, - 102,32,105,116,32,99,111,117,108,100,32,110,111,116,32,98, - 101,32,105,109,112,111,114,116,101,100,46,10,10,32,32,32, - 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, - 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, - 48,46,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,32,32, - 32,32,32,32,32,32,122,114,122,105,112,105,109,112,111,114, - 116,46,122,105,112,105,109,112,111,114,116,101,114,46,108,111, - 97,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, - 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,105,110,115,116,101,97,100,78,218,12,95,95,98, - 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, - 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, - 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, - 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, - 112,32,123,125,41,24,218,9,95,119,97,114,110,105,110,103, - 115,90,4,119,97,114,110,218,18,68,101,112,114,101,99,97, - 116,105,111,110,87,97,114,110,105,110,103,114,48,0,0,0, - 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, - 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, - 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, - 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, - 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, - 218,7,104,97,115,97,116,116,114,114,68,0,0,0,90,14, - 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, - 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, - 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, - 114,45,0,0,0,218,16,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,41,9,114,32,0,0,0,114,38, - 0,0,0,218,3,109,115,103,114,50,0,0,0,114,51,0, - 0,0,114,40,0,0,0,90,3,109,111,100,114,13,0,0, - 0,114,66,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,108,111,97,100,95,109,111,100,117, - 108,101,10,1,0,0,115,54,0,0,0,4,9,12,2,16, - 1,12,1,18,1,8,1,10,1,6,1,2,2,4,1,10, - 3,14,1,8,1,10,2,6,1,16,1,16,1,6,1,8, - 1,2,1,2,2,14,1,12,1,18,1,14,1,4,1,255, - 128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,64,0,0,0,122,20,124,0,160,0,124,1, - 161,1,115,18,87,0,100,1,83,0,87,0,110,20,4,0, - 116,1,121,40,1,0,1,0,1,0,89,0,100,1,83,0, - 119,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, - 124,0,124,1,131,2,83,0,41,4,122,204,82,101,116,117, - 114,110,32,116,104,101,32,82,101,115,111,117,114,99,101,82, - 101,97,100,101,114,32,102,111,114,32,97,32,112,97,99,107, - 97,103,101,32,105,110,32,97,32,122,105,112,32,102,105,108, - 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, - 102,117,108,108,110,97,109,101,39,32,105,115,32,97,32,112, - 97,99,107,97,103,101,32,119,105,116,104,105,110,32,116,104, - 101,32,122,105,112,32,102,105,108,101,44,32,114,101,116,117, - 114,110,32,116,104,101,10,32,32,32,32,32,32,32,32,39, - 82,101,115,111,117,114,99,101,82,101,97,100,101,114,39,32, - 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,112, - 97,99,107,97,103,101,46,32,32,79,116,104,101,114,119,105, - 115,101,32,114,101,116,117,114,110,32,78,111,110,101,46,10, - 32,32,32,32,32,32,32,32,78,114,0,0,0,0,41,1, - 218,9,90,105,112,82,101,97,100,101,114,41,4,114,43,0, - 0,0,114,3,0,0,0,90,17,105,109,112,111,114,116,108, - 105,98,46,114,101,97,100,101,114,115,114,83,0,0,0,41, - 3,114,32,0,0,0,114,38,0,0,0,114,83,0,0,0, + 102,32,116,104,101,32,109,111,100,117,108,101,32,99,111,117, + 108,100,110,39,116,32,98,101,32,102,111,117,110,100,46,10, + 32,32,32,32,32,32,32,32,78,114,61,0,0,0,114,62, + 0,0,0,41,2,114,35,0,0,0,114,3,0,0,0,41, + 3,114,32,0,0,0,114,38,0,0,0,114,39,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,114, + 43,0,0,0,253,0,0,0,115,10,0,0,0,10,6,8, + 1,18,1,4,1,255,128,122,22,122,105,112,105,109,112,111, + 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 8,0,0,0,67,0,0,0,115,252,0,0,0,100,1,125, + 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, + 0,124,1,131,2,92,3,125,3,125,4,125,5,116,4,106, + 5,160,6,124,1,161,1,125,6,124,6,100,2,117,0,115, + 62,116,7,124,6,116,8,131,2,115,80,116,8,124,1,131, + 1,125,6,124,6,116,4,106,5,124,1,60,0,124,0,124, + 6,95,9,122,84,124,4,114,124,116,10,124,0,124,1,131, + 2,125,7,116,11,160,12,124,0,106,13,124,7,161,2,125, + 8,124,8,103,1,124,6,95,14,116,15,124,6,100,3,131, + 2,115,140,116,16,124,6,95,16,116,11,160,17,124,6,106, + 18,124,1,124,5,161,3,1,0,116,19,124,3,124,6,106, + 18,131,2,1,0,87,0,110,16,1,0,1,0,1,0,116, + 4,106,5,124,1,61,0,130,0,122,14,116,4,106,5,124, + 1,25,0,125,6,87,0,110,28,4,0,116,20,121,250,1, + 0,1,0,1,0,116,21,100,4,124,1,155,2,100,5,157, + 3,131,1,130,1,116,22,160,23,100,6,124,1,124,5,161, + 3,1,0,124,6,83,0,119,0,41,7,97,64,1,0,0, + 108,111,97,100,95,109,111,100,117,108,101,40,102,117,108,108, + 110,97,109,101,41,32,45,62,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,76,111,97,100,32,116, + 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, + 105,101,100,32,98,121,32,39,102,117,108,108,110,97,109,101, + 39,46,32,39,102,117,108,108,110,97,109,101,39,32,109,117, + 115,116,32,98,101,32,116,104,101,10,32,32,32,32,32,32, + 32,32,102,117,108,108,121,32,113,117,97,108,105,102,105,101, + 100,32,40,100,111,116,116,101,100,41,32,109,111,100,117,108, + 101,32,110,97,109,101,46,32,73,116,32,114,101,116,117,114, + 110,115,32,116,104,101,32,105,109,112,111,114,116,101,100,10, + 32,32,32,32,32,32,32,32,109,111,100,117,108,101,44,32, + 111,114,32,114,97,105,115,101,115,32,90,105,112,73,109,112, + 111,114,116,69,114,114,111,114,32,105,102,32,105,116,32,99, + 111,117,108,100,32,110,111,116,32,98,101,32,105,109,112,111, + 114,116,101,100,46,10,10,32,32,32,32,32,32,32,32,68, + 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, + 80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32, + 122,114,122,105,112,105,109,112,111,114,116,46,122,105,112,105, + 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, + 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, + 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, + 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,78,218,12,95,95,98,117,105,108,116,105,110, + 115,95,95,122,14,76,111,97,100,101,100,32,109,111,100,117, + 108,101,32,122,25,32,110,111,116,32,102,111,117,110,100,32, + 105,110,32,115,121,115,46,109,111,100,117,108,101,115,122,30, + 105,109,112,111,114,116,32,123,125,32,35,32,108,111,97,100, + 101,100,32,102,114,111,109,32,90,105,112,32,123,125,41,24, + 218,9,95,119,97,114,110,105,110,103,115,90,4,119,97,114, + 110,218,18,68,101,112,114,101,99,97,116,105,111,110,87,97, + 114,110,105,110,103,114,48,0,0,0,218,3,115,121,115,218, + 7,109,111,100,117,108,101,115,218,3,103,101,116,114,15,0, + 0,0,218,12,95,109,111,100,117,108,101,95,116,121,112,101, + 218,10,95,95,108,111,97,100,101,114,95,95,114,36,0,0, + 0,114,21,0,0,0,114,30,0,0,0,114,29,0,0,0, + 90,8,95,95,112,97,116,104,95,95,218,7,104,97,115,97, + 116,116,114,114,68,0,0,0,90,14,95,102,105,120,95,117, + 112,95,109,111,100,117,108,101,218,8,95,95,100,105,99,116, + 95,95,218,4,101,120,101,99,114,26,0,0,0,218,11,73, + 109,112,111,114,116,69,114,114,111,114,114,45,0,0,0,218, + 16,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, + 101,41,9,114,32,0,0,0,114,38,0,0,0,218,3,109, + 115,103,114,50,0,0,0,114,51,0,0,0,114,40,0,0, + 0,90,3,109,111,100,114,13,0,0,0,114,66,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, - 97,100,101,114,53,1,0,0,115,16,0,0,0,2,6,10, - 1,10,1,12,1,8,1,12,1,10,1,255,128,122,31,122, - 105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5, - 0,0,0,67,0,0,0,115,24,0,0,0,100,1,124,0, - 106,0,155,0,116,1,155,0,124,0,106,2,155,0,100,2, - 157,5,83,0,41,3,78,122,21,60,122,105,112,105,109,112, - 111,114,116,101,114,32,111,98,106,101,99,116,32,34,122,2, - 34,62,41,3,114,29,0,0,0,114,20,0,0,0,114,31, - 0,0,0,41,1,114,32,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,8,95,95,114,101,112, - 114,95,95,68,1,0,0,115,4,0,0,0,24,1,255,128, - 122,20,122,105,112,105,109,112,111,114,116,101,114,46,95,95, - 114,101,112,114,95,95,41,1,78,41,1,78,41,1,78,41, - 16,114,6,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,7,95,95,100,111,99,95,95,114,34,0,0,0,114,41, - 0,0,0,114,42,0,0,0,114,46,0,0,0,114,52,0, - 0,0,114,59,0,0,0,114,60,0,0,0,114,67,0,0, - 0,114,43,0,0,0,114,82,0,0,0,114,84,0,0,0, - 114,85,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,4,0,0,0,46,0, - 0,0,115,30,0,0,0,8,0,4,1,8,17,10,46,10, - 34,10,13,8,27,8,10,8,21,8,12,8,26,8,13,8, - 43,12,15,255,128,122,12,95,95,105,110,105,116,95,95,46, - 112,121,99,84,114,63,0,0,0,70,41,3,122,4,46,112, - 121,99,84,70,41,3,114,64,0,0,0,70,70,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,67,0,0,0,115,20,0,0,0,124,0,106,0,124, - 1,160,1,100,1,161,1,100,2,25,0,23,0,83,0,41, - 3,78,218,1,46,233,2,0,0,0,41,2,114,31,0,0, - 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114, - 32,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,36,0,0,0,86,1,0, - 0,115,4,0,0,0,20,1,255,128,114,36,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, - 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,169, - 1,78,41,2,114,20,0,0,0,114,28,0,0,0,41,3, - 114,32,0,0,0,114,13,0,0,0,90,7,100,105,114,112, - 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,37,0,0,0,90,1,0,0,115,6,0,0,0, - 8,4,10,2,255,128,114,37,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, - 67,0,0,0,115,54,0,0,0,116,0,124,0,124,1,131, - 2,125,2,116,1,68,0,93,34,92,3,125,3,125,4,125, - 5,124,2,124,3,23,0,125,6,124,6,124,0,106,2,118, - 0,114,14,124,5,2,0,1,0,83,0,100,0,83,0,114, - 90,0,0,0,41,3,114,36,0,0,0,218,16,95,122,105, - 112,95,115,101,97,114,99,104,111,114,100,101,114,114,28,0, - 0,0,41,7,114,32,0,0,0,114,38,0,0,0,114,13, - 0,0,0,218,6,115,117,102,102,105,120,218,10,105,115,98, - 121,116,101,99,111,100,101,114,51,0,0,0,114,66,0,0, - 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,35,0,0,0,99,1,0,0,115,14,0,0,0,10,1, - 14,1,8,1,10,1,8,1,4,1,255,128,114,35,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,26,0, - 0,0,9,0,0,0,67,0,0,0,115,232,4,0,0,122, - 14,116,0,160,1,124,0,161,1,125,1,87,0,110,32,4, - 0,116,2,121,46,1,0,1,0,1,0,116,3,100,1,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,119,0,124, - 1,144,4,143,142,1,0,122,36,124,1,160,4,116,5,11, - 0,100,3,161,2,1,0,124,1,160,6,161,0,125,2,124, - 1,160,7,116,5,161,1,125,3,87,0,110,32,4,0,116, - 2,121,124,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,119,0,116,8,124, - 3,131,1,116,5,107,3,114,156,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,3,100,0,100, - 5,133,2,25,0,116,9,107,3,144,1,114,154,122,24,124, - 1,160,4,100,6,100,3,161,2,1,0,124,1,160,6,161, - 0,125,4,87,0,110,32,4,0,116,2,121,230,1,0,1, + 11,108,111,97,100,95,109,111,100,117,108,101,10,1,0,0, + 115,56,0,0,0,4,9,12,2,16,1,12,1,18,1,8, + 1,10,1,6,1,2,2,4,1,10,3,14,1,8,1,10, + 2,6,1,16,1,16,1,6,1,8,1,2,1,2,2,14, + 1,12,1,16,1,14,1,4,1,2,253,255,128,122,23,122, + 105,112,105,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,0, + 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, + 64,0,0,0,122,20,124,0,160,0,124,1,161,1,115,18, + 87,0,100,1,83,0,87,0,110,18,4,0,116,1,121,62, + 1,0,1,0,1,0,89,0,100,1,83,0,100,2,100,3, + 108,2,109,3,125,2,1,0,124,2,124,0,124,1,131,2, + 83,0,119,0,41,4,122,204,82,101,116,117,114,110,32,116, + 104,101,32,82,101,115,111,117,114,99,101,82,101,97,100,101, + 114,32,102,111,114,32,97,32,112,97,99,107,97,103,101,32, + 105,110,32,97,32,122,105,112,32,102,105,108,101,46,10,10, + 32,32,32,32,32,32,32,32,73,102,32,39,102,117,108,108, + 110,97,109,101,39,32,105,115,32,97,32,112,97,99,107,97, + 103,101,32,119,105,116,104,105,110,32,116,104,101,32,122,105, + 112,32,102,105,108,101,44,32,114,101,116,117,114,110,32,116, + 104,101,10,32,32,32,32,32,32,32,32,39,82,101,115,111, + 117,114,99,101,82,101,97,100,101,114,39,32,111,98,106,101, + 99,116,32,102,111,114,32,116,104,101,32,112,97,99,107,97, + 103,101,46,32,32,79,116,104,101,114,119,105,115,101,32,114, + 101,116,117,114,110,32,78,111,110,101,46,10,32,32,32,32, + 32,32,32,32,78,114,0,0,0,0,41,1,218,9,90,105, + 112,82,101,97,100,101,114,41,4,114,43,0,0,0,114,3, + 0,0,0,90,17,105,109,112,111,114,116,108,105,98,46,114, + 101,97,100,101,114,115,114,83,0,0,0,41,3,114,32,0, + 0,0,114,38,0,0,0,114,83,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,19,103,101,116, + 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, + 53,1,0,0,115,18,0,0,0,2,6,10,1,10,1,12, + 1,6,1,12,1,10,1,2,253,255,128,122,31,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,114,101,115, + 111,117,114,99,101,95,114,101,97,100,101,114,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, + 0,67,0,0,0,115,24,0,0,0,100,1,124,0,106,0, + 155,0,116,1,155,0,124,0,106,2,155,0,100,2,157,5, + 83,0,41,3,78,122,21,60,122,105,112,105,109,112,111,114, + 116,101,114,32,111,98,106,101,99,116,32,34,122,2,34,62, + 41,3,114,29,0,0,0,114,20,0,0,0,114,31,0,0, + 0,41,1,114,32,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,8,95,95,114,101,112,114,95, + 95,68,1,0,0,115,4,0,0,0,24,1,255,128,122,20, + 122,105,112,105,109,112,111,114,116,101,114,46,95,95,114,101, + 112,114,95,95,41,1,78,41,1,78,41,1,78,41,16,114, + 6,0,0,0,114,7,0,0,0,114,8,0,0,0,218,7, + 95,95,100,111,99,95,95,114,34,0,0,0,114,41,0,0, + 0,114,42,0,0,0,114,46,0,0,0,114,52,0,0,0, + 114,59,0,0,0,114,60,0,0,0,114,67,0,0,0,114, + 43,0,0,0,114,82,0,0,0,114,84,0,0,0,114,85, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,114,4,0,0,0,46,0,0,0, + 115,30,0,0,0,8,0,4,1,8,17,10,46,10,34,10, + 13,8,27,8,10,8,21,8,12,8,26,8,13,8,43,12, + 15,255,128,122,12,95,95,105,110,105,116,95,95,46,112,121, + 99,84,114,63,0,0,0,70,41,3,122,4,46,112,121,99, + 84,70,41,3,114,64,0,0,0,70,70,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,20,0,0,0,124,0,106,0,124,1,160, + 1,100,1,161,1,100,2,25,0,23,0,83,0,41,3,78, + 218,1,46,233,2,0,0,0,41,2,114,31,0,0,0,218, + 10,114,112,97,114,116,105,116,105,111,110,41,2,114,32,0, + 0,0,114,38,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,36,0,0,0,86,1,0,0,115, + 4,0,0,0,20,1,255,128,114,36,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, + 0,0,67,0,0,0,115,18,0,0,0,124,1,116,0,23, + 0,125,2,124,2,124,0,106,1,118,0,83,0,169,1,78, + 41,2,114,20,0,0,0,114,28,0,0,0,41,3,114,32, + 0,0,0,114,13,0,0,0,90,7,100,105,114,112,97,116, + 104,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,37,0,0,0,90,1,0,0,115,6,0,0,0,8,4, + 10,2,255,128,114,37,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,7,0,0,0,4,0,0,0,67,0, + 0,0,115,54,0,0,0,116,0,124,0,124,1,131,2,125, + 2,116,1,68,0,93,34,92,3,125,3,125,4,125,5,124, + 2,124,3,23,0,125,6,124,6,124,0,106,2,118,0,114, + 14,124,5,2,0,1,0,83,0,100,0,83,0,114,90,0, + 0,0,41,3,114,36,0,0,0,218,16,95,122,105,112,95, + 115,101,97,114,99,104,111,114,100,101,114,114,28,0,0,0, + 41,7,114,32,0,0,0,114,38,0,0,0,114,13,0,0, + 0,218,6,115,117,102,102,105,120,218,10,105,115,98,121,116, + 101,99,111,100,101,114,51,0,0,0,114,66,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,35, + 0,0,0,99,1,0,0,115,14,0,0,0,10,1,14,1, + 8,1,10,1,8,1,4,1,255,128,114,35,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0, + 9,0,0,0,67,0,0,0,115,236,4,0,0,122,14,116, + 0,160,1,124,0,161,1,125,1,87,0,110,32,4,0,116, + 2,144,4,121,234,1,0,1,0,1,0,116,3,100,1,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,1,144, + 4,143,130,1,0,122,36,124,1,160,4,116,5,11,0,100, + 3,161,2,1,0,124,1,160,6,161,0,125,2,124,1,160, + 7,116,5,161,1,125,3,87,0,110,32,4,0,116,2,144, + 4,121,232,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,116,8,124,3,131, + 1,116,5,107,3,114,156,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,3,100,0,100,5,133, + 2,25,0,116,9,107,3,144,1,114,152,122,24,124,1,160, + 4,100,6,100,3,161,2,1,0,124,1,160,6,161,0,125, + 4,87,0,110,32,4,0,116,2,144,4,121,230,1,0,1, 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,119,0,116,10,124,4,116,11,24,0,116, - 5,24,0,100,6,131,2,125,5,122,22,124,1,160,4,124, - 5,161,1,1,0,124,1,160,7,161,0,125,6,87,0,110, - 34,4,0,116,2,144,1,121,50,1,0,1,0,1,0,116, + 2,141,2,130,1,116,10,124,4,116,11,24,0,116,5,24, + 0,100,6,131,2,125,5,122,22,124,1,160,4,124,5,161, + 1,1,0,124,1,160,7,161,0,125,6,87,0,110,32,4, + 0,116,2,144,4,121,228,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,144, + 1,114,88,116,3,100,7,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,6,124,7,124,7,116,5,23,0,133, + 2,25,0,125,3,116,8,124,3,131,1,116,5,107,3,144, + 1,114,136,116,3,100,8,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,4,116,8,124,6,131,1,24,0,124, + 7,23,0,125,2,116,13,124,3,100,9,100,10,133,2,25, + 0,131,1,125,8,116,13,124,3,100,10,100,11,133,2,25, + 0,131,1,125,9,124,2,124,8,107,0,144,1,114,212,116, + 3,100,12,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,2,124,9,107,0,144,1,114,240,116,3,100,13,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,2,124, + 8,56,0,125,2,124,2,124,9,24,0,125,10,124,10,100, + 6,107,0,144,2,114,28,116,3,100,14,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,105,0,125,11,100,6,125, + 12,122,14,124,1,160,4,124,2,161,1,1,0,87,0,110, + 32,4,0,116,2,144,4,121,226,1,0,1,0,1,0,116, 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,119,0,124,6,160,12,116,9,161,1,125,7,124,7,100, - 6,107,0,144,1,114,90,116,3,100,7,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,6,124,7,124,7,116, - 5,23,0,133,2,25,0,125,3,116,8,124,3,131,1,116, - 5,107,3,144,1,114,138,116,3,100,8,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,4,116,8,124,6,131, - 1,24,0,124,7,23,0,125,2,116,13,124,3,100,9,100, - 10,133,2,25,0,131,1,125,8,116,13,124,3,100,10,100, - 11,133,2,25,0,131,1,125,9,124,2,124,8,107,0,144, - 1,114,214,116,3,100,12,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,2,124,9,107,0,144,1,114,242,116, - 3,100,13,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,2,124,8,56,0,125,2,124,2,124,9,24,0,125, - 10,124,10,100,6,107,0,144,2,114,30,116,3,100,14,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,105,0,125, - 11,100,6,125,12,122,14,124,1,160,4,124,2,161,1,1, - 0,87,0,110,34,4,0,116,2,144,2,121,86,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,119,0,9,0,124,1,160,7,100,16,161, - 1,125,3,116,8,124,3,131,1,100,5,107,0,144,2,114, - 122,116,14,100,17,131,1,130,1,124,3,100,0,100,5,133, - 2,25,0,100,18,107,3,144,2,114,144,144,4,113,182,116, - 8,124,3,131,1,100,16,107,3,144,2,114,166,116,14,100, - 17,131,1,130,1,116,15,124,3,100,19,100,20,133,2,25, - 0,131,1,125,13,116,15,124,3,100,20,100,9,133,2,25, - 0,131,1,125,14,116,15,124,3,100,9,100,21,133,2,25, - 0,131,1,125,15,116,15,124,3,100,21,100,10,133,2,25, - 0,131,1,125,16,116,13,124,3,100,10,100,11,133,2,25, - 0,131,1,125,17,116,13,124,3,100,11,100,22,133,2,25, - 0,131,1,125,18,116,13,124,3,100,22,100,23,133,2,25, - 0,131,1,125,4,116,15,124,3,100,23,100,24,133,2,25, - 0,131,1,125,19,116,15,124,3,100,24,100,25,133,2,25, - 0,131,1,125,20,116,15,124,3,100,25,100,26,133,2,25, - 0,131,1,125,21,116,13,124,3,100,27,100,16,133,2,25, - 0,131,1,125,22,124,19,124,20,23,0,124,21,23,0,125, - 8,124,22,124,9,107,4,144,3,114,126,116,3,100,28,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,22,124, - 10,55,0,125,22,122,14,124,1,160,7,124,19,161,1,125, - 23,87,0,110,34,4,0,116,2,144,3,121,182,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,119,0,116,8,124,23,131,1,124,19,107, - 3,144,3,114,216,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,122,50,116,8,124,1,160,7,124, - 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, - 3,144,4,114,8,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,87,0,110,34,4,0,116,2,144, - 4,121,44,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,119,0,124,13,100, - 29,64,0,144,4,114,66,124,23,160,16,161,0,125,23,110, - 52,122,14,124,23,160,16,100,30,161,1,125,23,87,0,110, - 36,4,0,116,17,144,4,121,116,1,0,1,0,1,0,124, - 23,160,16,100,31,161,1,160,18,116,19,161,1,125,23,89, - 0,110,2,119,0,124,23,160,20,100,32,116,21,161,2,125, - 23,116,22,160,23,124,0,124,23,161,2,125,24,124,24,124, - 14,124,18,124,4,124,22,124,15,124,16,124,17,102,8,125, - 25,124,25,124,11,124,23,60,0,124,12,100,33,55,0,125, - 12,144,2,113,90,87,0,100,0,4,0,4,0,131,3,1, - 0,110,18,49,0,144,4,115,204,119,1,1,0,1,0,1, - 0,89,0,1,0,116,24,160,25,100,34,124,12,124,0,161, - 3,1,0,124,11,83,0,41,35,78,122,21,99,97,110,39, - 116,32,111,112,101,110,32,90,105,112,32,102,105,108,101,58, - 32,114,12,0,0,0,114,88,0,0,0,250,21,99,97,110, - 39,116,32,114,101,97,100,32,90,105,112,32,102,105,108,101, - 58,32,233,4,0,0,0,114,0,0,0,0,122,16,110,111, - 116,32,97,32,90,105,112,32,102,105,108,101,58,32,122,18, - 99,111,114,114,117,112,116,32,90,105,112,32,102,105,108,101, - 58,32,233,12,0,0,0,233,16,0,0,0,233,20,0,0, - 0,122,28,98,97,100,32,99,101,110,116,114,97,108,32,100, - 105,114,101,99,116,111,114,121,32,115,105,122,101,58,32,122, - 30,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, - 101,99,116,111,114,121,32,111,102,102,115,101,116,58,32,122, - 38,98,97,100,32,99,101,110,116,114,97,108,32,100,105,114, - 101,99,116,111,114,121,32,115,105,122,101,32,111,114,32,111, - 102,102,115,101,116,58,32,84,233,46,0,0,0,250,27,69, - 79,70,32,114,101,97,100,32,119,104,101,114,101,32,110,111, - 116,32,101,120,112,101,99,116,101,100,115,4,0,0,0,80, - 75,1,2,233,8,0,0,0,233,10,0,0,0,233,14,0, - 0,0,233,24,0,0,0,233,28,0,0,0,233,30,0,0, - 0,233,32,0,0,0,233,34,0,0,0,233,42,0,0,0, - 122,25,98,97,100,32,108,111,99,97,108,32,104,101,97,100, - 101,114,32,111,102,102,115,101,116,58,32,105,0,8,0,0, - 218,5,97,115,99,105,105,90,6,108,97,116,105,110,49,250, - 1,47,114,5,0,0,0,122,33,122,105,112,105,109,112,111, - 114,116,58,32,102,111,117,110,100,32,123,125,32,110,97,109, - 101,115,32,105,110,32,123,33,114,125,41,26,218,3,95,105, - 111,218,9,111,112,101,110,95,99,111,100,101,114,22,0,0, - 0,114,3,0,0,0,218,4,115,101,101,107,218,20,69,78, - 68,95,67,69,78,84,82,65,76,95,68,73,82,95,83,73, - 90,69,90,4,116,101,108,108,218,4,114,101,97,100,114,55, - 0,0,0,218,18,83,84,82,73,78,71,95,69,78,68,95, - 65,82,67,72,73,86,69,218,3,109,97,120,218,15,77,65, - 88,95,67,79,77,77,69,78,84,95,76,69,78,218,5,114, - 102,105,110,100,114,2,0,0,0,218,8,69,79,70,69,114, - 114,111,114,114,1,0,0,0,114,65,0,0,0,218,18,85, - 110,105,99,111,100,101,68,101,99,111,100,101,69,114,114,111, - 114,218,9,116,114,97,110,115,108,97,116,101,218,11,99,112, - 52,51,55,95,116,97,98,108,101,114,19,0,0,0,114,20, - 0,0,0,114,21,0,0,0,114,30,0,0,0,114,45,0, - 0,0,114,80,0,0,0,41,26,114,29,0,0,0,218,2, - 102,112,90,15,104,101,97,100,101,114,95,112,111,115,105,116, - 105,111,110,218,6,98,117,102,102,101,114,218,9,102,105,108, - 101,95,115,105,122,101,90,17,109,97,120,95,99,111,109,109, - 101,110,116,95,115,116,97,114,116,218,4,100,97,116,97,90, - 3,112,111,115,218,11,104,101,97,100,101,114,95,115,105,122, - 101,90,13,104,101,97,100,101,114,95,111,102,102,115,101,116, - 90,10,97,114,99,95,111,102,102,115,101,116,114,33,0,0, - 0,218,5,99,111,117,110,116,218,5,102,108,97,103,115,218, - 8,99,111,109,112,114,101,115,115,218,4,116,105,109,101,218, - 4,100,97,116,101,218,3,99,114,99,218,9,100,97,116,97, - 95,115,105,122,101,218,9,110,97,109,101,95,115,105,122,101, - 218,10,101,120,116,114,97,95,115,105,122,101,90,12,99,111, - 109,109,101,110,116,95,115,105,122,101,218,11,102,105,108,101, - 95,111,102,102,115,101,116,114,44,0,0,0,114,13,0,0, - 0,218,1,116,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,114,27,0,0,0,130,1,0,0,115,218,0,0, - 0,2,1,14,1,12,1,20,1,8,2,2,1,14,1,8, - 1,14,1,12,1,20,1,12,1,18,1,18,1,2,3,12, - 1,12,1,12,1,10,1,2,1,8,255,8,2,2,1,2, - 255,2,1,4,255,2,2,10,1,12,1,14,1,10,1,2, - 1,8,255,10,2,10,1,10,1,2,1,6,255,16,2,14, - 1,10,1,2,1,6,255,16,2,16,2,16,1,10,1,18, - 1,10,1,18,1,8,1,8,1,10,1,18,1,4,2,4, - 2,2,1,14,1,14,1,20,1,2,1,10,1,14,1,8, - 1,18,2,4,1,14,1,8,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,12, - 1,10,1,18,1,8,1,2,2,14,1,14,1,20,1,14, - 1,18,1,2,4,28,1,22,1,14,1,20,1,10,2,10, - 2,2,3,14,1,14,1,22,1,12,2,12,1,20,1,8, - 1,8,1,36,202,14,55,4,1,255,128,114,27,0,0,0, - 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74, - 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, - 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106, - 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122, - 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195, - 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195, - 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195, - 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194, - 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177, - 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194, - 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147, - 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226, - 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149, - 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172, - 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226, - 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149, - 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165, - 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226, - 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150, - 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206, - 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226, - 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137, - 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194, - 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150, - 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,8,0,0,0,67,0,0,0,115,106,0,0, - 0,116,0,114,22,116,1,160,2,100,1,161,1,1,0,116, - 3,100,2,131,1,130,1,100,3,97,0,122,58,122,16,100, - 4,100,5,108,4,109,5,125,0,1,0,87,0,110,32,4, - 0,116,6,121,76,1,0,1,0,1,0,116,1,160,2,100, - 1,161,1,1,0,116,3,100,2,131,1,130,1,119,0,87, + 1,9,0,124,1,160,7,100,16,161,1,125,3,116,8,124, + 3,131,1,100,5,107,0,144,2,114,118,116,14,100,17,131, + 1,130,1,124,3,100,0,100,5,133,2,25,0,100,18,107, + 3,144,2,114,140,144,4,113,170,116,8,124,3,131,1,100, + 16,107,3,144,2,114,162,116,14,100,17,131,1,130,1,116, + 15,124,3,100,19,100,20,133,2,25,0,131,1,125,13,116, + 15,124,3,100,20,100,9,133,2,25,0,131,1,125,14,116, + 15,124,3,100,9,100,21,133,2,25,0,131,1,125,15,116, + 15,124,3,100,21,100,10,133,2,25,0,131,1,125,16,116, + 13,124,3,100,10,100,11,133,2,25,0,131,1,125,17,116, + 13,124,3,100,11,100,22,133,2,25,0,131,1,125,18,116, + 13,124,3,100,22,100,23,133,2,25,0,131,1,125,4,116, + 15,124,3,100,23,100,24,133,2,25,0,131,1,125,19,116, + 15,124,3,100,24,100,25,133,2,25,0,131,1,125,20,116, + 15,124,3,100,25,100,26,133,2,25,0,131,1,125,21,116, + 13,124,3,100,27,100,16,133,2,25,0,131,1,125,22,124, + 19,124,20,23,0,124,21,23,0,125,8,124,22,124,9,107, + 4,144,3,114,122,116,3,100,28,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,22,124,10,55,0,125,22,122, + 14,124,1,160,7,124,19,161,1,125,23,87,0,110,32,4, + 0,116,2,144,4,121,224,1,0,1,0,1,0,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,116, + 8,124,23,131,1,124,19,107,3,144,3,114,210,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,122, + 50,116,8,124,1,160,7,124,8,124,19,24,0,161,1,131, + 1,124,8,124,19,24,0,107,3,144,4,114,2,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,87, + 0,110,32,4,0,116,2,144,4,121,222,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,13,100,29,64,0,144,4,114,58,124,23,160, + 16,161,0,125,23,110,48,122,14,124,23,160,16,100,30,161, + 1,125,23,87,0,110,32,4,0,116,17,144,4,121,220,1, + 0,1,0,1,0,124,23,160,16,100,31,161,1,160,18,116, + 19,161,1,125,23,89,0,124,23,160,20,100,32,116,21,161, + 2,125,23,116,22,160,23,124,0,124,23,161,2,125,24,124, + 24,124,14,124,18,124,4,124,22,124,15,124,16,124,17,102, + 8,125,25,124,25,124,11,124,23,60,0,124,12,100,33,55, + 0,125,12,144,2,113,86,87,0,100,0,4,0,4,0,131, + 3,1,0,110,18,49,0,144,4,115,192,119,1,1,0,1, + 0,1,0,89,0,1,0,116,24,160,25,100,34,124,12,124, + 0,161,3,1,0,124,11,83,0,119,0,119,0,119,0,119, + 0,119,0,119,0,119,0,119,0,41,35,78,122,21,99,97, + 110,39,116,32,111,112,101,110,32,90,105,112,32,102,105,108, + 101,58,32,114,12,0,0,0,114,88,0,0,0,250,21,99, + 97,110,39,116,32,114,101,97,100,32,90,105,112,32,102,105, + 108,101,58,32,233,4,0,0,0,114,0,0,0,0,122,16, + 110,111,116,32,97,32,90,105,112,32,102,105,108,101,58,32, + 122,18,99,111,114,114,117,112,116,32,90,105,112,32,102,105, + 108,101,58,32,233,12,0,0,0,233,16,0,0,0,233,20, + 0,0,0,122,28,98,97,100,32,99,101,110,116,114,97,108, + 32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,58, + 32,122,30,98,97,100,32,99,101,110,116,114,97,108,32,100, + 105,114,101,99,116,111,114,121,32,111,102,102,115,101,116,58, + 32,122,38,98,97,100,32,99,101,110,116,114,97,108,32,100, + 105,114,101,99,116,111,114,121,32,115,105,122,101,32,111,114, + 32,111,102,102,115,101,116,58,32,84,233,46,0,0,0,250, + 27,69,79,70,32,114,101,97,100,32,119,104,101,114,101,32, + 110,111,116,32,101,120,112,101,99,116,101,100,115,4,0,0, + 0,80,75,1,2,233,8,0,0,0,233,10,0,0,0,233, + 14,0,0,0,233,24,0,0,0,233,28,0,0,0,233,30, + 0,0,0,233,32,0,0,0,233,34,0,0,0,233,42,0, + 0,0,122,25,98,97,100,32,108,111,99,97,108,32,104,101, + 97,100,101,114,32,111,102,102,115,101,116,58,32,105,0,8, + 0,0,218,5,97,115,99,105,105,90,6,108,97,116,105,110, + 49,250,1,47,114,5,0,0,0,122,33,122,105,112,105,109, + 112,111,114,116,58,32,102,111,117,110,100,32,123,125,32,110, + 97,109,101,115,32,105,110,32,123,33,114,125,41,26,218,3, + 95,105,111,218,9,111,112,101,110,95,99,111,100,101,114,22, + 0,0,0,114,3,0,0,0,218,4,115,101,101,107,218,20, + 69,78,68,95,67,69,78,84,82,65,76,95,68,73,82,95, + 83,73,90,69,90,4,116,101,108,108,218,4,114,101,97,100, + 114,55,0,0,0,218,18,83,84,82,73,78,71,95,69,78, + 68,95,65,82,67,72,73,86,69,218,3,109,97,120,218,15, + 77,65,88,95,67,79,77,77,69,78,84,95,76,69,78,218, + 5,114,102,105,110,100,114,2,0,0,0,218,8,69,79,70, + 69,114,114,111,114,114,1,0,0,0,114,65,0,0,0,218, + 18,85,110,105,99,111,100,101,68,101,99,111,100,101,69,114, + 114,111,114,218,9,116,114,97,110,115,108,97,116,101,218,11, + 99,112,52,51,55,95,116,97,98,108,101,114,19,0,0,0, + 114,20,0,0,0,114,21,0,0,0,114,30,0,0,0,114, + 45,0,0,0,114,80,0,0,0,41,26,114,29,0,0,0, + 218,2,102,112,90,15,104,101,97,100,101,114,95,112,111,115, + 105,116,105,111,110,218,6,98,117,102,102,101,114,218,9,102, + 105,108,101,95,115,105,122,101,90,17,109,97,120,95,99,111, + 109,109,101,110,116,95,115,116,97,114,116,218,4,100,97,116, + 97,90,3,112,111,115,218,11,104,101,97,100,101,114,95,115, + 105,122,101,90,13,104,101,97,100,101,114,95,111,102,102,115, + 101,116,90,10,97,114,99,95,111,102,102,115,101,116,114,33, + 0,0,0,218,5,99,111,117,110,116,218,5,102,108,97,103, + 115,218,8,99,111,109,112,114,101,115,115,218,4,116,105,109, + 101,218,4,100,97,116,101,218,3,99,114,99,218,9,100,97, + 116,97,95,115,105,122,101,218,9,110,97,109,101,95,115,105, + 122,101,218,10,101,120,116,114,97,95,115,105,122,101,90,12, + 99,111,109,109,101,110,116,95,115,105,122,101,218,11,102,105, + 108,101,95,111,102,102,115,101,116,114,44,0,0,0,114,13, + 0,0,0,218,1,116,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,114,27,0,0,0,130,1,0,0,115,234, + 0,0,0,2,1,14,1,14,1,18,1,8,2,2,1,14, + 1,8,1,14,1,14,1,18,1,12,1,18,1,18,1,2, + 3,12,1,12,1,14,1,10,1,2,1,6,255,8,2,2, + 1,2,255,2,1,4,255,2,2,10,1,12,1,14,1,10, + 1,2,1,6,255,10,2,10,1,10,1,2,1,6,255,16, + 2,14,1,10,1,2,1,6,255,16,2,16,2,16,1,10, + 1,18,1,10,1,18,1,8,1,8,1,10,1,18,1,4, + 2,4,2,2,1,14,1,14,1,18,1,2,1,10,1,14, + 1,8,1,18,2,4,1,14,1,8,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,12,1,10,1,18,1,8,1,2,2,14,1,14,1,18, + 1,14,1,18,1,2,4,28,1,22,1,14,1,18,1,10, + 2,10,2,2,3,14,1,14,1,18,1,12,2,12,1,20, + 1,8,1,8,1,36,202,14,55,4,1,2,247,2,246,2, + 246,2,227,2,227,2,248,2,246,2,248,255,128,114,27,0, + 0,0,117,190,1,0,0,0,1,2,3,4,5,6,7,8, + 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, + 25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, + 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56, + 57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, + 73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88, + 89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104, + 105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120, + 121,122,123,124,125,126,127,195,135,195,188,195,169,195,162,195, + 164,195,160,195,165,195,167,195,170,195,171,195,168,195,175,195, + 174,195,172,195,132,195,133,195,137,195,166,195,134,195,180,195, + 182,195,178,195,187,195,185,195,191,195,150,195,156,194,162,194, + 163,194,165,226,130,167,198,146,195,161,195,173,195,179,195,186, + 195,177,195,145,194,170,194,186,194,191,226,140,144,194,172,194, + 189,194,188,194,161,194,171,194,187,226,150,145,226,150,146,226, + 150,147,226,148,130,226,148,164,226,149,161,226,149,162,226,149, + 150,226,149,149,226,149,163,226,149,145,226,149,151,226,149,157, + 226,149,156,226,149,155,226,148,144,226,148,148,226,148,180,226, + 148,172,226,148,156,226,148,128,226,148,188,226,149,158,226,149, + 159,226,149,154,226,149,148,226,149,169,226,149,166,226,149,160, + 226,149,144,226,149,172,226,149,167,226,149,168,226,149,164,226, + 149,165,226,149,153,226,149,152,226,149,146,226,149,147,226,149, + 171,226,149,170,226,148,152,226,148,140,226,150,136,226,150,132, + 226,150,140,226,150,144,226,150,128,206,177,195,159,206,147,207, + 128,206,163,207,131,194,181,207,132,206,166,206,152,206,169,206, + 180,226,136,158,207,134,206,181,226,136,169,226,137,161,194,177, + 226,137,165,226,137,164,226,140,160,226,140,161,195,183,226,137, + 136,194,176,226,136,153,194,183,226,136,154,226,129,191,194,178, + 226,150,160,194,160,99,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,106, + 0,0,0,116,0,114,22,116,1,160,2,100,1,161,1,1, + 0,116,3,100,2,131,1,130,1,100,3,97,0,122,56,122, + 16,100,4,100,5,108,4,109,5,125,0,1,0,87,0,110, + 30,4,0,116,6,121,104,1,0,1,0,1,0,116,1,160, + 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,87, 0,100,6,97,0,110,6,100,6,97,0,119,0,116,1,160, - 2,100,7,161,1,1,0,124,0,83,0,41,8,78,122,27, - 122,105,112,105,109,112,111,114,116,58,32,122,108,105,98,32, - 85,78,65,86,65,73,76,65,66,76,69,250,41,99,97,110, - 39,116,32,100,101,99,111,109,112,114,101,115,115,32,100,97, - 116,97,59,32,122,108,105,98,32,110,111,116,32,97,118,97, - 105,108,97,98,108,101,84,114,0,0,0,0,169,1,218,10, - 100,101,99,111,109,112,114,101,115,115,70,122,25,122,105,112, - 105,109,112,111,114,116,58,32,122,108,105,98,32,97,118,97, - 105,108,97,98,108,101,41,7,218,15,95,105,109,112,111,114, - 116,105,110,103,95,122,108,105,98,114,45,0,0,0,114,80, - 0,0,0,114,3,0,0,0,90,4,122,108,105,98,114,143, - 0,0,0,218,9,69,120,99,101,112,116,105,111,110,114,142, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,20,95,103,101,116,95,100,101,99,111,109,112,114, - 101,115,115,95,102,117,110,99,32,2,0,0,115,28,0,0, - 0,4,2,10,3,8,1,4,2,4,1,16,1,12,1,10, - 1,10,1,2,128,12,2,10,2,4,1,255,128,114,146,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,17, - 0,0,0,9,0,0,0,67,0,0,0,115,132,1,0,0, - 124,1,92,8,125,2,125,3,125,4,125,5,125,6,125,7, - 125,8,125,9,124,4,100,1,107,0,114,36,116,0,100,2, - 131,1,130,1,116,1,160,2,124,0,161,1,144,1,143,6, - 125,10,122,14,124,10,160,3,124,6,161,1,1,0,87,0, - 110,32,4,0,116,4,121,96,1,0,1,0,1,0,116,0, - 100,3,124,0,155,2,157,2,124,0,100,4,141,2,130,1, - 119,0,124,10,160,5,100,5,161,1,125,11,116,6,124,11, - 131,1,100,5,107,3,114,128,116,7,100,6,131,1,130,1, - 124,11,100,0,100,7,133,2,25,0,100,8,107,3,114,162, - 116,0,100,9,124,0,155,2,157,2,124,0,100,4,141,2, - 130,1,116,8,124,11,100,10,100,11,133,2,25,0,131,1, - 125,12,116,8,124,11,100,11,100,5,133,2,25,0,131,1, - 125,13,100,5,124,12,23,0,124,13,23,0,125,14,124,6, - 124,14,55,0,125,6,122,14,124,10,160,3,124,6,161,1, - 1,0,87,0,110,34,4,0,116,4,144,1,121,6,1,0, + 2,100,7,161,1,1,0,124,0,83,0,119,0,41,8,78, + 122,27,122,105,112,105,109,112,111,114,116,58,32,122,108,105, + 98,32,85,78,65,86,65,73,76,65,66,76,69,250,41,99, + 97,110,39,116,32,100,101,99,111,109,112,114,101,115,115,32, + 100,97,116,97,59,32,122,108,105,98,32,110,111,116,32,97, + 118,97,105,108,97,98,108,101,84,114,0,0,0,0,169,1, + 218,10,100,101,99,111,109,112,114,101,115,115,70,122,25,122, + 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,97, + 118,97,105,108,97,98,108,101,41,7,218,15,95,105,109,112, + 111,114,116,105,110,103,95,122,108,105,98,114,45,0,0,0, + 114,80,0,0,0,114,3,0,0,0,90,4,122,108,105,98, + 114,143,0,0,0,218,9,69,120,99,101,112,116,105,111,110, + 114,142,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,20,95,103,101,116,95,100,101,99,111,109, + 112,114,101,115,115,95,102,117,110,99,32,2,0,0,115,30, + 0,0,0,4,2,10,3,8,1,4,2,4,1,16,1,12, + 1,10,1,8,1,2,128,12,2,10,2,4,1,2,249,255, + 128,114,146,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,17,0,0,0,9,0,0,0,67,0,0,0,115, + 134,1,0,0,124,1,92,8,125,2,125,3,125,4,125,5, + 125,6,125,7,125,8,125,9,124,4,100,1,107,0,114,36, + 116,0,100,2,131,1,130,1,116,1,160,2,124,0,161,1, + 144,1,143,4,125,10,122,14,124,10,160,3,124,6,161,1, + 1,0,87,0,110,32,4,0,116,4,144,1,121,132,1,0, 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, - 100,4,141,2,130,1,119,0,124,10,160,5,124,4,161,1, - 125,15,116,6,124,15,131,1,124,4,107,3,144,1,114,40, - 116,4,100,12,131,1,130,1,87,0,100,0,4,0,4,0, - 131,3,1,0,110,18,49,0,144,1,115,62,119,1,1,0, - 1,0,1,0,89,0,1,0,124,3,100,1,107,2,144,1, - 114,86,124,15,83,0,122,10,116,9,131,0,125,16,87,0, - 110,24,4,0,116,10,144,1,121,120,1,0,1,0,1,0, - 116,0,100,13,131,1,130,1,119,0,124,16,124,15,100,14, - 131,2,83,0,41,15,78,114,0,0,0,0,122,18,110,101, - 103,97,116,105,118,101,32,100,97,116,97,32,115,105,122,101, - 114,94,0,0,0,114,12,0,0,0,114,106,0,0,0,114, - 100,0,0,0,114,95,0,0,0,115,4,0,0,0,80,75, - 3,4,122,23,98,97,100,32,108,111,99,97,108,32,102,105, - 108,101,32,104,101,97,100,101,114,58,32,233,26,0,0,0, - 114,105,0,0,0,122,26,122,105,112,105,109,112,111,114,116, - 58,32,99,97,110,39,116,32,114,101,97,100,32,100,97,116, - 97,114,141,0,0,0,105,241,255,255,255,41,11,114,3,0, - 0,0,114,112,0,0,0,114,113,0,0,0,114,114,0,0, - 0,114,22,0,0,0,114,116,0,0,0,114,55,0,0,0, - 114,121,0,0,0,114,1,0,0,0,114,146,0,0,0,114, - 145,0,0,0,41,17,114,29,0,0,0,114,58,0,0,0, - 90,8,100,97,116,97,112,97,116,104,114,132,0,0,0,114, - 136,0,0,0,114,127,0,0,0,114,139,0,0,0,114,133, - 0,0,0,114,134,0,0,0,114,135,0,0,0,114,125,0, - 0,0,114,126,0,0,0,114,137,0,0,0,114,138,0,0, - 0,114,129,0,0,0,90,8,114,97,119,95,100,97,116,97, - 114,143,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,114,56,0,0,0,53,2,0,0,115,64,0, - 0,0,20,1,8,1,8,1,14,2,2,2,14,1,12,1, - 20,1,10,1,12,1,8,1,16,2,18,2,16,2,16,1, - 12,1,8,1,2,1,14,1,14,1,20,1,10,1,14,1, - 40,1,10,2,4,2,2,3,10,1,14,1,10,1,10,1, - 255,128,114,56,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, - 115,16,0,0,0,116,0,124,0,124,1,24,0,131,1,100, - 1,107,1,83,0,41,2,78,114,5,0,0,0,41,1,218, - 3,97,98,115,41,2,90,2,116,49,90,2,116,50,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,9,95, - 101,113,95,109,116,105,109,101,99,2,0,0,115,4,0,0, - 0,16,2,255,128,114,149,0,0,0,99,5,0,0,0,0, - 0,0,0,0,0,0,0,14,0,0,0,6,0,0,0,67, - 0,0,0,115,254,0,0,0,124,3,124,2,100,1,156,2, - 125,5,116,0,160,1,124,4,124,3,124,5,161,3,125,6, - 124,6,100,2,64,0,100,3,107,3,125,7,124,7,114,126, - 124,6,100,4,64,0,100,3,107,3,125,8,116,2,106,3, - 100,5,107,3,114,206,124,8,115,76,116,2,106,3,100,6, - 107,2,114,206,116,4,124,0,124,2,131,2,125,9,124,9, - 100,0,117,1,114,206,116,2,160,5,116,0,106,6,124,9, - 161,2,125,10,116,0,160,7,124,4,124,10,124,3,124,5, - 161,4,1,0,110,80,116,8,124,0,124,2,131,2,92,2, - 125,11,125,12,124,11,114,206,116,9,116,10,124,4,100,7, - 100,8,133,2,25,0,131,1,124,11,131,2,114,186,116,10, - 124,4,100,8,100,9,133,2,25,0,131,1,124,12,107,3, - 114,206,116,11,160,12,100,10,124,3,155,2,157,2,161,1, - 1,0,100,0,83,0,116,13,160,14,124,4,100,9,100,0, - 133,2,25,0,161,1,125,13,116,15,124,13,116,16,131,2, - 115,250,116,17,100,11,124,1,155,2,100,12,157,3,131,1, - 130,1,124,13,83,0,41,13,78,41,2,114,44,0,0,0, - 114,13,0,0,0,114,5,0,0,0,114,0,0,0,0,114, - 88,0,0,0,90,5,110,101,118,101,114,90,6,97,108,119, - 97,121,115,114,101,0,0,0,114,96,0,0,0,114,97,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,122,16,99,111,109,112, - 105,108,101,100,32,109,111,100,117,108,101,32,122,21,32,105, - 115,32,110,111,116,32,97,32,99,111,100,101,32,111,98,106, - 101,99,116,41,18,114,21,0,0,0,90,13,95,99,108,97, - 115,115,105,102,121,95,112,121,99,218,4,95,105,109,112,90, - 21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,101, - 100,95,112,121,99,115,218,15,95,103,101,116,95,112,121,99, - 95,115,111,117,114,99,101,218,11,115,111,117,114,99,101,95, - 104,97,115,104,90,17,95,82,65,87,95,77,65,71,73,67, - 95,78,85,77,66,69,82,90,18,95,118,97,108,105,100,97, - 116,101,95,104,97,115,104,95,112,121,99,218,29,95,103,101, - 116,95,109,116,105,109,101,95,97,110,100,95,115,105,122,101, - 95,111,102,95,115,111,117,114,99,101,114,149,0,0,0,114, - 2,0,0,0,114,45,0,0,0,114,80,0,0,0,218,7, - 109,97,114,115,104,97,108,90,5,108,111,97,100,115,114,15, - 0,0,0,218,10,95,99,111,100,101,95,116,121,112,101,218, - 9,84,121,112,101,69,114,114,111,114,41,14,114,32,0,0, - 0,114,57,0,0,0,114,66,0,0,0,114,38,0,0,0, - 114,128,0,0,0,90,11,101,120,99,95,100,101,116,97,105, - 108,115,114,131,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,90,12,115,111,117,114,99,101,95,98,121,116,101,115,114, - 152,0,0,0,90,12,115,111,117,114,99,101,95,109,116,105, - 109,101,90,11,115,111,117,114,99,101,95,115,105,122,101,114, - 50,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,15,95,117,110,109,97,114,115,104,97,108,95, - 99,111,100,101,107,2,0,0,115,72,0,0,0,2,2,2, - 1,6,254,14,5,12,2,4,1,12,1,10,1,2,1,2, - 255,8,1,2,255,10,2,8,1,4,1,4,1,2,1,4, - 254,4,5,8,1,6,255,8,4,6,255,4,3,22,3,18, - 1,2,255,4,2,8,1,4,255,4,2,18,2,10,1,16, - 1,4,1,255,128,114,157,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, - 0,0,0,115,28,0,0,0,124,0,160,0,100,1,100,2, - 161,2,125,0,124,0,160,0,100,3,100,2,161,2,125,0, - 124,0,83,0,41,4,78,115,2,0,0,0,13,10,243,1, - 0,0,0,10,243,1,0,0,0,13,41,1,114,19,0,0, - 0,41,1,218,6,115,111,117,114,99,101,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,23,95,110,111,114, - 109,97,108,105,122,101,95,108,105,110,101,95,101,110,100,105, - 110,103,115,152,2,0,0,115,8,0,0,0,12,1,12,1, - 4,1,255,128,114,161,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,6,0,0,0,67,0, - 0,0,115,24,0,0,0,116,0,124,1,131,1,125,1,116, - 1,124,1,124,0,100,1,100,2,100,3,141,4,83,0,41, - 4,78,114,78,0,0,0,84,41,1,90,12,100,111,110,116, - 95,105,110,104,101,114,105,116,41,2,114,161,0,0,0,218, - 7,99,111,109,112,105,108,101,41,2,114,57,0,0,0,114, - 160,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,15,95,99,111,109,112,105,108,101,95,115,111, - 117,114,99,101,159,2,0,0,115,6,0,0,0,8,1,16, - 1,255,128,114,163,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0, - 0,115,68,0,0,0,116,0,160,1,124,0,100,1,63,0, - 100,2,23,0,124,0,100,3,63,0,100,4,64,0,124,0, - 100,5,64,0,124,1,100,6,63,0,124,1,100,3,63,0, - 100,7,64,0,124,1,100,5,64,0,100,8,20,0,100,9, - 100,9,100,9,102,9,161,1,83,0,41,10,78,233,9,0, - 0,0,105,188,7,0,0,233,5,0,0,0,233,15,0,0, - 0,233,31,0,0,0,233,11,0,0,0,233,63,0,0,0, - 114,88,0,0,0,114,14,0,0,0,41,2,114,133,0,0, - 0,90,6,109,107,116,105,109,101,41,2,218,1,100,114,140, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,14,95,112,97,114,115,101,95,100,111,115,116,105, - 109,101,165,2,0,0,115,20,0,0,0,4,1,10,1,10, - 1,6,1,6,1,10,1,10,1,6,1,6,249,255,128,114, - 171,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,6,0,0,0,10,0,0,0,67,0,0,0,115,110,0, - 0,0,122,82,124,1,100,1,100,0,133,2,25,0,100,2, - 118,0,115,22,74,0,130,1,124,1,100,0,100,1,133,2, - 25,0,125,1,124,0,106,0,124,1,25,0,125,2,124,2, - 100,3,25,0,125,3,124,2,100,4,25,0,125,4,124,2, - 100,5,25,0,125,5,116,1,124,4,124,3,131,2,124,5, - 102,2,87,0,83,0,4,0,116,2,116,3,116,4,102,3, - 121,108,1,0,1,0,1,0,89,0,100,6,83,0,119,0, - 41,7,78,114,14,0,0,0,169,2,218,1,99,218,1,111, - 114,165,0,0,0,233,6,0,0,0,233,3,0,0,0,41, - 2,114,0,0,0,0,114,0,0,0,0,41,5,114,28,0, - 0,0,114,171,0,0,0,114,26,0,0,0,218,10,73,110, - 100,101,120,69,114,114,111,114,114,156,0,0,0,41,6,114, - 32,0,0,0,114,13,0,0,0,114,58,0,0,0,114,133, - 0,0,0,114,134,0,0,0,90,17,117,110,99,111,109,112, - 114,101,115,115,101,100,95,115,105,122,101,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,153,0,0,0,178, - 2,0,0,115,22,0,0,0,2,1,20,2,12,1,10,1, - 8,3,8,1,8,1,16,1,18,1,8,1,255,128,114,153, + 100,4,141,2,130,1,124,10,160,5,100,5,161,1,125,11, + 116,6,124,11,131,1,100,5,107,3,114,128,116,7,100,6, + 131,1,130,1,124,11,100,0,100,7,133,2,25,0,100,8, + 107,3,114,162,116,0,100,9,124,0,155,2,157,2,124,0, + 100,4,141,2,130,1,116,8,124,11,100,10,100,11,133,2, + 25,0,131,1,125,12,116,8,124,11,100,11,100,5,133,2, + 25,0,131,1,125,13,100,5,124,12,23,0,124,13,23,0, + 125,14,124,6,124,14,55,0,125,6,122,14,124,10,160,3, + 124,6,161,1,1,0,87,0,110,32,4,0,116,4,144,1, + 121,130,1,0,1,0,1,0,116,0,100,3,124,0,155,2, + 157,2,124,0,100,4,141,2,130,1,124,10,160,5,124,4, + 161,1,125,15,116,6,124,15,131,1,124,4,107,3,144,1, + 114,38,116,4,100,12,131,1,130,1,87,0,100,0,4,0, + 4,0,131,3,1,0,110,18,49,0,144,1,115,60,119,1, + 1,0,1,0,1,0,89,0,1,0,124,3,100,1,107,2, + 144,1,114,84,124,15,83,0,122,10,116,9,131,0,125,16, + 87,0,110,22,4,0,116,10,144,1,121,128,1,0,1,0, + 1,0,116,0,100,13,131,1,130,1,124,16,124,15,100,14, + 131,2,83,0,119,0,119,0,119,0,41,15,78,114,0,0, + 0,0,122,18,110,101,103,97,116,105,118,101,32,100,97,116, + 97,32,115,105,122,101,114,94,0,0,0,114,12,0,0,0, + 114,106,0,0,0,114,100,0,0,0,114,95,0,0,0,115, + 4,0,0,0,80,75,3,4,122,23,98,97,100,32,108,111, + 99,97,108,32,102,105,108,101,32,104,101,97,100,101,114,58, + 32,233,26,0,0,0,114,105,0,0,0,122,26,122,105,112, + 105,109,112,111,114,116,58,32,99,97,110,39,116,32,114,101, + 97,100,32,100,97,116,97,114,141,0,0,0,105,241,255,255, + 255,41,11,114,3,0,0,0,114,112,0,0,0,114,113,0, + 0,0,114,114,0,0,0,114,22,0,0,0,114,116,0,0, + 0,114,55,0,0,0,114,121,0,0,0,114,1,0,0,0, + 114,146,0,0,0,114,145,0,0,0,41,17,114,29,0,0, + 0,114,58,0,0,0,90,8,100,97,116,97,112,97,116,104, + 114,132,0,0,0,114,136,0,0,0,114,127,0,0,0,114, + 139,0,0,0,114,133,0,0,0,114,134,0,0,0,114,135, + 0,0,0,114,125,0,0,0,114,126,0,0,0,114,137,0, + 0,0,114,138,0,0,0,114,129,0,0,0,90,8,114,97, + 119,95,100,97,116,97,114,143,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,56,0,0,0,53, + 2,0,0,115,70,0,0,0,20,1,8,1,8,1,14,2, + 2,2,14,1,14,1,18,1,10,1,12,1,8,1,16,2, + 18,2,16,2,16,1,12,1,8,1,2,1,14,1,14,1, + 18,1,10,1,14,1,40,1,10,2,4,2,2,3,10,1, + 14,1,8,1,10,1,2,254,2,243,2,240,255,128,114,56, 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,80,0,0, - 0,124,1,100,1,100,0,133,2,25,0,100,2,118,0,115, - 20,74,0,130,1,124,1,100,0,100,1,133,2,25,0,125, - 1,122,14,124,0,106,0,124,1,25,0,125,2,87,0,110, - 20,4,0,116,1,121,66,1,0,1,0,1,0,89,0,100, - 0,83,0,119,0,116,2,124,0,106,3,124,2,131,2,83, - 0,41,3,78,114,14,0,0,0,114,172,0,0,0,41,4, - 114,28,0,0,0,114,26,0,0,0,114,56,0,0,0,114, - 29,0,0,0,41,3,114,32,0,0,0,114,13,0,0,0, - 114,58,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,114,151,0,0,0,197,2,0,0,115,16,0, - 0,0,20,2,12,1,2,2,14,1,12,1,8,1,12,2, + 2,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, + 0,116,0,124,0,124,1,24,0,131,1,100,1,107,1,83, + 0,41,2,78,114,5,0,0,0,41,1,218,3,97,98,115, + 41,2,90,2,116,49,90,2,116,50,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,9,95,101,113,95,109, + 116,105,109,101,99,2,0,0,115,4,0,0,0,16,2,255, + 128,114,149,0,0,0,99,5,0,0,0,0,0,0,0,0, + 0,0,0,14,0,0,0,6,0,0,0,67,0,0,0,115, + 254,0,0,0,124,3,124,2,100,1,156,2,125,5,116,0, + 160,1,124,4,124,3,124,5,161,3,125,6,124,6,100,2, + 64,0,100,3,107,3,125,7,124,7,114,126,124,6,100,4, + 64,0,100,3,107,3,125,8,116,2,106,3,100,5,107,3, + 114,206,124,8,115,76,116,2,106,3,100,6,107,2,114,206, + 116,4,124,0,124,2,131,2,125,9,124,9,100,0,117,1, + 114,206,116,2,160,5,116,0,106,6,124,9,161,2,125,10, + 116,0,160,7,124,4,124,10,124,3,124,5,161,4,1,0, + 110,80,116,8,124,0,124,2,131,2,92,2,125,11,125,12, + 124,11,114,206,116,9,116,10,124,4,100,7,100,8,133,2, + 25,0,131,1,124,11,131,2,114,186,116,10,124,4,100,8, + 100,9,133,2,25,0,131,1,124,12,107,3,114,206,116,11, + 160,12,100,10,124,3,155,2,157,2,161,1,1,0,100,0, + 83,0,116,13,160,14,124,4,100,9,100,0,133,2,25,0, + 161,1,125,13,116,15,124,13,116,16,131,2,115,250,116,17, + 100,11,124,1,155,2,100,12,157,3,131,1,130,1,124,13, + 83,0,41,13,78,41,2,114,44,0,0,0,114,13,0,0, + 0,114,5,0,0,0,114,0,0,0,0,114,88,0,0,0, + 90,5,110,101,118,101,114,90,6,97,108,119,97,121,115,114, + 101,0,0,0,114,96,0,0,0,114,97,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,122,16,99,111,109,112,105,108,101,100, + 32,109,111,100,117,108,101,32,122,21,32,105,115,32,110,111, + 116,32,97,32,99,111,100,101,32,111,98,106,101,99,116,41, + 18,114,21,0,0,0,90,13,95,99,108,97,115,115,105,102, + 121,95,112,121,99,218,4,95,105,109,112,90,21,99,104,101, + 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121, + 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117, + 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104, + 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, + 66,69,82,90,18,95,118,97,108,105,100,97,116,101,95,104, + 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116, + 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95, + 115,111,117,114,99,101,114,149,0,0,0,114,2,0,0,0, + 114,45,0,0,0,114,80,0,0,0,218,7,109,97,114,115, + 104,97,108,90,5,108,111,97,100,115,114,15,0,0,0,218, + 10,95,99,111,100,101,95,116,121,112,101,218,9,84,121,112, + 101,69,114,114,111,114,41,14,114,32,0,0,0,114,57,0, + 0,0,114,66,0,0,0,114,38,0,0,0,114,128,0,0, + 0,90,11,101,120,99,95,100,101,116,97,105,108,115,114,131, + 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,90,12,115, + 111,117,114,99,101,95,98,121,116,101,115,114,152,0,0,0, + 90,12,115,111,117,114,99,101,95,109,116,105,109,101,90,11, + 115,111,117,114,99,101,95,115,105,122,101,114,50,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, + 107,2,0,0,115,72,0,0,0,2,2,2,1,6,254,14, + 5,12,2,4,1,12,1,10,1,2,1,2,255,8,1,2, + 255,10,2,8,1,4,1,4,1,2,1,4,254,4,5,8, + 1,6,255,8,4,6,255,4,3,22,3,18,1,2,255,4, + 2,8,1,4,255,4,2,18,2,10,1,16,1,4,1,255, + 128,114,157,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, + 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, + 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, + 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, + 243,1,0,0,0,13,41,1,114,19,0,0,0,41,1,218, + 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, + 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,152, + 2,0,0,115,8,0,0,0,12,1,12,1,4,1,255,128, + 114,161,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,24, + 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, + 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,78, + 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, + 101,114,105,116,41,2,114,161,0,0,0,218,7,99,111,109, + 112,105,108,101,41,2,114,57,0,0,0,114,160,0,0,0, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 15,95,99,111,109,112,105,108,101,95,115,111,117,114,99,101, + 159,2,0,0,115,6,0,0,0,8,1,16,1,255,128,114, + 163,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,11,0,0,0,67,0,0,0,115,68,0, + 0,0,116,0,160,1,124,0,100,1,63,0,100,2,23,0, + 124,0,100,3,63,0,100,4,64,0,124,0,100,5,64,0, + 124,1,100,6,63,0,124,1,100,3,63,0,100,7,64,0, + 124,1,100,5,64,0,100,8,20,0,100,9,100,9,100,9, + 102,9,161,1,83,0,41,10,78,233,9,0,0,0,105,188, + 7,0,0,233,5,0,0,0,233,15,0,0,0,233,31,0, + 0,0,233,11,0,0,0,233,63,0,0,0,114,88,0,0, + 0,114,14,0,0,0,41,2,114,133,0,0,0,90,6,109, + 107,116,105,109,101,41,2,218,1,100,114,140,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,14, + 95,112,97,114,115,101,95,100,111,115,116,105,109,101,165,2, + 0,0,115,20,0,0,0,4,1,10,1,10,1,6,1,6, + 1,10,1,10,1,6,1,6,249,255,128,114,171,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,10,0,0,0,67,0,0,0,115,110,0,0,0,122,82, + 124,1,100,1,100,0,133,2,25,0,100,2,118,0,115,22, + 74,0,130,1,124,1,100,0,100,1,133,2,25,0,125,1, + 124,0,106,0,124,1,25,0,125,2,124,2,100,3,25,0, + 125,3,124,2,100,4,25,0,125,4,124,2,100,5,25,0, + 125,5,116,1,124,4,124,3,131,2,124,5,102,2,87,0, + 83,0,4,0,116,2,116,3,116,4,102,3,121,108,1,0, + 1,0,1,0,89,0,100,6,83,0,119,0,41,7,78,114, + 14,0,0,0,169,2,218,1,99,218,1,111,114,165,0,0, + 0,233,6,0,0,0,233,3,0,0,0,41,2,114,0,0, + 0,0,114,0,0,0,0,41,5,114,28,0,0,0,114,171, + 0,0,0,114,26,0,0,0,218,10,73,110,100,101,120,69, + 114,114,111,114,114,156,0,0,0,41,6,114,32,0,0,0, + 114,13,0,0,0,114,58,0,0,0,114,133,0,0,0,114, + 134,0,0,0,90,17,117,110,99,111,109,112,114,101,115,115, + 101,100,95,115,105,122,101,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,153,0,0,0,178,2,0,0,115, + 24,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, + 8,1,16,1,18,1,6,1,2,255,255,128,114,153,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,8,0,0,0,67,0,0,0,115,80,0,0,0,124, + 1,100,1,100,0,133,2,25,0,100,2,118,0,115,20,74, + 0,130,1,124,1,100,0,100,1,133,2,25,0,125,1,122, + 14,124,0,106,0,124,1,25,0,125,2,87,0,110,18,4, + 0,116,1,121,78,1,0,1,0,1,0,89,0,100,0,83, + 0,116,2,124,0,106,3,124,2,131,2,83,0,119,0,41, + 3,78,114,14,0,0,0,114,172,0,0,0,41,4,114,28, + 0,0,0,114,26,0,0,0,114,56,0,0,0,114,29,0, + 0,0,41,3,114,32,0,0,0,114,13,0,0,0,114,58, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,151,0,0,0,197,2,0,0,115,18,0,0,0, + 20,2,12,1,2,2,14,1,12,1,6,1,12,2,2,253, 255,128,114,151,0,0,0,99,2,0,0,0,0,0,0,0, 0,0,0,0,14,0,0,0,11,0,0,0,67,0,0,0, - 115,16,1,0,0,116,0,124,0,124,1,131,2,125,2,100, + 115,18,1,0,0,116,0,124,0,124,1,131,2,125,2,100, 0,125,3,116,1,68,0,93,204,92,3,125,4,125,5,125, 6,124,2,124,4,23,0,125,7,116,2,106,3,100,1,124, 0,106,4,116,5,124,7,100,2,100,3,141,5,1,0,122, 14,124,0,106,6,124,7,25,0,125,8,87,0,110,18,4, - 0,116,7,121,90,1,0,1,0,1,0,89,0,113,18,119, - 0,124,8,100,4,25,0,125,9,116,8,124,0,106,4,124, + 0,116,7,144,1,121,16,1,0,1,0,1,0,89,0,113, + 18,124,8,100,4,25,0,125,9,116,8,124,0,106,4,124, 8,131,2,125,10,100,0,125,11,124,5,114,182,122,20,116, 9,124,0,124,9,124,7,124,1,124,10,131,5,125,11,87, 0,110,50,4,0,116,10,144,1,121,14,1,0,125,12,1, @@ -979,51 +982,52 @@ const unsigned char _Py_M__zipimport[] = { 0,1,0,83,0,124,3,114,252,100,5,124,3,155,0,157, 2,125,13,116,12,124,13,124,1,100,6,141,2,124,3,130, 2,116,12,100,7,124,1,155,2,157,2,124,1,100,6,141, - 2,130,1,119,0,41,8,78,122,13,116,114,121,105,110,103, - 32,123,125,123,125,123,125,114,88,0,0,0,41,1,90,9, - 118,101,114,98,111,115,105,116,121,114,0,0,0,0,122,20, - 109,111,100,117,108,101,32,108,111,97,100,32,102,97,105,108, - 101,100,58,32,114,62,0,0,0,114,61,0,0,0,41,13, - 114,36,0,0,0,114,91,0,0,0,114,45,0,0,0,114, - 80,0,0,0,114,29,0,0,0,114,20,0,0,0,114,28, - 0,0,0,114,26,0,0,0,114,56,0,0,0,114,157,0, - 0,0,114,79,0,0,0,114,163,0,0,0,114,3,0,0, - 0,41,14,114,32,0,0,0,114,38,0,0,0,114,13,0, - 0,0,90,12,105,109,112,111,114,116,95,101,114,114,111,114, - 114,92,0,0,0,114,93,0,0,0,114,51,0,0,0,114, - 66,0,0,0,114,58,0,0,0,114,40,0,0,0,114,128, - 0,0,0,114,50,0,0,0,90,3,101,120,99,114,81,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,48,0,0,0,212,2,0,0,115,58,0,0,0,10, - 1,4,1,14,1,8,1,22,1,2,1,14,1,12,1,6, - 1,8,2,12,1,4,1,4,1,2,1,20,1,16,1,16, - 1,8,128,10,2,8,1,2,3,8,1,14,1,4,2,10, - 1,14,1,18,2,2,241,255,128,114,48,0,0,0,41,46, - 114,86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114,2,0,0,0, - 90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116, - 108,105,98,114,45,0,0,0,114,150,0,0,0,114,112,0, - 0,0,114,154,0,0,0,114,71,0,0,0,114,133,0,0, - 0,114,69,0,0,0,90,7,95,95,97,108,108,95,95,114, - 20,0,0,0,90,15,112,97,116,104,95,115,101,112,97,114, - 97,116,111,114,115,114,18,0,0,0,114,79,0,0,0,114, - 3,0,0,0,114,25,0,0,0,218,4,116,121,112,101,114, - 74,0,0,0,114,115,0,0,0,114,117,0,0,0,114,119, - 0,0,0,90,13,95,76,111,97,100,101,114,66,97,115,105, - 99,115,114,4,0,0,0,114,91,0,0,0,114,36,0,0, - 0,114,37,0,0,0,114,35,0,0,0,114,27,0,0,0, - 114,124,0,0,0,114,144,0,0,0,114,146,0,0,0,114, - 56,0,0,0,114,149,0,0,0,114,157,0,0,0,218,8, - 95,95,99,111,100,101,95,95,114,155,0,0,0,114,161,0, - 0,0,114,163,0,0,0,114,171,0,0,0,114,153,0,0, - 0,114,151,0,0,0,114,48,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 8,60,109,111,100,117,108,101,62,1,0,0,0,115,92,0, - 0,0,4,0,8,16,16,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,2,6,3,14,1,16,3,4,4, - 8,2,4,2,4,1,4,1,18,2,0,127,0,127,12,34, - 12,1,2,1,2,1,4,252,8,9,8,4,8,9,8,31, - 2,126,2,254,4,29,8,5,8,21,8,46,8,8,10,40, - 8,5,8,7,8,6,8,13,8,19,12,15,255,128, + 2,130,1,119,0,119,0,41,8,78,122,13,116,114,121,105, + 110,103,32,123,125,123,125,123,125,114,88,0,0,0,41,1, + 90,9,118,101,114,98,111,115,105,116,121,114,0,0,0,0, + 122,20,109,111,100,117,108,101,32,108,111,97,100,32,102,97, + 105,108,101,100,58,32,114,62,0,0,0,114,61,0,0,0, + 41,13,114,36,0,0,0,114,91,0,0,0,114,45,0,0, + 0,114,80,0,0,0,114,29,0,0,0,114,20,0,0,0, + 114,28,0,0,0,114,26,0,0,0,114,56,0,0,0,114, + 157,0,0,0,114,79,0,0,0,114,163,0,0,0,114,3, + 0,0,0,41,14,114,32,0,0,0,114,38,0,0,0,114, + 13,0,0,0,90,12,105,109,112,111,114,116,95,101,114,114, + 111,114,114,92,0,0,0,114,93,0,0,0,114,51,0,0, + 0,114,66,0,0,0,114,58,0,0,0,114,40,0,0,0, + 114,128,0,0,0,114,50,0,0,0,90,3,101,120,99,114, + 81,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,114,48,0,0,0,212,2,0,0,115,60,0,0, + 0,10,1,4,1,14,1,8,1,22,1,2,1,14,1,14, + 1,4,1,8,2,12,1,4,1,4,1,2,1,20,1,16, + 1,16,1,8,128,10,2,8,1,2,3,8,1,14,1,4, + 2,10,1,14,1,18,2,2,241,2,247,255,128,114,48,0, + 0,0,41,46,114,86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114, + 2,0,0,0,90,17,95,102,114,111,122,101,110,95,105,109, + 112,111,114,116,108,105,98,114,45,0,0,0,114,150,0,0, + 0,114,112,0,0,0,114,154,0,0,0,114,71,0,0,0, + 114,133,0,0,0,114,69,0,0,0,90,7,95,95,97,108, + 108,95,95,114,20,0,0,0,90,15,112,97,116,104,95,115, + 101,112,97,114,97,116,111,114,115,114,18,0,0,0,114,79, + 0,0,0,114,3,0,0,0,114,25,0,0,0,218,4,116, + 121,112,101,114,74,0,0,0,114,115,0,0,0,114,117,0, + 0,0,114,119,0,0,0,90,13,95,76,111,97,100,101,114, + 66,97,115,105,99,115,114,4,0,0,0,114,91,0,0,0, + 114,36,0,0,0,114,37,0,0,0,114,35,0,0,0,114, + 27,0,0,0,114,124,0,0,0,114,144,0,0,0,114,146, + 0,0,0,114,56,0,0,0,114,149,0,0,0,114,157,0, + 0,0,218,8,95,95,99,111,100,101,95,95,114,155,0,0, + 0,114,161,0,0,0,114,163,0,0,0,114,171,0,0,0, + 114,153,0,0,0,114,151,0,0,0,114,48,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, + 0,115,92,0,0,0,4,0,8,16,16,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,2,6,3,14,1, + 16,3,4,4,8,2,4,2,4,1,4,1,18,2,0,127, + 0,127,12,34,12,1,2,1,2,1,4,252,8,9,8,4, + 8,9,8,31,2,126,2,254,4,29,8,5,8,21,8,46, + 8,8,10,40,8,5,8,7,8,6,8,13,8,19,12,15, + 255,128, }; From webhook-mailer at python.org Mon Dec 21 09:06:40 2020 From: webhook-mailer at python.org (asvetlov) Date: Mon, 21 Dec 2020 14:06:40 -0000 Subject: [Python-checkins] Fix typo in docstring (GH-23515) Message-ID: https://github.com/python/cpython/commit/711381dfb09fbd434cc3b404656f7fd306161a64 commit: 711381dfb09fbd434cc3b404656f7fd306161a64 branch: master author: Fernando Toledo <42938011+fernandohtr at users.noreply.github.com> committer: asvetlov date: 2020-12-21T16:06:31+02:00 summary: Fix typo in docstring (GH-23515) files: M Lib/http/client.py diff --git a/Lib/http/client.py b/Lib/http/client.py index a54679cf84d18..4eca93ef2685a 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -861,7 +861,7 @@ def set_tunnel(self, host, port=None, headers=None): the endpoint passed to `set_tunnel`. This done by sending an HTTP CONNECT request to the proxy server when the connection is established. - This method must be called before the HTML connection has been + This method must be called before the HTTP connection has been established. The headers argument should be a mapping of extra HTTP headers to send From webhook-mailer at python.org Mon Dec 21 09:29:08 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Dec 2020 14:29:08 -0000 Subject: [Python-checkins] Fix typo in docstring (GH-23515) Message-ID: https://github.com/python/cpython/commit/a3537716a582a3fd98bc2cd20dc6ec287a4730e8 commit: a3537716a582a3fd98bc2cd20dc6ec287a4730e8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T06:28:47-08:00 summary: Fix typo in docstring (GH-23515) (cherry picked from commit 711381dfb09fbd434cc3b404656f7fd306161a64) Co-authored-by: Fernando Toledo <42938011+fernandohtr at users.noreply.github.com> files: M Lib/http/client.py diff --git a/Lib/http/client.py b/Lib/http/client.py index c2ad0471bfee5..16afc871ea6d7 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -846,7 +846,7 @@ def set_tunnel(self, host, port=None, headers=None): the endpoint passed to `set_tunnel`. This done by sending an HTTP CONNECT request to the proxy server when the connection is established. - This method must be called before the HTML connection has been + This method must be called before the HTTP connection has been established. The headers argument should be a mapping of extra HTTP headers to send From webhook-mailer at python.org Mon Dec 21 09:30:06 2020 From: webhook-mailer at python.org (miss-islington) Date: Mon, 21 Dec 2020 14:30:06 -0000 Subject: [Python-checkins] Fix typo in docstring (GH-23515) Message-ID: https://github.com/python/cpython/commit/b4b323ce1afa13f3d60ddb63261743dd94986b81 commit: b4b323ce1afa13f3d60ddb63261743dd94986b81 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T06:29:57-08:00 summary: Fix typo in docstring (GH-23515) (cherry picked from commit 711381dfb09fbd434cc3b404656f7fd306161a64) Co-authored-by: Fernando Toledo <42938011+fernandohtr at users.noreply.github.com> files: M Lib/http/client.py diff --git a/Lib/http/client.py b/Lib/http/client.py index c2ad0471bfee5..16afc871ea6d7 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -846,7 +846,7 @@ def set_tunnel(self, host, port=None, headers=None): the endpoint passed to `set_tunnel`. This done by sending an HTTP CONNECT request to the proxy server when the connection is established. - This method must be called before the HTML connection has been + This method must be called before the HTTP connection has been established. The headers argument should be a mapping of extra HTTP headers to send From webhook-mailer at python.org Mon Dec 21 12:12:57 2020 From: webhook-mailer at python.org (ambv) Date: Mon, 21 Dec 2020 17:12:57 -0000 Subject: [Python-checkins] Update macOS installer ReadMe for 3.8.7 and Big Sur (GH-23882) Message-ID: https://github.com/python/cpython/commit/305eae8ebff047039469cd162fef7eab3aa04d77 commit: 305eae8ebff047039469cd162fef7eab3aa04d77 branch: 3.8 author: Ned Deily committer: ambv date: 2020-12-21T18:12:25+01:00 summary: Update macOS installer ReadMe for 3.8.7 and Big Sur (GH-23882) files: M Mac/BuildScript/resources/ReadMe.rtf diff --git a/Mac/BuildScript/resources/ReadMe.rtf b/Mac/BuildScript/resources/ReadMe.rtf index b1e972eec2d6e..b070506abd448 100644 --- a/Mac/BuildScript/resources/ReadMe.rtf +++ b/Mac/BuildScript/resources/ReadMe.rtf @@ -1,6 +1,6 @@ {\rtf1\ansi\ansicpg1252\cocoartf2513 -\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fswiss\fcharset0 Helvetica-Oblique; -\f3\fmodern\fcharset0 CourierNewPSMT;} +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fmodern\fcharset0 CourierNewPSMT; +\f3\fswiss\fcharset0 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} \margl1440\margr1440\vieww13380\viewh14600\viewkind0 @@ -10,25 +10,37 @@ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\f1\b \cf0 \ul \ulc0 Certificate verification and OpenSSL\ +\f1\b \cf0 \ul \ulc0 macOS 11 Big Sur not fully supported\ + +\f0\b0 \ulnone \ +Python 3.8.7 is not yet fully supported on macOS 11 Big Sur. It will install on macOS 11 Big Sur and will run on Apple Silicon Macs using Rosetta 2 translation. But a few features do not work correctly, most noticeably those involving searching for system libraries such as +\f2 ctypes.util.find_library() +\f0 and in +\f2 Distutils +\f0 . Python 3.9.1 or later provides full support for Big Sur and Apple Silicon Macs, including building natively on Apple Silicon Macs and support for +\f2 universal2 +\f0 binaries\ +\ + +\f1\b \ul Certificate verification and OpenSSL\ \f0\b0 \ulnone \ This package includes its own private copy of OpenSSL 1.1.1. The trust certificates in system and user keychains managed by the -\f2\i Keychain Access +\f3\i Keychain Access \f0\i0 application and the -\f2\i security +\f3\i security \f0\i0 command line utility are not used as defaults by the Python -\f3 ssl +\f2 ssl \f0 module. A sample command script is included in -\f3 /Applications/Python 3.8 +\f2 /Applications/Python 3.8 \f0 to install a curated bundle of default root certificates from the third-party -\f3 certifi +\f2 certifi \f0 package ({\field{\*\fldinst{HYPERLINK "https://pypi.org/project/certifi/"}}{\fldrslt https://pypi.org/project/certifi/}}). Double-click on -\f3 Install Certificates +\f2 Install Certificates \f0 to run it.\ \ The bundled -\f3 pip +\f2 pip \f0 has its own default certificate store for verifying download connections.\ \ @@ -60,17 +72,17 @@ Python 2.7 end-of-life [changed in 3.8.4]\ \ \f0\b0 \ulnone Python 2.7 has now reached end-of-life. As of Python 3.8.4, the -\f3 Python Launcher +\f2 Python Launcher \f0 app now has -\f3 python3 +\f2 python3 \f0 factory defaults. Also, the -\f3 Current +\f2 Current \f0 link in the -\f3 /Library/Frameworks/Python.framework/Versions +\f2 /Library/Frameworks/Python.framework/Versions \f0 directory is now updated to point to the Python 3 being installed; previously, only Python 2 installs updated -\f3 Current +\f2 Current \f0 . This change might affect developers using the framework to embed Python in their applications. If another version is desired for embedding, the -\f3 Current +\f2 Current \f0 symlink can be changed manually without affecting 3.8.x behavior.\ \f1\b \ul \ @@ -78,8 +90,8 @@ Other changes\ \f0\b0 \ulnone \ For other changes in this release, see the -\f2\i What's new +\f3\i What's new \f0\i0 section in the {\field{\*\fldinst{HYPERLINK "https://www.python.org/doc/"}}{\fldrslt Documentation Set}} for this release and its -\f2\i Release Notes +\f3\i Release Notes \f0\i0 link at {\field{\*\fldinst{HYPERLINK "https://www.python.org/downloads/"}}{\fldrslt https://www.python.org/downloads/}}.\ } \ No newline at end of file From webhook-mailer at python.org Mon Dec 21 13:09:13 2020 From: webhook-mailer at python.org (ambv) Date: Mon, 21 Dec 2020 18:09:13 -0000 Subject: [Python-checkins] Python 3.8.7 Message-ID: https://github.com/python/cpython/commit/6503f05dd59e26a9986bdea097b3da9b3546f45b commit: 6503f05dd59e26a9986bdea097b3da9b3546f45b branch: 3.8 author: ?ukasz Langa committer: ambv date: 2020-12-21T17:25:24+01:00 summary: Python 3.8.7 files: A Misc/NEWS.d/3.8.7.rst D Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst D Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst D Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst D Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst D Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst D Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst D Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst D Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst D Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst D Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst D Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst D Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst D Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst D Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst D Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst D Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst D Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 0fe82eec52435..de3694e4821d7 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -19,11 +19,11 @@ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 8 #define PY_MICRO_VERSION 7 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.8.7rc1+" +#define PY_VERSION "3.8.7" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 93b54c8ef08ed..723a9b8ac57bc 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon Dec 7 15:10:25 2020 +# Autogenerated by Sphinx on Mon Dec 21 17:22:46 2020 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -2376,8 +2376,9 @@ 'compatible\n' 'with an exception if it is the class or a base class of the ' 'exception\n' - 'object or a tuple containing an item compatible with the ' - 'exception.\n' + 'object, or a tuple containing an item that is the class or a ' + 'base\n' + 'class of the exception object.\n' '\n' 'If no except clause matches the exception, the search for an ' 'exception\n' @@ -5512,44 +5513,51 @@ ' | | formats the result in either fixed-point ' 'format or in |\n' ' | | scientific notation, depending on its ' - 'magnitude. The |\n' - ' | | precise rules are as follows: suppose that ' - 'the result |\n' + 'magnitude. A |\n' + ' | | precision of "0" is treated as equivalent ' + 'to a precision |\n' + ' | | of "1". The precise rules are as follows: ' + 'suppose that |\n' + ' | | the result formatted with presentation ' + 'type "\'e\'" and |\n' + ' | | precision "p-1" would have exponent ' + '"exp". Then, if "m <= |\n' + ' | | exp < p", where "m" is -4 for floats and ' + '-6 for |\n' + ' | | "Decimals", the number is formatted with ' + 'presentation type |\n' + ' | | "\'f\'" and precision "p-1-exp". ' + 'Otherwise, the number is |\n' ' | | formatted with presentation type "\'e\'" ' - 'and precision "p-1" |\n' - ' | | would have exponent "exp". Then, if "m <= ' - 'exp < p", where |\n' - ' | | "m" is -4 for floats and -6 for ' - '"Decimals", the number is |\n' - ' | | formatted with presentation type "\'f\'" ' 'and precision |\n' - ' | | "p-1-exp". Otherwise, the number is ' - 'formatted with |\n' - ' | | presentation type "\'e\'" and precision ' - '"p-1". In both cases |\n' - ' | | insignificant trailing zeros are removed ' - 'from the |\n' - ' | | significand, and the decimal point is also ' - 'removed if |\n' - ' | | there are no remaining digits following ' - 'it, unless the |\n' - ' | | "\'#\'" option is used. Positive and ' - 'negative infinity, |\n' - ' | | positive and negative zero, and nans, are ' - 'formatted as |\n' - ' | | "inf", "-inf", "0", "-0" and "nan" ' - 'respectively, |\n' - ' | | regardless of the precision. A precision ' - 'of "0" is |\n' - ' | | treated as equivalent to a precision of ' - '"1". With no |\n' - ' | | precision given, uses a precision of "6" ' - 'significant |\n' - ' | | digits for "float", and shows all ' - 'coefficient digits for |\n' - ' | | ' - '"Decimal". ' - '|\n' + ' | | "p-1". In both cases insignificant ' + 'trailing zeros are |\n' + ' | | removed from the significand, and the ' + 'decimal point is |\n' + ' | | also removed if there are no remaining ' + 'digits following |\n' + ' | | it, unless the "\'#\'" option is used. ' + 'With no precision |\n' + ' | | given, uses a precision of "6" significant ' + 'digits for |\n' + ' | | "float". For "Decimal", the coefficient of ' + 'the result is |\n' + ' | | formed from the coefficient digits of the ' + 'value; |\n' + ' | | scientific notation is used for values ' + 'smaller than "1e-6" |\n' + ' | | in absolute value and values where the ' + 'place value of the |\n' + ' | | least significant digit is larger than 1, ' + 'and fixed-point |\n' + ' | | notation is used otherwise. Positive and ' + 'negative |\n' + ' | | infinity, positive and negative zero, and ' + 'nans, are |\n' + ' | | formatted as "inf", "-inf", "0", "-0" and ' + '"nan" |\n' + ' | | respectively, regardless of the ' + 'precision. |\n' ' ' '+-----------+------------------------------------------------------------+\n' ' | "\'G\'" | General format. Same as "\'g\'" except ' @@ -5574,19 +5582,24 @@ 'percent sign. |\n' ' ' '+-----------+------------------------------------------------------------+\n' - ' | None | Similar to "\'g\'", except that ' - 'fixed-point notation, when |\n' - ' | | used, has at least one digit past the ' - 'decimal point. The |\n' - ' | | default precision is as high as needed to ' - 'represent the |\n' - ' | | particular value. The overall effect is to ' - 'match the |\n' - ' | | output of "str()" as altered by the other ' - 'format |\n' - ' | | ' - 'modifiers. ' - '|\n' + ' | None | For "float" this is the same as "\'g\'", ' + 'except that when |\n' + ' | | fixed-point notation is used to format the ' + 'result, it |\n' + ' | | always includes at least one digit past ' + 'the decimal point. |\n' + ' | | The precision used is as large as needed ' + 'to represent the |\n' + ' | | given value faithfully. For "Decimal", ' + 'this is the same |\n' + ' | | as either "\'g\'" or "\'G\'" depending on ' + 'the value of |\n' + ' | | "context.capitals" for the current decimal ' + 'context. The |\n' + ' | | overall effect is to match the output of ' + '"str()" as |\n' + ' | | altered by the other format ' + 'modifiers. |\n' ' ' '+-----------+------------------------------------------------------------+\n' '\n' @@ -11159,7 +11172,8 @@ 'object is ?compatible? with the exception. An object is compatible\n' 'with an exception if it is the class or a base class of the ' 'exception\n' - 'object or a tuple containing an item compatible with the exception.\n' + 'object, or a tuple containing an item that is the class or a base\n' + 'class of the exception object.\n' '\n' 'If no except clause matches the exception, the search for an ' 'exception\n' @@ -11340,7 +11354,7 @@ 'representation\n' ' in computers.\n' '\n' - ' The string representations of the Numeric classes, computed by\n' + ' The string representations of the numeric classes, computed by\n' ' "__repr__()" and "__str__()", have the following properties:\n' '\n' ' * They are valid numeric literals which, when passed to their ' diff --git a/Misc/NEWS.d/3.8.7.rst b/Misc/NEWS.d/3.8.7.rst new file mode 100644 index 0000000000000..0688e480ba6fd --- /dev/null +++ b/Misc/NEWS.d/3.8.7.rst @@ -0,0 +1,195 @@ +.. bpo: 32381 +.. date: 2020-12-04-17-17-44 +.. nonce: NY5t2S +.. release date: 2020-12-21 +.. section: Core and Builtins + +Fix encoding name when running a ``.pyc`` file on Windows: +:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to decode +the filename. + +.. + +.. bpo: 42536 +.. date: 2020-12-02-20-23-31 +.. nonce: Kx3ZOu +.. section: Core and Builtins + +Several built-in and standard library types now ensure that their internal +result tuples are always tracked by the :term:`garbage collector `: + +- :meth:`collections.OrderedDict.items() ` + +- :meth:`dict.items` + +- :func:`enumerate` + +- :func:`functools.reduce` + +- :func:`itertools.combinations` + +- :func:`itertools.combinations_with_replacement` + +- :func:`itertools.permutations` + +- :func:`itertools.product` + +- :func:`itertools.zip_longest` + +- :func:`zip` + +Previously, they could have become untracked by a prior garbage collection. +Patch by Brandt Bucher. + +.. + +.. bpo: 42630 +.. date: 2020-12-15-17-51-27 +.. nonce: jf4jBl +.. section: Library + +:mod:`tkinter` functions and constructors which need a default root window +raise now :exc:`RuntimeError` with descriptive message instead of obscure +:exc:`AttributeError` or :exc:`NameError` if it is not created yet or cannot +be created automatically. + +.. + +.. bpo: 42644 +.. date: 2020-12-15-10-00-04 +.. nonce: XgLCNx +.. section: Library + +`logging.disable` will now validate the types and value of its parameter. It +also now accepts strings representing the levels (as does `loging.setLevel`) +instead of only the numerical values. + +.. + +.. bpo: 36541 +.. date: 2020-12-14-08-23-57 +.. nonce: qdEtZv +.. section: Library + +Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only argument +syntax. + +.. + +.. bpo: 42375 +.. date: 2020-11-19-04-13-53 +.. nonce: U8bp4s +.. section: Library + +subprocess module update for DragonFlyBSD support. + +.. + +.. bpo: 39825 +.. date: 2020-10-20-08-28-26 +.. nonce: n6KnG0 +.. section: Library + +Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected +full ``platform_tag.extension`` format. Previously it was hard-coded to +``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result +in something like ``.cp38-win_amd64.pyd``. This brings windows into +conformance with the other platforms. + +.. + +.. bpo: 39101 +.. date: 2020-10-11-21-43-03 +.. nonce: -I49Pm +.. section: Library + +Fixed tests using IsolatedAsyncioTestCase from hanging on BaseExceptions. + +.. + +.. bpo: 41907 +.. date: 2020-10-02-10-19-49 +.. nonce: wiIEsz +.. section: Library + +fix `format()` behavior for `IntFlag` + +.. + +.. bpo: 41889 +.. date: 2020-10-01-16-17-11 +.. nonce: qLkNh8 +.. section: Library + +Enum: fix regression involving inheriting a multiply-inherited enum + +.. + +.. bpo: 41891 +.. date: 2020-09-30-13-35-29 +.. nonce: pNAeYI +.. section: Library + +Ensure asyncio.wait_for waits for task completion + +.. + +.. bpo: 40219 +.. date: 2020-07-13-19-43-11 +.. nonce: MUoJEP +.. section: Library + +Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to prevent hiding +part of the content label. + +.. + +.. bpo: 40084 +.. date: 2020-03-29-21-32-00 +.. nonce: MCYwcv +.. section: Library + +Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes as well as +methods. + +.. + +.. bpo: 17140 +.. date: 2020-12-16-21-06-16 +.. nonce: 1leSEg +.. section: Documentation + +Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. + +.. + +.. bpo: 42604 +.. date: 2020-12-20-02-35-28 +.. nonce: gRd89w +.. section: Build + +Now all platforms use a value for the "EXT_SUFFIX" build variable derived +from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" +instead of ".so"). Previosuly only Linux, Mac and VxWorks were using a value +for "EXT_SUFFIX" that included "SOABI". + +.. + +.. bpo: 42598 +.. date: 2020-12-13-14-43-10 +.. nonce: 7ipr5H +.. section: Build + +Fix implicit function declarations in configure which could have resulted in +incorrect configuration checks. Patch contributed by Joshua Root. + +.. + +.. bpo: 42613 +.. date: 2020-12-16-09-10-32 +.. nonce: J-jnm5 +.. section: Tools/Demos + +Fix ``freeze.py`` tool to use the prope config and library directories. +Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst b/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst deleted file mode 100644 index 7dafc105c45ea..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-12-13-14-43-10.bpo-42598.7ipr5H.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix implicit function declarations in configure which could have resulted in -incorrect configuration checks. Patch contributed by Joshua Root. diff --git a/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst b/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst deleted file mode 100644 index caaada41cf9ba..0000000000000 --- a/Misc/NEWS.d/next/Build/2020-12-20-02-35-28.bpo-42604.gRd89w.rst +++ /dev/null @@ -1,4 +0,0 @@ -Now all platforms use a value for the "EXT_SUFFIX" build variable derived -from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now ".cpython-310d.so" -instead of ".so"). Previosuly only Linux, Mac and VxWorks were using a value -for "EXT_SUFFIX" that included "SOABI". diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst deleted file mode 100644 index 6ccacab1f64f6..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-02-20-23-31.bpo-42536.Kx3ZOu.rst +++ /dev/null @@ -1,26 +0,0 @@ -Several built-in and standard library types now ensure that their internal -result tuples are always tracked by the :term:`garbage collector -`: - -- :meth:`collections.OrderedDict.items() ` - -- :meth:`dict.items` - -- :func:`enumerate` - -- :func:`functools.reduce` - -- :func:`itertools.combinations` - -- :func:`itertools.combinations_with_replacement` - -- :func:`itertools.permutations` - -- :func:`itertools.product` - -- :func:`itertools.zip_longest` - -- :func:`zip` - -Previously, they could have become untracked by a prior garbage collection. -Patch by Brandt Bucher. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst deleted file mode 100644 index f4d84f9d848d4..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-12-04-17-17-44.bpo-32381.NY5t2S.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix encoding name when running a ``.pyc`` file on Windows: -:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to decode -the filename. diff --git a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst b/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst deleted file mode 100644 index cb1fd23a56e63..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-12-16-21-06-16.bpo-17140.1leSEg.rst +++ /dev/null @@ -1 +0,0 @@ -Add documentation for the :class:`multiprocessing.pool.ThreadPool` class. diff --git a/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst b/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst deleted file mode 100644 index 65ff4ce36e82e..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-03-29-21-32-00.bpo-40084.MCYwcv.rst +++ /dev/null @@ -1 +0,0 @@ -Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes as well as methods. diff --git a/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst b/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst deleted file mode 100644 index aedc5c49b4087..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-07-13-19-43-11.bpo-40219.MUoJEP.rst +++ /dev/null @@ -1 +0,0 @@ -Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to prevent hiding part of the content label. diff --git a/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst b/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst deleted file mode 100644 index 75c2512780315..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-30-13-35-29.bpo-41891.pNAeYI.rst +++ /dev/null @@ -1 +0,0 @@ -Ensure asyncio.wait_for waits for task completion diff --git a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst b/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst deleted file mode 100644 index 768865ae62116..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-01-16-17-11.bpo-41889.qLkNh8.rst +++ /dev/null @@ -1 +0,0 @@ -Enum: fix regression involving inheriting a multiply-inherited enum diff --git a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst b/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst deleted file mode 100644 index aa337b38046e6..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-02-10-19-49.bpo-41907.wiIEsz.rst +++ /dev/null @@ -1 +0,0 @@ -fix `format()` behavior for `IntFlag` diff --git a/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst b/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst deleted file mode 100644 index a571e8343cde1..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-11-21-43-03.bpo-39101.-I49Pm.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed tests using IsolatedAsyncioTestCase from hanging on BaseExceptions. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst b/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst deleted file mode 100644 index c337731f43584..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-10-20-08-28-26.bpo-39825.n6KnG0.rst +++ /dev/null @@ -1,5 +0,0 @@ -Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to the expected -full ``platform_tag.extension`` format. Previously it was hard-coded to -``.pyd``, now it is compatible with ``distutils.sysconfig`` and will result -in something like ``.cp38-win_amd64.pyd``. This brings windows into -conformance with the other platforms. diff --git a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst b/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst deleted file mode 100644 index 6d8c80c2f2c0a..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-11-19-04-13-53.bpo-42375.U8bp4s.rst +++ /dev/null @@ -1 +0,0 @@ -subprocess module update for DragonFlyBSD support. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst b/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst deleted file mode 100644 index 5678d8c595ca0..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-14-08-23-57.bpo-36541.qdEtZv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only argument -syntax. diff --git a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst b/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst deleted file mode 100644 index f58b58e4002ad..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-15-10-00-04.bpo-42644.XgLCNx.rst +++ /dev/null @@ -1,3 +0,0 @@ -`logging.disable` will now validate the types and value of its parameter. It -also now accepts strings representing the levels (as does `loging.setLevel`) -instead of only the numerical values. diff --git a/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst b/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst deleted file mode 100644 index 4b4a520931fda..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-15-17-51-27.bpo-42630.jf4jBl.rst +++ /dev/null @@ -1,4 +0,0 @@ -:mod:`tkinter` functions and constructors which need a default root window -raise now :exc:`RuntimeError` with descriptive message instead of obscure -:exc:`AttributeError` or :exc:`NameError` if it is not created yet or cannot -be created automatically. diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst deleted file mode 100644 index 140ff8255b96b..0000000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2020-12-16-09-10-32.bpo-42613.J-jnm5.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix ``freeze.py`` tool to use the prope config and library directories. -Patch by Victor Stinner. diff --git a/README.rst b/README.rst index 9ad101c39b2c5..f6fd4824f0a9b 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.8.7rc1 -=============================== +This is Python version 3.8.7 +============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.8 :alt: CPython build status on Travis CI From webhook-mailer at python.org Mon Dec 21 18:46:00 2020 From: webhook-mailer at python.org (rhettinger) Date: Mon, 21 Dec 2020 23:46:00 -0000 Subject: [Python-checkins] bpo-42008: Fix internal _random.Random() seeding for the one argument case (GH-22668) Message-ID: https://github.com/python/cpython/commit/b8fde8b5418b75d2935d0ff93b20d45d5350f206 commit: b8fde8b5418b75d2935d0ff93b20d45d5350f206 branch: master author: AMIR <31338382+amiremohamadi at users.noreply.github.com> committer: rhettinger date: 2020-12-21T15:45:50-08:00 summary: bpo-42008: Fix internal _random.Random() seeding for the one argument case (GH-22668) files: A Misc/NEWS.d/next/Core and Builtins/2020-10-12-14-51-59.bpo-42008.ijWw2I.rst M Lib/test/test_random.py M Modules/_randommodule.c diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index 327bfa3bbda1b..e7f911d12875e 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -414,6 +414,15 @@ def test_bug_41052(self): r = _random.Random() self.assertRaises(TypeError, pickle.dumps, r, proto) + @test.support.cpython_only + def test_bug_42008(self): + # _random.Random should call seed with first element of arg tuple + import _random + r1 = _random.Random() + r1.seed(8675309) + r2 = _random.Random(8675309) + self.assertEqual(r1.random(), r2.random()) + def test_bug_1727780(self): # verify that version-2-pickles can be loaded # fine, whether they are created on 32-bit or 64-bit diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-12-14-51-59.bpo-42008.ijWw2I.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-12-14-51-59.bpo-42008.ijWw2I.rst new file mode 100644 index 0000000000000..1b50a0ef3b02d --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-10-12-14-51-59.bpo-42008.ijWw2I.rst @@ -0,0 +1 @@ +Fix _random.Random() seeding. diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c index ad4fd474428d4..99be69c06556e 100644 --- a/Modules/_randommodule.c +++ b/Modules/_randommodule.c @@ -519,6 +519,7 @@ random_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { RandomObject *self; PyObject *tmp; + PyObject *arg = NULL; _randomstate *state = _randomstate_type(type); if (type == (PyTypeObject*)state->Random_Type && @@ -529,12 +530,22 @@ random_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self = (RandomObject *)PyType_GenericAlloc(type, 0); if (self == NULL) return NULL; - tmp = random_seed(self, args); + + if (PyTuple_GET_SIZE(args) > 1) { + PyErr_SetString(PyExc_TypeError, "Random() requires 0 or 1 argument"); + return NULL; + } + + if (PyTuple_GET_SIZE(args) == 1) + arg = PyTuple_GET_ITEM(args, 0); + + tmp = random_seed(self, arg); if (tmp == NULL) { Py_DECREF(self); return NULL; } Py_DECREF(tmp); + return (PyObject *)self; } From webhook-mailer at python.org Mon Dec 21 19:15:55 2020 From: webhook-mailer at python.org (rhettinger) Date: Tue, 22 Dec 2020 00:15:55 -0000 Subject: [Python-checkins] bpo-39159: Declare error that might be raised from literal_eval (GH-19899) Message-ID: https://github.com/python/cpython/commit/fbc7723778be01b8f3bb72d2dcac15ab9fbb9923 commit: fbc7723778be01b8f3bb72d2dcac15ab9fbb9923 branch: master author: Batuhan Taskaya committer: rhettinger date: 2020-12-21T16:15:40-08:00 summary: bpo-39159: Declare error that might be raised from literal_eval (GH-19899) files: M Doc/library/ast.rst diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst index 8a5c6ec5f1279..9149a53e0dca8 100644 --- a/Doc/library/ast.rst +++ b/Doc/library/ast.rst @@ -1576,7 +1576,7 @@ and classes for traversing abstract syntax trees: Safely evaluate an expression node or a string containing a Python literal or container display. The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, - dicts, sets, booleans, and ``None``. + dicts, sets, booleans, ``None`` and ``Ellipsis``. This can be used for safely evaluating strings containing Python values from untrusted sources without the need to parse the values oneself. It is not @@ -1588,6 +1588,10 @@ and classes for traversing abstract syntax trees: sufficiently large/complex string due to stack depth limitations in Python's AST compiler. + It can raise :exc:`ValueError`, :exc:`TypeError`, :exc:`SyntaxError`, + :exc:`MemoryError` and :exc:`RecursionError` depending on the malformed + input. + .. versionchanged:: 3.2 Now allows bytes and set literals. From webhook-mailer at python.org Mon Dec 21 21:52:50 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 02:52:50 -0000 Subject: [Python-checkins] [3.9] [doc] Fix erroneous backslashes in signatures and names (GH-23658) (GH-23827) Message-ID: https://github.com/python/cpython/commit/e89993cff4e60fcf32643fc613d0544f3dbcd98a commit: e89993cff4e60fcf32643fc613d0544f3dbcd98a branch: 3.9 author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T18:52:19-08:00 summary: [3.9] [doc] Fix erroneous backslashes in signatures and names (GH-23658) (GH-23827) The issue being resolved is shown in the 3.10 docs (if you select docs for older versions you won't see a visual glitch). The newer sphinx version that produces the 3.10 docs doesn't treat the backslash to escape things in some situations it previously did.. (cherry picked from commit dcc997cd28ab33ebac44182ee55533c1b37689f7) Co-authored-by: Andre Delfino files: M Doc/library/asyncio-eventloop.rst M Doc/library/asyncio-future.rst M Doc/library/asyncio-policy.rst M Doc/library/asyncio-stream.rst M Doc/library/asyncio-subprocess.rst M Doc/library/asyncio-task.rst M Doc/library/base64.rst M Doc/library/compileall.rst M Doc/library/concurrent.futures.rst M Doc/library/contextvars.rst M Doc/library/ctypes.rst M Doc/library/difflib.rst M Doc/library/email.header.rst M Doc/library/email.policy.rst M Doc/library/functions.rst M Doc/library/http.cookies.rst M Doc/library/importlib.rst M Doc/library/inspect.rst M Doc/library/io.rst M Doc/library/lzma.rst M Doc/library/os.rst M Doc/library/pickle.rst M Doc/library/plistlib.rst M Doc/library/shutil.rst M Doc/library/stdtypes.rst M Doc/library/subprocess.rst M Doc/library/sysconfig.rst M Doc/library/tarfile.rst M Doc/library/test.rst M Doc/library/warnings.rst M Doc/library/winreg.rst M Doc/library/xml.dom.minidom.rst diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index b1e73189a7a4c..be43ca4aebe81 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -321,7 +321,7 @@ Creating Futures and Tasks .. versionadded:: 3.5.2 -.. method:: loop.create_task(coro, \*, name=None) +.. method:: loop.create_task(coro, *, name=None) Schedule the execution of a :ref:`coroutine`. Return a :class:`Task` object. @@ -356,7 +356,7 @@ Opening network connections ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_connection(protocol_factory, \ - host=None, port=None, \*, ssl=None, \ + host=None, port=None, *, ssl=None, \ family=0, proto=0, flags=0, sock=None, \ local_addr=None, server_hostname=None, \ ssl_handshake_timeout=None, \ @@ -482,7 +482,7 @@ Opening network connections that can be used directly in async/await code. .. coroutinemethod:: loop.create_datagram_endpoint(protocol_factory, \ - local_addr=None, remote_addr=None, \*, \ + local_addr=None, remote_addr=None, *, \ family=0, proto=0, flags=0, \ reuse_address=None, reuse_port=None, \ allow_broadcast=None, sock=None) @@ -559,7 +559,7 @@ Opening network connections Added support for Windows. .. coroutinemethod:: loop.create_unix_connection(protocol_factory, \ - path=None, \*, ssl=None, sock=None, \ + path=None, *, ssl=None, sock=None, \ server_hostname=None, ssl_handshake_timeout=None) Create a Unix connection. @@ -592,7 +592,7 @@ Creating network servers ^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_server(protocol_factory, \ - host=None, port=None, \*, \ + host=None, port=None, *, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, \ sock=None, backlog=100, ssl=None, \ @@ -683,7 +683,7 @@ Creating network servers .. coroutinemethod:: loop.create_unix_server(protocol_factory, path=None, \ - \*, sock=None, backlog=100, ssl=None, \ + *, sock=None, backlog=100, ssl=None, \ ssl_handshake_timeout=None, start_serving=True) Similar to :meth:`loop.create_server` but works with the @@ -708,7 +708,7 @@ Creating network servers The *path* parameter can now be a :class:`~pathlib.Path` object. .. coroutinemethod:: loop.connect_accepted_socket(protocol_factory, \ - sock, \*, ssl=None, ssl_handshake_timeout=None) + sock, *, ssl=None, ssl_handshake_timeout=None) Wrap an already accepted connection into a transport/protocol pair. @@ -773,7 +773,7 @@ TLS Upgrade ^^^^^^^^^^^ .. coroutinemethod:: loop.start_tls(transport, protocol, \ - sslcontext, \*, server_side=False, \ + sslcontext, *, server_side=False, \ server_hostname=None, ssl_handshake_timeout=None) Upgrade an existing transport-based connection to TLS. @@ -806,7 +806,7 @@ TLS Upgrade Watching file descriptors ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. method:: loop.add_reader(fd, callback, \*args) +.. method:: loop.add_reader(fd, callback, *args) Start monitoring the *fd* file descriptor for read availability and invoke *callback* with the specified arguments once *fd* is available for @@ -816,7 +816,7 @@ Watching file descriptors Stop monitoring the *fd* file descriptor for read availability. -.. method:: loop.add_writer(fd, callback, \*args) +.. method:: loop.add_writer(fd, callback, *args) Start monitoring the *fd* file descriptor for write availability and invoke *callback* with the specified arguments once *fd* is available for @@ -930,7 +930,7 @@ convenient. :meth:`loop.create_server` and :func:`start_server`. .. coroutinemethod:: loop.sock_sendfile(sock, file, offset=0, count=None, \ - \*, fallback=True) + *, fallback=True) Send a file using high-performance :mod:`os.sendfile` if possible. Return the total number of bytes sent. @@ -964,7 +964,7 @@ convenient. DNS ^^^ -.. coroutinemethod:: loop.getaddrinfo(host, port, \*, family=0, \ +.. coroutinemethod:: loop.getaddrinfo(host, port, *, family=0, \ type=0, proto=0, flags=0) Asynchronous version of :meth:`socket.getaddrinfo`. @@ -1029,7 +1029,7 @@ Working with pipes Unix signals ^^^^^^^^^^^^ -.. method:: loop.add_signal_handler(signum, callback, \*args) +.. method:: loop.add_signal_handler(signum, callback, *args) Set *callback* as the handler for the *signum* signal. @@ -1064,7 +1064,7 @@ Unix signals Executing code in thread or process pools ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. awaitablemethod:: loop.run_in_executor(executor, func, \*args) +.. awaitablemethod:: loop.run_in_executor(executor, func, *args) Arrange for *func* to be called in the specified executor. @@ -1234,9 +1234,9 @@ async/await code consider using the high-level subprocesses. See :ref:`Subprocess Support on Windows ` for details. -.. coroutinemethod:: loop.subprocess_exec(protocol_factory, \*args, \ +.. coroutinemethod:: loop.subprocess_exec(protocol_factory, *args, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from one or more string arguments specified by *args*. @@ -1316,9 +1316,9 @@ async/await code consider using the high-level conforms to the :class:`asyncio.SubprocessTransport` base class and *protocol* is an object instantiated by the *protocol_factory*. -.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, \*, \ +.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, *, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from *cmd*, which can be a :class:`str` or a :class:`bytes` string encoded to the diff --git a/Doc/library/asyncio-future.rst b/Doc/library/asyncio-future.rst index e1ac18eaf0988..939d4c1a84523 100644 --- a/Doc/library/asyncio-future.rst +++ b/Doc/library/asyncio-future.rst @@ -31,7 +31,7 @@ Future Functions .. versionadded:: 3.5 -.. function:: ensure_future(obj, \*, loop=None) +.. function:: ensure_future(obj, *, loop=None) Return: @@ -58,7 +58,7 @@ Future Functions The function accepts any :term:`awaitable` object. -.. function:: wrap_future(future, \*, loop=None) +.. function:: wrap_future(future, *, loop=None) Wrap a :class:`concurrent.futures.Future` object in a :class:`asyncio.Future` object. @@ -67,7 +67,7 @@ Future Functions Future Object ============= -.. class:: Future(\*, loop=None) +.. class:: Future(*, loop=None) A Future represents an eventual result of an asynchronous operation. Not thread-safe. diff --git a/Doc/library/asyncio-policy.rst b/Doc/library/asyncio-policy.rst index 5e69525e90dd2..ef6a0588506b5 100644 --- a/Doc/library/asyncio-policy.rst +++ b/Doc/library/asyncio-policy.rst @@ -159,7 +159,7 @@ implementation used by the asyncio event loop: .. class:: AbstractChildWatcher - .. method:: add_child_handler(pid, callback, \*args) + .. method:: add_child_handler(pid, callback, *args) Register a new child handler. diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index b76ed379c7f4c..584bf10fc042b 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -48,7 +48,7 @@ The following top-level asyncio functions can be used to create and work with streams: -.. coroutinefunction:: open_connection(host=None, port=None, \*, \ +.. coroutinefunction:: open_connection(host=None, port=None, *, \ loop=None, limit=None, ssl=None, family=0, \ proto=0, flags=0, sock=None, local_addr=None, \ server_hostname=None, ssl_handshake_timeout=None) @@ -74,7 +74,7 @@ and work with streams: The *ssl_handshake_timeout* parameter. .. coroutinefunction:: start_server(client_connected_cb, host=None, \ - port=None, \*, loop=None, limit=None, \ + port=None, *, loop=None, limit=None, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, sock=None, \ backlog=100, ssl=None, reuse_address=None, \ @@ -109,7 +109,7 @@ and work with streams: .. rubric:: Unix Sockets -.. coroutinefunction:: open_unix_connection(path=None, \*, loop=None, \ +.. coroutinefunction:: open_unix_connection(path=None, *, loop=None, \ limit=None, ssl=None, sock=None, \ server_hostname=None, ssl_handshake_timeout=None) @@ -132,7 +132,7 @@ and work with streams: .. coroutinefunction:: start_unix_server(client_connected_cb, path=None, \ - \*, loop=None, limit=None, sock=None, \ + *, loop=None, limit=None, sock=None, \ backlog=100, ssl=None, ssl_handshake_timeout=None, \ start_serving=True) @@ -192,7 +192,7 @@ StreamReader can be read. Use the :attr:`IncompleteReadError.partial` attribute to get the partially read data. - .. coroutinemethod:: readuntil(separator=b'\\n') + .. coroutinemethod:: readuntil(separator=b'\n') Read data from the stream until *separator* is found. diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index b0330349dfb65..fb98552c86d4c 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -61,9 +61,9 @@ See also the `Examples`_ subsection. Creating Subprocesses ===================== -.. coroutinefunction:: create_subprocess_exec(program, \*args, stdin=None, \ +.. coroutinefunction:: create_subprocess_exec(program, *args, stdin=None, \ stdout=None, stderr=None, loop=None, \ - limit=None, \*\*kwds) + limit=None, **kwds) Create a subprocess. @@ -82,7 +82,7 @@ Creating Subprocesses .. coroutinefunction:: create_subprocess_shell(cmd, stdin=None, \ stdout=None, stderr=None, loop=None, \ - limit=None, \*\*kwds) + limit=None, **kwds) Run the *cmd* shell command. diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index c638f1263fdaa..201678b0a3d57 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -210,7 +210,7 @@ is :meth:`loop.run_in_executor`. Running an asyncio Program ========================== -.. function:: run(coro, \*, debug=False) +.. function:: run(coro, *, debug=False) Execute the :term:`coroutine` *coro* and return the result. @@ -247,7 +247,7 @@ Running an asyncio Program Creating Tasks ============== -.. function:: create_task(coro, \*, name=None) +.. function:: create_task(coro, *, name=None) Wrap the *coro* :ref:`coroutine ` into a :class:`Task` and schedule its execution. Return the Task object. @@ -283,7 +283,7 @@ Creating Tasks Sleeping ======== -.. coroutinefunction:: sleep(delay, result=None, \*, loop=None) +.. coroutinefunction:: sleep(delay, result=None, *, loop=None) Block for *delay* seconds. @@ -319,7 +319,7 @@ Sleeping Running Tasks Concurrently ========================== -.. awaitablefunction:: gather(\*aws, loop=None, return_exceptions=False) +.. awaitablefunction:: gather(*aws, loop=None, return_exceptions=False) Run :ref:`awaitable objects ` in the *aws* sequence *concurrently*. @@ -403,7 +403,7 @@ Running Tasks Concurrently Shielding From Cancellation =========================== -.. awaitablefunction:: shield(aw, \*, loop=None) +.. awaitablefunction:: shield(aw, *, loop=None) Protect an :ref:`awaitable object ` from being :meth:`cancelled `. @@ -443,7 +443,7 @@ Shielding From Cancellation Timeouts ======== -.. coroutinefunction:: wait_for(aw, timeout, \*, loop=None) +.. coroutinefunction:: wait_for(aw, timeout, *, loop=None) Wait for the *aw* :ref:`awaitable ` to complete with a timeout. @@ -500,7 +500,7 @@ Timeouts Waiting Primitives ================== -.. coroutinefunction:: wait(aws, \*, loop=None, timeout=None,\ +.. coroutinefunction:: wait(aws, *, loop=None, timeout=None,\ return_when=ALL_COMPLETED) Run :ref:`awaitable objects ` in the *aws* @@ -590,7 +590,7 @@ Waiting Primitives deprecated. -.. function:: as_completed(aws, \*, loop=None, timeout=None) +.. function:: as_completed(aws, *, loop=None, timeout=None) Run :ref:`awaitable objects ` in the *aws* iterable concurrently. Return an iterator of coroutines. @@ -613,7 +613,7 @@ Waiting Primitives Running in Threads ================== -.. coroutinefunction:: to_thread(func, /, \*args, \*\*kwargs) +.. coroutinefunction:: to_thread(func, /, *args, **kwargs) Asynchronously run function *func* in a separate thread. @@ -743,7 +743,7 @@ Introspection Task Object =========== -.. class:: Task(coro, \*, loop=None, name=None) +.. class:: Task(coro, *, loop=None, name=None) A :class:`Future-like ` object that runs a Python :ref:`coroutine `. Not thread-safe. @@ -909,7 +909,7 @@ Task Object See the documentation of :meth:`Future.remove_done_callback` for more details. - .. method:: get_stack(\*, limit=None) + .. method:: get_stack(*, limit=None) Return the list of stack frames for this Task. @@ -930,7 +930,7 @@ Task Object stack are returned, but the oldest frames of a traceback are returned. (This matches the behavior of the traceback module.) - .. method:: print_stack(\*, limit=None, file=None) + .. method:: print_stack(*, limit=None, file=None) Print the stack or traceback for this Task. diff --git a/Doc/library/base64.rst b/Doc/library/base64.rst index 1ff22a00d6199..e6934431626a3 100644 --- a/Doc/library/base64.rst +++ b/Doc/library/base64.rst @@ -178,7 +178,7 @@ The modern interface provides: .. versionadded:: 3.4 -.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \\t\\n\\r\\v') +.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v') Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and return the decoded :class:`bytes`. diff --git a/Doc/library/compileall.rst b/Doc/library/compileall.rst index 9b914b1f0d9c6..5c6e68f930475 100644 --- a/Doc/library/compileall.rst +++ b/Doc/library/compileall.rst @@ -148,7 +148,7 @@ runtime. Public functions ---------------- -.. function:: compile_dir(dir, maxlevels=sys.getrecursionlimit(), ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1, invalidation_mode=None, \*, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) +.. function:: compile_dir(dir, maxlevels=sys.getrecursionlimit(), ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, workers=1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) Recursively descend the directory tree named by *dir*, compiling all :file:`.py` files along the way. Return a true value if all the files compiled successfully, @@ -231,7 +231,7 @@ Public functions Added *stripdir*, *prependdir*, *limit_sl_dest* and *hardlink_dupes* arguments. Default value of *maxlevels* was changed from ``10`` to ``sys.getrecursionlimit()`` -.. function:: compile_file(fullname, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, invalidation_mode=None, \*, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) +.. function:: compile_file(fullname, ddir=None, force=False, rx=None, quiet=0, legacy=False, optimize=-1, invalidation_mode=None, *, stripdir=None, prependdir=None, limit_sl_dest=None, hardlink_dupes=False) Compile the file with path *fullname*. Return a true value if the file compiled successfully, and a false value otherwise. diff --git a/Doc/library/concurrent.futures.rst b/Doc/library/concurrent.futures.rst index 61d6c1143cfdd..d57f8ce23d12c 100644 --- a/Doc/library/concurrent.futures.rst +++ b/Doc/library/concurrent.futures.rst @@ -67,7 +67,7 @@ Executor Objects .. versionchanged:: 3.5 Added the *chunksize* argument. - .. method:: shutdown(wait=True, \*, cancel_futures=False) + .. method:: shutdown(wait=True, *, cancel_futures=False) Signal the executor that it should free any resources that it is using when the currently pending futures are done executing. Calls to diff --git a/Doc/library/contextvars.rst b/Doc/library/contextvars.rst index 8805661c456ed..14ac47f4c9eb1 100644 --- a/Doc/library/contextvars.rst +++ b/Doc/library/contextvars.rst @@ -26,7 +26,7 @@ See also :pep:`567` for additional details. Context Variables ----------------- -.. class:: ContextVar(name, [\*, default]) +.. class:: ContextVar(name, [*, default]) This class is used to declare a new Context Variable, e.g.:: @@ -146,7 +146,7 @@ Manual Context Management Context implements the :class:`collections.abc.Mapping` interface. - .. method:: run(callable, \*args, \*\*kwargs) + .. method:: run(callable, *args, **kwargs) Execute ``callable(*args, **kwargs)`` code in the context object the *run* method is called on. Return the result of the execution diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index bf32d3e549b48..7313148721dac 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -2508,7 +2508,7 @@ other data types containing pointer type fields. Arrays and pointers ^^^^^^^^^^^^^^^^^^^ -.. class:: Array(\*args) +.. class:: Array(*args) Abstract base class for arrays. diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index aa08988c8b36f..a5ee0fb538979 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -149,7 +149,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. contains a good example of its use. -.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in context diff format. @@ -279,7 +279,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. emu -.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in unified diff format. @@ -321,7 +321,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. See :ref:`difflib-interface` for a more detailed example. -.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\\n') +.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\n') Compare *a* and *b* (lists of bytes objects) using *dfunc*; yield a sequence of delta lines (also bytes) in the format returned by *dfunc*. diff --git a/Doc/library/email.header.rst b/Doc/library/email.header.rst index 07152c224f2ff..e093f138936b3 100644 --- a/Doc/library/email.header.rst +++ b/Doc/library/email.header.rst @@ -116,7 +116,7 @@ Here is the :class:`Header` class description: if *s* is a byte string. - .. method:: encode(splitchars=';, \\t', maxlinelen=None, linesep='\\n') + .. method:: encode(splitchars=';, \t', maxlinelen=None, linesep='\n') Encode a message header into an RFC-compliant format, possibly wrapping long lines and encapsulating non-ASCII parts in base64 or quoted-printable diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index 8e7076259810f..bf53b9520fc72 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -210,7 +210,7 @@ added matters. To illustrate:: :meth:`register_defect` method. - .. attribute:: mangle_from\_ + .. attribute:: mangle_from_ If :const:`True`, lines starting with *"From "* in the body are escaped by putting a ``>`` in front of them. This parameter is used when diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 9c12b6c48d8ff..548ef59a47c6d 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1316,7 +1316,7 @@ are always available. They are listed here in alphabetical order. supported. -.. function:: print(*objects, sep=' ', end='\\n', file=sys.stdout, flush=False) +.. function:: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) Print *objects* to the text stream *file*, separated by *sep* and followed by *end*. *sep*, *end*, *file* and *flush*, if present, must be given as keyword diff --git a/Doc/library/http.cookies.rst b/Doc/library/http.cookies.rst index 17792b200599b..a2c1eb00d8b33 100644 --- a/Doc/library/http.cookies.rst +++ b/Doc/library/http.cookies.rst @@ -93,7 +93,7 @@ Cookie Objects :meth:`value_decode` are inverses on the range of *value_decode*. -.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\\r\\n') +.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\r\n') Return a string representation suitable to be sent as HTTP headers. *attrs* and *header* are sent to each :class:`Morsel`'s :meth:`output` method. *sep* is used diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index 9027ba58acb20..305bb54d5271d 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -1135,7 +1135,7 @@ find and load modules. directory for ``''`` (i.e. the empty string). -.. class:: FileFinder(path, \*loader_details) +.. class:: FileFinder(path, *loader_details) A concrete implementation of :class:`importlib.abc.PathEntryFinder` which caches results from the file system. @@ -1178,7 +1178,7 @@ find and load modules. Clear out the internal cache. - .. classmethod:: path_hook(\*loader_details) + .. classmethod:: path_hook(*loader_details) A class method which returns a closure for use on :attr:`sys.path_hooks`. An instance of :class:`FileFinder` is returned by the closure using the diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index d00a30ff00406..b53a9421fbca6 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -556,7 +556,7 @@ The Signature object represents the call signature of a callable object and its return annotation. To retrieve a Signature object, use the :func:`signature` function. -.. function:: signature(callable, \*, follow_wrapped=True) +.. function:: signature(callable, *, follow_wrapped=True) Return a :class:`Signature` object for the given ``callable``:: @@ -597,7 +597,7 @@ function. C provide no metadata about their arguments. -.. class:: Signature(parameters=None, \*, return_annotation=Signature.empty) +.. class:: Signature(parameters=None, *, return_annotation=Signature.empty) A Signature object represents the call signature of a function and its return annotation. For each parameter accepted by the function it stores a @@ -668,7 +668,7 @@ function. >>> str(new_sig) "(a, b) -> 'new return anno'" - .. classmethod:: Signature.from_callable(obj, \*, follow_wrapped=True) + .. classmethod:: Signature.from_callable(obj, *, follow_wrapped=True) Return a :class:`Signature` (or its subclass) object for a given callable ``obj``. Pass ``follow_wrapped=False`` to get a signature of ``obj`` @@ -684,7 +684,7 @@ function. .. versionadded:: 3.5 -.. class:: Parameter(name, kind, \*, default=Parameter.empty, annotation=Parameter.empty) +.. class:: Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty) Parameter objects are *immutable*. Instead of modifying a Parameter object, you can use :meth:`Parameter.replace` to create a modified copy. diff --git a/Doc/library/io.rst b/Doc/library/io.rst index aecbec56866d7..048cb2a7ff692 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -964,7 +964,7 @@ Text I/O .. versionadded:: 3.7 -.. class:: StringIO(initial_value='', newline='\\n') +.. class:: StringIO(initial_value='', newline='\n') A text stream using an in-memory text buffer. It inherits :class:`TextIOBase`. diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst index 4bfff9c6147ed..633c87873cd8c 100644 --- a/Doc/library/lzma.rst +++ b/Doc/library/lzma.rst @@ -33,7 +33,7 @@ from multiple threads, it is necessary to protect it with a lock. Reading and writing compressed files ------------------------------------ -.. function:: open(filename, mode="rb", \*, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) +.. function:: open(filename, mode="rb", *, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) Open an LZMA-compressed file in binary or text mode, returning a :term:`file object`. @@ -69,7 +69,7 @@ Reading and writing compressed files Accepts a :term:`path-like object`. -.. class:: LZMAFile(filename=None, mode="r", \*, format=None, check=-1, preset=None, filters=None) +.. class:: LZMAFile(filename=None, mode="r", *, format=None, check=-1, preset=None, filters=None) Open an LZMA-compressed file in binary mode. diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 6e287abb6f78a..9d206f46aebeb 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1869,7 +1869,7 @@ features: Accepts a :term:`path-like object`. -.. function:: lstat(path, \*, dir_fd=None) +.. function:: lstat(path, *, dir_fd=None) Perform the equivalent of an :c:func:`lstat` system call on the given path. Similar to :func:`~os.stat`, but does not follow symbolic links. Return a @@ -2376,7 +2376,7 @@ features: On the first, uncached call, a system call is required on Windows but not on Unix. - .. method:: is_dir(\*, follow_symlinks=True) + .. method:: is_dir(*, follow_symlinks=True) Return ``True`` if this entry is a directory or a symbolic link pointing to a directory; return ``False`` if the entry is or points to any other @@ -2400,7 +2400,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: is_file(\*, follow_symlinks=True) + .. method:: is_file(*, follow_symlinks=True) Return ``True`` if this entry is a file or a symbolic link pointing to a file; return ``False`` if the entry is or points to a directory or other @@ -2430,7 +2430,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: stat(\*, follow_symlinks=True) + .. method:: stat(*, follow_symlinks=True) Return a :class:`stat_result` object for this entry. This method follows symbolic links by default; to stat a symbolic link add the @@ -2462,7 +2462,7 @@ features: for :class:`bytes` paths on Windows. -.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True) +.. function:: stat(path, *, dir_fd=None, follow_symlinks=True) Get the status of a file or a file descriptor. Perform the equivalent of a :c:func:`stat` system call on the given path. *path* may be specified as diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index b7c3452771948..be48561ed10ac 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -213,7 +213,7 @@ The :mod:`pickle` module provides the following constants: The :mod:`pickle` module provides the following functions to make the pickling process more convenient: -.. function:: dump(obj, file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None) Write the pickled representation of the object *obj* to the open :term:`file object` *file*. This is equivalent to @@ -225,7 +225,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: dumps(obj, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None) Return the pickled representation of the object *obj* as a :class:`bytes` object, instead of writing it to a file. @@ -236,7 +236,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: load(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: load(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Read the pickled representation of an object from the open :term:`file object` *file* and return the reconstituted object hierarchy specified therein. @@ -252,7 +252,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffers* argument was added. -.. function:: loads(data, /, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: loads(data, /, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Return the reconstituted object hierarchy of the pickled representation *data* of an object. *data* must be a :term:`bytes-like object`. @@ -296,7 +296,7 @@ The :mod:`pickle` module defines three exceptions: The :mod:`pickle` module exports three classes, :class:`Pickler`, :class:`Unpickler` and :class:`PickleBuffer`: -.. class:: Pickler(file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. class:: Pickler(file, protocol=None, *, fix_imports=True, buffer_callback=None) This takes a binary file for writing a pickle data stream. @@ -391,7 +391,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`, Use :func:`pickletools.optimize` if you need more compact pickles. -.. class:: Unpickler(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. class:: Unpickler(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) This takes a binary file for reading a pickle data stream. diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst index 6def72b3736b9..ce6d4a85bf5e9 100644 --- a/Doc/library/plistlib.rst +++ b/Doc/library/plistlib.rst @@ -52,7 +52,7 @@ or :class:`datetime.datetime` objects. This module defines the following functions: -.. function:: load(fp, \*, fmt=None, dict_type=dict) +.. function:: load(fp, *, fmt=None, dict_type=dict) Read a plist file. *fp* should be a readable and binary file object. Return the unpacked root object (which usually is a @@ -80,7 +80,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: loads(data, \*, fmt=None, dict_type=dict) +.. function:: loads(data, *, fmt=None, dict_type=dict) Load a plist from a bytes object. See :func:`load` for an explanation of the keyword arguments. @@ -88,7 +88,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dump(value, fp, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Write *value* to a plist file. *Fp* should be a writable, binary file object. @@ -116,7 +116,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dumps(value, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Return *value* as a plist-formatted bytes object. See the documentation for :func:`dump` for an explanation of the keyword diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index 3f5122760ee16..435787c27661d 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -218,7 +218,7 @@ Directory and files operations copy the file more efficiently. See :ref:`shutil-platform-dependent-efficient-copy-operations` section. -.. function:: ignore_patterns(\*patterns) +.. function:: ignore_patterns(*patterns) This factory function creates a function that can be used as a callable for :func:`copytree`\'s *ignore* argument, ignoring files and directories that diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 59200730a48f5..0667a60157616 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -478,7 +478,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.1 -.. method:: int.to_bytes(length, byteorder, \*, signed=False) +.. method:: int.to_bytes(length, byteorder, *, signed=False) Return an array of bytes representing an integer. @@ -510,7 +510,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.2 -.. classmethod:: int.from_bytes(bytes, byteorder, \*, signed=False) +.. classmethod:: int.from_bytes(bytes, byteorder, *, signed=False) Return the integer represented by the given array of bytes. diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst index e37cc980e9757..382ce85516dfb 100644 --- a/Doc/library/subprocess.rst +++ b/Doc/library/subprocess.rst @@ -339,7 +339,7 @@ functions. stderr=None, preexec_fn=None, close_fds=True, shell=False, \ cwd=None, env=None, universal_newlines=None, \ startupinfo=None, creationflags=0, restore_signals=True, \ - start_new_session=False, pass_fds=(), \*, group=None, \ + start_new_session=False, pass_fds=(), *, group=None, \ extra_groups=None, user=None, umask=-1, \ encoding=None, errors=None, text=None) diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst index 78a1dfce9ae05..c9306e9bf9de1 100644 --- a/Doc/library/sysconfig.rst +++ b/Doc/library/sysconfig.rst @@ -32,7 +32,7 @@ can be accessed using :func:`get_config_vars` or :func:`get_config_var`. Notice that on Windows, it's a much smaller set. -.. function:: get_config_vars(\*args) +.. function:: get_config_vars(*args) With no arguments, return a dictionary of all configuration variables relevant for the current platform. diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index 7a114fdf5d54b..13088a10d77c5 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -37,7 +37,7 @@ Some facts and figures: Added support for :mod:`lzma` compression. -.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, \*\*kwargs) +.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs) Return a :class:`TarFile` object for the pathname *name*. For detailed information on :class:`TarFile` objects and the keyword arguments that are diff --git a/Doc/library/test.rst b/Doc/library/test.rst index e24f69cda8c86..bb1bd29bf698e 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -546,7 +546,7 @@ The :mod:`test.support` module defines the following functions: Define match test with regular expression *patterns*. -.. function:: run_unittest(\*classes) +.. function:: run_unittest(*classes) Execute :class:`unittest.TestCase` subclasses passed to the function. The function scans the classes for methods starting with the prefix ``test_`` diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst index a481a3509d4ec..9c1743cad23cb 100644 --- a/Doc/library/warnings.rst +++ b/Doc/library/warnings.rst @@ -491,7 +491,7 @@ Available Functions Available Context Managers -------------------------- -.. class:: catch_warnings(\*, record=False, module=None) +.. class:: catch_warnings(*, record=False, module=None) A context manager that copies and, upon exit, restores the warnings filter and the :func:`showwarning` function. diff --git a/Doc/library/winreg.rst b/Doc/library/winreg.rst index dccb7db27e90c..487856a3ac6c6 100644 --- a/Doc/library/winreg.rst +++ b/Doc/library/winreg.rst @@ -791,7 +791,7 @@ integer handle, and also disconnect the Windows handle from the handle object. .. method:: PyHKEY.__enter__() - PyHKEY.__exit__(\*exc_info) + PyHKEY.__exit__(*exc_info) The HKEY object implements :meth:`~object.__enter__` and :meth:`~object.__exit__` and thus supports the context protocol for the diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index bf72c46561b7c..e1cc96794221a 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -174,7 +174,7 @@ module documentation. This section lists the differences between the API and The :meth:`toxml` method now preserves the attribute order specified by the user. -.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None, \ +.. method:: Node.toprettyxml(indent="\t", newl="\n", encoding=None, \ standalone=None) Return a pretty-printed version of the document. *indent* specifies the From webhook-mailer at python.org Mon Dec 21 21:53:59 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 02:53:59 -0000 Subject: [Python-checkins] [3.9] [doc] Fix a few margins due to bad markup (GH-23619). (GH-23859) Message-ID: https://github.com/python/cpython/commit/7c48859eeb98f698b65bcc001afc64422387ec34 commit: 7c48859eeb98f698b65bcc001afc64422387ec34 branch: 3.9 author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T18:53:50-08:00 summary: [3.9] [doc] Fix a few margins due to bad markup (GH-23619). (GH-23859) (cherry picked from commit 96a09df64483b70c4215c7025a19b9d2f1636c55) Co-authored-by: Andre Delfino files: M Doc/library/dialog.rst M Doc/library/enum.rst M Doc/library/logging.config.rst M Doc/library/profile.rst M Doc/library/socket.rst M Doc/library/trace.rst M Doc/library/turtle.rst M Doc/reference/datamodel.rst diff --git a/Doc/library/dialog.rst b/Doc/library/dialog.rst index dc82a974ce095..53f98c1018988 100644 --- a/Doc/library/dialog.rst +++ b/Doc/library/dialog.rst @@ -198,7 +198,7 @@ These do not emulate the native look-and-feel of the platform. A subclass of FileDialog that creates a dialog window for selecting a destination file. - .. method:: ok_command() + .. method:: ok_command() Test whether or not the selection points to a valid file that is not a directory. Confirmation is required if an already existing file is diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 4ecca209d87b3..8836b24912e9e 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -56,7 +56,7 @@ helper, :class:`auto`. the bitwise operations without losing their :class:`Flag` membership. .. function:: unique - :noindex: + :noindex: Enum class decorator that ensures only one name is bound to any one value. diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index 683d6ed5e8ba5..0b5e2fc2a658d 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -35,45 +35,45 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. function:: dictConfig(config) - Takes the logging configuration from a dictionary. The contents of - this dictionary are described in :ref:`logging-config-dictschema` - below. - - If an error is encountered during configuration, this function will - raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` - or :exc:`ImportError` with a suitably descriptive message. The - following is a (possibly incomplete) list of conditions which will - raise an error: - - * A ``level`` which is not a string or which is a string not - corresponding to an actual logging level. - * A ``propagate`` value which is not a boolean. - * An id which does not have a corresponding destination. - * A non-existent handler id found during an incremental call. - * An invalid logger name. - * Inability to resolve to an internal or external object. - - Parsing is performed by the :class:`DictConfigurator` class, whose - constructor is passed the dictionary used for configuration, and - has a :meth:`configure` method. The :mod:`logging.config` module - has a callable attribute :attr:`dictConfigClass` - which is initially set to :class:`DictConfigurator`. - You can replace the value of :attr:`dictConfigClass` with a - suitable implementation of your own. - - :func:`dictConfig` calls :attr:`dictConfigClass` passing - the specified dictionary, and then calls the :meth:`configure` method on - the returned object to put the configuration into effect:: - - def dictConfig(config): - dictConfigClass(config).configure() - - For example, a subclass of :class:`DictConfigurator` could call - ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then - set up custom prefixes which would be usable in the subsequent - :meth:`configure` call. :attr:`dictConfigClass` would be bound to - this new subclass, and then :func:`dictConfig` could be called exactly as - in the default, uncustomized state. + Takes the logging configuration from a dictionary. The contents of + this dictionary are described in :ref:`logging-config-dictschema` + below. + + If an error is encountered during configuration, this function will + raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` + or :exc:`ImportError` with a suitably descriptive message. The + following is a (possibly incomplete) list of conditions which will + raise an error: + + * A ``level`` which is not a string or which is a string not + corresponding to an actual logging level. + * A ``propagate`` value which is not a boolean. + * An id which does not have a corresponding destination. + * A non-existent handler id found during an incremental call. + * An invalid logger name. + * Inability to resolve to an internal or external object. + + Parsing is performed by the :class:`DictConfigurator` class, whose + constructor is passed the dictionary used for configuration, and + has a :meth:`configure` method. The :mod:`logging.config` module + has a callable attribute :attr:`dictConfigClass` + which is initially set to :class:`DictConfigurator`. + You can replace the value of :attr:`dictConfigClass` with a + suitable implementation of your own. + + :func:`dictConfig` calls :attr:`dictConfigClass` passing + the specified dictionary, and then calls the :meth:`configure` method on + the returned object to put the configuration into effect:: + + def dictConfig(config): + dictConfigClass(config).configure() + + For example, a subclass of :class:`DictConfigurator` could call + ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then + set up custom prefixes which would be usable in the subsequent + :meth:`configure` call. :attr:`dictConfigClass` would be bound to + this new subclass, and then :func:`dictConfig` could be called exactly as + in the default, uncustomized state. .. versionadded:: 3.2 diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst index 7edabfde0d7f1..774d46d0e9624 100644 --- a/Doc/library/profile.rst +++ b/Doc/library/profile.rst @@ -532,9 +532,9 @@ Analysis of the profiler data is done using the :class:`~pstats.Stats` class. instance holds information related to the function's profile such as how long the function took to run, how many times it was called, etc... - .. versionadded:: 3.9 - Added the following dataclasses: StatsProfile, FunctionProfile. - Added the following function: get_stats_profile. + .. versionadded:: 3.9 + Added the following dataclasses: StatsProfile, FunctionProfile. + Added the following function: get_stats_profile. .. _deterministic-profiling: diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index faf8a76251420..2fc170a0bc0bd 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -56,12 +56,12 @@ created. Socket addresses are represented as follows: bytes-like object can be used for either type of address when passing it as an argument. - .. versionchanged:: 3.3 - Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 - encoding. + .. versionchanged:: 3.3 + Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 + encoding. - .. versionchanged:: 3.5 - Writable :term:`bytes-like object` is now accepted. + .. versionchanged:: 3.5 + Writable :term:`bytes-like object` is now accepted. .. _host_port: diff --git a/Doc/library/trace.rst b/Doc/library/trace.rst index c2732d900bc13..40cf198f1287d 100644 --- a/Doc/library/trace.rst +++ b/Doc/library/trace.rst @@ -153,47 +153,47 @@ Programmatic Interface count information. *timing* enables a timestamp relative to when tracing was started to be displayed. - .. method:: run(cmd) + .. method:: run(cmd) - Execute the command and gather statistics from the execution with - the current tracing parameters. *cmd* must be a string or code object, - suitable for passing into :func:`exec`. + Execute the command and gather statistics from the execution with + the current tracing parameters. *cmd* must be a string or code object, + suitable for passing into :func:`exec`. - .. method:: runctx(cmd, globals=None, locals=None) + .. method:: runctx(cmd, globals=None, locals=None) - Execute the command and gather statistics from the execution with the - current tracing parameters, in the defined global and local - environments. If not defined, *globals* and *locals* default to empty - dictionaries. + Execute the command and gather statistics from the execution with the + current tracing parameters, in the defined global and local + environments. If not defined, *globals* and *locals* default to empty + dictionaries. - .. method:: runfunc(func, /, *args, **kwds) + .. method:: runfunc(func, /, *args, **kwds) - Call *func* with the given arguments under control of the :class:`Trace` - object with the current tracing parameters. + Call *func* with the given arguments under control of the :class:`Trace` + object with the current tracing parameters. - .. method:: results() + .. method:: results() - Return a :class:`CoverageResults` object that contains the cumulative - results of all previous calls to ``run``, ``runctx`` and ``runfunc`` - for the given :class:`Trace` instance. Does not reset the accumulated - trace results. + Return a :class:`CoverageResults` object that contains the cumulative + results of all previous calls to ``run``, ``runctx`` and ``runfunc`` + for the given :class:`Trace` instance. Does not reset the accumulated + trace results. .. class:: CoverageResults A container for coverage results, created by :meth:`Trace.results`. Should not be created directly by the user. - .. method:: update(other) + .. method:: update(other) - Merge in data from another :class:`CoverageResults` object. + Merge in data from another :class:`CoverageResults` object. - .. method:: write_results(show_missing=True, summary=False, coverdir=None) + .. method:: write_results(show_missing=True, summary=False, coverdir=None) - Write coverage results. Set *show_missing* to show lines that had no - hits. Set *summary* to include in the output the coverage summary per - module. *coverdir* specifies the directory into which the coverage - result files will be output. If ``None``, the results for each source - file are placed in its directory. + Write coverage results. Set *show_missing* to show lines that had no + hits. Set *summary* to include in the output the coverage summary per + module. *coverdir* specifies the directory into which the coverage + result files will be output. If ``None``, the results for each source + file are placed in its directory. A simple example demonstrating the use of the programmatic interface:: diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index d3487537df99a..2084d75b3a57a 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -913,8 +913,8 @@ Color control Set pencolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the outline of that polygon is drawn with the - newly set pencolor. + If turtleshape is a polygon, the outline of that polygon is drawn with the + newly set pencolor. .. doctest:: :skipif: _tkinter is None @@ -962,8 +962,8 @@ Color control Set fillcolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the interior of that polygon is drawn - with the newly set fillcolor. + If turtleshape is a polygon, the interior of that polygon is drawn + with the newly set fillcolor. .. doctest:: :skipif: _tkinter is None @@ -1001,8 +1001,8 @@ Color control Equivalent to ``pencolor(colorstring1)`` and ``fillcolor(colorstring2)`` and analogously if the other input format is used. - If turtleshape is a polygon, outline and interior of that polygon is drawn - with the newly set colors. + If turtleshape is a polygon, outline and interior of that polygon is drawn + with the newly set colors. .. doctest:: :skipif: _tkinter is None diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 89063876ccc9e..3b3bd5524ec5d 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -217,7 +217,6 @@ Ellipsis There are two types of integers: Integers (:class:`int`) - These represent numbers in an unlimited range, subject to available (virtual) memory only. For the purpose of shift and mask operations, a binary representation is assumed, and negative numbers are represented in a variant of From webhook-mailer at python.org Mon Dec 21 21:55:38 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 02:55:38 -0000 Subject: [Python-checkins] [3.8] [doc] Fix a few margins due to bad markup (GH-23619). (GH-23860) Message-ID: https://github.com/python/cpython/commit/d3ab4c82a9b594d3cd98062eece19672fe42bce2 commit: d3ab4c82a9b594d3cd98062eece19672fe42bce2 branch: 3.8 author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T18:55:19-08:00 summary: [3.8] [doc] Fix a few margins due to bad markup (GH-23619). (GH-23860) (cherry picked from commit 96a09df64483b70c4215c7025a19b9d2f1636c55) Co-authored-by: Andre Delfino files: M Doc/library/enum.rst M Doc/library/logging.config.rst M Doc/library/socket.rst M Doc/library/trace.rst M Doc/library/turtle.rst M Doc/reference/datamodel.rst diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index bd10016b937b4..c7e2b109c3513 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -56,7 +56,7 @@ helper, :class:`auto`. the bitwise operations without losing their :class:`Flag` membership. .. function:: unique - :noindex: + :noindex: Enum class decorator that ensures only one name is bound to any one value. diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index 683d6ed5e8ba5..0b5e2fc2a658d 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -35,45 +35,45 @@ in :mod:`logging` itself) and defining handlers which are declared either in .. function:: dictConfig(config) - Takes the logging configuration from a dictionary. The contents of - this dictionary are described in :ref:`logging-config-dictschema` - below. - - If an error is encountered during configuration, this function will - raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` - or :exc:`ImportError` with a suitably descriptive message. The - following is a (possibly incomplete) list of conditions which will - raise an error: - - * A ``level`` which is not a string or which is a string not - corresponding to an actual logging level. - * A ``propagate`` value which is not a boolean. - * An id which does not have a corresponding destination. - * A non-existent handler id found during an incremental call. - * An invalid logger name. - * Inability to resolve to an internal or external object. - - Parsing is performed by the :class:`DictConfigurator` class, whose - constructor is passed the dictionary used for configuration, and - has a :meth:`configure` method. The :mod:`logging.config` module - has a callable attribute :attr:`dictConfigClass` - which is initially set to :class:`DictConfigurator`. - You can replace the value of :attr:`dictConfigClass` with a - suitable implementation of your own. - - :func:`dictConfig` calls :attr:`dictConfigClass` passing - the specified dictionary, and then calls the :meth:`configure` method on - the returned object to put the configuration into effect:: - - def dictConfig(config): - dictConfigClass(config).configure() - - For example, a subclass of :class:`DictConfigurator` could call - ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then - set up custom prefixes which would be usable in the subsequent - :meth:`configure` call. :attr:`dictConfigClass` would be bound to - this new subclass, and then :func:`dictConfig` could be called exactly as - in the default, uncustomized state. + Takes the logging configuration from a dictionary. The contents of + this dictionary are described in :ref:`logging-config-dictschema` + below. + + If an error is encountered during configuration, this function will + raise a :exc:`ValueError`, :exc:`TypeError`, :exc:`AttributeError` + or :exc:`ImportError` with a suitably descriptive message. The + following is a (possibly incomplete) list of conditions which will + raise an error: + + * A ``level`` which is not a string or which is a string not + corresponding to an actual logging level. + * A ``propagate`` value which is not a boolean. + * An id which does not have a corresponding destination. + * A non-existent handler id found during an incremental call. + * An invalid logger name. + * Inability to resolve to an internal or external object. + + Parsing is performed by the :class:`DictConfigurator` class, whose + constructor is passed the dictionary used for configuration, and + has a :meth:`configure` method. The :mod:`logging.config` module + has a callable attribute :attr:`dictConfigClass` + which is initially set to :class:`DictConfigurator`. + You can replace the value of :attr:`dictConfigClass` with a + suitable implementation of your own. + + :func:`dictConfig` calls :attr:`dictConfigClass` passing + the specified dictionary, and then calls the :meth:`configure` method on + the returned object to put the configuration into effect:: + + def dictConfig(config): + dictConfigClass(config).configure() + + For example, a subclass of :class:`DictConfigurator` could call + ``DictConfigurator.__init__()`` in its own :meth:`__init__()`, then + set up custom prefixes which would be usable in the subsequent + :meth:`configure` call. :attr:`dictConfigClass` would be bound to + this new subclass, and then :func:`dictConfig` could be called exactly as + in the default, uncustomized state. .. versionadded:: 3.2 diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index 5e496ca4d6a9b..b5a4b0cde066f 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -56,12 +56,12 @@ created. Socket addresses are represented as follows: bytes-like object can be used for either type of address when passing it as an argument. - .. versionchanged:: 3.3 - Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 - encoding. + .. versionchanged:: 3.3 + Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 + encoding. - .. versionchanged:: 3.5 - Writable :term:`bytes-like object` is now accepted. + .. versionchanged:: 3.5 + Writable :term:`bytes-like object` is now accepted. .. _host_port: diff --git a/Doc/library/trace.rst b/Doc/library/trace.rst index 85fec6830006c..09bc1441487e0 100644 --- a/Doc/library/trace.rst +++ b/Doc/library/trace.rst @@ -153,47 +153,47 @@ Programmatic Interface count information. *timing* enables a timestamp relative to when tracing was started to be displayed. - .. method:: run(cmd) + .. method:: run(cmd) - Execute the command and gather statistics from the execution with - the current tracing parameters. *cmd* must be a string or code object, - suitable for passing into :func:`exec`. + Execute the command and gather statistics from the execution with + the current tracing parameters. *cmd* must be a string or code object, + suitable for passing into :func:`exec`. - .. method:: runctx(cmd, globals=None, locals=None) + .. method:: runctx(cmd, globals=None, locals=None) - Execute the command and gather statistics from the execution with the - current tracing parameters, in the defined global and local - environments. If not defined, *globals* and *locals* default to empty - dictionaries. + Execute the command and gather statistics from the execution with the + current tracing parameters, in the defined global and local + environments. If not defined, *globals* and *locals* default to empty + dictionaries. - .. method:: runfunc(func, *args, **kwds) + .. method:: runfunc(func, *args, **kwds) - Call *func* with the given arguments under control of the :class:`Trace` - object with the current tracing parameters. + Call *func* with the given arguments under control of the :class:`Trace` + object with the current tracing parameters. - .. method:: results() + .. method:: results() - Return a :class:`CoverageResults` object that contains the cumulative - results of all previous calls to ``run``, ``runctx`` and ``runfunc`` - for the given :class:`Trace` instance. Does not reset the accumulated - trace results. + Return a :class:`CoverageResults` object that contains the cumulative + results of all previous calls to ``run``, ``runctx`` and ``runfunc`` + for the given :class:`Trace` instance. Does not reset the accumulated + trace results. .. class:: CoverageResults A container for coverage results, created by :meth:`Trace.results`. Should not be created directly by the user. - .. method:: update(other) + .. method:: update(other) - Merge in data from another :class:`CoverageResults` object. + Merge in data from another :class:`CoverageResults` object. - .. method:: write_results(show_missing=True, summary=False, coverdir=None) + .. method:: write_results(show_missing=True, summary=False, coverdir=None) - Write coverage results. Set *show_missing* to show lines that had no - hits. Set *summary* to include in the output the coverage summary per - module. *coverdir* specifies the directory into which the coverage - result files will be output. If ``None``, the results for each source - file are placed in its directory. + Write coverage results. Set *show_missing* to show lines that had no + hits. Set *summary* to include in the output the coverage summary per + module. *coverdir* specifies the directory into which the coverage + result files will be output. If ``None``, the results for each source + file are placed in its directory. A simple example demonstrating the use of the programmatic interface:: diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst index d3487537df99a..2084d75b3a57a 100644 --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst @@ -913,8 +913,8 @@ Color control Set pencolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the outline of that polygon is drawn with the - newly set pencolor. + If turtleshape is a polygon, the outline of that polygon is drawn with the + newly set pencolor. .. doctest:: :skipif: _tkinter is None @@ -962,8 +962,8 @@ Color control Set fillcolor to the RGB color represented by *r*, *g*, and *b*. Each of *r*, *g*, and *b* must be in the range 0..colormode. - If turtleshape is a polygon, the interior of that polygon is drawn - with the newly set fillcolor. + If turtleshape is a polygon, the interior of that polygon is drawn + with the newly set fillcolor. .. doctest:: :skipif: _tkinter is None @@ -1001,8 +1001,8 @@ Color control Equivalent to ``pencolor(colorstring1)`` and ``fillcolor(colorstring2)`` and analogously if the other input format is used. - If turtleshape is a polygon, outline and interior of that polygon is drawn - with the newly set colors. + If turtleshape is a polygon, outline and interior of that polygon is drawn + with the newly set colors. .. doctest:: :skipif: _tkinter is None diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 332051e396994..a2b3d4e6b0c18 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -212,7 +212,6 @@ Ellipsis There are two types of integers: Integers (:class:`int`) - These represent numbers in an unlimited range, subject to available (virtual) memory only. For the purpose of shift and mask operations, a binary representation is assumed, and negative numbers are represented in a variant of From webhook-mailer at python.org Mon Dec 21 21:57:05 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 02:57:05 -0000 Subject: [Python-checkins] [3.8] [doc] Fix erroneous backslashes in signatures and names (GH-23658) (GH-23828) Message-ID: https://github.com/python/cpython/commit/02349e2dc9d93202c658ae383b2de2e36b2366f8 commit: 02349e2dc9d93202c658ae383b2de2e36b2366f8 branch: 3.8 author: Andre Delfino committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-21T18:56:55-08:00 summary: [3.8] [doc] Fix erroneous backslashes in signatures and names (GH-23658) (GH-23828) The issue being resolved is shown in the 3.10 docs (if you select docs for older versions you won't see a visual glitch). The newer sphinx version that produces the 3.10 docs doesn't treat the backslash to escape things in some situations it previously did.. (cherry picked from commit dcc997cd28ab33ebac44182ee55533c1b37689f7) Co-authored-by: Andre Delfino files: M Doc/library/asyncio-eventloop.rst M Doc/library/asyncio-future.rst M Doc/library/asyncio-policy.rst M Doc/library/asyncio-stream.rst M Doc/library/asyncio-subprocess.rst M Doc/library/asyncio-task.rst M Doc/library/base64.rst M Doc/library/contextvars.rst M Doc/library/ctypes.rst M Doc/library/difflib.rst M Doc/library/email.header.rst M Doc/library/email.policy.rst M Doc/library/functions.rst M Doc/library/http.cookies.rst M Doc/library/importlib.rst M Doc/library/inspect.rst M Doc/library/io.rst M Doc/library/lzma.rst M Doc/library/os.rst M Doc/library/pickle.rst M Doc/library/plistlib.rst M Doc/library/shutil.rst M Doc/library/stdtypes.rst M Doc/library/sysconfig.rst M Doc/library/tarfile.rst M Doc/library/test.rst M Doc/library/warnings.rst M Doc/library/winreg.rst M Doc/library/xml.dom.minidom.rst M Doc/requirements.txt diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index 32bc219cf5c37..dde57e295aa68 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -309,7 +309,7 @@ Creating Futures and Tasks .. versionadded:: 3.5.2 -.. method:: loop.create_task(coro, \*, name=None) +.. method:: loop.create_task(coro, *, name=None) Schedule the execution of a :ref:`coroutine`. Return a :class:`Task` object. @@ -344,7 +344,7 @@ Opening network connections ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_connection(protocol_factory, \ - host=None, port=None, \*, ssl=None, \ + host=None, port=None, *, ssl=None, \ family=0, proto=0, flags=0, sock=None, \ local_addr=None, server_hostname=None, \ ssl_handshake_timeout=None, \ @@ -470,7 +470,7 @@ Opening network connections that can be used directly in async/await code. .. coroutinemethod:: loop.create_datagram_endpoint(protocol_factory, \ - local_addr=None, remote_addr=None, \*, \ + local_addr=None, remote_addr=None, *, \ family=0, proto=0, flags=0, \ reuse_address=None, reuse_port=None, \ allow_broadcast=None, sock=None) @@ -547,7 +547,7 @@ Opening network connections Added support for Windows. .. coroutinemethod:: loop.create_unix_connection(protocol_factory, \ - path=None, \*, ssl=None, sock=None, \ + path=None, *, ssl=None, sock=None, \ server_hostname=None, ssl_handshake_timeout=None) Create a Unix connection. @@ -580,7 +580,7 @@ Creating network servers ^^^^^^^^^^^^^^^^^^^^^^^^ .. coroutinemethod:: loop.create_server(protocol_factory, \ - host=None, port=None, \*, \ + host=None, port=None, *, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, \ sock=None, backlog=100, ssl=None, \ @@ -671,7 +671,7 @@ Creating network servers .. coroutinemethod:: loop.create_unix_server(protocol_factory, path=None, \ - \*, sock=None, backlog=100, ssl=None, \ + *, sock=None, backlog=100, ssl=None, \ ssl_handshake_timeout=None, start_serving=True) Similar to :meth:`loop.create_server` but works with the @@ -696,7 +696,7 @@ Creating network servers The *path* parameter can now be a :class:`~pathlib.Path` object. .. coroutinemethod:: loop.connect_accepted_socket(protocol_factory, \ - sock, \*, ssl=None, ssl_handshake_timeout=None) + sock, *, ssl=None, ssl_handshake_timeout=None) Wrap an already accepted connection into a transport/protocol pair. @@ -761,7 +761,7 @@ TLS Upgrade ^^^^^^^^^^^ .. coroutinemethod:: loop.start_tls(transport, protocol, \ - sslcontext, \*, server_side=False, \ + sslcontext, *, server_side=False, \ server_hostname=None, ssl_handshake_timeout=None) Upgrade an existing transport-based connection to TLS. @@ -794,7 +794,7 @@ TLS Upgrade Watching file descriptors ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. method:: loop.add_reader(fd, callback, \*args) +.. method:: loop.add_reader(fd, callback, *args) Start monitoring the *fd* file descriptor for read availability and invoke *callback* with the specified arguments once *fd* is available for @@ -804,7 +804,7 @@ Watching file descriptors Stop monitoring the *fd* file descriptor for read availability. -.. method:: loop.add_writer(fd, callback, \*args) +.. method:: loop.add_writer(fd, callback, *args) Start monitoring the *fd* file descriptor for write availability and invoke *callback* with the specified arguments once *fd* is available for @@ -918,7 +918,7 @@ convenient. :meth:`loop.create_server` and :func:`start_server`. .. coroutinemethod:: loop.sock_sendfile(sock, file, offset=0, count=None, \ - \*, fallback=True) + *, fallback=True) Send a file using high-performance :mod:`os.sendfile` if possible. Return the total number of bytes sent. @@ -952,7 +952,7 @@ convenient. DNS ^^^ -.. coroutinemethod:: loop.getaddrinfo(host, port, \*, family=0, \ +.. coroutinemethod:: loop.getaddrinfo(host, port, *, family=0, \ type=0, proto=0, flags=0) Asynchronous version of :meth:`socket.getaddrinfo`. @@ -1017,7 +1017,7 @@ Working with pipes Unix signals ^^^^^^^^^^^^ -.. method:: loop.add_signal_handler(signum, callback, \*args) +.. method:: loop.add_signal_handler(signum, callback, *args) Set *callback* as the handler for the *signum* signal. @@ -1052,7 +1052,7 @@ Unix signals Executing code in thread or process pools ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. awaitablemethod:: loop.run_in_executor(executor, func, \*args) +.. awaitablemethod:: loop.run_in_executor(executor, func, *args) Arrange for *func* to be called in the specified executor. @@ -1222,9 +1222,9 @@ async/await code consider using the high-level subprocesses. See :ref:`Subprocess Support on Windows ` for details. -.. coroutinemethod:: loop.subprocess_exec(protocol_factory, \*args, \ +.. coroutinemethod:: loop.subprocess_exec(protocol_factory, *args, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from one or more string arguments specified by *args*. @@ -1304,9 +1304,9 @@ async/await code consider using the high-level conforms to the :class:`asyncio.SubprocessTransport` base class and *protocol* is an object instantiated by the *protocol_factory*. -.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, \*, \ +.. coroutinemethod:: loop.subprocess_shell(protocol_factory, cmd, *, \ stdin=subprocess.PIPE, stdout=subprocess.PIPE, \ - stderr=subprocess.PIPE, \*\*kwargs) + stderr=subprocess.PIPE, **kwargs) Create a subprocess from *cmd*, which can be a :class:`str` or a :class:`bytes` string encoded to the diff --git a/Doc/library/asyncio-future.rst b/Doc/library/asyncio-future.rst index 832d58119b7b0..45a2754e9658d 100644 --- a/Doc/library/asyncio-future.rst +++ b/Doc/library/asyncio-future.rst @@ -31,7 +31,7 @@ Future Functions .. versionadded:: 3.5 -.. function:: ensure_future(obj, \*, loop=None) +.. function:: ensure_future(obj, *, loop=None) Return: @@ -58,7 +58,7 @@ Future Functions The function accepts any :term:`awaitable` object. -.. function:: wrap_future(future, \*, loop=None) +.. function:: wrap_future(future, *, loop=None) Wrap a :class:`concurrent.futures.Future` object in a :class:`asyncio.Future` object. @@ -67,7 +67,7 @@ Future Functions Future Object ============= -.. class:: Future(\*, loop=None) +.. class:: Future(*, loop=None) A Future represents an eventual result of an asynchronous operation. Not thread-safe. diff --git a/Doc/library/asyncio-policy.rst b/Doc/library/asyncio-policy.rst index 91f9822599d48..ceb2323c54586 100644 --- a/Doc/library/asyncio-policy.rst +++ b/Doc/library/asyncio-policy.rst @@ -159,7 +159,7 @@ implementation used by the asyncio event loop: .. class:: AbstractChildWatcher - .. method:: add_child_handler(pid, callback, \*args) + .. method:: add_child_handler(pid, callback, *args) Register a new child handler. diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index b76ed379c7f4c..584bf10fc042b 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -48,7 +48,7 @@ The following top-level asyncio functions can be used to create and work with streams: -.. coroutinefunction:: open_connection(host=None, port=None, \*, \ +.. coroutinefunction:: open_connection(host=None, port=None, *, \ loop=None, limit=None, ssl=None, family=0, \ proto=0, flags=0, sock=None, local_addr=None, \ server_hostname=None, ssl_handshake_timeout=None) @@ -74,7 +74,7 @@ and work with streams: The *ssl_handshake_timeout* parameter. .. coroutinefunction:: start_server(client_connected_cb, host=None, \ - port=None, \*, loop=None, limit=None, \ + port=None, *, loop=None, limit=None, \ family=socket.AF_UNSPEC, \ flags=socket.AI_PASSIVE, sock=None, \ backlog=100, ssl=None, reuse_address=None, \ @@ -109,7 +109,7 @@ and work with streams: .. rubric:: Unix Sockets -.. coroutinefunction:: open_unix_connection(path=None, \*, loop=None, \ +.. coroutinefunction:: open_unix_connection(path=None, *, loop=None, \ limit=None, ssl=None, sock=None, \ server_hostname=None, ssl_handshake_timeout=None) @@ -132,7 +132,7 @@ and work with streams: .. coroutinefunction:: start_unix_server(client_connected_cb, path=None, \ - \*, loop=None, limit=None, sock=None, \ + *, loop=None, limit=None, sock=None, \ backlog=100, ssl=None, ssl_handshake_timeout=None, \ start_serving=True) @@ -192,7 +192,7 @@ StreamReader can be read. Use the :attr:`IncompleteReadError.partial` attribute to get the partially read data. - .. coroutinemethod:: readuntil(separator=b'\\n') + .. coroutinemethod:: readuntil(separator=b'\n') Read data from the stream until *separator* is found. diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index b0330349dfb65..fb98552c86d4c 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -61,9 +61,9 @@ See also the `Examples`_ subsection. Creating Subprocesses ===================== -.. coroutinefunction:: create_subprocess_exec(program, \*args, stdin=None, \ +.. coroutinefunction:: create_subprocess_exec(program, *args, stdin=None, \ stdout=None, stderr=None, loop=None, \ - limit=None, \*\*kwds) + limit=None, **kwds) Create a subprocess. @@ -82,7 +82,7 @@ Creating Subprocesses .. coroutinefunction:: create_subprocess_shell(cmd, stdin=None, \ stdout=None, stderr=None, loop=None, \ - limit=None, \*\*kwds) + limit=None, **kwds) Run the *cmd* shell command. diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index 6acec30558cba..246d5b9a73c54 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -210,7 +210,7 @@ is :meth:`loop.run_in_executor`. Running an asyncio Program ========================== -.. function:: run(coro, \*, debug=False) +.. function:: run(coro, *, debug=False) Execute the :term:`coroutine` *coro* and return the result. @@ -245,7 +245,7 @@ Running an asyncio Program Creating Tasks ============== -.. function:: create_task(coro, \*, name=None) +.. function:: create_task(coro, *, name=None) Wrap the *coro* :ref:`coroutine ` into a :class:`Task` and schedule its execution. Return the Task object. @@ -317,7 +317,7 @@ Sleeping Running Tasks Concurrently ========================== -.. awaitablefunction:: gather(\*aws, loop=None, return_exceptions=False) +.. awaitablefunction:: gather(*aws, loop=None, return_exceptions=False) Run :ref:`awaitable objects ` in the *aws* sequence *concurrently*. @@ -497,7 +497,7 @@ Timeouts Waiting Primitives ================== -.. coroutinefunction:: wait(aws, \*, loop=None, timeout=None,\ +.. coroutinefunction:: wait(aws, *, loop=None, timeout=None,\ return_when=ALL_COMPLETED) Run :ref:`awaitable objects ` in the *aws* @@ -585,7 +585,7 @@ Waiting Primitives deprecated. -.. function:: as_completed(aws, \*, loop=None, timeout=None) +.. function:: as_completed(aws, *, loop=None, timeout=None) Run :ref:`awaitable objects ` in the *aws* iterable concurrently. Return an iterator of coroutines. @@ -679,7 +679,7 @@ Introspection Task Object =========== -.. class:: Task(coro, \*, loop=None, name=None) +.. class:: Task(coro, *, loop=None, name=None) A :class:`Future-like ` object that runs a Python :ref:`coroutine `. Not thread-safe. @@ -842,7 +842,7 @@ Task Object See the documentation of :meth:`Future.remove_done_callback` for more details. - .. method:: get_stack(\*, limit=None) + .. method:: get_stack(*, limit=None) Return the list of stack frames for this Task. @@ -863,7 +863,7 @@ Task Object stack are returned, but the oldest frames of a traceback are returned. (This matches the behavior of the traceback module.) - .. method:: print_stack(\*, limit=None, file=None) + .. method:: print_stack(*, limit=None, file=None) Print the stack or traceback for this Task. diff --git a/Doc/library/base64.rst b/Doc/library/base64.rst index ad9f5f58bee2a..3c63c15ad401e 100644 --- a/Doc/library/base64.rst +++ b/Doc/library/base64.rst @@ -178,7 +178,7 @@ The modern interface provides: .. versionadded:: 3.4 -.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \\t\\n\\r\\v') +.. function:: a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v') Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and return the decoded :class:`bytes`. diff --git a/Doc/library/contextvars.rst b/Doc/library/contextvars.rst index 8805661c456ed..14ac47f4c9eb1 100644 --- a/Doc/library/contextvars.rst +++ b/Doc/library/contextvars.rst @@ -26,7 +26,7 @@ See also :pep:`567` for additional details. Context Variables ----------------- -.. class:: ContextVar(name, [\*, default]) +.. class:: ContextVar(name, [*, default]) This class is used to declare a new Context Variable, e.g.:: @@ -146,7 +146,7 @@ Manual Context Management Context implements the :class:`collections.abc.Mapping` interface. - .. method:: run(callable, \*args, \*\*kwargs) + .. method:: run(callable, *args, **kwargs) Execute ``callable(*args, **kwargs)`` code in the context object the *run* method is called on. Return the result of the execution diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst index bf32d3e549b48..7313148721dac 100644 --- a/Doc/library/ctypes.rst +++ b/Doc/library/ctypes.rst @@ -2508,7 +2508,7 @@ other data types containing pointer type fields. Arrays and pointers ^^^^^^^^^^^^^^^^^^^ -.. class:: Array(\*args) +.. class:: Array(*args) Abstract base class for arrays. diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index a8543b38c197e..e6dd1dd7a54f0 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -149,7 +149,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. contains a good example of its use. -.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in context diff format. @@ -279,7 +279,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. emu -.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\\n') +.. function:: unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n') Compare *a* and *b* (lists of strings); return a delta (a :term:`generator` generating the delta lines) in unified diff format. @@ -321,7 +321,7 @@ diffs. For comparing directories and files, see also, the :mod:`filecmp` module. See :ref:`difflib-interface` for a more detailed example. -.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\\n') +.. function:: diff_bytes(dfunc, a, b, fromfile=b'', tofile=b'', fromfiledate=b'', tofiledate=b'', n=3, lineterm=b'\n') Compare *a* and *b* (lists of bytes objects) using *dfunc*; yield a sequence of delta lines (also bytes) in the format returned by *dfunc*. diff --git a/Doc/library/email.header.rst b/Doc/library/email.header.rst index 07152c224f2ff..e093f138936b3 100644 --- a/Doc/library/email.header.rst +++ b/Doc/library/email.header.rst @@ -116,7 +116,7 @@ Here is the :class:`Header` class description: if *s* is a byte string. - .. method:: encode(splitchars=';, \\t', maxlinelen=None, linesep='\\n') + .. method:: encode(splitchars=';, \t', maxlinelen=None, linesep='\n') Encode a message header into an RFC-compliant format, possibly wrapping long lines and encapsulating non-ASCII parts in base64 or quoted-printable diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index 8e7076259810f..bf53b9520fc72 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -210,7 +210,7 @@ added matters. To illustrate:: :meth:`register_defect` method. - .. attribute:: mangle_from\_ + .. attribute:: mangle_from_ If :const:`True`, lines starting with *"From "* in the body are escaped by putting a ``>`` in front of them. This parameter is used when diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 4f5fe6bc23069..be98d30488ab8 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1312,7 +1312,7 @@ are always available. They are listed here in alphabetical order. supported. -.. function:: print(*objects, sep=' ', end='\\n', file=sys.stdout, flush=False) +.. function:: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) Print *objects* to the text stream *file*, separated by *sep* and followed by *end*. *sep*, *end*, *file* and *flush*, if present, must be given as keyword diff --git a/Doc/library/http.cookies.rst b/Doc/library/http.cookies.rst index 17792b200599b..a2c1eb00d8b33 100644 --- a/Doc/library/http.cookies.rst +++ b/Doc/library/http.cookies.rst @@ -93,7 +93,7 @@ Cookie Objects :meth:`value_decode` are inverses on the range of *value_decode*. -.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\\r\\n') +.. method:: BaseCookie.output(attrs=None, header='Set-Cookie:', sep='\r\n') Return a string representation suitable to be sent as HTTP headers. *attrs* and *header* are sent to each :class:`Morsel`'s :meth:`output` method. *sep* is used diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index be0dab3d057ca..8635e2bc66f3a 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -1101,7 +1101,7 @@ find and load modules. directory for ``''`` (i.e. the empty string). -.. class:: FileFinder(path, \*loader_details) +.. class:: FileFinder(path, *loader_details) A concrete implementation of :class:`importlib.abc.PathEntryFinder` which caches results from the file system. @@ -1144,7 +1144,7 @@ find and load modules. Clear out the internal cache. - .. classmethod:: path_hook(\*loader_details) + .. classmethod:: path_hook(*loader_details) A class method which returns a closure for use on :attr:`sys.path_hooks`. An instance of :class:`FileFinder` is returned by the closure using the diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index bab2c41e4e224..ffa0d9840cd3c 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -556,7 +556,7 @@ The Signature object represents the call signature of a callable object and its return annotation. To retrieve a Signature object, use the :func:`signature` function. -.. function:: signature(callable, \*, follow_wrapped=True) +.. function:: signature(callable, *, follow_wrapped=True) Return a :class:`Signature` object for the given ``callable``:: @@ -597,7 +597,7 @@ function. C provide no metadata about their arguments. -.. class:: Signature(parameters=None, \*, return_annotation=Signature.empty) +.. class:: Signature(parameters=None, *, return_annotation=Signature.empty) A Signature object represents the call signature of a function and its return annotation. For each parameter accepted by the function it stores a @@ -668,7 +668,7 @@ function. >>> str(new_sig) "(a, b) -> 'new return anno'" - .. classmethod:: Signature.from_callable(obj, \*, follow_wrapped=True) + .. classmethod:: Signature.from_callable(obj, *, follow_wrapped=True) Return a :class:`Signature` (or its subclass) object for a given callable ``obj``. Pass ``follow_wrapped=False`` to get a signature of ``obj`` @@ -684,7 +684,7 @@ function. .. versionadded:: 3.5 -.. class:: Parameter(name, kind, \*, default=Parameter.empty, annotation=Parameter.empty) +.. class:: Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty) Parameter objects are *immutable*. Instead of modifying a Parameter object, you can use :meth:`Parameter.replace` to create a modified copy. diff --git a/Doc/library/io.rst b/Doc/library/io.rst index 32151a0ace458..667e4c654ff23 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -959,7 +959,7 @@ Text I/O .. versionadded:: 3.7 -.. class:: StringIO(initial_value='', newline='\\n') +.. class:: StringIO(initial_value='', newline='\n') An in-memory stream for text I/O. The text buffer is discarded when the :meth:`~IOBase.close` method is called. diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst index 4bfff9c6147ed..633c87873cd8c 100644 --- a/Doc/library/lzma.rst +++ b/Doc/library/lzma.rst @@ -33,7 +33,7 @@ from multiple threads, it is necessary to protect it with a lock. Reading and writing compressed files ------------------------------------ -.. function:: open(filename, mode="rb", \*, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) +.. function:: open(filename, mode="rb", *, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None) Open an LZMA-compressed file in binary or text mode, returning a :term:`file object`. @@ -69,7 +69,7 @@ Reading and writing compressed files Accepts a :term:`path-like object`. -.. class:: LZMAFile(filename=None, mode="r", \*, format=None, check=-1, preset=None, filters=None) +.. class:: LZMAFile(filename=None, mode="r", *, format=None, check=-1, preset=None, filters=None) Open an LZMA-compressed file in binary mode. diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 1a6ff40bf09e6..45213a664e9f2 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1860,7 +1860,7 @@ features: Accepts a :term:`path-like object`. -.. function:: lstat(path, \*, dir_fd=None) +.. function:: lstat(path, *, dir_fd=None) Perform the equivalent of an :c:func:`lstat` system call on the given path. Similar to :func:`~os.stat`, but does not follow symbolic links. Return a @@ -2367,7 +2367,7 @@ features: On the first, uncached call, a system call is required on Windows but not on Unix. - .. method:: is_dir(\*, follow_symlinks=True) + .. method:: is_dir(*, follow_symlinks=True) Return ``True`` if this entry is a directory or a symbolic link pointing to a directory; return ``False`` if the entry is or points to any other @@ -2391,7 +2391,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: is_file(\*, follow_symlinks=True) + .. method:: is_file(*, follow_symlinks=True) Return ``True`` if this entry is a file or a symbolic link pointing to a file; return ``False`` if the entry is or points to a directory or other @@ -2421,7 +2421,7 @@ features: This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :exc:`FileNotFoundError` is caught and not raised. - .. method:: stat(\*, follow_symlinks=True) + .. method:: stat(*, follow_symlinks=True) Return a :class:`stat_result` object for this entry. This method follows symbolic links by default; to stat a symbolic link add the @@ -2453,7 +2453,7 @@ features: for :class:`bytes` paths on Windows. -.. function:: stat(path, \*, dir_fd=None, follow_symlinks=True) +.. function:: stat(path, *, dir_fd=None, follow_symlinks=True) Get the status of a file or a file descriptor. Perform the equivalent of a :c:func:`stat` system call on the given path. *path* may be specified as diff --git a/Doc/library/pickle.rst b/Doc/library/pickle.rst index d92e947a76403..ba41d5f7d0918 100644 --- a/Doc/library/pickle.rst +++ b/Doc/library/pickle.rst @@ -213,7 +213,7 @@ The :mod:`pickle` module provides the following constants: The :mod:`pickle` module provides the following functions to make the pickling process more convenient: -.. function:: dump(obj, file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None) Write the pickled representation of the object *obj* to the open :term:`file object` *file*. This is equivalent to @@ -225,7 +225,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: dumps(obj, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. function:: dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None) Return the pickled representation of the object *obj* as a :class:`bytes` object, instead of writing it to a file. @@ -236,7 +236,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffer_callback* argument was added. -.. function:: load(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: load(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Read the pickled representation of an object from the open :term:`file object` *file* and return the reconstituted object hierarchy specified therein. @@ -252,7 +252,7 @@ process more convenient: .. versionchanged:: 3.8 The *buffers* argument was added. -.. function:: loads(data, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. function:: loads(data, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) Return the reconstituted object hierarchy of the pickled representation *data* of an object. *data* must be a :term:`bytes-like object`. @@ -296,7 +296,7 @@ The :mod:`pickle` module defines three exceptions: The :mod:`pickle` module exports three classes, :class:`Pickler`, :class:`Unpickler` and :class:`PickleBuffer`: -.. class:: Pickler(file, protocol=None, \*, fix_imports=True, buffer_callback=None) +.. class:: Pickler(file, protocol=None, *, fix_imports=True, buffer_callback=None) This takes a binary file for writing a pickle data stream. @@ -391,7 +391,7 @@ The :mod:`pickle` module exports three classes, :class:`Pickler`, Use :func:`pickletools.optimize` if you need more compact pickles. -.. class:: Unpickler(file, \*, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) +.. class:: Unpickler(file, *, fix_imports=True, encoding="ASCII", errors="strict", buffers=None) This takes a binary file for reading a pickle data stream. diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst index 9dfe3c8a0dc98..98befabb3f9ab 100644 --- a/Doc/library/plistlib.rst +++ b/Doc/library/plistlib.rst @@ -48,7 +48,7 @@ or :class:`datetime.datetime` objects. This module defines the following functions: -.. function:: load(fp, \*, fmt=None, use_builtin_types=True, dict_type=dict) +.. function:: load(fp, *, fmt=None, use_builtin_types=True, dict_type=dict) Read a plist file. *fp* should be a readable and binary file object. Return the unpacked root object (which usually is a @@ -80,7 +80,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: loads(data, \*, fmt=None, use_builtin_types=True, dict_type=dict) +.. function:: loads(data, *, fmt=None, use_builtin_types=True, dict_type=dict) Load a plist from a bytes object. See :func:`load` for an explanation of the keyword arguments. @@ -88,7 +88,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dump(value, fp, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Write *value* to a plist file. *Fp* should be a writable, binary file object. @@ -116,7 +116,7 @@ This module defines the following functions: .. versionadded:: 3.4 -.. function:: dumps(value, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False) +.. function:: dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False) Return *value* as a plist-formatted bytes object. See the documentation for :func:`dump` for an explanation of the keyword diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index b5eeec85fb85d..578fcc6e293d9 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -218,7 +218,7 @@ Directory and files operations copy the file more efficiently. See :ref:`shutil-platform-dependent-efficient-copy-operations` section. -.. function:: ignore_patterns(\*patterns) +.. function:: ignore_patterns(*patterns) This factory function creates a function that can be used as a callable for :func:`copytree`\'s *ignore* argument, ignoring files and directories that diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 78c7cc76d7e7b..fb500501c8f9a 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -478,7 +478,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.1 -.. method:: int.to_bytes(length, byteorder, \*, signed=False) +.. method:: int.to_bytes(length, byteorder, *, signed=False) Return an array of bytes representing an integer. @@ -510,7 +510,7 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.2 -.. classmethod:: int.from_bytes(bytes, byteorder, \*, signed=False) +.. classmethod:: int.from_bytes(bytes, byteorder, *, signed=False) Return the integer represented by the given array of bytes. diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst index 78a1dfce9ae05..c9306e9bf9de1 100644 --- a/Doc/library/sysconfig.rst +++ b/Doc/library/sysconfig.rst @@ -32,7 +32,7 @@ can be accessed using :func:`get_config_vars` or :func:`get_config_var`. Notice that on Windows, it's a much smaller set. -.. function:: get_config_vars(\*args) +.. function:: get_config_vars(*args) With no arguments, return a dictionary of all configuration variables relevant for the current platform. diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst index 87c36aa4a2cbc..ef81d9fa37f56 100644 --- a/Doc/library/tarfile.rst +++ b/Doc/library/tarfile.rst @@ -37,7 +37,7 @@ Some facts and figures: Added support for :mod:`lzma` compression. -.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, \*\*kwargs) +.. function:: open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs) Return a :class:`TarFile` object for the pathname *name*. For detailed information on :class:`TarFile` objects and the keyword arguments that are diff --git a/Doc/library/test.rst b/Doc/library/test.rst index da6a85d340be3..6c99f39076bdb 100644 --- a/Doc/library/test.rst +++ b/Doc/library/test.rst @@ -484,7 +484,7 @@ The :mod:`test.support` module defines the following functions: Define match test with regular expression *patterns*. -.. function:: run_unittest(\*classes) +.. function:: run_unittest(*classes) Execute :class:`unittest.TestCase` subclasses passed to the function. The function scans the classes for methods starting with the prefix ``test_`` @@ -528,7 +528,7 @@ The :mod:`test.support` module defines the following functions: check_impl_detail(cpython=False) # Everywhere except CPython. -.. function:: check_warnings(\*filters, quiet=True) +.. function:: check_warnings(*filters, quiet=True) A convenience wrapper for :func:`warnings.catch_warnings()` that makes it easier to test that a warning was correctly raised. It is approximately diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst index a481a3509d4ec..9c1743cad23cb 100644 --- a/Doc/library/warnings.rst +++ b/Doc/library/warnings.rst @@ -491,7 +491,7 @@ Available Functions Available Context Managers -------------------------- -.. class:: catch_warnings(\*, record=False, module=None) +.. class:: catch_warnings(*, record=False, module=None) A context manager that copies and, upon exit, restores the warnings filter and the :func:`showwarning` function. diff --git a/Doc/library/winreg.rst b/Doc/library/winreg.rst index dccb7db27e90c..487856a3ac6c6 100644 --- a/Doc/library/winreg.rst +++ b/Doc/library/winreg.rst @@ -791,7 +791,7 @@ integer handle, and also disconnect the Windows handle from the handle object. .. method:: PyHKEY.__enter__() - PyHKEY.__exit__(\*exc_info) + PyHKEY.__exit__(*exc_info) The HKEY object implements :meth:`~object.__enter__` and :meth:`~object.__exit__` and thus supports the context protocol for the diff --git a/Doc/library/xml.dom.minidom.rst b/Doc/library/xml.dom.minidom.rst index 8711242d95d74..673af8326a80e 100644 --- a/Doc/library/xml.dom.minidom.rst +++ b/Doc/library/xml.dom.minidom.rst @@ -164,7 +164,7 @@ module documentation. This section lists the differences between the API and The :meth:`toxml` method now preserves the attribute order specified by the user. -.. method:: Node.toprettyxml(indent="\\t", newl="\\n", encoding=None) +.. method:: Node.toprettyxml(indent="\t", newl="\n", encoding=None) Return a pretty-printed version of the document. *indent* specifies the indentation string and defaults to a tabulator; *newl* specifies the string diff --git a/Doc/requirements.txt b/Doc/requirements.txt index 47b78eeac817e..d30ff39c8c9a3 100644 --- a/Doc/requirements.txt +++ b/Doc/requirements.txt @@ -3,7 +3,7 @@ # Sphinx version is pinned so that new versions that introduce new warnings # won't suddenly cause build failures. Updating the version is fine as long # as no warnings are raised by doing so. -sphinx==2.4.4 +sphinx blurb From webhook-mailer at python.org Tue Dec 22 06:12:41 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 11:12:41 -0000 Subject: [Python-checkins] bpo-42688: Fix ffi alloc/free when using external libffi on macos (GH-23868) Message-ID: https://github.com/python/cpython/commit/b3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858 commit: b3c77ecbbe0ad3e3cc6dbd885792203e9e6ec858 branch: master author: erykoff committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-22T03:12:07-08:00 summary: bpo-42688: Fix ffi alloc/free when using external libffi on macos (GH-23868) Automerge-Triggered-By: GH:ronaldoussoren files: M Modules/_ctypes/malloc_closure.c diff --git a/Modules/_ctypes/malloc_closure.c b/Modules/_ctypes/malloc_closure.c index 4f220e42ff3fc..788bae6a96c7f 100644 --- a/Modules/_ctypes/malloc_closure.c +++ b/Modules/_ctypes/malloc_closure.c @@ -91,11 +91,15 @@ static void more_core(void) /* put the item back into the free list */ void Py_ffi_closure_free(void *p) { -#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC +#if HAVE_FFI_CLOSURE_ALLOC +#if USING_APPLE_OS_LIBFFI if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) { +#endif ffi_closure_free(p); return; +#if USING_APPLE_OS_LIBFFI } +#endif #endif ITEM *item = (ITEM *)p; item->next = free_list; @@ -105,10 +109,14 @@ void Py_ffi_closure_free(void *p) /* return one item from the free list, allocating more if needed */ void *Py_ffi_closure_alloc(size_t size, void** codeloc) { -#if USING_APPLE_OS_LIBFFI && HAVE_FFI_CLOSURE_ALLOC +#if HAVE_FFI_CLOSURE_ALLOC +#if USING_APPLE_OS_LIBFFI if (__builtin_available(macos 10.15, ios 13, watchos 6, tvos 13, *)) { +#endif return ffi_closure_alloc(size, codeloc); +#if USING_APPLE_OS_LIBFFI } +#endif #endif ITEM *item; if (!free_list) From webhook-mailer at python.org Tue Dec 22 11:03:01 2020 From: webhook-mailer at python.org (pganssle) Date: Tue, 22 Dec 2020 16:03:01 -0000 Subject: [Python-checkins] [doc] Fix missing commas in signatures (#23693) Message-ID: https://github.com/python/cpython/commit/60eccd095624f39195cc5ae0b49a59022bbbb028 commit: 60eccd095624f39195cc5ae0b49a59022bbbb028 branch: master author: Andre Delfino committer: pganssle date: 2020-12-22T11:02:52-05:00 summary: [doc] Fix missing commas in signatures (#23693) * Fix star in signatures * Fix comma in signatures files: M Doc/library/datetime.rst M Doc/library/email.contentmanager.rst diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index 508bc88e7f4b8..dae0dd7aa5589 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -1219,7 +1219,7 @@ Instance methods: .. method:: datetime.replace(year=self.year, month=self.month, day=self.day, \ hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, \ - tzinfo=self.tzinfo, * fold=0) + tzinfo=self.tzinfo, *, fold=0) Return a datetime with the same attributes, except for those attributes given new values by whichever keyword arguments are specified. Note that @@ -1783,7 +1783,7 @@ Other constructor: Instance methods: .. method:: time.replace(hour=self.hour, minute=self.minute, second=self.second, \ - microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0) + microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0) Return a :class:`.time` with the same value, except for those attributes given new values by whichever keyword arguments are specified. Note that diff --git a/Doc/library/email.contentmanager.rst b/Doc/library/email.contentmanager.rst index e09c7c0e402bb..918fc55677e72 100644 --- a/Doc/library/email.contentmanager.rst +++ b/Doc/library/email.contentmanager.rst @@ -116,7 +116,7 @@ Currently the email package provides only one concrete content manager, decoding the payload to unicode. The default error handler is ``replace``. - .. method:: set_content(msg, <'str'>, subtype="plain", charset='utf-8' \ + .. method:: set_content(msg, <'str'>, subtype="plain", charset='utf-8', \ cte=None, \ disposition=None, filename=None, cid=None, \ params=None, headers=None) From webhook-mailer at python.org Tue Dec 22 12:24:46 2020 From: webhook-mailer at python.org (rhettinger) Date: Tue, 22 Dec 2020 17:24:46 -0000 Subject: [Python-checkins] bpo-29030: Document interaction between *choices* and *metavar*. (GH-23884) Message-ID: https://github.com/python/cpython/commit/6afb730e2a8bf0b472b4c3157bcf5b44aa7e6d56 commit: 6afb730e2a8bf0b472b4c3157bcf5b44aa7e6d56 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-22T09:24:26-08:00 summary: bpo-29030: Document interaction between *choices* and *metavar*. (GH-23884) files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 1a298cdd2b534..4542961d7816e 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1152,6 +1152,11 @@ Any container can be passed as the *choices* value, so :class:`list` objects, Use of :class:`enum.Enum` is not recommended because it is difficult to control its appearance in usage, help, and error messages. +Formatted choices overrides the default *metavar* which is normally derived +from *dest*. This is usually what you want because the user never sees the +*dest* parameter. If this display isn't desirable (perhaps because there are +many choices), just specify an explicit metavar_. + required ^^^^^^^^ From webhook-mailer at python.org Tue Dec 22 13:19:44 2020 From: webhook-mailer at python.org (rhettinger) Date: Tue, 22 Dec 2020 18:19:44 -0000 Subject: [Python-checkins] bpo-29030: Document interaction between *choices* and *metavar*. (GH-23884) (GH-23894) Message-ID: https://github.com/python/cpython/commit/4ec2149708c7c06ebeccc27e28e2bbc51c4abeca commit: 4ec2149708c7c06ebeccc27e28e2bbc51c4abeca branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2020-12-22T10:19:24-08:00 summary: bpo-29030: Document interaction between *choices* and *metavar*. (GH-23884) (GH-23894) files: M Doc/library/argparse.rst diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 1a298cdd2b534..4542961d7816e 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1152,6 +1152,11 @@ Any container can be passed as the *choices* value, so :class:`list` objects, Use of :class:`enum.Enum` is not recommended because it is difficult to control its appearance in usage, help, and error messages. +Formatted choices overrides the default *metavar* which is normally derived +from *dest*. This is usually what you want because the user never sees the +*dest* parameter. If this display isn't desirable (perhaps because there are +many choices), just specify an explicit metavar_. + required ^^^^^^^^ From webhook-mailer at python.org Tue Dec 22 14:53:20 2020 From: webhook-mailer at python.org (taleinat) Date: Tue, 22 Dec 2020 19:53:20 -0000 Subject: [Python-checkins] bpo-34463: Make python tracebacks identical to C tracebacks for SyntaxErrors without a lineno (GH-23427) Message-ID: https://github.com/python/cpython/commit/069560b1171eb6385121ff3b6331e8814a4e7454 commit: 069560b1171eb6385121ff3b6331e8814a4e7454 branch: master author: Irit Katriel committer: taleinat <532281+taleinat at users.noreply.github.com> date: 2020-12-22T21:53:09+02:00 summary: bpo-34463: Make python tracebacks identical to C tracebacks for SyntaxErrors without a lineno (GH-23427) files: A Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst M Lib/test/test_traceback.py M Lib/traceback.py diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 5df701caf0f01..abb5762cd43ef 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -687,6 +687,31 @@ def e(): msg = self.get_report(e).splitlines() self.assertEqual(msg[-2], ' ^') + def test_syntax_error_no_lineno(self): + # See #34463. + + # Without filename + e = SyntaxError('bad syntax') + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + ['SyntaxError: bad syntax']) + e.lineno = 100 + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + [' File "", line 100', 'SyntaxError: bad syntax']) + + # With filename + e = SyntaxError('bad syntax') + e.filename = 'myfile.py' + + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + ['SyntaxError: bad syntax (myfile.py)']) + e.lineno = 100 + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + [' File "myfile.py", line 100', 'SyntaxError: bad syntax']) + def test_message_none(self): # A message that looks like "None" should not be treated specially err = self.get_report(Exception(None)) diff --git a/Lib/traceback.py b/Lib/traceback.py index 457d92511af05..4e008bc0e081a 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -525,7 +525,8 @@ def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, if exc_type and issubclass(exc_type, SyntaxError): # Handle SyntaxError's specially self.filename = exc_value.filename - self.lineno = str(exc_value.lineno) + lno = exc_value.lineno + self.lineno = str(lno) if lno is not None else None self.text = exc_value.text self.offset = exc_value.offset self.msg = exc_value.msg @@ -584,9 +585,12 @@ def format_exception_only(self): def _format_syntax_error(self, stype): """Format SyntaxError exceptions (internal helper).""" # Show exactly where the problem was found. - filename = self.filename or "" - lineno = str(self.lineno) or '?' - yield ' File "{}", line {}\n'.format(filename, lineno) + filename_suffix = '' + if self.lineno is not None: + yield ' File "{}", line {}\n'.format( + self.filename or "", self.lineno) + elif self.filename is not None: + filename_suffix = ' ({})'.format(self.filename) text = self.text if text is not None: @@ -604,7 +608,7 @@ def _format_syntax_error(self, stype): caretspace = ((c if c.isspace() else ' ') for c in ltext[:caret]) yield ' {}^\n'.format(''.join(caretspace)) msg = self.msg or "" - yield "{}: {}\n".format(stype, msg) + yield "{}: {}{}\n".format(stype, msg, filename_suffix) def format(self, *, chain=True): """Format the exception. diff --git a/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst b/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst new file mode 100644 index 0000000000000..df183548236af --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst @@ -0,0 +1 @@ +Fixed discrepancy between :mod:`traceback` and the interpreter in formatting of SyntaxError with lineno not set (:mod:`traceback` was changed to match interpreter). From webhook-mailer at python.org Tue Dec 22 17:12:39 2020 From: webhook-mailer at python.org (miss-islington) Date: Tue, 22 Dec 2020 22:12:39 -0000 Subject: [Python-checkins] bpo-34463: Make python tracebacks identical to C tracebacks for SyntaxErrors without a lineno (GH-23427) Message-ID: https://github.com/python/cpython/commit/8e5c61a075f3a60272a7dcdc48db200090d76309 commit: 8e5c61a075f3a60272a7dcdc48db200090d76309 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-22T14:12:30-08:00 summary: bpo-34463: Make python tracebacks identical to C tracebacks for SyntaxErrors without a lineno (GH-23427) (cherry picked from commit 069560b1171eb6385121ff3b6331e8814a4e7454) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst M Lib/test/test_traceback.py M Lib/traceback.py diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 8549ba2b75ad0..5bb3a58b2a103 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -667,6 +667,31 @@ def e(): msg = self.get_report(e).splitlines() self.assertEqual(msg[-2], ' ^') + def test_syntax_error_no_lineno(self): + # See #34463. + + # Without filename + e = SyntaxError('bad syntax') + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + ['SyntaxError: bad syntax']) + e.lineno = 100 + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + [' File "", line 100', 'SyntaxError: bad syntax']) + + # With filename + e = SyntaxError('bad syntax') + e.filename = 'myfile.py' + + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + ['SyntaxError: bad syntax (myfile.py)']) + e.lineno = 100 + msg = self.get_report(e).splitlines() + self.assertEqual(msg, + [' File "myfile.py", line 100', 'SyntaxError: bad syntax']) + def test_message_none(self): # A message that looks like "None" should not be treated specially err = self.get_report(Exception(None)) diff --git a/Lib/traceback.py b/Lib/traceback.py index fb34de9489300..d7fbdae680be6 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -515,7 +515,8 @@ def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None, if exc_type and issubclass(exc_type, SyntaxError): # Handle SyntaxError's specially self.filename = exc_value.filename - self.lineno = str(exc_value.lineno) + lno = exc_value.lineno + self.lineno = str(lno) if lno is not None else None self.text = exc_value.text self.offset = exc_value.offset self.msg = exc_value.msg @@ -574,9 +575,12 @@ def format_exception_only(self): def _format_syntax_error(self, stype): """Format SyntaxError exceptions (internal helper).""" # Show exactly where the problem was found. - filename = self.filename or "" - lineno = str(self.lineno) or '?' - yield ' File "{}", line {}\n'.format(filename, lineno) + filename_suffix = '' + if self.lineno is not None: + yield ' File "{}", line {}\n'.format( + self.filename or "", self.lineno) + elif self.filename is not None: + filename_suffix = ' ({})'.format(self.filename) text = self.text if text is not None: @@ -594,7 +598,7 @@ def _format_syntax_error(self, stype): caretspace = ((c if c.isspace() else ' ') for c in ltext[:caret]) yield ' {}^\n'.format(''.join(caretspace)) msg = self.msg or "" - yield "{}: {}\n".format(stype, msg) + yield "{}: {}{}\n".format(stype, msg, filename_suffix) def format(self, *, chain=True): """Format the exception. diff --git a/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst b/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst new file mode 100644 index 0000000000000..df183548236af --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-11-20-19-00-27.bpo-34463.aJcm56.rst @@ -0,0 +1 @@ +Fixed discrepancy between :mod:`traceback` and the interpreter in formatting of SyntaxError with lineno not set (:mod:`traceback` was changed to match interpreter). From webhook-mailer at python.org Tue Dec 22 17:32:07 2020 From: webhook-mailer at python.org (nanjekyejoannah) Date: Tue, 22 Dec 2020 22:32:07 -0000 Subject: [Python-checkins] Fix typos in sysmodule (GH-23883) Message-ID: https://github.com/python/cpython/commit/46b5c6be29f6470a20dd0dbd34e794debcee7c04 commit: 46b5c6be29f6470a20dd0dbd34e794debcee7c04 branch: master author: Joannah Nanjekye <33177550+nanjekyejoannah at users.noreply.github.com> committer: nanjekyejoannah <33177550+nanjekyejoannah at users.noreply.github.com> date: 2020-12-22T18:31:46-04:00 summary: Fix typos in sysmodule (GH-23883) files: M Python/sysmodule.c diff --git a/Python/sysmodule.c b/Python/sysmodule.c index b80d37df42c80..720532eade29b 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1907,12 +1907,12 @@ sys__debugmallocstats_impl(PyObject *module) } #ifdef Py_TRACE_REFS -/* Defined in objects.c because it uses static globals if that file */ +/* Defined in objects.c because it uses static globals in that file */ extern PyObject *_Py_GetObjects(PyObject *, PyObject *); #endif #ifdef DYNAMIC_EXECUTION_PROFILE -/* Defined in ceval.c because it uses static globals if that file */ +/* Defined in ceval.c because it uses static globals in that file */ extern PyObject *_Py_GetDXProfile(PyObject *, PyObject *); #endif From webhook-mailer at python.org Tue Dec 22 21:41:12 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Dec 2020 02:41:12 -0000 Subject: [Python-checkins] bpo-39465: Add pycore_atomic_funcs.h header (GH-20766) Message-ID: https://github.com/python/cpython/commit/52a327c1cbb86c7f2f5c460645889b23615261bf commit: 52a327c1cbb86c7f2f5c460645889b23615261bf branch: master author: Victor Stinner committer: vstinner date: 2020-12-23T03:41:08+01:00 summary: bpo-39465: Add pycore_atomic_funcs.h header (GH-20766) Add pycore_atomic_funcs.h internal header file: similar to pycore_atomic.h but don't require to declare variables as atomic. Add _Py_atomic_size_get() and _Py_atomic_size_set() functions. files: A Include/internal/pycore_atomic_funcs.h M Include/internal/pycore_atomic.h M Makefile.pre.in M Modules/_testinternalcapi.c M PCbuild/pythoncore.vcxproj M PCbuild/pythoncore.vcxproj.filters M configure M configure.ac M pyconfig.h.in diff --git a/Include/internal/pycore_atomic.h b/Include/internal/pycore_atomic.h index 1d5c5621677eb..3d42e54464c4c 100644 --- a/Include/internal/pycore_atomic.h +++ b/Include/internal/pycore_atomic.h @@ -11,8 +11,8 @@ extern "C" { #include "dynamic_annotations.h" /* _Py_ANNOTATE_MEMORY_ORDER */ #include "pyconfig.h" -#if defined(HAVE_STD_ATOMIC) -#include +#ifdef HAVE_STD_ATOMIC +# include #endif @@ -62,7 +62,7 @@ typedef struct _Py_atomic_int { #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ atomic_load_explicit(&((ATOMIC_VAL)->_value), ORDER) -/* Use builtin atomic operations in GCC >= 4.7 */ +// Use builtin atomic operations in GCC >= 4.7 and clang #elif defined(HAVE_BUILTIN_ATOMIC) typedef enum _Py_memory_order { diff --git a/Include/internal/pycore_atomic_funcs.h b/Include/internal/pycore_atomic_funcs.h new file mode 100644 index 0000000000000..a708789cea733 --- /dev/null +++ b/Include/internal/pycore_atomic_funcs.h @@ -0,0 +1,94 @@ +/* Atomic functions: similar to pycore_atomic.h, but don't need + to declare variables as atomic. + + Py_ssize_t type: + + * value = _Py_atomic_size_get(&var) + * _Py_atomic_size_set(&var, value) + + Use sequentially-consistent ordering (__ATOMIC_SEQ_CST memory order): + enforce total ordering with all other atomic functions. +*/ +#ifndef Py_ATOMIC_FUNC_H +#define Py_ATOMIC_FUNC_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "this header requires Py_BUILD_CORE define" +#endif + +#if defined(_MSC_VER) +# include // _InterlockedExchange() +#endif + + +// Use builtin atomic operations in GCC >= 4.7 and clang +#ifdef HAVE_BUILTIN_ATOMIC + +static inline Py_ssize_t _Py_atomic_size_get(Py_ssize_t *var) +{ + return __atomic_load_n(var, __ATOMIC_SEQ_CST); +} + +static inline void _Py_atomic_size_set(Py_ssize_t *var, Py_ssize_t value) +{ + __atomic_store_n(var, value, __ATOMIC_SEQ_CST); +} + +#elif defined(_MSC_VER) + +static inline Py_ssize_t _Py_atomic_size_get(Py_ssize_t *var) +{ +#if SIZEOF_VOID_P == 8 + Py_BUILD_ASSERT(sizeof(__int64) == sizeof(*var)); + volatile __int64 *volatile_var = (volatile __int64 *)var; + __int64 old; + do { + old = *volatile_var; + } while(_InterlockedCompareExchange64(volatile_var, old, old) != old); +#else + Py_BUILD_ASSERT(sizeof(long) == sizeof(*var)); + volatile long *volatile_var = (volatile long *)var; + long old; + do { + old = *volatile_var; + } while(_InterlockedCompareExchange(volatile_var, old, old) != old); +#endif + return old; +} + +static inline void _Py_atomic_size_set(Py_ssize_t *var, Py_ssize_t value) +{ +#if SIZEOF_VOID_P == 8 + Py_BUILD_ASSERT(sizeof(__int64) == sizeof(*var)); + volatile __int64 *volatile_var = (volatile __int64 *)var; + _InterlockedExchange64(volatile_var, value); +#else + Py_BUILD_ASSERT(sizeof(long) == sizeof(*var)); + volatile long *volatile_var = (volatile long *)var; + _InterlockedExchange(volatile_var, value); +#endif +} + +#else +// Fallback implementation using volatile + +static inline Py_ssize_t _Py_atomic_size_get(Py_ssize_t *var) +{ + volatile Py_ssize_t *volatile_var = (volatile Py_ssize_t *)var; + return *volatile_var; +} + +static inline void _Py_atomic_size_set(Py_ssize_t *var, Py_ssize_t value) +{ + volatile Py_ssize_t *volatile_var = (volatile Py_ssize_t *)var; + *volatile_var = value; +} +#endif + +#ifdef __cplusplus +} +#endif +#endif /* Py_ATOMIC_FUNC_H */ diff --git a/Makefile.pre.in b/Makefile.pre.in index 69ed251936a60..5c93b0b3fa9c6 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1111,6 +1111,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/internal/pycore_abstract.h \ $(srcdir)/Include/internal/pycore_accu.h \ $(srcdir)/Include/internal/pycore_atomic.h \ + $(srcdir)/Include/internal/pycore_atomic_funcs.h \ $(srcdir)/Include/internal/pycore_bitutils.h \ $(srcdir)/Include/internal/pycore_bytes_methods.h \ $(srcdir)/Include/internal/pycore_call.h \ diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c index df4725ea0a1c8..ab6c5965d1661 100644 --- a/Modules/_testinternalcapi.c +++ b/Modules/_testinternalcapi.c @@ -12,6 +12,7 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" +#include "pycore_atomic_funcs.h" // _Py_atomic_int_get() #include "pycore_bitutils.h" // _Py_bswap32() #include "pycore_gc.h" // PyGC_Head #include "pycore_hashtable.h" // _Py_hashtable_new() @@ -267,6 +268,17 @@ test_set_config(PyObject *Py_UNUSED(self), PyObject *dict) } +static PyObject* +test_atomic_funcs(PyObject *self, PyObject *Py_UNUSED(args)) +{ + // Test _Py_atomic_size_get() and _Py_atomic_size_set() + Py_ssize_t var = 1; + _Py_atomic_size_set(&var, 2); + assert(_Py_atomic_size_get(&var) == 2); + Py_RETURN_NONE; +} + + static PyMethodDef TestMethods[] = { {"get_configs", get_configs, METH_NOARGS}, {"get_recursion_depth", get_recursion_depth, METH_NOARGS}, @@ -276,6 +288,7 @@ static PyMethodDef TestMethods[] = { {"test_hashtable", test_hashtable, METH_NOARGS}, {"get_config", test_get_config, METH_NOARGS}, {"set_config", test_set_config, METH_O}, + {"test_atomic_funcs", test_atomic_funcs, METH_NOARGS}, {NULL, NULL} /* sentinel */ }; diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index bbceb025c0c22..fd27dea9daec7 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -168,6 +168,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index ee1aa90bf7688..75a653dcbdab2 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -486,6 +486,9 @@ Include\internal + + Include + Include\internal diff --git a/configure b/configure index f07edfff266a0..530c04a0edee3 100755 --- a/configure +++ b/configure @@ -15429,6 +15429,7 @@ _ACEOF fi + EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} { $as_echo "$as_me:${as_lineno-$LINENO}: checking LDVERSION" >&5 @@ -17095,16 +17096,17 @@ $as_echo "#define HAVE_STD_ATOMIC 1" >>confdefs.h fi -# Check for GCC >= 4.7 __atomic builtins -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC >= 4.7 __atomic builtins" >&5 -$as_echo_n "checking for GCC >= 4.7 __atomic builtins... " >&6; } +# Check for GCC >= 4.7 and clang __atomic builtin functions +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for builtin __atomic_load_n and __atomic_store_n functions" >&5 +$as_echo_n "checking for builtin __atomic_load_n and __atomic_store_n functions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - volatile int val = 1; + int val; int main() { - __atomic_load_n(&val, __ATOMIC_SEQ_CST); + __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST); + (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST); return 0; } diff --git a/configure.ac b/configure.ac index ee5573cf64431..39eadfedfba02 100644 --- a/configure.ac +++ b/configure.ac @@ -5586,14 +5586,15 @@ if test "$have_stdatomic_h" = yes; then [Has stdatomic.h with atomic_int and atomic_uintptr_t]) fi -# Check for GCC >= 4.7 __atomic builtins -AC_MSG_CHECKING(for GCC >= 4.7 __atomic builtins) +# Check for GCC >= 4.7 and clang __atomic builtin functions +AC_MSG_CHECKING(for builtin __atomic_load_n and __atomic_store_n functions) AC_LINK_IFELSE( [ AC_LANG_SOURCE([[ - volatile int val = 1; + int val; int main() { - __atomic_load_n(&val, __ATOMIC_SEQ_CST); + __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST); + (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST); return 0; } ]]) @@ -5602,7 +5603,7 @@ AC_LINK_IFELSE( AC_MSG_RESULT($have_builtin_atomic) if test "$have_builtin_atomic" = yes; then - AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin atomics]) + AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Has builtin __atomic_load_n() and __atomic_store_n() functions]) fi # ensurepip option diff --git a/pyconfig.h.in b/pyconfig.h.in index 6ff5fc968a30c..045cbd53aee59 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -115,7 +115,7 @@ /* Define if `unsetenv` does not return an int. */ #undef HAVE_BROKEN_UNSETENV -/* Has builtin atomics */ +/* Has builtin __atomic_load_n() and __atomic_store_n() functions */ #undef HAVE_BUILTIN_ATOMIC /* Define to 1 if you have the 'chflags' function. */ @@ -287,6 +287,9 @@ /* Define to 1 if you have the `dup3' function. */ #undef HAVE_DUP3 +/* Define if you have the '_dyld_shared_cache_contains_path' function. */ +#undef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH + /* Defined when any dynamic module loading is enabled. */ #undef HAVE_DYNAMIC_LOADING @@ -787,9 +790,6 @@ /* Define if you have the 'prlimit' functions. */ #undef HAVE_PRLIMIT -/* Define if you have the '_dyld_shared_cache_contains_path' function. */ -#undef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH - /* Define to 1 if you have the header file. */ #undef HAVE_PROCESS_H From webhook-mailer at python.org Wed Dec 23 02:26:01 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Dec 2020 07:26:01 -0000 Subject: [Python-checkins] bpo-42620: Improve socket.getsockname doc string (GH-23742) Message-ID: https://github.com/python/cpython/commit/cf3565ca9a7ed0f7decd000e41fa3de400986e4d commit: cf3565ca9a7ed0f7decd000e41fa3de400986e4d branch: master author: Christian Heimes committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-22T23:25:57-08:00 summary: bpo-42620: Improve socket.getsockname doc string (GH-23742) Signed-off-by: Christian Heimes files: M Modules/socketmodule.c diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index f8e4de5825f7a..bb33db0fa47b8 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3365,8 +3365,9 @@ sock_getsockname(PySocketSockObject *s, PyObject *Py_UNUSED(ignored)) PyDoc_STRVAR(getsockname_doc, "getsockname() -> address info\n\ \n\ -Return the address of the local endpoint. For IP sockets, the address\n\ -info is a pair (hostaddr, port)."); +Return the address of the local endpoint. The format depends on the\n\ +address family. For IPv4 sockets, the address info is a pair\n\ +(hostaddr, port)."); #ifdef HAVE_GETPEERNAME /* Cray APP doesn't have this :-( */ From webhook-mailer at python.org Wed Dec 23 02:44:26 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Dec 2020 07:44:26 -0000 Subject: [Python-checkins] bpo-42620: Improve socket.getsockname doc string (GH-23742) Message-ID: https://github.com/python/cpython/commit/b20494618c6ac6ebcd354e0b16a6645fe47acbee commit: b20494618c6ac6ebcd354e0b16a6645fe47acbee branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-22T23:44:00-08:00 summary: bpo-42620: Improve socket.getsockname doc string (GH-23742) Signed-off-by: Christian Heimes (cherry picked from commit cf3565ca9a7ed0f7decd000e41fa3de400986e4d) Co-authored-by: Christian Heimes files: M Modules/socketmodule.c diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 5dc5f4e0d397b..3e65dc027a38c 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3324,8 +3324,9 @@ sock_getsockname(PySocketSockObject *s, PyObject *Py_UNUSED(ignored)) PyDoc_STRVAR(getsockname_doc, "getsockname() -> address info\n\ \n\ -Return the address of the local endpoint. For IP sockets, the address\n\ -info is a pair (hostaddr, port)."); +Return the address of the local endpoint. The format depends on the\n\ +address family. For IPv4 sockets, the address info is a pair\n\ +(hostaddr, port)."); #ifdef HAVE_GETPEERNAME /* Cray APP doesn't have this :-( */ From webhook-mailer at python.org Wed Dec 23 02:48:15 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Dec 2020 07:48:15 -0000 Subject: [Python-checkins] bpo-42620: Improve socket.getsockname doc string (GH-23742) Message-ID: https://github.com/python/cpython/commit/7fe7d83c26b02c8a65c8a9633cc4251f5cd97ebf commit: 7fe7d83c26b02c8a65c8a9633cc4251f5cd97ebf branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-22T23:48:04-08:00 summary: bpo-42620: Improve socket.getsockname doc string (GH-23742) Signed-off-by: Christian Heimes (cherry picked from commit cf3565ca9a7ed0f7decd000e41fa3de400986e4d) Co-authored-by: Christian Heimes files: M Modules/socketmodule.c diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 76ef606e10b1f..be75e681d45d9 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3407,8 +3407,9 @@ sock_getsockname(PySocketSockObject *s, PyObject *Py_UNUSED(ignored)) PyDoc_STRVAR(getsockname_doc, "getsockname() -> address info\n\ \n\ -Return the address of the local endpoint. For IP sockets, the address\n\ -info is a pair (hostaddr, port)."); +Return the address of the local endpoint. The format depends on the\n\ +address family. For IPv4 sockets, the address info is a pair\n\ +(hostaddr, port)."); #ifdef HAVE_GETPEERNAME /* Cray APP doesn't have this :-( */ From webhook-mailer at python.org Wed Dec 23 02:55:42 2020 From: webhook-mailer at python.org (tiran) Date: Wed, 23 Dec 2020 07:55:42 -0000 Subject: [Python-checkins] bpo-1635741: Port resource extension module to module state (GH-23462) Message-ID: https://github.com/python/cpython/commit/6d9ec8bbfa07161431dc6190dd0772a6fbaf7ebd commit: 6d9ec8bbfa07161431dc6190dd0772a6fbaf7ebd branch: master author: Christian Heimes committer: tiran date: 2020-12-23T08:55:11+01:00 summary: bpo-1635741: Port resource extension module to module state (GH-23462) Signed-off-by: Christian Heimes files: A Misc/NEWS.d/next/C API/2020-11-22-13-46-06.bpo-1635741.-fJLzA.rst M Modules/resource.c diff --git a/Misc/NEWS.d/next/C API/2020-11-22-13-46-06.bpo-1635741.-fJLzA.rst b/Misc/NEWS.d/next/C API/2020-11-22-13-46-06.bpo-1635741.-fJLzA.rst new file mode 100644 index 0000000000000..da1e4cb9ef17e --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-11-22-13-46-06.bpo-1635741.-fJLzA.rst @@ -0,0 +1 @@ +Port :mod:`resource` extension module to module state diff --git a/Modules/resource.c b/Modules/resource.c index 4f5dcf8438788..f10a80f477686 100644 --- a/Modules/resource.c +++ b/Modules/resource.c @@ -63,8 +63,20 @@ static PyStructSequence_Desc struct_rusage_desc = { 16 /* n_in_sequence */ }; -static int initialized; -static PyTypeObject StructRUsageType; +typedef struct { + PyTypeObject *StructRUsageType; +} resourcemodulestate; + + +static inline resourcemodulestate* +get_resource_state(PyObject *module) +{ + void *state = PyModule_GetState(module); + assert(state != NULL); + return (resourcemodulestate *)state; +} + +static struct PyModuleDef resourcemodule; /*[clinic input] resource.getrusage @@ -91,7 +103,8 @@ resource_getrusage_impl(PyObject *module, int who) return NULL; } - result = PyStructSequence_New(&StructRUsageType); + result = PyStructSequence_New( + get_resource_state(module)->StructRUsageType); if (!result) return NULL; @@ -336,10 +349,10 @@ resource_methods[] = { /* Module initialization */ - static int resource_exec(PyObject *module) { + resourcemodulestate *state = get_resource_state(module); #define ADD_INT(module, value) \ do { \ if (PyModule_AddIntConstant(module, #value, value) < 0) { \ @@ -353,13 +366,12 @@ resource_exec(PyObject *module) Py_DECREF(PyExc_OSError); return -1; } - if (!initialized) { - if (PyStructSequence_InitType2(&StructRUsageType, - &struct_rusage_desc) < 0) - return -1; - } - if(PyModule_AddType(module, &StructRUsageType) < 0) { + state->StructRUsageType = PyStructSequence_NewType(&struct_rusage_desc); + if (state->StructRUsageType == NULL) { + return -1; + } + if (PyModule_AddType(module, state->StructRUsageType) < 0) { return -1; } @@ -483,8 +495,6 @@ resource_exec(PyObject *module) Py_DECREF(v); return -1; } - - initialized = 1; return 0; #undef ADD_INT @@ -495,12 +505,32 @@ static struct PyModuleDef_Slot resource_slots[] = { {0, NULL} }; +static int +resourcemodule_traverse(PyObject *m, visitproc visit, void *arg) { + Py_VISIT(get_resource_state(m)->StructRUsageType); + return 0; +} + +static int +resourcemodule_clear(PyObject *m) { + Py_CLEAR(get_resource_state(m)->StructRUsageType); + return 0; +} + +static void +resourcemodule_free(void *m) { + resourcemodule_clear((PyObject *)m); +} + static struct PyModuleDef resourcemodule = { PyModuleDef_HEAD_INIT, .m_name = "resource", - .m_size = 0, + .m_size = sizeof(resourcemodulestate), .m_methods = resource_methods, .m_slots = resource_slots, + .m_traverse = resourcemodule_traverse, + .m_clear = resourcemodule_clear, + .m_free = resourcemodule_free, }; PyMODINIT_FUNC From webhook-mailer at python.org Wed Dec 23 05:45:03 2020 From: webhook-mailer at python.org (asvetlov) Date: Wed, 23 Dec 2020 10:45:03 -0000 Subject: [Python-checkins] BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) Message-ID: https://github.com/python/cpython/commit/d90ff376813843310a6f9ccc96551fa1521e8fef commit: d90ff376813843310a6f9ccc96551fa1521e8fef branch: master author: Matt Fowler committer: asvetlov date: 2020-12-23T12:44:52+02:00 summary: BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) files: M Doc/library/asyncio-sync.rst diff --git a/Doc/library/asyncio-sync.rst b/Doc/library/asyncio-sync.rst index a7688d5120efd..d12630afc6a32 100644 --- a/Doc/library/asyncio-sync.rst +++ b/Doc/library/asyncio-sync.rst @@ -101,8 +101,8 @@ Event that some event has happened. An Event object manages an internal flag that can be set to *true* - with the :meth:`set` method and reset to *false* with the - :meth:`clear` method. The :meth:`wait` method blocks until the + with the :meth:`~Event.set` method and reset to *false* with the + :meth:`clear` method. The :meth:`~Event.wait` method blocks until the flag is set to *true*. The flag is set to *false* initially. .. _asyncio_example_sync_event: @@ -135,7 +135,7 @@ Event Wait until the event is set. If the event is set, return ``True`` immediately. - Otherwise block until another task calls :meth:`set`. + Otherwise block until another task calls :meth:`~Event.set`. .. method:: set() @@ -148,8 +148,8 @@ Event Clear (unset) the event. - Tasks awaiting on :meth:`wait` will now block until the - :meth:`set` method is called again. + Tasks awaiting on :meth:`~Event.wait` will now block until the + :meth:`~Event.set` method is called again. .. method:: is_set() From webhook-mailer at python.org Wed Dec 23 06:14:17 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Dec 2020 11:14:17 -0000 Subject: [Python-checkins] BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) Message-ID: https://github.com/python/cpython/commit/1e1bacf9e61143e7b0f78de9dcb578983bea8f81 commit: 1e1bacf9e61143e7b0f78de9dcb578983bea8f81 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-23T03:13:51-08:00 summary: BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) (cherry picked from commit d90ff376813843310a6f9ccc96551fa1521e8fef) Co-authored-by: Matt Fowler files: M Doc/library/asyncio-sync.rst diff --git a/Doc/library/asyncio-sync.rst b/Doc/library/asyncio-sync.rst index 84a52cb2d5757..f62ce670fccbf 100644 --- a/Doc/library/asyncio-sync.rst +++ b/Doc/library/asyncio-sync.rst @@ -104,8 +104,8 @@ Event that some event has happened. An Event object manages an internal flag that can be set to *true* - with the :meth:`set` method and reset to *false* with the - :meth:`clear` method. The :meth:`wait` method blocks until the + with the :meth:`~Event.set` method and reset to *false* with the + :meth:`clear` method. The :meth:`~Event.wait` method blocks until the flag is set to *true*. The flag is set to *false* initially. @@ -142,7 +142,7 @@ Event Wait until the event is set. If the event is set, return ``True`` immediately. - Otherwise block until another task calls :meth:`set`. + Otherwise block until another task calls :meth:`~Event.set`. .. method:: set() @@ -155,8 +155,8 @@ Event Clear (unset) the event. - Tasks awaiting on :meth:`wait` will now block until the - :meth:`set` method is called again. + Tasks awaiting on :meth:`~Event.wait` will now block until the + :meth:`~Event.set` method is called again. .. method:: is_set() From webhook-mailer at python.org Wed Dec 23 06:14:31 2020 From: webhook-mailer at python.org (miss-islington) Date: Wed, 23 Dec 2020 11:14:31 -0000 Subject: [Python-checkins] BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) Message-ID: https://github.com/python/cpython/commit/412c935a37eb8fe290b684c44c80cf361f6b814b commit: 412c935a37eb8fe290b684c44c80cf361f6b814b branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-23T03:14:27-08:00 summary: BPO-42703: Fix incorrect documentation links for asyncio.Event (GH-23881) (cherry picked from commit d90ff376813843310a6f9ccc96551fa1521e8fef) Co-authored-by: Matt Fowler files: M Doc/library/asyncio-sync.rst diff --git a/Doc/library/asyncio-sync.rst b/Doc/library/asyncio-sync.rst index f080b03bc7c51..c401fb50a5075 100644 --- a/Doc/library/asyncio-sync.rst +++ b/Doc/library/asyncio-sync.rst @@ -104,8 +104,8 @@ Event that some event has happened. An Event object manages an internal flag that can be set to *true* - with the :meth:`set` method and reset to *false* with the - :meth:`clear` method. The :meth:`wait` method blocks until the + with the :meth:`~Event.set` method and reset to *false* with the + :meth:`clear` method. The :meth:`~Event.wait` method blocks until the flag is set to *true*. The flag is set to *false* initially. @@ -142,7 +142,7 @@ Event Wait until the event is set. If the event is set, return ``True`` immediately. - Otherwise block until another task calls :meth:`set`. + Otherwise block until another task calls :meth:`~Event.set`. .. method:: set() @@ -155,8 +155,8 @@ Event Clear (unset) the event. - Tasks awaiting on :meth:`wait` will now block until the - :meth:`set` method is called again. + Tasks awaiting on :meth:`~Event.wait` will now block until the + :meth:`~Event.set` method is called again. .. method:: is_set() From webhook-mailer at python.org Wed Dec 23 06:44:22 2020 From: webhook-mailer at python.org (markshannon) Date: Wed, 23 Dec 2020 11:44:22 -0000 Subject: [Python-checkins] bpo-42246: Don't eliminate jumps to jumps, if it will break PEP 626. (GH-23896) Message-ID: https://github.com/python/cpython/commit/28b75c80dcc1e17ed3ac1c69362bf8dc164b760a commit: 28b75c80dcc1e17ed3ac1c69362bf8dc164b760a branch: master author: Mark Shannon committer: markshannon date: 2020-12-23T11:43:10Z summary: bpo-42246: Don't eliminate jumps to jumps, if it will break PEP 626. (GH-23896) files: A Misc/NEWS.d/next/Core and Builtins/2020-12-22-20-30-11.bpo-42246.7BrPLg.rst M Lib/test/test_dis.py M Lib/test/test_sys_settrace.py M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index f618d2dbf6213..0383124464ff3 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -1009,7 +1009,7 @@ def jumpy(): Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=2, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=4, starts_line=None, is_jump_target=False), Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='FOR_ITER', opcode=93, arg=32, argval=42, argrepr='to 42', offset=8, starts_line=None, is_jump_target=True), + Instruction(opname='FOR_ITER', opcode=93, arg=34, argval=44, argrepr='to 44', offset=8, starts_line=None, is_jump_target=True), Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=12, starts_line=4, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=14, starts_line=None, is_jump_target=False), @@ -1023,94 +1023,95 @@ def jumpy(): Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=30, starts_line=7, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=8, argval=8, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=42, argval=42, argrepr='', offset=36, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=8, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=50, argval=50, argrepr='', offset=40, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=42, starts_line=10, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=44, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=46, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=48, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=50, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=94, argval=94, argrepr='', offset=52, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=54, starts_line=12, is_jump_target=True), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=56, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=58, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=60, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=62, starts_line=13, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=64, starts_line=None, is_jump_target=False), - Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None, argval=None, argrepr='', offset=66, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=68, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=70, starts_line=14, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=72, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=74, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=80, argval=80, argrepr='', offset=76, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=50, argval=50, argrepr='', offset=78, starts_line=15, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=80, starts_line=16, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=82, starts_line=None, is_jump_target=False), - Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=84, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=90, argval=90, argrepr='', offset=86, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=102, argval=102, argrepr='', offset=88, starts_line=17, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=90, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=54, argval=54, argrepr='', offset=92, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=94, starts_line=19, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=96, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=98, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=100, starts_line=None, is_jump_target=False), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=96, argval=200, argrepr='to 200', offset=102, starts_line=20, is_jump_target=True), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=118, argrepr='to 118', offset=104, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=106, starts_line=21, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=108, starts_line=None, is_jump_target=False), - Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=110, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=24, argval=142, argrepr='to 142', offset=116, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=118, starts_line=22, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=120, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=210, argval=210, argrepr='', offset=122, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=124, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=52, argrepr='', offset=40, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=8, argval=8, argrepr='', offset=42, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=44, starts_line=10, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=46, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=48, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=50, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=52, starts_line=11, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=96, argval=96, argrepr='', offset=54, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=56, starts_line=12, is_jump_target=True), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=58, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=60, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=62, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=64, starts_line=13, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=66, starts_line=None, is_jump_target=False), + Instruction(opname='INPLACE_SUBTRACT', opcode=56, arg=None, argval=None, argrepr='', offset=68, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=70, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=72, starts_line=14, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=74, starts_line=None, is_jump_target=False), + Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=76, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=82, argval=82, argrepr='', offset=78, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=52, argrepr='', offset=80, starts_line=15, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=16, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=84, starts_line=None, is_jump_target=False), + Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=86, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=92, argval=92, argrepr='', offset=88, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=104, argval=104, argrepr='', offset=90, starts_line=17, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=92, starts_line=11, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=56, argval=56, argrepr='', offset=94, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=96, starts_line=19, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=98, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=100, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=102, starts_line=None, is_jump_target=False), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=96, argval=202, argrepr='to 202', offset=104, starts_line=20, is_jump_target=True), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=120, argrepr='to 120', offset=106, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=108, starts_line=21, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=110, starts_line=None, is_jump_target=False), + Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=116, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=24, argval=144, argrepr='to 144', offset=118, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=120, starts_line=22, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=122, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=212, argval=212, argrepr='', offset=124, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=130, starts_line=23, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=132, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=134, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=136, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=44, argval=186, argrepr='to 186', offset=140, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=142, starts_line=25, is_jump_target=True), - Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=170, argrepr='to 170', offset=144, starts_line=None, is_jump_target=False), - Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=146, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=148, starts_line=26, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=150, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=152, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=154, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=158, starts_line=None, is_jump_target=False), - Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=160, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=130, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=132, starts_line=23, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=8, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=134, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=136, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=140, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=44, argval=188, argrepr='to 188', offset=142, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), + Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), + Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=154, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=156, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=158, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=160, starts_line=None, is_jump_target=False), Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=162, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=164, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=166, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=186, argrepr='to 186', offset=168, starts_line=None, is_jump_target=False), - Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=170, starts_line=None, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=176, argval=176, argrepr='', offset=172, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=174, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=176, starts_line=None, is_jump_target=True), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=False), + Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=166, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), + Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=True), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=178, argval=178, argrepr='', offset=174, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=176, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=True), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), - Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=188, starts_line=28, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=190, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=192, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=194, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=196, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=198, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=200, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=202, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=204, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=206, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=208, starts_line=None, is_jump_target=False), - Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=210, starts_line=22, is_jump_target=True), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), + Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=184, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=186, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=188, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=190, starts_line=28, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=192, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=194, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=196, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=198, starts_line=None, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=200, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=202, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=204, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=206, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=208, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=210, starts_line=None, is_jump_target=False), + Instruction(opname='RERAISE', opcode=119, arg=0, argval=0, argrepr='', offset=212, starts_line=22, is_jump_target=True), ] # One last piece of inspect fodder to check the default line number handling diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 340f37fae7c5b..50b5672e35a32 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -810,6 +810,70 @@ def func(): (6, 'line'), (6, 'return')]) + def test_break_to_continue1(self): + + def func(): + TRUE = 1 + x = [1] + while x: + x.pop() + while TRUE: + break + continue + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (7, 'line'), + (3, 'line'), + (3, 'return')]) + + def test_break_to_continue2(self): + + def func(): + TRUE = 1 + x = [1] + while x: + x.pop() + while TRUE: + break + else: + continue + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (6, 'line'), + (3, 'line'), + (3, 'return')]) + + def test_break_to_break(self): + + def func(): + TRUE = 1 + while TRUE: + while TRUE: + break + break + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (4, 'line'), + (5, 'line'), + (5, 'return')]) + class SkipLineEventsTraceTestCase(TraceTestCase): """Repeat the trace tests, but with per-line events skipped""" diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-22-20-30-11.bpo-42246.7BrPLg.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-22-20-30-11.bpo-42246.7BrPLg.rst new file mode 100644 index 0000000000000..33564f6b56b9f --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-22-20-30-11.bpo-42246.7BrPLg.rst @@ -0,0 +1 @@ +Jumps to jumps are not eliminated when it would break PEP 626. diff --git a/Python/compile.c b/Python/compile.c index 6698b55000d9c..4ba91400001aa 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1432,28 +1432,32 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg) return 1; } -static int -compiler_addop_j(struct compiler *c, int opcode, basicblock *b) +static int add_jump_to_block(basicblock *b, int opcode, int lineno, basicblock *target) { - struct instr *i; - int off; - - if (c->c_do_not_emit_bytecode) { - return 1; - } - assert(HAS_ARG(opcode)); assert(b != NULL); - off = compiler_next_instr(c->u->u_curblock); - if (off < 0) + assert(target != NULL); + + int off = compiler_next_instr(b); + struct instr *i = &b->b_instr[off]; + if (off < 0) { return 0; - i = &c->u->u_curblock->b_instr[off]; + } i->i_opcode = opcode; - i->i_target = b; - i->i_lineno = c->u->u_lineno; + i->i_target = target; + i->i_lineno = lineno; return 1; } +static int +compiler_addop_j(struct compiler *c, int opcode, basicblock *b) +{ + if (c->c_do_not_emit_bytecode) { + return 1; + } + return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, b); +} + /* NEXT_BLOCK() creates an implicit jump from the current block to the new block. @@ -6067,6 +6071,27 @@ fold_tuple_on_constants(struct instr *inst, return 0; } + +static int +eliminate_jump_to_jump(basicblock *bb, int opcode) { + assert (bb->b_iused > 0); + struct instr *inst = &bb->b_instr[bb->b_iused-1]; + assert (is_jump(inst)); + assert (inst->i_target->b_iused > 0); + struct instr *target = &inst->i_target->b_instr[0]; + if (inst->i_target == target->i_target) { + /* Nothing to do */ + return 0; + } + int lineno = target->i_lineno; + if (add_jump_to_block(bb, opcode, lineno, target->i_target) == 0) { + return -1; + } + assert (bb->b_iused >= 2); + bb->b_instr[bb->b_iused-2].i_opcode = NOP; + return 0; +} + /* Maximum size of basic block that should be copied in optimizer */ #define MAX_COPY_SIZE 4 @@ -6183,22 +6208,27 @@ optimize_basic_block(basicblock *bb, PyObject *consts) case JUMP_IF_FALSE_OR_POP: switch(target->i_opcode) { case POP_JUMP_IF_FALSE: - *inst = *target; - --i; + if (inst->i_lineno == target->i_lineno) { + *inst = *target; + i--; + } break; case JUMP_ABSOLUTE: case JUMP_FORWARD: case JUMP_IF_FALSE_OR_POP: - if (inst->i_target != target->i_target) { + if (inst->i_lineno == target->i_lineno && + inst->i_target != target->i_target) { inst->i_target = target->i_target; - --i; + i--; } break; case JUMP_IF_TRUE_OR_POP: assert (inst->i_target->b_iused == 1); - inst->i_opcode = POP_JUMP_IF_FALSE; - inst->i_target = inst->i_target->b_next; - --i; + if (inst->i_lineno == target->i_lineno) { + inst->i_opcode = POP_JUMP_IF_FALSE; + inst->i_target = inst->i_target->b_next; + --i; + } break; } break; @@ -6206,22 +6236,27 @@ optimize_basic_block(basicblock *bb, PyObject *consts) case JUMP_IF_TRUE_OR_POP: switch(target->i_opcode) { case POP_JUMP_IF_TRUE: - *inst = *target; - --i; + if (inst->i_lineno == target->i_lineno) { + *inst = *target; + i--; + } break; case JUMP_ABSOLUTE: case JUMP_FORWARD: case JUMP_IF_TRUE_OR_POP: - if (inst->i_target != target->i_target) { + if (inst->i_lineno == target->i_lineno && + inst->i_target != target->i_target) { inst->i_target = target->i_target; - --i; + i--; } break; case JUMP_IF_FALSE_OR_POP: assert (inst->i_target->b_iused == 1); - inst->i_opcode = POP_JUMP_IF_TRUE; - inst->i_target = inst->i_target->b_next; - --i; + if (inst->i_lineno == target->i_lineno) { + inst->i_opcode = POP_JUMP_IF_TRUE; + inst->i_target = inst->i_target->b_next; + --i; + } break; } break; @@ -6230,9 +6265,9 @@ optimize_basic_block(basicblock *bb, PyObject *consts) switch(target->i_opcode) { case JUMP_ABSOLUTE: case JUMP_FORWARD: - if (inst->i_target != target->i_target) { + if (inst->i_lineno == target->i_lineno) { inst->i_target = target->i_target; - --i; + i--; } break; } @@ -6242,9 +6277,9 @@ optimize_basic_block(basicblock *bb, PyObject *consts) switch(target->i_opcode) { case JUMP_ABSOLUTE: case JUMP_FORWARD: - if (inst->i_target != target->i_target) { + if (inst->i_lineno == target->i_lineno) { inst->i_target = target->i_target; - --i; + i--; } break; } @@ -6255,32 +6290,30 @@ optimize_basic_block(basicblock *bb, PyObject *consts) assert (i == bb->b_iused-1); switch(target->i_opcode) { case JUMP_FORWARD: - if (inst->i_target != target->i_target) { - inst->i_target = target->i_target; -// --i; + if (eliminate_jump_to_jump(bb, inst->i_opcode)) { + goto error; } break; + case JUMP_ABSOLUTE: - if (inst->i_target != target->i_target) { - inst->i_target = target->i_target; - inst->i_opcode = target->i_opcode; - --i; + if (eliminate_jump_to_jump(bb, JUMP_ABSOLUTE)) { + goto error; } break; - } - if (inst->i_target->b_exit && inst->i_target->b_iused <= MAX_COPY_SIZE) { - basicblock *to_copy = inst->i_target; - inst->i_opcode = NOP; - for (i = 0; i < to_copy->b_iused; i++) { - int index = compiler_next_instr(bb); - if (index < 0) { - return -1; + default: + if (inst->i_target->b_exit && inst->i_target->b_iused <= MAX_COPY_SIZE) { + basicblock *to_copy = inst->i_target; + inst->i_opcode = NOP; + for (i = 0; i < to_copy->b_iused; i++) { + int index = compiler_next_instr(bb); + if (index < 0) { + return -1; + } + bb->b_instr[index] = to_copy->b_instr[i]; + } + bb->b_exit = 1; } - bb->b_instr[index] = to_copy->b_instr[i]; - } - bb->b_exit = 1; } - break; } } return 0; diff --git a/Python/importlib.h b/Python/importlib.h index 14d0557f75aae..2f100515b5542 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -68,7 +68,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 78,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, 0,0,7,0,0,0,67,0,0,0,115,56,0,0,0,100, 1,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, - 4,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, + 36,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, 3,1,0,113,4,124,0,106,3,160,4,124,1,106,3,161, 1,1,0,100,2,83,0,41,3,122,47,83,105,109,112,108, 101,32,115,117,98,115,116,105,116,117,116,101,32,102,111,114, @@ -1019,782 +1019,783 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 8,1,4,3,14,254,2,1,8,1,2,254,2,251,2,246, 255,128,114,166,0,0,0,99,1,0,0,0,0,0,0,0, 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0, - 115,240,0,0,0,124,0,106,0,100,0,117,1,114,58,116, + 115,242,0,0,0,124,0,106,0,100,0,117,1,114,58,116, 1,124,0,106,0,100,1,131,2,115,58,116,2,124,0,106, 0,131,1,155,0,100,2,157,2,125,1,116,3,160,4,124, 1,116,5,161,2,1,0,116,6,124,0,131,1,83,0,116, - 7,124,0,131,1,125,2,100,3,124,0,95,8,122,156,124, - 2,116,9,106,10,124,0,106,11,60,0,122,50,124,0,106, - 0,100,0,117,0,114,122,124,0,106,12,100,0,117,0,114, - 134,116,13,100,4,124,0,106,11,100,5,141,2,130,1,124, - 0,106,0,160,14,124,2,161,1,1,0,87,0,110,38,1, - 0,1,0,1,0,122,14,116,9,106,10,124,0,106,11,61, - 0,87,0,130,0,4,0,116,15,121,238,1,0,1,0,1, - 0,89,0,130,0,116,9,106,10,160,16,124,0,106,11,161, - 1,125,2,124,2,116,9,106,10,124,0,106,11,60,0,116, - 17,100,6,124,0,106,11,124,0,106,0,131,3,1,0,87, - 0,100,7,124,0,95,8,124,2,83,0,100,7,124,0,95, - 8,119,0,119,0,41,8,78,114,157,0,0,0,114,162,0, - 0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0,114,7, - 0,0,0,114,95,0,0,0,114,96,0,0,0,114,163,0, - 0,0,114,166,0,0,0,114,159,0,0,0,90,13,95,105, - 110,105,116,105,97,108,105,122,105,110,103,114,18,0,0,0, - 114,99,0,0,0,114,20,0,0,0,114,123,0,0,0,114, - 83,0,0,0,114,157,0,0,0,114,67,0,0,0,114,165, - 0,0,0,114,80,0,0,0,41,3,114,103,0,0,0,114, - 102,0,0,0,114,104,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,14,95,108,111,97,100,95, - 117,110,108,111,99,107,101,100,162,2,0,0,115,58,0,0, - 0,10,2,12,2,16,1,12,2,8,1,8,2,6,5,2, - 1,12,1,2,1,10,1,10,1,14,1,16,3,6,1,2, - 1,12,1,2,3,12,254,2,1,2,1,14,5,12,1,18, - 1,6,2,4,2,8,254,2,245,255,128,114,167,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,8,0,0,0,67,0,0,0,115,54,0,0,0,116,0, - 124,0,106,1,131,1,143,24,1,0,116,2,124,0,131,1, - 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, - 49,0,115,40,119,1,1,0,1,0,1,0,89,0,1,0, - 100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,97, - 32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,101, - 99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,104, - 101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,46, - 10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,101, - 32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,111, - 32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,32, - 32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,115, - 32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0,0,114, - 20,0,0,0,114,167,0,0,0,169,1,114,103,0,0,0, + 7,124,0,131,1,125,2,100,3,124,0,95,8,122,158,124, + 2,116,9,106,10,124,0,106,11,60,0,122,52,124,0,106, + 0,100,0,117,0,114,124,124,0,106,12,100,0,117,0,114, + 122,116,13,100,4,124,0,106,11,100,5,141,2,130,1,110, + 12,124,0,106,0,160,14,124,2,161,1,1,0,87,0,110, + 38,1,0,1,0,1,0,122,14,116,9,106,10,124,0,106, + 11,61,0,87,0,130,0,4,0,116,15,121,240,1,0,1, + 0,1,0,89,0,130,0,116,9,106,10,160,16,124,0,106, + 11,161,1,125,2,124,2,116,9,106,10,124,0,106,11,60, + 0,116,17,100,6,124,0,106,11,124,0,106,0,131,3,1, + 0,87,0,100,7,124,0,95,8,124,2,83,0,100,7,124, + 0,95,8,119,0,119,0,41,8,78,114,157,0,0,0,114, + 162,0,0,0,84,114,161,0,0,0,114,19,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,18,114,116,0,0,0,114,11,0,0,0, + 114,7,0,0,0,114,95,0,0,0,114,96,0,0,0,114, + 163,0,0,0,114,166,0,0,0,114,159,0,0,0,90,13, + 95,105,110,105,116,105,97,108,105,122,105,110,103,114,18,0, + 0,0,114,99,0,0,0,114,20,0,0,0,114,123,0,0, + 0,114,83,0,0,0,114,157,0,0,0,114,67,0,0,0, + 114,165,0,0,0,114,80,0,0,0,41,3,114,103,0,0, + 0,114,102,0,0,0,114,104,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,14,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,162,2,0,0,115,58, + 0,0,0,10,2,12,2,16,1,12,2,8,1,8,2,6, + 5,2,1,12,1,2,1,10,1,10,1,16,1,16,3,6, + 1,2,1,12,1,2,3,12,254,2,1,2,1,14,5,12, + 1,18,1,6,2,4,2,8,254,2,245,255,128,114,167,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,8,0,0,0,67,0,0,0,115,54,0,0,0, + 116,0,124,0,106,1,131,1,143,24,1,0,116,2,124,0, + 131,1,87,0,2,0,100,1,4,0,4,0,131,3,1,0, + 83,0,49,0,115,40,119,1,1,0,1,0,1,0,89,0, + 1,0,100,1,83,0,41,2,122,191,82,101,116,117,114,110, + 32,97,32,110,101,119,32,109,111,100,117,108,101,32,111,98, + 106,101,99,116,44,32,108,111,97,100,101,100,32,98,121,32, + 116,104,101,32,115,112,101,99,39,115,32,108,111,97,100,101, + 114,46,10,10,32,32,32,32,84,104,101,32,109,111,100,117, + 108,101,32,105,115,32,110,111,116,32,97,100,100,101,100,32, + 116,111,32,105,116,115,32,112,97,114,101,110,116,46,10,10, + 32,32,32,32,73,102,32,97,32,109,111,100,117,108,101,32, + 105,115,32,97,108,114,101,97,100,121,32,105,110,32,115,121, + 115,46,109,111,100,117,108,101,115,44,32,116,104,97,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,54,0,0, + 0,114,20,0,0,0,114,167,0,0,0,169,1,114,103,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,101,0,0,0,207,2,0,0,115,6,0,0,0,12, + 9,42,1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,20,100,6,100,7,132,1,131,1, + 90,8,101,7,100,21,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,101,12,100,14,100,15, + 132,0,131,1,131,1,90,13,101,7,101,12,100,16,100,17, + 132,0,131,1,131,1,90,14,101,7,101,12,100,18,100,19, + 132,0,131,1,131,1,90,15,101,7,101,16,131,1,90,17, + 100,5,83,0,41,22,218,15,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,97, + 116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,10, + 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, + 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, + 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, + 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, + 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, + 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, + 115,115,46,10,10,32,32,32,32,122,8,98,117,105,108,116, + 45,105,110,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,5,0,0,0,67,0,0,0,115,22,0,0, + 0,100,1,124,0,106,0,155,2,100,2,116,1,106,2,155, + 0,100,3,157,5,83,0,41,5,250,115,82,101,116,117,114, + 110,32,114,101,112,114,32,102,111,114,32,116,104,101,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 84,104,101,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,84,104,101,32,105, + 109,112,111,114,116,32,109,97,99,104,105,110,101,114,121,32, + 100,111,101,115,32,116,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,8, + 60,109,111,100,117,108,101,32,122,2,32,40,122,2,41,62, + 78,41,3,114,9,0,0,0,114,169,0,0,0,114,145,0, + 0,0,169,1,114,104,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,107,0,0,0,233,2,0, + 0,115,4,0,0,0,22,7,255,128,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, + 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, + 0,115,42,0,0,0,124,2,100,0,117,1,114,12,100,0, + 83,0,116,0,160,1,124,1,161,1,114,38,116,2,124,1, + 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, + 169,2,78,114,144,0,0,0,41,4,114,61,0,0,0,90, + 10,105,115,95,98,117,105,108,116,105,110,114,98,0,0,0, + 114,145,0,0,0,169,4,218,3,99,108,115,114,85,0,0, + 0,218,4,112,97,116,104,218,6,116,97,114,103,101,116,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,242,2,0,0,115,12,0, + 0,0,8,2,4,1,10,1,16,1,4,2,255,128,122,25, + 66,117,105,108,116,105,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,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, + 0,0,115,30,0,0,0,124,0,160,0,124,1,124,2,161, + 2,125,3,124,3,100,1,117,1,114,26,124,3,106,1,83, + 0,100,1,83,0,41,2,122,175,70,105,110,100,32,116,104, + 101,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, + 112,97,116,104,39,32,105,115,32,101,118,101,114,32,115,112, + 101,99,105,102,105,101,100,32,116,104,101,110,32,116,104,101, + 32,115,101,97,114,99,104,32,105,115,32,99,111,110,115,105, + 100,101,114,101,100,32,97,32,102,97,105,108,117,114,101,46, + 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0, + 114,116,0,0,0,41,4,114,174,0,0,0,114,85,0,0, + 0,114,175,0,0,0,114,103,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,218,11,102,105,110,100, + 95,109,111,100,117,108,101,251,2,0,0,115,6,0,0,0, + 12,9,18,1,255,128,122,27,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,100, + 117,108,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,4,0,0,0,67,0,0,0,115,46,0,0, + 0,124,0,106,0,116,1,106,2,118,1,114,34,116,3,100, + 1,160,4,124,0,106,0,161,1,124,0,106,0,100,2,141, + 2,130,1,116,5,116,6,106,7,124,0,131,2,83,0,41, + 4,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,81,0,0,0, + 114,19,0,0,0,78,41,8,114,20,0,0,0,114,18,0, + 0,0,114,82,0,0,0,114,83,0,0,0,114,49,0,0, + 0,114,71,0,0,0,114,61,0,0,0,90,14,99,114,101, + 97,116,101,95,98,117,105,108,116,105,110,114,168,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 101,0,0,0,207,2,0,0,115,6,0,0,0,12,9,42, - 1,255,128,114,101,0,0,0,99,0,0,0,0,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,100,2,90,4,101,5,100,3,100,4,132,0,131,1, - 90,6,101,7,100,20,100,6,100,7,132,1,131,1,90,8, - 101,7,100,21,100,8,100,9,132,1,131,1,90,9,101,5, - 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, - 132,0,131,1,90,11,101,7,101,12,100,14,100,15,132,0, - 131,1,131,1,90,13,101,7,101,12,100,16,100,17,132,0, - 131,1,131,1,90,14,101,7,101,12,100,18,100,19,132,0, - 131,1,131,1,90,15,101,7,101,16,131,1,90,17,100,5, - 83,0,41,22,218,15,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,122,144,77,101,116,97,32,112,97,116,104, - 32,105,109,112,111,114,116,32,102,111,114,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,46,10,10,32, - 32,32,32,65,108,108,32,109,101,116,104,111,100,115,32,97, - 114,101,32,101,105,116,104,101,114,32,99,108,97,115,115,32, - 111,114,32,115,116,97,116,105,99,32,109,101,116,104,111,100, - 115,32,116,111,32,97,118,111,105,100,32,116,104,101,32,110, - 101,101,100,32,116,111,10,32,32,32,32,105,110,115,116,97, - 110,116,105,97,116,101,32,116,104,101,32,99,108,97,115,115, - 46,10,10,32,32,32,32,122,8,98,117,105,108,116,45,105, - 110,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,5,0,0,0,67,0,0,0,115,22,0,0,0,100, - 1,124,0,106,0,155,2,100,2,116,1,106,2,155,0,100, - 3,157,5,83,0,41,5,250,115,82,101,116,117,114,110,32, - 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, - 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, - 101,115,32,116,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,8,60,109, - 111,100,117,108,101,32,122,2,32,40,122,2,41,62,78,41, - 3,114,9,0,0,0,114,169,0,0,0,114,145,0,0,0, - 169,1,114,104,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,107,0,0,0,233,2,0,0,115, - 4,0,0,0,22,7,255,128,122,27,66,117,105,108,116,105, + 156,0,0,0,7,3,0,0,115,12,0,0,0,12,3,12, + 1,4,1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101, + 120,101,99,95,98,117,105,108,116,105,110,114,171,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 157,0,0,0,15,3,0,0,115,4,0,0,0,16,3,255, + 128,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,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,122,57,82,101,116,117,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,5, + 0,0,0,169,2,114,174,0,0,0,114,85,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,8, + 103,101,116,95,99,111,100,101,20,3,0,0,115,4,0,0, + 0,4,4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115,111,117,114,99,101,32,99,111,100,101,46,78,114,5, + 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,218,10,103,101,116,95,115,111,117, + 114,99,101,26,3,0,0,115,4,0,0,0,4,4,255,128, + 122,26,66,117,105,108,116,105,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,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,3, + 122,52,82,101,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,78,114,5,0,0,0,114,179,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,122,0,0,0,32,3,0,0,115,4,0,0,0,4, + 4,255,128,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,18,114,9,0,0,0,114,8,0, + 0,0,114,1,0,0,0,114,10,0,0,0,114,145,0,0, + 0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,114, + 107,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, + 100,114,177,0,0,0,114,178,0,0,0,114,156,0,0,0, + 114,157,0,0,0,114,90,0,0,0,114,180,0,0,0,114, + 181,0,0,0,114,122,0,0,0,114,105,0,0,0,114,164, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,169,0,0,0,222,2,0,0, + 115,48,0,0,0,8,0,4,2,4,7,2,2,10,1,2, + 8,12,1,2,8,12,1,2,11,10,1,2,7,10,1,2, + 4,2,1,12,1,2,4,2,1,12,1,2,4,2,1,12, + 1,12,4,255,128,114,169,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, + 0,0,0,115,144,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,90,4,101,5,100,3,100,4,132,0, + 131,1,90,6,101,7,100,22,100,6,100,7,132,1,131,1, + 90,8,101,7,100,23,100,8,100,9,132,1,131,1,90,9, + 101,5,100,10,100,11,132,0,131,1,90,10,101,5,100,12, + 100,13,132,0,131,1,90,11,101,7,100,14,100,15,132,0, + 131,1,90,12,101,7,101,13,100,16,100,17,132,0,131,1, + 131,1,90,14,101,7,101,13,100,18,100,19,132,0,131,1, + 131,1,90,15,101,7,101,13,100,20,100,21,132,0,131,1, + 131,1,90,16,100,5,83,0,41,24,218,14,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,122,142,77,101,116,97, + 32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,114, + 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,46, + 10,10,32,32,32,32,65,108,108,32,109,101,116,104,111,100, + 115,32,97,114,101,32,101,105,116,104,101,114,32,99,108,97, + 115,115,32,111,114,32,115,116,97,116,105,99,32,109,101,116, + 104,111,100,115,32,116,111,32,97,118,111,105,100,32,116,104, + 101,32,110,101,101,100,32,116,111,10,32,32,32,32,105,110, + 115,116,97,110,116,105,97,116,101,32,116,104,101,32,99,108, + 97,115,115,46,10,10,32,32,32,32,90,6,102,114,111,122, + 101,110,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,0, + 100,1,160,0,124,0,106,1,116,2,106,3,161,2,83,0, + 41,3,114,170,0,0,0,114,160,0,0,0,78,41,4,114, + 49,0,0,0,114,9,0,0,0,114,184,0,0,0,114,145, + 0,0,0,41,1,218,1,109,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,107,0,0,0,52,3,0,0, + 115,4,0,0,0,16,7,255,128,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,0,0,0,0,0, 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, - 42,0,0,0,124,2,100,0,117,1,114,12,100,0,83,0, - 116,0,160,1,124,1,161,1,114,38,116,2,124,1,124,0, - 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, - 78,114,144,0,0,0,41,4,114,61,0,0,0,90,10,105, - 115,95,98,117,105,108,116,105,110,114,98,0,0,0,114,145, - 0,0,0,169,4,218,3,99,108,115,114,85,0,0,0,218, - 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, - 110,100,95,115,112,101,99,242,2,0,0,115,12,0,0,0, - 8,2,4,1,10,1,16,1,4,2,255,128,122,25,66,117, - 105,108,116,105,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,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, - 3,124,3,100,1,117,1,114,26,124,3,106,1,83,0,100, - 1,83,0,41,2,122,175,70,105,110,100,32,116,104,101,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, - 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, - 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, - 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, - 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,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,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,177,0,0,0,114,116, - 0,0,0,41,4,114,174,0,0,0,114,85,0,0,0,114, - 175,0,0,0,114,103,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,11,102,105,110,100,95,109, - 111,100,117,108,101,251,2,0,0,115,6,0,0,0,12,9, - 18,1,255,128,122,27,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,4,0,0,0,67,0,0,0,115,46,0,0,0,124, - 0,106,0,116,1,106,2,118,1,114,34,116,3,100,1,160, - 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, - 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,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,81,0,0,0,114,19, - 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, - 114,82,0,0,0,114,83,0,0,0,114,49,0,0,0,114, - 71,0,0,0,114,61,0,0,0,90,14,99,114,101,97,116, - 101,95,98,117,105,108,116,105,110,114,168,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,156,0, - 0,0,7,3,0,0,115,12,0,0,0,12,3,12,1,4, - 1,6,255,12,2,255,128,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,117,108,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 16,0,0,0,116,0,116,1,106,2,124,0,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,71,0,0,0,114,61,0,0,0,90,12,101,120,101, - 99,95,98,117,105,108,116,105,110,114,171,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,157,0, - 0,0,15,3,0,0,115,4,0,0,0,16,3,255,128,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,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, - 122,57,82,101,116,117,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,5,0,0, - 0,169,2,114,174,0,0,0,114,85,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,8,103,101, - 116,95,99,111,100,101,20,3,0,0,115,4,0,0,0,4, - 4,255,128,122,24,66,117,105,108,116,105,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,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,122,56,82,101,116,117,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,115, - 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, - 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,10,103,101,116,95,115,111,117,114,99, - 101,26,3,0,0,115,4,0,0,0,4,4,255,128,122,26, - 66,117,105,108,116,105,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,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,3,122,52, - 82,101,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,78,114,5,0,0,0,114,179,0,0,0, + 30,0,0,0,116,0,160,1,124,1,161,1,114,26,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,114,172,0,0,0,41,4,114,61,0,0,0,114,92, + 0,0,0,114,98,0,0,0,114,145,0,0,0,114,173,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,114,177,0,0,0,61,3,0,0,115,8,0,0,0,10, + 2,16,1,4,2,255,128,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,0,0,0,0,0,3,0, + 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,116, + 0,160,1,124,1,161,1,114,14,124,0,83,0,100,1,83, + 0,41,2,122,93,70,105,110,100,32,97,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41, + 3,114,174,0,0,0,114,85,0,0,0,114,175,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 122,0,0,0,32,3,0,0,115,4,0,0,0,4,4,255, - 128,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,18,114,9,0,0,0,114,8,0,0,0, - 114,1,0,0,0,114,10,0,0,0,114,145,0,0,0,218, - 12,115,116,97,116,105,99,109,101,116,104,111,100,114,107,0, - 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, - 177,0,0,0,114,178,0,0,0,114,156,0,0,0,114,157, - 0,0,0,114,90,0,0,0,114,180,0,0,0,114,181,0, - 0,0,114,122,0,0,0,114,105,0,0,0,114,164,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,169,0,0,0,222,2,0,0,115,48, - 0,0,0,8,0,4,2,4,7,2,2,10,1,2,8,12, - 1,2,8,12,1,2,11,10,1,2,7,10,1,2,4,2, - 1,12,1,2,4,2,1,12,1,2,4,2,1,12,1,12, - 4,255,128,114,169,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,144,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, - 90,6,101,7,100,22,100,6,100,7,132,1,131,1,90,8, - 101,7,100,23,100,8,100,9,132,1,131,1,90,9,101,5, - 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, - 132,0,131,1,90,11,101,7,100,14,100,15,132,0,131,1, - 90,12,101,7,101,13,100,16,100,17,132,0,131,1,131,1, - 90,14,101,7,101,13,100,18,100,19,132,0,131,1,131,1, - 90,15,101,7,101,13,100,20,100,21,132,0,131,1,131,1, - 90,16,100,5,83,0,41,24,218,14,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,112, - 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,10, - 32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,32, - 97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,115, - 32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,111, - 100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,32, - 110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,116, - 97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,115, - 115,46,10,10,32,32,32,32,90,6,102,114,111,122,101,110, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,4,0,0,0,67,0,0,0,115,16,0,0,0,100,1, - 160,0,124,0,106,1,116,2,106,3,161,2,83,0,41,3, - 114,170,0,0,0,114,160,0,0,0,78,41,4,114,49,0, - 0,0,114,9,0,0,0,114,184,0,0,0,114,145,0,0, - 0,41,1,218,1,109,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,107,0,0,0,52,3,0,0,115,4, - 0,0,0,16,7,255,128,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,0,0,0,0,0,0,0, - 0,4,0,0,0,5,0,0,0,67,0,0,0,115,30,0, - 0,0,116,0,160,1,124,1,161,1,114,26,116,2,124,1, - 124,0,124,0,106,3,100,1,141,3,83,0,100,0,83,0, - 114,172,0,0,0,41,4,114,61,0,0,0,114,92,0,0, - 0,114,98,0,0,0,114,145,0,0,0,114,173,0,0,0, + 178,0,0,0,68,3,0,0,115,4,0,0,0,18,7,255, + 128,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,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,42,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,5, + 0,0,0,114,168,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,156,0,0,0,77,3,0,0, + 115,4,0,0,0,4,0,255,128,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,0,0, + 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, + 115,64,0,0,0,124,0,106,0,106,1,125,1,116,2,160, + 3,124,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,91,0,0,0,41,10,114,113,0,0, + 0,114,20,0,0,0,114,61,0,0,0,114,92,0,0,0, + 114,83,0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114, + 104,0,0,0,114,20,0,0,0,218,4,99,111,100,101,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,157, + 0,0,0,81,3,0,0,115,16,0,0,0,8,2,10,1, + 10,1,2,1,6,255,12,2,16,1,255,128,122,26,70,114, + 111,122,101,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,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, + 0,115,10,0,0,0,116,0,124,0,124,1,131,2,83,0, + 41,2,122,95,76,111,97,100,32,97,32,102,114,111,122,101, + 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, - 177,0,0,0,61,3,0,0,115,8,0,0,0,10,2,16, - 1,4,2,255,128,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,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,18,0,0,0,116,0,160, - 1,124,1,161,1,114,14,124,0,83,0,100,1,83,0,41, - 2,122,93,70,105,110,100,32,97,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,105,115,32,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,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,61,0,0,0,114,92,0,0,0,41,3,114, - 174,0,0,0,114,85,0,0,0,114,175,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,178,0, - 0,0,68,3,0,0,115,4,0,0,0,18,7,255,128,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,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, - 42,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,5,0,0, - 0,114,168,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,156,0,0,0,77,3,0,0,115,4, - 0,0,0,4,0,255,128,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,0,0,0,0, - 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,64, - 0,0,0,124,0,106,0,106,1,125,1,116,2,160,3,124, - 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,91,0,0,0,41,10,114,113,0,0,0,114, - 20,0,0,0,114,61,0,0,0,114,92,0,0,0,114,83, - 0,0,0,114,49,0,0,0,114,71,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,14,0,0,0,41,3,114,104,0, - 0,0,114,20,0,0,0,218,4,99,111,100,101,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,157,0,0, - 0,81,3,0,0,115,16,0,0,0,8,2,10,1,10,1, - 2,1,6,255,12,2,16,1,255,128,122,26,70,114,111,122, - 101,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,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, - 10,0,0,0,116,0,124,0,124,1,131,2,83,0,41,2, - 122,95,76,111,97,100,32,97,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,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,78,41,1,114,105,0,0,0,114,179,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,164,0, - 0,0,90,3,0,0,115,4,0,0,0,10,8,255,128,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,0,0,0,0,2,0,0,0,3,0,0,0, - 67,0,0,0,115,10,0,0,0,116,0,160,1,124,1,161, - 1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186,0,0, - 0,114,179,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,180,0,0,0,100,3,0,0,115,4, - 0,0,0,10,4,255,128,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,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,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,5,0, - 0,0,114,179,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,181,0,0,0,106,3,0,0,115, - 4,0,0,0,4,4,255,128,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,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, - 0,116,0,160,1,124,1,161,1,83,0,41,2,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,78,41,2, - 114,61,0,0,0,90,17,105,115,95,102,114,111,122,101,110, - 95,112,97,99,107,97,103,101,114,179,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,122,0,0, - 0,112,3,0,0,115,4,0,0,0,10,4,255,128,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,17,114,9,0,0,0,114,8,0,0,0,114,1,0,0, - 0,114,10,0,0,0,114,145,0,0,0,114,182,0,0,0, - 114,107,0,0,0,114,183,0,0,0,114,177,0,0,0,114, - 178,0,0,0,114,156,0,0,0,114,157,0,0,0,114,164, - 0,0,0,114,94,0,0,0,114,180,0,0,0,114,181,0, - 0,0,114,122,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,184,0,0,0, - 41,3,0,0,115,50,0,0,0,8,0,4,2,4,7,2, - 2,10,1,2,8,12,1,2,6,12,1,2,8,10,1,2, - 3,10,1,2,8,10,1,2,9,2,1,12,1,2,4,2, - 1,12,1,2,4,2,1,16,1,255,128,114,184,0,0,0, - 99,0,0,0,0,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,83,0,41,7, - 218,18,95,73,109,112,111,114,116,76,111,99,107,67,111,110, - 116,101,120,116,122,36,67,111,110,116,101,120,116,32,109,97, - 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, - 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,61,0,0,0,114,62,0,0,0,114,51,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,58,0,0,0,125,3,0,0,115,4,0,0,0,12, - 2,255,128,122,28,95,73,109,112,111,114,116,76,111,99,107, - 67,111,110,116,101,120,116,46,95,95,101,110,116,101,114,95, - 95,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,116, - 0,160,1,161,0,1,0,100,1,83,0,41,2,122,60,82, - 101,108,101,97,115,101,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,61, - 0,0,0,114,64,0,0,0,41,4,114,33,0,0,0,218, - 8,101,120,99,95,116,121,112,101,218,9,101,120,99,95,118, - 97,108,117,101,218,13,101,120,99,95,116,114,97,99,101,98, - 97,99,107,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,60,0,0,0,129,3,0,0,115,4,0,0,0, - 12,2,255,128,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,9,0,0,0,114,8,0,0,0,114,1, - 0,0,0,114,10,0,0,0,114,58,0,0,0,114,60,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,189,0,0,0,121,3,0,0,115, - 10,0,0,0,8,0,4,2,8,2,12,4,255,128,114,189, - 0,0,0,99,3,0,0,0,0,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, - 3,131,1,130,1,124,3,100,4,25,0,125,4,124,0,114, - 60,100,5,160,3,124,4,124,0,161,2,83,0,124,4,83, - 0,41,7,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,135,0,0,0,114,42,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, - 99,107,97,103,101,114,25,0,0,0,250,5,123,125,46,123, - 125,78,41,4,218,6,114,115,112,108,105,116,218,3,108,101, - 110,114,83,0,0,0,114,49,0,0,0,41,5,114,20,0, - 0,0,218,7,112,97,99,107,97,103,101,218,5,108,101,118, - 101,108,90,4,98,105,116,115,90,4,98,97,115,101,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,218,13,95, - 114,101,115,111,108,118,101,95,110,97,109,101,134,3,0,0, - 115,12,0,0,0,16,2,12,1,8,1,8,1,20,1,255, - 128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1,124,1, - 124,3,131,2,83,0,114,0,0,0,0,41,2,114,178,0, - 0,0,114,98,0,0,0,41,4,218,6,102,105,110,100,101, - 114,114,20,0,0,0,114,175,0,0,0,114,116,0,0,0, + 164,0,0,0,90,3,0,0,115,4,0,0,0,10,8,255, + 128,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,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, + 1,161,1,83,0,41,2,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,78,41,2,114,61,0,0,0,114,186, + 0,0,0,114,179,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,6,0,0,0,114,180,0,0,0,100,3,0,0, + 115,4,0,0,0,10,4,255,128,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,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,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, + 5,0,0,0,114,179,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,181,0,0,0,106,3,0, + 0,115,4,0,0,0,4,4,255,128,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,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,160,1,124,1,161,1,83,0,41,2,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,78, + 41,2,114,61,0,0,0,90,17,105,115,95,102,114,111,122, + 101,110,95,112,97,99,107,97,103,101,114,179,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,114,122, + 0,0,0,112,3,0,0,115,4,0,0,0,10,4,255,128, + 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,17,114,9,0,0,0,114,8,0,0,0,114,1, + 0,0,0,114,10,0,0,0,114,145,0,0,0,114,182,0, + 0,0,114,107,0,0,0,114,183,0,0,0,114,177,0,0, + 0,114,178,0,0,0,114,156,0,0,0,114,157,0,0,0, + 114,164,0,0,0,114,94,0,0,0,114,180,0,0,0,114, + 181,0,0,0,114,122,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,184,0, + 0,0,41,3,0,0,115,50,0,0,0,8,0,4,2,4, + 7,2,2,10,1,2,8,12,1,2,6,12,1,2,8,10, + 1,2,3,10,1,2,8,10,1,2,9,2,1,12,1,2, + 4,2,1,12,1,2,4,2,1,16,1,255,128,114,184,0, + 0,0,99,0,0,0,0,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,83,0, + 41,7,218,18,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,122,36,67,111,110,116,101,120,116,32, + 109,97,110,97,103,101,114,32,102,111,114,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,46,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0, + 0,67,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,61,0,0,0,114,62,0,0,0,114, + 51,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,58,0,0,0,125,3,0,0,115,4,0,0, + 0,12,2,255,128,122,28,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,46,95,95,101,110,116,101, + 114,95,95,99,4,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, + 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, + 60,82,101,108,101,97,115,101,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,61,0,0,0,114,64,0,0,0,41,4,114,33,0,0, + 0,218,8,101,120,99,95,116,121,112,101,218,9,101,120,99, + 95,118,97,108,117,101,218,13,101,120,99,95,116,114,97,99, + 101,98,97,99,107,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,60,0,0,0,129,3,0,0,115,4,0, + 0,0,12,2,255,128,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,9,0,0,0,114,8,0,0,0, + 114,1,0,0,0,114,10,0,0,0,114,58,0,0,0,114, + 60,0,0,0,114,5,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,114,189,0,0,0,121,3,0, + 0,115,10,0,0,0,8,0,4,2,8,2,12,4,255,128, + 114,189,0,0,0,99,3,0,0,0,0,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,3,131,1,130,1,124,3,100,4,25,0,125,4,124, + 0,114,60,100,5,160,3,124,4,124,0,161,2,83,0,124, + 4,83,0,41,7,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,135,0,0,0,114,42, + 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,99,107,97,103,101,114,25,0,0,0,250,5,123,125, + 46,123,125,78,41,4,218,6,114,115,112,108,105,116,218,3, + 108,101,110,114,83,0,0,0,114,49,0,0,0,41,5,114, + 20,0,0,0,218,7,112,97,99,107,97,103,101,218,5,108, + 101,118,101,108,90,4,98,105,116,115,90,4,98,97,115,101, 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, - 99,121,143,3,0,0,115,10,0,0,0,12,3,8,1,4, - 1,10,1,255,128,114,200,0,0,0,99,3,0,0,0,0, - 0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,67, - 0,0,0,115,32,1,0,0,116,0,106,1,125,3,124,3, - 100,1,117,0,114,22,116,2,100,2,131,1,130,1,124,3, - 115,38,116,3,160,4,100,3,116,5,161,2,1,0,124,0, - 116,0,106,6,118,0,125,4,124,3,68,0,93,226,125,5, - 116,7,131,0,143,94,1,0,122,10,124,5,106,8,125,6, - 87,0,110,54,4,0,116,9,144,1,121,30,1,0,1,0, - 1,0,116,10,124,5,124,0,124,1,131,3,125,7,124,7, - 100,1,117,0,114,126,89,0,87,0,100,1,4,0,4,0, - 131,3,1,0,113,52,89,0,110,12,124,6,124,0,124,1, - 124,2,131,3,125,7,87,0,100,1,4,0,4,0,131,3, - 1,0,110,16,49,0,115,162,119,1,1,0,1,0,1,0, - 89,0,1,0,124,7,100,1,117,1,114,52,124,4,144,1, - 115,16,124,0,116,0,106,6,118,0,144,1,114,16,116,0, - 106,6,124,0,25,0,125,8,122,10,124,8,106,11,125,9, - 87,0,110,26,4,0,116,9,144,1,121,28,1,0,1,0, - 1,0,124,7,6,0,89,0,2,0,1,0,83,0,124,9, - 100,1,117,0,144,1,114,8,124,7,2,0,1,0,83,0, - 124,9,2,0,1,0,83,0,124,7,2,0,1,0,83,0, - 100,1,83,0,119,0,119,0,41,4,122,21,70,105,110,100, - 32,97,32,109,111,100,117,108,101,39,115,32,115,112,101,99, - 46,78,122,53,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,78,111,110,101,44,32,80,121,116,104,111, - 110,32,105,115,32,108,105,107,101,108,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,18,0,0,0,218,9,109,101,116,97,95,112, - 97,116,104,114,83,0,0,0,114,95,0,0,0,114,96,0, - 0,0,114,163,0,0,0,114,99,0,0,0,114,189,0,0, - 0,114,177,0,0,0,114,2,0,0,0,114,200,0,0,0, - 114,113,0,0,0,41,10,114,20,0,0,0,114,175,0,0, - 0,114,176,0,0,0,114,201,0,0,0,90,9,105,115,95, - 114,101,108,111,97,100,114,199,0,0,0,114,177,0,0,0, - 114,103,0,0,0,114,104,0,0,0,114,113,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,10, - 95,102,105,110,100,95,115,112,101,99,152,3,0,0,115,60, - 0,0,0,6,2,8,1,8,2,4,3,12,1,10,5,8, - 1,8,1,2,1,10,1,14,1,12,1,8,1,20,1,42, - 2,8,1,18,2,10,1,2,1,10,1,14,1,12,4,10, - 2,8,1,8,2,8,2,4,2,2,243,2,244,255,128,114, - 202,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,5,0,0,0,67,0,0,0,115,110,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,0,114,44,116,5,100,3,131,1,130,1,124,2, - 100,2,107,4,114,82,116,0,124,1,116,1,131,2,115,70, - 116,2,100,4,131,1,130,1,124,1,115,82,116,6,100,5, - 131,1,130,1,124,0,115,106,124,2,100,2,107,2,114,102, - 116,5,100,6,131,1,130,1,100,7,83,0,100,7,83,0, - 41,8,122,28,86,101,114,105,102,121,32,97,114,103,117,109, - 101,110,116,115,32,97,114,101,32,34,115,97,110,101,34,46, - 122,31,109,111,100,117,108,101,32,110,97,109,101,32,109,117, - 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,123, - 125,114,25,0,0,0,122,18,108,101,118,101,108,32,109,117, - 115,116,32,98,101,32,62,61,32,48,122,31,95,95,112,97, - 99,107,97,103,101,95,95,32,110,111,116,32,115,101,116,32, - 116,111,32,97,32,115,116,114,105,110,103,122,54,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,119,105,116,104,32,110,111,32,107, - 110,111,119,110,32,112,97,114,101,110,116,32,112,97,99,107, - 97,103,101,122,17,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,49,0,0,0,114,3,0,0,0,218, - 10,86,97,108,117,101,69,114,114,111,114,114,83,0,0,0, - 169,3,114,20,0,0,0,114,196,0,0,0,114,197,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,13,95,115,97,110,105,116,121,95,99,104,101,99,107,199, - 3,0,0,115,26,0,0,0,10,2,18,1,8,1,8,1, - 8,1,10,1,8,1,4,1,8,1,12,2,8,1,8,255, - 255,128,114,208,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,0,0,0,0,9,0,0,0, - 8,0,0,0,67,0,0,0,115,22,1,0,0,100,0,125, - 2,124,0,160,0,100,1,161,1,100,2,25,0,125,3,124, - 3,114,128,124,3,116,1,106,2,118,1,114,42,116,3,124, - 1,124,3,131,2,1,0,124,0,116,1,106,2,118,0,114, - 62,116,1,106,2,124,0,25,0,83,0,116,1,106,2,124, - 3,25,0,125,4,122,10,124,4,106,4,125,2,87,0,110, - 44,4,0,116,5,144,1,121,20,1,0,1,0,1,0,116, - 6,100,3,23,0,160,7,124,0,124,3,161,2,125,5,116, - 8,124,5,124,0,100,4,141,2,100,0,130,2,116,9,124, - 0,124,2,131,2,125,6,124,6,100,0,117,0,114,164,116, - 8,116,6,160,7,124,0,161,1,124,0,100,4,141,2,130, - 1,116,10,124,6,131,1,125,7,124,3,144,1,114,14,116, - 1,106,2,124,3,25,0,125,4,124,0,160,0,100,1,161, - 1,100,5,25,0,125,8,122,18,116,11,124,4,124,8,124, - 7,131,3,1,0,87,0,124,7,83,0,4,0,116,5,144, - 1,121,18,1,0,1,0,1,0,100,6,124,3,155,2,100, - 7,124,8,155,2,157,4,125,5,116,12,160,13,124,5,116, - 14,161,2,1,0,89,0,124,7,83,0,124,7,83,0,119, - 0,119,0,41,8,78,114,135,0,0,0,114,25,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,19,0,0,0,233,2, - 0,0,0,122,27,67,97,110,110,111,116,32,115,101,116,32, - 97,110,32,97,116,116,114,105,98,117,116,101,32,111,110,32, - 122,18,32,102,111,114,32,99,104,105,108,100,32,109,111,100, - 117,108,101,32,41,15,114,136,0,0,0,114,18,0,0,0, - 114,99,0,0,0,114,71,0,0,0,114,148,0,0,0,114, - 2,0,0,0,218,8,95,69,82,82,95,77,83,71,114,49, - 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,202,0,0,0,114,167,0, - 0,0,114,12,0,0,0,114,95,0,0,0,114,96,0,0, - 0,114,163,0,0,0,41,9,114,20,0,0,0,218,7,105, - 109,112,111,114,116,95,114,175,0,0,0,114,137,0,0,0, - 90,13,112,97,114,101,110,116,95,109,111,100,117,108,101,114, - 102,0,0,0,114,103,0,0,0,114,104,0,0,0,90,5, - 99,104,105,108,100,114,5,0,0,0,114,5,0,0,0,114, - 6,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,218,3,0, - 0,115,60,0,0,0,4,1,14,1,4,1,10,1,10,1, - 10,2,10,1,10,1,2,1,10,1,14,1,16,1,14,1, - 10,1,8,1,18,1,8,2,6,1,10,2,14,1,2,1, - 14,1,4,4,14,253,16,1,14,1,8,1,2,253,2,242, - 255,128,114,213,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, - 115,128,0,0,0,116,0,124,0,131,1,143,62,1,0,116, - 1,106,2,160,3,124,0,116,4,161,2,125,2,124,2,116, - 4,117,0,114,56,116,5,124,0,124,1,131,2,87,0,2, - 0,100,1,4,0,4,0,131,3,1,0,83,0,87,0,100, - 1,4,0,4,0,131,3,1,0,110,16,49,0,115,76,119, - 1,1,0,1,0,1,0,89,0,1,0,124,2,100,1,117, - 0,114,116,100,2,160,6,124,0,161,1,125,3,116,7,124, - 3,124,0,100,3,141,2,130,1,116,8,124,0,131,1,1, - 0,124,2,83,0,41,4,122,25,70,105,110,100,32,97,110, - 100,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, - 101,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,19,0, - 0,0,41,9,114,54,0,0,0,114,18,0,0,0,114,99, - 0,0,0,114,38,0,0,0,218,14,95,78,69,69,68,83, - 95,76,79,65,68,73,78,71,114,213,0,0,0,114,49,0, - 0,0,114,211,0,0,0,114,69,0,0,0,41,4,114,20, - 0,0,0,114,212,0,0,0,114,104,0,0,0,114,79,0, + 13,95,114,101,115,111,108,118,101,95,110,97,109,101,134,3, + 0,0,115,12,0,0,0,16,2,12,1,8,1,8,1,20, + 1,255,128,114,198,0,0,0,99,3,0,0,0,0,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,117,0,114,24,100,0,83,0,116,1, + 124,1,124,3,131,2,83,0,114,0,0,0,0,41,2,114, + 178,0,0,0,114,98,0,0,0,41,4,218,6,102,105,110, + 100,101,114,114,20,0,0,0,114,175,0,0,0,114,116,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,253,3,0,0,115,24,0,0,0,10,2,14,1,8,1, - 54,1,8,2,4,1,2,1,4,255,12,2,8,2,4,1, - 255,128,114,215,0,0,0,114,25,0,0,0,99,3,0,0, - 0,0,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,3,125,0,116,2,124,0,116,3, - 131,2,83,0,41,3,97,50,1,0,0,73,109,112,111,114, - 116,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, - 32,109,111,100,117,108,101,32,98,97,115,101,100,32,111,110, - 32,105,116,115,32,110,97,109,101,44,32,116,104,101,32,112, - 97,99,107,97,103,101,32,116,104,101,32,99,97,108,108,32, - 105,115,10,32,32,32,32,98,101,105,110,103,32,109,97,100, - 101,32,102,114,111,109,44,32,97,110,100,32,116,104,101,32, - 108,101,118,101,108,32,97,100,106,117,115,116,109,101,110,116, - 46,10,10,32,32,32,32,84,104,105,115,32,102,117,110,99, - 116,105,111,110,32,114,101,112,114,101,115,101,110,116,115,32, - 116,104,101,32,103,114,101,97,116,101,115,116,32,99,111,109, - 109,111,110,32,100,101,110,111,109,105,110,97,116,111,114,32, - 111,102,32,102,117,110,99,116,105,111,110,97,108,105,116,121, - 10,32,32,32,32,98,101,116,119,101,101,110,32,105,109,112, - 111,114,116,95,109,111,100,117,108,101,32,97,110,100,32,95, - 95,105,109,112,111,114,116,95,95,46,32,84,104,105,115,32, - 105,110,99,108,117,100,101,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,25,0, - 0,0,78,41,4,114,208,0,0,0,114,198,0,0,0,114, - 215,0,0,0,218,11,95,103,99,100,95,105,109,112,111,114, - 116,114,207,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,216,0,0,0,13,4,0,0,115,10, - 0,0,0,12,9,8,1,12,1,10,1,255,128,114,216,0, - 0,0,169,1,218,9,114,101,99,117,114,115,105,118,101,99, - 3,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, - 11,0,0,0,67,0,0,0,115,216,0,0,0,124,1,68, - 0,93,204,125,4,116,0,124,4,116,1,131,2,115,64,124, - 3,114,34,124,0,106,2,100,1,23,0,125,5,110,4,100, - 2,125,5,116,3,100,3,124,5,155,0,100,4,116,4,124, - 4,131,1,106,2,155,0,157,4,131,1,130,1,124,4,100, - 5,107,2,114,106,124,3,115,4,116,5,124,0,100,6,131, - 2,114,4,116,6,124,0,124,0,106,7,124,2,100,7,100, - 8,141,4,1,0,113,4,116,5,124,0,124,4,131,2,115, - 4,100,9,160,8,124,0,106,2,124,4,161,2,125,6,122, - 14,116,9,124,2,124,6,131,2,1,0,87,0,113,4,4, - 0,116,10,121,214,1,0,125,7,1,0,122,42,124,7,106, - 11,124,6,107,2,114,200,116,12,106,13,160,14,124,6,116, - 15,161,2,100,10,117,1,114,200,87,0,89,0,100,10,125, - 7,126,7,113,4,130,0,100,10,125,7,126,7,119,1,124, - 0,83,0,119,0,41,11,122,238,70,105,103,117,114,101,32, - 111,117,116,32,119,104,97,116,32,95,95,105,109,112,111,114, - 116,95,95,32,115,104,111,117,108,100,32,114,101,116,117,114, - 110,46,10,10,32,32,32,32,84,104,101,32,105,109,112,111, - 114,116,95,32,112,97,114,97,109,101,116,101,114,32,105,115, - 32,97,32,99,97,108,108,97,98,108,101,32,119,104,105,99, - 104,32,116,97,107,101,115,32,116,104,101,32,110,97,109,101, - 32,111,102,32,109,111,100,117,108,101,32,116,111,10,32,32, - 32,32,105,109,112,111,114,116,46,32,73,116,32,105,115,32, - 114,101,113,117,105,114,101,100,32,116,111,32,100,101,99,111, - 117,112,108,101,32,116,104,101,32,102,117,110,99,116,105,111, - 110,32,102,114,111,109,32,97,115,115,117,109,105,110,103,32, - 105,109,112,111,114,116,108,105,98,39,115,10,32,32,32,32, - 105,109,112,111,114,116,32,105,109,112,108,101,109,101,110,116, - 97,116,105,111,110,32,105,115,32,100,101,115,105,114,101,100, - 46,10,10,32,32,32,32,122,8,46,95,95,97,108,108,95, - 95,122,13,96,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,217,0,0,0, - 114,193,0,0,0,78,41,16,114,203,0,0,0,114,204,0, - 0,0,114,9,0,0,0,114,205,0,0,0,114,3,0,0, - 0,114,11,0,0,0,218,16,95,104,97,110,100,108,101,95, - 102,114,111,109,108,105,115,116,114,220,0,0,0,114,49,0, - 0,0,114,71,0,0,0,114,211,0,0,0,114,20,0,0, + 0,218,17,95,102,105,110,100,95,115,112,101,99,95,108,101, + 103,97,99,121,143,3,0,0,115,10,0,0,0,12,3,8, + 1,4,1,10,1,255,128,114,200,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,0, + 0,67,0,0,0,115,36,1,0,0,116,0,106,1,125,3, + 124,3,100,1,117,0,114,22,116,2,100,2,131,1,130,1, + 124,3,115,38,116,3,160,4,100,3,116,5,161,2,1,0, + 124,0,116,0,106,6,118,0,125,4,124,3,68,0,93,230, + 125,5,116,7,131,0,143,94,1,0,122,10,124,5,106,8, + 125,6,87,0,110,54,4,0,116,9,144,1,121,34,1,0, + 1,0,1,0,116,10,124,5,124,0,124,1,131,3,125,7, + 124,7,100,1,117,0,114,126,89,0,87,0,100,1,4,0, + 4,0,131,3,1,0,113,52,89,0,110,12,124,6,124,0, + 124,1,124,2,131,3,125,7,87,0,100,1,4,0,4,0, + 131,3,1,0,110,16,49,0,115,162,119,1,1,0,1,0, + 1,0,89,0,1,0,124,7,100,1,117,1,144,1,114,26, + 124,4,144,1,115,18,124,0,116,0,106,6,118,0,144,1, + 114,18,116,0,106,6,124,0,25,0,125,8,122,10,124,8, + 106,11,125,9,87,0,110,26,4,0,116,9,144,1,121,32, + 1,0,1,0,1,0,124,7,6,0,89,0,2,0,1,0, + 83,0,124,9,100,1,117,0,144,1,114,10,124,7,2,0, + 1,0,83,0,124,9,2,0,1,0,83,0,124,7,2,0, + 1,0,83,0,113,52,100,1,83,0,119,0,119,0,41,4, + 122,21,70,105,110,100,32,97,32,109,111,100,117,108,101,39, + 115,32,115,112,101,99,46,78,122,53,115,121,115,46,109,101, + 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44, + 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108, + 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,18,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,83,0,0,0,114,95, + 0,0,0,114,96,0,0,0,114,163,0,0,0,114,99,0, + 0,0,114,189,0,0,0,114,177,0,0,0,114,2,0,0, + 0,114,200,0,0,0,114,113,0,0,0,41,10,114,20,0, + 0,0,114,175,0,0,0,114,176,0,0,0,114,201,0,0, + 0,90,9,105,115,95,114,101,108,111,97,100,114,199,0,0, + 0,114,177,0,0,0,114,103,0,0,0,114,104,0,0,0, + 114,113,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,218,10,95,102,105,110,100,95,115,112,101,99, + 152,3,0,0,115,62,0,0,0,6,2,8,1,8,2,4, + 3,12,1,10,5,8,1,8,1,2,1,10,1,14,1,12, + 1,8,1,20,1,42,2,10,1,18,2,10,1,2,1,10, + 1,14,1,12,4,10,2,8,1,8,2,8,2,2,128,4, + 2,2,243,2,244,255,128,114,202,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0, + 0,67,0,0,0,115,110,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,0,114,44,116,5, + 100,3,131,1,130,1,124,2,100,2,107,4,114,82,116,0, + 124,1,116,1,131,2,115,70,116,2,100,4,131,1,130,1, + 124,1,115,82,116,6,100,5,131,1,130,1,124,0,115,106, + 124,2,100,2,107,2,114,102,116,5,100,6,131,1,130,1, + 100,7,83,0,100,7,83,0,41,8,122,28,86,101,114,105, + 102,121,32,97,114,103,117,109,101,110,116,115,32,97,114,101, + 32,34,115,97,110,101,34,46,122,31,109,111,100,117,108,101, + 32,110,97,109,101,32,109,117,115,116,32,98,101,32,115,116, + 114,44,32,110,111,116,32,123,125,114,25,0,0,0,122,18, + 108,101,118,101,108,32,109,117,115,116,32,98,101,32,62,61, + 32,48,122,31,95,95,112,97,99,107,97,103,101,95,95,32, + 110,111,116,32,115,101,116,32,116,111,32,97,32,115,116,114, + 105,110,103,122,54,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,119, + 105,116,104,32,110,111,32,107,110,111,119,110,32,112,97,114, + 101,110,116,32,112,97,99,107,97,103,101,122,17,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,49,0, + 0,0,114,3,0,0,0,218,10,86,97,108,117,101,69,114, + 114,111,114,114,83,0,0,0,169,3,114,20,0,0,0,114, + 196,0,0,0,114,197,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,13,95,115,97,110,105,116, + 121,95,99,104,101,99,107,199,3,0,0,115,26,0,0,0, + 10,2,18,1,8,1,8,1,8,1,10,1,8,1,4,1, + 8,1,12,2,8,1,8,255,255,128,114,208,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, + 0,0,0,0,9,0,0,0,8,0,0,0,67,0,0,0, + 115,22,1,0,0,100,0,125,2,124,0,160,0,100,1,161, + 1,100,2,25,0,125,3,124,3,114,128,124,3,116,1,106, + 2,118,1,114,42,116,3,124,1,124,3,131,2,1,0,124, + 0,116,1,106,2,118,0,114,62,116,1,106,2,124,0,25, + 0,83,0,116,1,106,2,124,3,25,0,125,4,122,10,124, + 4,106,4,125,2,87,0,110,44,4,0,116,5,144,1,121, + 20,1,0,1,0,1,0,116,6,100,3,23,0,160,7,124, + 0,124,3,161,2,125,5,116,8,124,5,124,0,100,4,141, + 2,100,0,130,2,116,9,124,0,124,2,131,2,125,6,124, + 6,100,0,117,0,114,164,116,8,116,6,160,7,124,0,161, + 1,124,0,100,4,141,2,130,1,116,10,124,6,131,1,125, + 7,124,3,144,1,114,14,116,1,106,2,124,3,25,0,125, + 4,124,0,160,0,100,1,161,1,100,5,25,0,125,8,122, + 18,116,11,124,4,124,8,124,7,131,3,1,0,87,0,124, + 7,83,0,4,0,116,5,144,1,121,18,1,0,1,0,1, + 0,100,6,124,3,155,2,100,7,124,8,155,2,157,4,125, + 5,116,12,160,13,124,5,116,14,161,2,1,0,89,0,124, + 7,83,0,124,7,83,0,119,0,119,0,41,8,78,114,135, + 0,0,0,114,25,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,19,0,0,0,233,2,0,0,0,122,27,67,97,110, + 110,111,116,32,115,101,116,32,97,110,32,97,116,116,114,105, + 98,117,116,101,32,111,110,32,122,18,32,102,111,114,32,99, + 104,105,108,100,32,109,111,100,117,108,101,32,41,15,114,136, + 0,0,0,114,18,0,0,0,114,99,0,0,0,114,71,0, + 0,0,114,148,0,0,0,114,2,0,0,0,218,8,95,69, + 82,82,95,77,83,71,114,49,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,202,0,0,0,114,167,0,0,0,114,12,0,0,0,114, + 95,0,0,0,114,96,0,0,0,114,163,0,0,0,41,9, + 114,20,0,0,0,218,7,105,109,112,111,114,116,95,114,175, + 0,0,0,114,137,0,0,0,90,13,112,97,114,101,110,116, + 95,109,111,100,117,108,101,114,102,0,0,0,114,103,0,0, + 0,114,104,0,0,0,90,5,99,104,105,108,100,114,5,0, + 0,0,114,5,0,0,0,114,6,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,218,3,0,0,115,60,0,0,0,4,1, + 14,1,4,1,10,1,10,1,10,2,10,1,10,1,2,1, + 10,1,14,1,16,1,14,1,10,1,8,1,18,1,8,2, + 6,1,10,2,14,1,2,1,14,1,4,4,14,253,16,1, + 14,1,8,1,2,253,2,242,255,128,114,213,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 8,0,0,0,67,0,0,0,115,128,0,0,0,116,0,124, + 0,131,1,143,62,1,0,116,1,106,2,160,3,124,0,116, + 4,161,2,125,2,124,2,116,4,117,0,114,56,116,5,124, + 0,124,1,131,2,87,0,2,0,100,1,4,0,4,0,131, + 3,1,0,83,0,87,0,100,1,4,0,4,0,131,3,1, + 0,110,16,49,0,115,76,119,1,1,0,1,0,1,0,89, + 0,1,0,124,2,100,1,117,0,114,116,100,2,160,6,124, + 0,161,1,125,3,116,7,124,3,124,0,100,3,141,2,130, + 1,116,8,124,0,131,1,1,0,124,2,83,0,41,4,122, + 25,70,105,110,100,32,97,110,100,32,108,111,97,100,32,116, + 104,101,32,109,111,100,117,108,101,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,19,0,0,0,41,9,114,54,0,0, 0,114,18,0,0,0,114,99,0,0,0,114,38,0,0,0, - 114,214,0,0,0,41,8,114,104,0,0,0,218,8,102,114, - 111,109,108,105,115,116,114,212,0,0,0,114,218,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,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,221,0,0,0,28,4, - 0,0,115,54,0,0,0,8,10,10,1,4,1,12,1,4, - 2,10,1,8,1,8,255,8,2,14,1,10,1,2,1,8, - 255,10,2,14,1,2,1,14,1,14,1,10,4,16,1,2, - 255,12,2,2,1,8,128,4,1,2,248,255,128,114,221,0, - 0,0,99,1,0,0,0,0,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,117,1,114,82,124,2,100,3, - 117,1,114,78,124,1,124,2,106,1,107,3,114,78,116,2, - 106,3,100,4,124,1,155,2,100,5,124,2,106,1,155,2, - 100,6,157,5,116,4,100,7,100,8,141,3,1,0,124,1, - 83,0,124,2,100,3,117,1,114,96,124,2,106,1,83,0, - 116,2,106,3,100,9,116,4,100,7,100,8,141,3,1,0, - 124,0,100,10,25,0,125,1,100,11,124,0,118,1,114,142, - 124,1,160,5,100,12,161,1,100,13,25,0,125,1,124,1, - 83,0,41,14,122,167,67,97,108,99,117,108,97,116,101,32, - 119,104,97,116,32,95,95,112,97,99,107,97,103,101,95,95, - 32,115,104,111,117,108,100,32,98,101,46,10,10,32,32,32, - 32,95,95,112,97,99,107,97,103,101,95,95,32,105,115,32, - 110,111,116,32,103,117,97,114,97,110,116,101,101,100,32,116, - 111,32,98,101,32,100,101,102,105,110,101,100,32,111,114,32, - 99,111,117,108,100,32,98,101,32,115,101,116,32,116,111,32, - 78,111,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,152,0, - 0,0,114,113,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,101,118,101,108,122,89,99,97,110,39,116,32,114,101, - 115,111,108,118,101,32,112,97,99,107,97,103,101,32,102,114, - 111,109,32,95,95,115,112,101,99,95,95,32,111,114,32,95, - 95,112,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,9,0,0,0,114,148,0,0,0,114,135,0,0,0, - 114,25,0,0,0,41,6,114,38,0,0,0,114,137,0,0, - 0,114,95,0,0,0,114,96,0,0,0,114,163,0,0,0, - 114,136,0,0,0,41,3,218,7,103,108,111,98,97,108,115, - 114,196,0,0,0,114,103,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,17,95,99,97,108,99, - 95,95,95,112,97,99,107,97,103,101,95,95,65,4,0,0, - 115,44,0,0,0,10,7,10,1,8,1,18,1,6,1,2, - 1,4,255,4,1,6,255,4,2,6,254,4,3,8,1,6, - 1,6,2,4,2,6,254,8,3,8,1,14,1,4,1,255, - 128,114,227,0,0,0,114,5,0,0,0,99,5,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, - 67,0,0,0,115,174,0,0,0,124,4,100,1,107,2,114, - 18,116,0,124,0,131,1,125,5,110,36,124,1,100,2,117, - 1,114,30,124,1,110,2,105,0,125,6,116,1,124,6,131, - 1,125,7,116,0,124,0,124,7,124,4,131,3,125,5,124, - 3,115,148,124,4,100,1,107,2,114,84,116,0,124,0,160, - 2,100,3,161,1,100,1,25,0,131,1,83,0,124,0,115, - 92,124,5,83,0,116,3,124,0,131,1,116,3,124,0,160, - 2,100,3,161,1,100,1,25,0,131,1,24,0,125,8,116, - 4,106,5,124,5,106,6,100,2,116,3,124,5,106,6,131, - 1,124,8,24,0,133,2,25,0,25,0,83,0,116,7,124, - 5,100,4,131,2,114,170,116,8,124,5,124,3,116,0,131, - 3,83,0,124,5,83,0,41,5,97,215,1,0,0,73,109, - 112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,115, - 39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,115, - 101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,114, - 101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,32, - 111,99,99,117,114,114,105,110,103,32,102,114,111,109,10,32, - 32,32,32,116,111,32,104,97,110,100,108,101,32,114,101,108, - 97,116,105,118,101,32,105,109,112,111,114,116,115,46,32,84, - 104,101,32,39,108,111,99,97,108,115,39,32,97,114,103,117, - 109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,46, - 32,84,104,101,10,32,32,32,32,39,102,114,111,109,108,105, - 115,116,39,32,97,114,103,117,109,101,110,116,32,115,112,101, - 99,105,102,105,101,115,32,119,104,97,116,32,115,104,111,117, - 108,100,32,101,120,105,115,116,32,97,115,32,97,116,116,114, - 105,98,117,116,101,115,32,111,110,32,116,104,101,32,109,111, - 100,117,108,101,10,32,32,32,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,32,40,101,46,103,46,32,96,96, - 102,114,111,109,32,109,111,100,117,108,101,32,105,109,112,111, - 114,116,32,60,102,114,111,109,108,105,115,116,62,96,96,41, - 46,32,32,84,104,101,32,39,108,101,118,101,108,39,10,32, - 32,32,32,97,114,103,117,109,101,110,116,32,114,101,112,114, - 101,115,101,110,116,115,32,116,104,101,32,112,97,99,107,97, - 103,101,32,108,111,99,97,116,105,111,110,32,116,111,32,105, - 109,112,111,114,116,32,102,114,111,109,32,105,110,32,97,32, - 114,101,108,97,116,105,118,101,10,32,32,32,32,105,109,112, - 111,114,116,32,40,101,46,103,46,32,96,96,102,114,111,109, - 32,46,46,112,107,103,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,25,0,0,0,78,114,135,0,0,0, - 114,148,0,0,0,41,9,114,216,0,0,0,114,227,0,0, - 0,218,9,112,97,114,116,105,116,105,111,110,114,195,0,0, - 0,114,18,0,0,0,114,99,0,0,0,114,9,0,0,0, - 114,11,0,0,0,114,221,0,0,0,41,9,114,20,0,0, - 0,114,226,0,0,0,218,6,108,111,99,97,108,115,114,222, - 0,0,0,114,197,0,0,0,114,104,0,0,0,90,8,103, - 108,111,98,97,108,115,95,114,196,0,0,0,90,7,99,117, - 116,95,111,102,102,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,10,95,95,105,109,112,111,114,116,95,95, - 92,4,0,0,115,32,0,0,0,8,11,10,1,16,2,8, - 1,12,1,4,1,8,3,18,1,4,1,4,1,26,4,30, - 3,10,1,12,1,4,2,255,128,114,230,0,0,0,99,1, - 0,0,0,0,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,117,0,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,169,0,0,0,114,177,0,0,0,114,83,0,0, - 0,114,167,0,0,0,41,2,114,20,0,0,0,114,103,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,218,18,95,98,117,105,108,116,105,110,95,102,114,111,109, - 95,110,97,109,101,129,4,0,0,115,10,0,0,0,10,1, - 8,1,12,1,8,1,255,128,114,231,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,10,0,0,0,5,0, - 0,0,67,0,0,0,115,162,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,0,68,0,93,68,92,2,125,3,125,4,116,5,124, - 4,124,2,131,2,114,26,124,3,116,1,106,6,118,0,114, - 60,116,7,125,5,110,14,116,0,160,8,124,3,161,1,114, - 26,116,9,125,5,116,10,124,4,124,5,131,2,125,6,116, - 11,124,6,124,4,131,2,1,0,113,26,116,1,106,3,116, - 12,25,0,125,7,100,1,68,0,93,46,125,8,124,8,116, - 1,106,3,118,1,114,134,116,13,124,8,131,1,125,9,110, - 10,116,1,106,3,124,8,25,0,125,9,116,14,124,7,124, - 8,124,9,131,3,1,0,113,110,100,2,83,0,41,3,122, - 250,83,101,116,117,112,32,105,109,112,111,114,116,108,105,98, - 32,98,121,32,105,109,112,111,114,116,105,110,103,32,110,101, - 101,100,101,100,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,115,32,97,110,100,32,105,110,106,101,99,116, - 105,110,103,32,116,104,101,109,10,32,32,32,32,105,110,116, - 111,32,116,104,101,32,103,108,111,98,97,108,32,110,97,109, - 101,115,112,97,99,101,46,10,10,32,32,32,32,65,115,32, - 115,121,115,32,105,115,32,110,101,101,100,101,100,32,102,111, - 114,32,115,121,115,46,109,111,100,117,108,101,115,32,97,99, - 99,101,115,115,32,97,110,100,32,95,105,109,112,32,105,115, - 32,110,101,101,100,101,100,32,116,111,32,108,111,97,100,32, - 98,117,105,108,116,45,105,110,10,32,32,32,32,109,111,100, - 117,108,101,115,44,32,116,104,111,115,101,32,116,119,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,26,0, - 0,0,114,95,0,0,0,114,68,0,0,0,78,41,15,114, - 61,0,0,0,114,18,0,0,0,114,3,0,0,0,114,99, - 0,0,0,218,5,105,116,101,109,115,114,203,0,0,0,114, - 82,0,0,0,114,169,0,0,0,114,92,0,0,0,114,184, - 0,0,0,114,149,0,0,0,114,155,0,0,0,114,9,0, - 0,0,114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0,114,116, - 0,0,0,114,103,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,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,6,95,115,101,116,117,112,136,4,0,0,115,40, - 0,0,0,4,9,4,1,8,3,18,1,10,1,10,1,6, - 1,10,1,4,1,10,3,10,1,2,128,10,3,8,1,10, + 218,14,95,78,69,69,68,83,95,76,79,65,68,73,78,71, + 114,213,0,0,0,114,49,0,0,0,114,211,0,0,0,114, + 69,0,0,0,41,4,114,20,0,0,0,114,212,0,0,0, + 114,104,0,0,0,114,79,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,218,14,95,102,105,110,100, + 95,97,110,100,95,108,111,97,100,253,3,0,0,115,24,0, + 0,0,10,2,14,1,8,1,54,1,8,2,4,1,2,1, + 4,255,12,2,8,2,4,1,255,128,114,215,0,0,0,114, + 25,0,0,0,99,3,0,0,0,0,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,3, + 125,0,116,2,124,0,116,3,131,2,83,0,41,3,97,50, + 1,0,0,73,109,112,111,114,116,32,97,110,100,32,114,101, + 116,117,114,110,32,116,104,101,32,109,111,100,117,108,101,32, + 98,97,115,101,100,32,111,110,32,105,116,115,32,110,97,109, + 101,44,32,116,104,101,32,112,97,99,107,97,103,101,32,116, + 104,101,32,99,97,108,108,32,105,115,10,32,32,32,32,98, + 101,105,110,103,32,109,97,100,101,32,102,114,111,109,44,32, + 97,110,100,32,116,104,101,32,108,101,118,101,108,32,97,100, + 106,117,115,116,109,101,110,116,46,10,10,32,32,32,32,84, + 104,105,115,32,102,117,110,99,116,105,111,110,32,114,101,112, + 114,101,115,101,110,116,115,32,116,104,101,32,103,114,101,97, + 116,101,115,116,32,99,111,109,109,111,110,32,100,101,110,111, + 109,105,110,97,116,111,114,32,111,102,32,102,117,110,99,116, + 105,111,110,97,108,105,116,121,10,32,32,32,32,98,101,116, + 119,101,101,110,32,105,109,112,111,114,116,95,109,111,100,117, + 108,101,32,97,110,100,32,95,95,105,109,112,111,114,116,95, + 95,46,32,84,104,105,115,32,105,110,99,108,117,100,101,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,25,0,0,0,78,41,4,114,208,0, + 0,0,114,198,0,0,0,114,215,0,0,0,218,11,95,103, + 99,100,95,105,109,112,111,114,116,114,207,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,216,0, + 0,0,13,4,0,0,115,10,0,0,0,12,9,8,1,12, + 1,10,1,255,128,114,216,0,0,0,169,1,218,9,114,101, + 99,117,114,115,105,118,101,99,3,0,0,0,0,0,0,0, + 1,0,0,0,8,0,0,0,11,0,0,0,67,0,0,0, + 115,218,0,0,0,124,1,68,0,93,206,125,4,116,0,124, + 4,116,1,131,2,115,64,124,3,114,34,124,0,106,2,100, + 1,23,0,125,5,110,4,100,2,125,5,116,3,100,3,124, + 5,155,0,100,4,116,4,124,4,131,1,106,2,155,0,157, + 4,131,1,130,1,124,4,100,5,107,2,114,106,124,3,115, + 104,116,5,124,0,100,6,131,2,114,104,116,6,124,0,124, + 0,106,7,124,2,100,7,100,8,141,4,1,0,113,4,116, + 5,124,0,124,4,131,2,115,210,100,9,160,8,124,0,106, + 2,124,4,161,2,125,6,122,14,116,9,124,2,124,6,131, + 2,1,0,87,0,113,4,4,0,116,10,121,216,1,0,125, + 7,1,0,122,42,124,7,106,11,124,6,107,2,114,200,116, + 12,106,13,160,14,124,6,116,15,161,2,100,10,117,1,114, + 200,87,0,89,0,100,10,125,7,126,7,113,4,130,0,100, + 10,125,7,126,7,119,1,113,4,124,0,83,0,119,0,41, + 11,122,238,70,105,103,117,114,101,32,111,117,116,32,119,104, + 97,116,32,95,95,105,109,112,111,114,116,95,95,32,115,104, + 111,117,108,100,32,114,101,116,117,114,110,46,10,10,32,32, + 32,32,84,104,101,32,105,109,112,111,114,116,95,32,112,97, + 114,97,109,101,116,101,114,32,105,115,32,97,32,99,97,108, + 108,97,98,108,101,32,119,104,105,99,104,32,116,97,107,101, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,109,111, + 100,117,108,101,32,116,111,10,32,32,32,32,105,109,112,111, + 114,116,46,32,73,116,32,105,115,32,114,101,113,117,105,114, + 101,100,32,116,111,32,100,101,99,111,117,112,108,101,32,116, + 104,101,32,102,117,110,99,116,105,111,110,32,102,114,111,109, + 32,97,115,115,117,109,105,110,103,32,105,109,112,111,114,116, + 108,105,98,39,115,10,32,32,32,32,105,109,112,111,114,116, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 105,115,32,100,101,115,105,114,101,100,46,10,10,32,32,32, + 32,122,8,46,95,95,97,108,108,95,95,122,13,96,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,217,0,0,0,114,193,0,0,0,78, + 41,16,114,203,0,0,0,114,204,0,0,0,114,9,0,0, + 0,114,205,0,0,0,114,3,0,0,0,114,11,0,0,0, + 218,16,95,104,97,110,100,108,101,95,102,114,111,109,108,105, + 115,116,114,220,0,0,0,114,49,0,0,0,114,71,0,0, + 0,114,211,0,0,0,114,20,0,0,0,114,18,0,0,0, + 114,99,0,0,0,114,38,0,0,0,114,214,0,0,0,41, + 8,114,104,0,0,0,218,8,102,114,111,109,108,105,115,116, + 114,212,0,0,0,114,218,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,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,221,0,0,0,28,4,0,0,115,54,0,0, + 0,8,10,10,1,4,1,12,1,4,2,10,1,8,1,8, + 255,8,2,14,1,10,1,2,1,8,255,10,2,14,1,2, + 1,14,1,14,1,10,4,16,1,2,255,12,2,2,1,10, + 128,4,1,2,248,255,128,114,221,0,0,0,99,1,0,0, + 0,0,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,117,1,114,82,124,2,100,3,117,1,114,78,124,1, + 124,2,106,1,107,3,114,78,116,2,106,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,141,3,1,0,124,1,83,0,124,2,100,3, + 117,1,114,96,124,2,106,1,83,0,116,2,106,3,100,9, + 116,4,100,7,100,8,141,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,118,1,114,142,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,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,152,0,0,0,114,113,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,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,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,9,0,0,0, + 114,148,0,0,0,114,135,0,0,0,114,25,0,0,0,41, + 6,114,38,0,0,0,114,137,0,0,0,114,95,0,0,0, + 114,96,0,0,0,114,163,0,0,0,114,136,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,196,0,0,0,114, + 103,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, + 107,97,103,101,95,95,65,4,0,0,115,44,0,0,0,10, + 7,10,1,8,1,18,1,6,1,2,1,4,255,4,1,6, + 255,4,2,6,254,4,3,8,1,6,1,6,2,4,2,6, + 254,8,3,8,1,14,1,4,1,255,128,114,227,0,0,0, + 114,5,0,0,0,99,5,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,174, + 0,0,0,124,4,100,1,107,2,114,18,116,0,124,0,131, + 1,125,5,110,36,124,1,100,2,117,1,114,30,124,1,110, + 2,105,0,125,6,116,1,124,6,131,1,125,7,116,0,124, + 0,124,7,124,4,131,3,125,5,124,3,115,148,124,4,100, + 1,107,2,114,84,116,0,124,0,160,2,100,3,161,1,100, + 1,25,0,131,1,83,0,124,0,115,92,124,5,83,0,116, + 3,124,0,131,1,116,3,124,0,160,2,100,3,161,1,100, + 1,25,0,131,1,24,0,125,8,116,4,106,5,124,5,106, + 6,100,2,116,3,124,5,106,6,131,1,124,8,24,0,133, + 2,25,0,25,0,83,0,116,7,124,5,100,4,131,2,114, + 170,116,8,124,5,124,3,116,0,131,3,83,0,124,5,83, + 0,41,5,97,215,1,0,0,73,109,112,111,114,116,32,97, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,84,104, + 101,32,39,103,108,111,98,97,108,115,39,32,97,114,103,117, + 109,101,110,116,32,105,115,32,117,115,101,100,32,116,111,32, + 105,110,102,101,114,32,119,104,101,114,101,32,116,104,101,32, + 105,109,112,111,114,116,32,105,115,32,111,99,99,117,114,114, + 105,110,103,32,102,114,111,109,10,32,32,32,32,116,111,32, + 104,97,110,100,108,101,32,114,101,108,97,116,105,118,101,32, + 105,109,112,111,114,116,115,46,32,84,104,101,32,39,108,111, + 99,97,108,115,39,32,97,114,103,117,109,101,110,116,32,105, + 115,32,105,103,110,111,114,101,100,46,32,84,104,101,10,32, + 32,32,32,39,102,114,111,109,108,105,115,116,39,32,97,114, + 103,117,109,101,110,116,32,115,112,101,99,105,102,105,101,115, + 32,119,104,97,116,32,115,104,111,117,108,100,32,101,120,105, + 115,116,32,97,115,32,97,116,116,114,105,98,117,116,101,115, + 32,111,110,32,116,104,101,32,109,111,100,117,108,101,10,32, + 32,32,32,98,101,105,110,103,32,105,109,112,111,114,116,101, + 100,32,40,101,46,103,46,32,96,96,102,114,111,109,32,109, + 111,100,117,108,101,32,105,109,112,111,114,116,32,60,102,114, + 111,109,108,105,115,116,62,96,96,41,46,32,32,84,104,101, + 32,39,108,101,118,101,108,39,10,32,32,32,32,97,114,103, + 117,109,101,110,116,32,114,101,112,114,101,115,101,110,116,115, + 32,116,104,101,32,112,97,99,107,97,103,101,32,108,111,99, + 97,116,105,111,110,32,116,111,32,105,109,112,111,114,116,32, + 102,114,111,109,32,105,110,32,97,32,114,101,108,97,116,105, + 118,101,10,32,32,32,32,105,109,112,111,114,116,32,40,101, + 46,103,46,32,96,96,102,114,111,109,32,46,46,112,107,103, + 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, + 25,0,0,0,78,114,135,0,0,0,114,148,0,0,0,41, + 9,114,216,0,0,0,114,227,0,0,0,218,9,112,97,114, + 116,105,116,105,111,110,114,195,0,0,0,114,18,0,0,0, + 114,99,0,0,0,114,9,0,0,0,114,11,0,0,0,114, + 221,0,0,0,41,9,114,20,0,0,0,114,226,0,0,0, + 218,6,108,111,99,97,108,115,114,222,0,0,0,114,197,0, + 0,0,114,104,0,0,0,90,8,103,108,111,98,97,108,115, + 95,114,196,0,0,0,90,7,99,117,116,95,111,102,102,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,10, + 95,95,105,109,112,111,114,116,95,95,92,4,0,0,115,32, + 0,0,0,8,11,10,1,16,2,8,1,12,1,4,1,8, + 3,18,1,4,1,4,1,26,4,30,3,10,1,12,1,4, + 2,255,128,114,230,0,0,0,99,1,0,0,0,0,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,117,0,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,169,0,0, + 0,114,177,0,0,0,114,83,0,0,0,114,167,0,0,0, + 41,2,114,20,0,0,0,114,103,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,18,95,98,117, + 105,108,116,105,110,95,102,114,111,109,95,110,97,109,101,129, + 4,0,0,115,10,0,0,0,10,1,8,1,12,1,8,1, + 255,128,114,231,0,0,0,99,2,0,0,0,0,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,0,68,0,93, + 72,92,2,125,3,125,4,116,5,124,4,124,2,131,2,114, + 98,124,3,116,1,106,6,118,0,114,60,116,7,125,5,110, + 18,116,0,160,8,124,3,161,1,114,76,116,9,125,5,110, + 2,113,26,116,10,124,4,124,5,131,2,125,6,116,11,124, + 6,124,4,131,2,1,0,113,26,116,1,106,3,116,12,25, + 0,125,7,100,1,68,0,93,46,125,8,124,8,116,1,106, + 3,118,1,114,138,116,13,124,8,131,1,125,9,110,10,116, + 1,106,3,124,8,25,0,125,9,116,14,124,7,124,8,124, + 9,131,3,1,0,113,114,100,2,83,0,41,3,122,250,83, + 101,116,117,112,32,105,109,112,111,114,116,108,105,98,32,98, + 121,32,105,109,112,111,114,116,105,110,103,32,110,101,101,100, + 101,100,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,110,100,32,105,110,106,101,99,116,105,110, + 103,32,116,104,101,109,10,32,32,32,32,105,110,116,111,32, + 116,104,101,32,103,108,111,98,97,108,32,110,97,109,101,115, + 112,97,99,101,46,10,10,32,32,32,32,65,115,32,115,121, + 115,32,105,115,32,110,101,101,100,101,100,32,102,111,114,32, + 115,121,115,46,109,111,100,117,108,101,115,32,97,99,99,101, + 115,115,32,97,110,100,32,95,105,109,112,32,105,115,32,110, + 101,101,100,101,100,32,116,111,32,108,111,97,100,32,98,117, + 105,108,116,45,105,110,10,32,32,32,32,109,111,100,117,108, + 101,115,44,32,116,104,111,115,101,32,116,119,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,26,0,0,0, + 114,95,0,0,0,114,68,0,0,0,78,41,15,114,61,0, + 0,0,114,18,0,0,0,114,3,0,0,0,114,99,0,0, + 0,218,5,105,116,101,109,115,114,203,0,0,0,114,82,0, + 0,0,114,169,0,0,0,114,92,0,0,0,114,184,0,0, + 0,114,149,0,0,0,114,155,0,0,0,114,9,0,0,0, + 114,231,0,0,0,114,12,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,20,0,0,0,114,104,0,0,0,114,116,0,0, + 0,114,103,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,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,6,95,115,101,116,117,112,136,4,0,0,115,42,0,0, + 0,4,9,4,1,8,3,18,1,10,1,10,1,6,1,10, + 1,6,1,2,2,10,1,10,1,2,128,10,3,8,1,10, 1,10,1,10,2,14,1,4,251,255,128,114,235,0,0,0, 99,2,0,0,0,0,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, diff --git a/Python/importlib_external.h b/Python/importlib_external.h index f420fa1faaa3d..93dcfb141052a 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -193,880 +193,881 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 106,111,105,110,94,0,0,0,115,8,0,0,0,10,2,2, 1,8,255,255,128,114,48,0,0,0,99,1,0,0,0,0, 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, - 0,0,0,115,94,0,0,0,116,0,116,1,131,1,100,1, + 0,0,0,115,96,0,0,0,116,0,116,1,131,1,100,1, 107,2,114,36,124,0,160,2,116,3,161,1,92,3,125,1, 125,2,125,3,124,1,124,3,102,2,83,0,116,4,124,0, - 131,1,68,0,93,40,125,4,124,4,116,1,118,0,114,44, + 131,1,68,0,93,42,125,4,124,4,116,1,118,0,114,86, 124,0,106,5,124,4,100,1,100,2,141,2,92,2,125,1, - 125,3,124,1,124,3,102,2,2,0,1,0,83,0,100,3, - 124,0,102,2,83,0,41,5,122,32,82,101,112,108,97,99, - 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, - 104,46,115,112,108,105,116,40,41,46,114,3,0,0,0,41, - 1,90,8,109,97,120,115,112,108,105,116,114,10,0,0,0, - 78,41,6,114,4,0,0,0,114,42,0,0,0,218,10,114, - 112,97,114,116,105,116,105,111,110,114,45,0,0,0,218,8, - 114,101,118,101,114,115,101,100,218,6,114,115,112,108,105,116, - 41,5,218,4,112,97,116,104,90,5,102,114,111,110,116,218, - 1,95,218,4,116,97,105,108,114,32,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,112, - 97,116,104,95,115,112,108,105,116,100,0,0,0,115,18,0, - 0,0,12,2,16,1,8,1,12,1,8,1,18,1,12,1, - 8,1,255,128,114,55,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,10,0,0,0,116,0,160,1,124,0,161,1,83, - 0,41,2,122,126,83,116,97,116,32,116,104,101,32,112,97, - 116,104,46,10,10,32,32,32,32,77,97,100,101,32,97,32, - 115,101,112,97,114,97,116,101,32,102,117,110,99,116,105,111, - 110,32,116,111,32,109,97,107,101,32,105,116,32,101,97,115, - 105,101,114,32,116,111,32,111,118,101,114,114,105,100,101,32, - 105,110,32,101,120,112,101,114,105,109,101,110,116,115,10,32, - 32,32,32,40,101,46,103,46,32,99,97,99,104,101,32,115, - 116,97,116,32,114,101,115,117,108,116,115,41,46,10,10,32, - 32,32,32,78,41,2,114,18,0,0,0,90,4,115,116,97, - 116,169,1,114,52,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,10,95,112,97,116,104,95,115, - 116,97,116,112,0,0,0,115,4,0,0,0,10,7,255,128, - 114,57,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, - 0,0,0,122,12,116,0,124,0,131,1,125,2,87,0,110, - 18,4,0,116,1,121,46,1,0,1,0,1,0,89,0,100, - 1,83,0,124,2,106,2,100,2,64,0,124,1,107,2,83, - 0,119,0,41,4,122,49,84,101,115,116,32,119,104,101,116, - 104,101,114,32,116,104,101,32,112,97,116,104,32,105,115,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,101,32,116,121,112,101,46,70,105,0,240,0,0,78,41, - 3,114,57,0,0,0,218,7,79,83,69,114,114,111,114,218, - 7,115,116,95,109,111,100,101,41,3,114,52,0,0,0,218, - 4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,111, + 125,3,124,1,124,3,102,2,2,0,1,0,83,0,113,44, + 100,3,124,0,102,2,83,0,41,5,122,32,82,101,112,108, + 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, + 97,116,104,46,115,112,108,105,116,40,41,46,114,3,0,0, + 0,41,1,90,8,109,97,120,115,112,108,105,116,114,10,0, + 0,0,78,41,6,114,4,0,0,0,114,42,0,0,0,218, + 10,114,112,97,114,116,105,116,105,111,110,114,45,0,0,0, + 218,8,114,101,118,101,114,115,101,100,218,6,114,115,112,108, + 105,116,41,5,218,4,112,97,116,104,90,5,102,114,111,110, + 116,218,1,95,218,4,116,97,105,108,114,32,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11, + 95,112,97,116,104,95,115,112,108,105,116,100,0,0,0,115, + 20,0,0,0,12,2,16,1,8,1,12,1,8,1,18,1, + 12,1,2,128,8,1,255,128,114,55,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, + 0,161,1,83,0,41,2,122,126,83,116,97,116,32,116,104, + 101,32,112,97,116,104,46,10,10,32,32,32,32,77,97,100, + 101,32,97,32,115,101,112,97,114,97,116,101,32,102,117,110, + 99,116,105,111,110,32,116,111,32,109,97,107,101,32,105,116, + 32,101,97,115,105,101,114,32,116,111,32,111,118,101,114,114, + 105,100,101,32,105,110,32,101,120,112,101,114,105,109,101,110, + 116,115,10,32,32,32,32,40,101,46,103,46,32,99,97,99, + 104,101,32,115,116,97,116,32,114,101,115,117,108,116,115,41, + 46,10,10,32,32,32,32,78,41,2,114,18,0,0,0,90, + 4,115,116,97,116,169,1,114,52,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,10,95,112,97, + 116,104,95,115,116,97,116,112,0,0,0,115,4,0,0,0, + 10,7,255,128,114,57,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, + 0,0,115,48,0,0,0,122,12,116,0,124,0,131,1,125, + 2,87,0,110,18,4,0,116,1,121,46,1,0,1,0,1, + 0,89,0,100,1,83,0,124,2,106,2,100,2,64,0,124, + 1,107,2,83,0,119,0,41,4,122,49,84,101,115,116,32, + 119,104,101,116,104,101,114,32,116,104,101,32,112,97,116,104, + 32,105,115,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,101,32,116,121,112,101,46,70,105,0,240, + 0,0,78,41,3,114,57,0,0,0,218,7,79,83,69,114, + 114,111,114,218,7,115,116,95,109,111,100,101,41,3,114,52, + 0,0,0,218,4,109,111,100,101,90,9,115,116,97,116,95, + 105,110,102,111,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,18,95,112,97,116,104,95,105,115,95,109,111, + 100,101,95,116,121,112,101,122,0,0,0,115,14,0,0,0, + 2,2,12,1,12,1,6,1,14,1,2,254,255,128,114,61, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,124,0,100,1,131,2,83,0,41,3,122,31,82, + 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, + 115,46,112,97,116,104,46,105,115,102,105,108,101,46,105,0, + 128,0,0,78,41,1,114,61,0,0,0,114,56,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,116, - 121,112,101,122,0,0,0,115,14,0,0,0,2,2,12,1, - 12,1,6,1,14,1,2,254,255,128,114,61,0,0,0,99, + 12,95,112,97,116,104,95,105,115,102,105,108,101,131,0,0, + 0,115,4,0,0,0,10,2,255,128,114,62,0,0,0,99, 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 3,0,0,0,67,0,0,0,115,10,0,0,0,116,0,124, - 0,100,1,131,2,83,0,41,3,122,31,82,101,112,108,97, - 99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,97, - 116,104,46,105,115,102,105,108,101,46,105,0,128,0,0,78, - 41,1,114,61,0,0,0,114,56,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,12,95,112,97, - 116,104,95,105,115,102,105,108,101,131,0,0,0,115,4,0, - 0,0,10,2,255,128,114,62,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,22,0,0,0,124,0,115,12,116,0,160, - 1,161,0,125,0,116,2,124,0,100,1,131,2,83,0,41, - 3,122,30,82,101,112,108,97,99,101,109,101,110,116,32,102, - 111,114,32,111,115,46,112,97,116,104,46,105,115,100,105,114, - 46,105,0,64,0,0,78,41,3,114,18,0,0,0,218,6, - 103,101,116,99,119,100,114,61,0,0,0,114,56,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,112,97,116,104,95,105,115,100,105,114,136,0,0,0, - 115,8,0,0,0,4,2,8,1,10,1,255,128,114,64,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,0, - 124,0,160,0,116,1,161,1,112,24,124,0,100,1,100,2, - 133,2,25,0,116,2,118,0,83,0,41,4,122,142,82,101, - 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115, - 46,112,97,116,104,46,105,115,97,98,115,46,10,10,32,32, - 32,32,67,111,110,115,105,100,101,114,115,32,97,32,87,105, - 110,100,111,119,115,32,100,114,105,118,101,45,114,101,108,97, - 116,105,118,101,32,112,97,116,104,32,40,110,111,32,100,114, - 105,118,101,44,32,98,117,116,32,115,116,97,114,116,115,32, - 119,105,116,104,32,115,108,97,115,104,41,32,116,111,10,32, - 32,32,32,115,116,105,108,108,32,98,101,32,34,97,98,115, - 111,108,117,116,101,34,46,10,32,32,32,32,114,3,0,0, - 0,233,3,0,0,0,78,41,3,114,23,0,0,0,114,42, - 0,0,0,218,20,95,112,97,116,104,115,101,112,115,95,119, - 105,116,104,95,99,111,108,111,110,114,56,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,105,115,97,98,115,143,0,0,0,115,4, - 0,0,0,26,6,255,128,114,67,0,0,0,233,182,1,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,11,0,0,0,67,0,0,0,115,174,0,0,0,100, - 1,160,0,124,0,116,1,124,0,131,1,161,2,125,3,116, - 2,160,3,124,3,116,2,106,4,116,2,106,5,66,0,116, - 2,106,6,66,0,124,2,100,2,64,0,161,3,125,4,122, - 72,116,7,160,8,124,4,100,3,161,2,143,26,125,5,124, - 5,160,9,124,1,161,1,1,0,87,0,100,4,4,0,4, - 0,131,3,1,0,110,16,49,0,115,94,119,1,1,0,1, - 0,1,0,89,0,1,0,116,2,160,10,124,3,124,0,161, - 2,1,0,87,0,100,4,83,0,4,0,116,11,121,172,1, - 0,1,0,1,0,122,14,116,2,160,12,124,3,161,1,1, - 0,87,0,130,0,4,0,116,11,121,166,1,0,1,0,1, - 0,89,0,130,0,119,0,100,4,83,0,119,0,41,5,122, - 162,66,101,115,116,45,101,102,102,111,114,116,32,102,117,110, - 99,116,105,111,110,32,116,111,32,119,114,105,116,101,32,100, - 97,116,97,32,116,111,32,97,32,112,97,116,104,32,97,116, - 111,109,105,99,97,108,108,121,46,10,32,32,32,32,66,101, - 32,112,114,101,112,97,114,101,100,32,116,111,32,104,97,110, - 100,108,101,32,97,32,70,105,108,101,69,120,105,115,116,115, - 69,114,114,111,114,32,105,102,32,99,111,110,99,117,114,114, - 101,110,116,32,119,114,105,116,105,110,103,32,111,102,32,116, - 104,101,10,32,32,32,32,116,101,109,112,111,114,97,114,121, - 32,102,105,108,101,32,105,115,32,97,116,116,101,109,112,116, - 101,100,46,250,5,123,125,46,123,125,114,68,0,0,0,90, - 2,119,98,78,41,13,218,6,102,111,114,109,97,116,218,2, - 105,100,114,18,0,0,0,90,4,111,112,101,110,90,6,79, - 95,69,88,67,76,90,7,79,95,67,82,69,65,84,90,8, - 79,95,87,82,79,78,76,89,218,3,95,105,111,218,6,70, - 105,108,101,73,79,218,5,119,114,105,116,101,218,7,114,101, - 112,108,97,99,101,114,58,0,0,0,90,6,117,110,108,105, - 110,107,41,6,114,52,0,0,0,114,37,0,0,0,114,60, - 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, - 100,218,4,102,105,108,101,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,13,95,119,114,105,116,101,95,97, - 116,111,109,105,99,152,0,0,0,115,38,0,0,0,16,5, - 6,1,22,1,4,255,2,2,14,3,40,1,18,1,12,1, - 2,1,12,1,2,3,12,254,2,1,2,1,2,254,4,252, - 2,1,255,128,114,77,0,0,0,105,105,13,0,0,114,39, - 0,0,0,114,29,0,0,0,115,2,0,0,0,13,10,90, - 11,95,95,112,121,99,97,99,104,101,95,95,122,4,111,112, - 116,45,122,3,46,112,121,122,4,46,112,121,119,122,4,46, - 112,121,99,41,1,218,12,111,112,116,105,109,105,122,97,116, - 105,111,110,99,2,0,0,0,0,0,0,0,1,0,0,0, - 12,0,0,0,5,0,0,0,67,0,0,0,115,88,1,0, - 0,124,1,100,1,117,1,114,52,116,0,160,1,100,2,116, - 2,161,2,1,0,124,2,100,1,117,1,114,40,100,3,125, - 3,116,3,124,3,131,1,130,1,124,1,114,48,100,4,110, - 2,100,5,125,2,116,4,160,5,124,0,161,1,125,0,116, - 6,124,0,131,1,92,2,125,4,125,5,124,5,160,7,100, - 6,161,1,92,3,125,6,125,7,125,8,116,8,106,9,106, - 10,125,9,124,9,100,1,117,0,114,114,116,11,100,7,131, - 1,130,1,100,4,160,12,124,6,114,126,124,6,110,2,124, - 8,124,7,124,9,103,3,161,1,125,10,124,2,100,1,117, - 0,114,172,116,8,106,13,106,14,100,8,107,2,114,164,100, - 4,125,2,110,8,116,8,106,13,106,14,125,2,116,15,124, - 2,131,1,125,2,124,2,100,4,107,3,114,224,124,2,160, - 16,161,0,115,210,116,17,100,9,160,18,124,2,161,1,131, - 1,130,1,100,10,160,18,124,10,116,19,124,2,161,3,125, - 10,124,10,116,20,100,8,25,0,23,0,125,11,116,8,106, - 21,100,1,117,1,144,1,114,76,116,22,124,4,131,1,144, - 1,115,16,116,23,116,4,160,24,161,0,124,4,131,2,125, - 4,124,4,100,5,25,0,100,11,107,2,144,1,114,56,124, - 4,100,8,25,0,116,25,118,1,144,1,114,56,124,4,100, - 12,100,1,133,2,25,0,125,4,116,23,116,8,106,21,124, - 4,160,26,116,25,161,1,124,11,131,3,83,0,116,23,124, - 4,116,27,124,11,131,3,83,0,41,13,97,254,2,0,0, - 71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,116, - 111,32,97,32,46,112,121,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, - 32,105,116,115,32,46,112,121,99,32,102,105,108,101,46,10, - 10,32,32,32,32,84,104,101,32,46,112,121,32,102,105,108, - 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, - 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, - 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, - 101,32,112,97,116,104,32,116,111,32,116,104,101,10,32,32, - 32,32,46,112,121,99,32,102,105,108,101,32,99,97,108,99, - 117,108,97,116,101,100,32,97,115,32,105,102,32,116,104,101, - 32,46,112,121,32,102,105,108,101,32,119,101,114,101,32,105, - 109,112,111,114,116,101,100,46,10,10,32,32,32,32,84,104, - 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,112,97,114,97,109,101,116,101,114,32,99,111,110,116,114, - 111,108,115,32,116,104,101,32,112,114,101,115,117,109,101,100, - 32,111,112,116,105,109,105,122,97,116,105,111,110,32,108,101, - 118,101,108,32,111,102,10,32,32,32,32,116,104,101,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,46,32,73,102, - 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, - 105,115,32,110,111,116,32,78,111,110,101,44,32,116,104,101, - 32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,110, - 116,97,116,105,111,110,10,32,32,32,32,111,102,32,116,104, - 101,32,97,114,103,117,109,101,110,116,32,105,115,32,116,97, - 107,101,110,32,97,110,100,32,118,101,114,105,102,105,101,100, - 32,116,111,32,98,101,32,97,108,112,104,97,110,117,109,101, - 114,105,99,32,40,101,108,115,101,32,86,97,108,117,101,69, - 114,114,111,114,10,32,32,32,32,105,115,32,114,97,105,115, - 101,100,41,46,10,10,32,32,32,32,84,104,101,32,100,101, - 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114, - 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,46,32,73,102,32,100,101,98,117,103,95,111, - 118,101,114,114,105,100,101,32,105,115,32,110,111,116,32,78, - 111,110,101,44,10,32,32,32,32,97,32,84,114,117,101,32, - 118,97,108,117,101,32,105,115,32,116,104,101,32,115,97,109, - 101,32,97,115,32,115,101,116,116,105,110,103,32,39,111,112, - 116,105,109,105,122,97,116,105,111,110,39,32,116,111,32,116, - 104,101,32,101,109,112,116,121,32,115,116,114,105,110,103,10, - 32,32,32,32,119,104,105,108,101,32,97,32,70,97,108,115, - 101,32,118,97,108,117,101,32,105,115,32,101,113,117,105,118, - 97,108,101,110,116,32,116,111,32,115,101,116,116,105,110,103, + 3,0,0,0,67,0,0,0,115,22,0,0,0,124,0,115, + 12,116,0,160,1,161,0,125,0,116,2,124,0,100,1,131, + 2,83,0,41,3,122,30,82,101,112,108,97,99,101,109,101, + 110,116,32,102,111,114,32,111,115,46,112,97,116,104,46,105, + 115,100,105,114,46,105,0,64,0,0,78,41,3,114,18,0, + 0,0,218,6,103,101,116,99,119,100,114,61,0,0,0,114, + 56,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,95,112,97,116,104,95,105,115,100,105,114, + 136,0,0,0,115,8,0,0,0,4,2,8,1,10,1,255, + 128,114,64,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 26,0,0,0,124,0,160,0,116,1,161,1,112,24,124,0, + 100,1,100,2,133,2,25,0,116,2,118,0,83,0,41,4, + 122,142,82,101,112,108,97,99,101,109,101,110,116,32,102,111, + 114,32,111,115,46,112,97,116,104,46,105,115,97,98,115,46, + 10,10,32,32,32,32,67,111,110,115,105,100,101,114,115,32, + 97,32,87,105,110,100,111,119,115,32,100,114,105,118,101,45, + 114,101,108,97,116,105,118,101,32,112,97,116,104,32,40,110, + 111,32,100,114,105,118,101,44,32,98,117,116,32,115,116,97, + 114,116,115,32,119,105,116,104,32,115,108,97,115,104,41,32, + 116,111,10,32,32,32,32,115,116,105,108,108,32,98,101,32, + 34,97,98,115,111,108,117,116,101,34,46,10,32,32,32,32, + 114,3,0,0,0,233,3,0,0,0,78,41,3,114,23,0, + 0,0,114,42,0,0,0,218,20,95,112,97,116,104,115,101, + 112,115,95,119,105,116,104,95,99,111,108,111,110,114,56,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,95,112,97,116,104,95,105,115,97,98,115,143,0, + 0,0,115,4,0,0,0,26,6,255,128,114,67,0,0,0, + 233,182,1,0,0,99,3,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,11,0,0,0,67,0,0,0,115,174, + 0,0,0,100,1,160,0,124,0,116,1,124,0,131,1,161, + 2,125,3,116,2,160,3,124,3,116,2,106,4,116,2,106, + 5,66,0,116,2,106,6,66,0,124,2,100,2,64,0,161, + 3,125,4,122,72,116,7,160,8,124,4,100,3,161,2,143, + 26,125,5,124,5,160,9,124,1,161,1,1,0,87,0,100, + 4,4,0,4,0,131,3,1,0,110,16,49,0,115,94,119, + 1,1,0,1,0,1,0,89,0,1,0,116,2,160,10,124, + 3,124,0,161,2,1,0,87,0,100,4,83,0,4,0,116, + 11,121,172,1,0,1,0,1,0,122,14,116,2,160,12,124, + 3,161,1,1,0,87,0,130,0,4,0,116,11,121,166,1, + 0,1,0,1,0,89,0,130,0,119,0,100,4,83,0,119, + 0,41,5,122,162,66,101,115,116,45,101,102,102,111,114,116, + 32,102,117,110,99,116,105,111,110,32,116,111,32,119,114,105, + 116,101,32,100,97,116,97,32,116,111,32,97,32,112,97,116, + 104,32,97,116,111,109,105,99,97,108,108,121,46,10,32,32, + 32,32,66,101,32,112,114,101,112,97,114,101,100,32,116,111, + 32,104,97,110,100,108,101,32,97,32,70,105,108,101,69,120, + 105,115,116,115,69,114,114,111,114,32,105,102,32,99,111,110, + 99,117,114,114,101,110,116,32,119,114,105,116,105,110,103,32, + 111,102,32,116,104,101,10,32,32,32,32,116,101,109,112,111, + 114,97,114,121,32,102,105,108,101,32,105,115,32,97,116,116, + 101,109,112,116,101,100,46,250,5,123,125,46,123,125,114,68, + 0,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109, + 97,116,218,2,105,100,114,18,0,0,0,90,4,111,112,101, + 110,90,6,79,95,69,88,67,76,90,7,79,95,67,82,69, + 65,84,90,8,79,95,87,82,79,78,76,89,218,3,95,105, + 111,218,6,70,105,108,101,73,79,218,5,119,114,105,116,101, + 218,7,114,101,112,108,97,99,101,114,58,0,0,0,90,6, + 117,110,108,105,110,107,41,6,114,52,0,0,0,114,37,0, + 0,0,114,60,0,0,0,90,8,112,97,116,104,95,116,109, + 112,90,2,102,100,218,4,102,105,108,101,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,13,95,119,114,105, + 116,101,95,97,116,111,109,105,99,152,0,0,0,115,38,0, + 0,0,16,5,6,1,22,1,4,255,2,2,14,3,40,1, + 18,1,12,1,2,1,12,1,2,3,12,254,2,1,2,1, + 2,254,4,252,2,1,255,128,114,77,0,0,0,105,105,13, + 0,0,114,39,0,0,0,114,29,0,0,0,115,2,0,0, + 0,13,10,90,11,95,95,112,121,99,97,99,104,101,95,95, + 122,4,111,112,116,45,122,3,46,112,121,122,4,46,112,121, + 119,122,4,46,112,121,99,41,1,218,12,111,112,116,105,109, + 105,122,97,116,105,111,110,99,2,0,0,0,0,0,0,0, + 1,0,0,0,12,0,0,0,5,0,0,0,67,0,0,0, + 115,88,1,0,0,124,1,100,1,117,1,114,52,116,0,160, + 1,100,2,116,2,161,2,1,0,124,2,100,1,117,1,114, + 40,100,3,125,3,116,3,124,3,131,1,130,1,124,1,114, + 48,100,4,110,2,100,5,125,2,116,4,160,5,124,0,161, + 1,125,0,116,6,124,0,131,1,92,2,125,4,125,5,124, + 5,160,7,100,6,161,1,92,3,125,6,125,7,125,8,116, + 8,106,9,106,10,125,9,124,9,100,1,117,0,114,114,116, + 11,100,7,131,1,130,1,100,4,160,12,124,6,114,126,124, + 6,110,2,124,8,124,7,124,9,103,3,161,1,125,10,124, + 2,100,1,117,0,114,172,116,8,106,13,106,14,100,8,107, + 2,114,164,100,4,125,2,110,8,116,8,106,13,106,14,125, + 2,116,15,124,2,131,1,125,2,124,2,100,4,107,3,114, + 224,124,2,160,16,161,0,115,210,116,17,100,9,160,18,124, + 2,161,1,131,1,130,1,100,10,160,18,124,10,116,19,124, + 2,161,3,125,10,124,10,116,20,100,8,25,0,23,0,125, + 11,116,8,106,21,100,1,117,1,144,1,114,76,116,22,124, + 4,131,1,144,1,115,16,116,23,116,4,160,24,161,0,124, + 4,131,2,125,4,124,4,100,5,25,0,100,11,107,2,144, + 1,114,56,124,4,100,8,25,0,116,25,118,1,144,1,114, + 56,124,4,100,12,100,1,133,2,25,0,125,4,116,23,116, + 8,106,21,124,4,160,26,116,25,161,1,124,11,131,3,83, + 0,116,23,124,4,116,27,124,11,131,3,83,0,41,13,97, + 254,2,0,0,71,105,118,101,110,32,116,104,101,32,112,97, + 116,104,32,116,111,32,97,32,46,112,121,32,102,105,108,101, + 44,32,114,101,116,117,114,110,32,116,104,101,32,112,97,116, + 104,32,116,111,32,105,116,115,32,46,112,121,99,32,102,105, + 108,101,46,10,10,32,32,32,32,84,104,101,32,46,112,121, + 32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,110, + 101,101,100,32,116,111,32,101,120,105,115,116,59,32,116,104, + 105,115,32,115,105,109,112,108,121,32,114,101,116,117,114,110, + 115,32,116,104,101,32,112,97,116,104,32,116,111,32,116,104, + 101,10,32,32,32,32,46,112,121,99,32,102,105,108,101,32, + 99,97,108,99,117,108,97,116,101,100,32,97,115,32,105,102, + 32,116,104,101,32,46,112,121,32,102,105,108,101,32,119,101, + 114,101,32,105,109,112,111,114,116,101,100,46,10,10,32,32, + 32,32,84,104,101,32,39,111,112,116,105,109,105,122,97,116, + 105,111,110,39,32,112,97,114,97,109,101,116,101,114,32,99, + 111,110,116,114,111,108,115,32,116,104,101,32,112,114,101,115, + 117,109,101,100,32,111,112,116,105,109,105,122,97,116,105,111, + 110,32,108,101,118,101,108,32,111,102,10,32,32,32,32,116, + 104,101,32,98,121,116,101,99,111,100,101,32,102,105,108,101, + 46,32,73,102,32,39,111,112,116,105,109,105,122,97,116,105, + 111,110,39,32,105,115,32,110,111,116,32,78,111,110,101,44, + 32,116,104,101,32,115,116,114,105,110,103,32,114,101,112,114, + 101,115,101,110,116,97,116,105,111,110,10,32,32,32,32,111, + 102,32,116,104,101,32,97,114,103,117,109,101,110,116,32,105, + 115,32,116,97,107,101,110,32,97,110,100,32,118,101,114,105, + 102,105,101,100,32,116,111,32,98,101,32,97,108,112,104,97, + 110,117,109,101,114,105,99,32,40,101,108,115,101,32,86,97, + 108,117,101,69,114,114,111,114,10,32,32,32,32,105,115,32, + 114,97,105,115,101,100,41,46,10,10,32,32,32,32,84,104, + 101,32,100,101,98,117,103,95,111,118,101,114,114,105,100,101, + 32,112,97,114,97,109,101,116,101,114,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,73,102,32,100,101,98, + 117,103,95,111,118,101,114,114,105,100,101,32,105,115,32,110, + 111,116,32,78,111,110,101,44,10,32,32,32,32,97,32,84, + 114,117,101,32,118,97,108,117,101,32,105,115,32,116,104,101, + 32,115,97,109,101,32,97,115,32,115,101,116,116,105,110,103, 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, - 116,111,32,39,49,39,46,10,10,32,32,32,32,73,102,32, + 116,111,32,116,104,101,32,101,109,112,116,121,32,115,116,114, + 105,110,103,10,32,32,32,32,119,104,105,108,101,32,97,32, + 70,97,108,115,101,32,118,97,108,117,101,32,105,115,32,101, + 113,117,105,118,97,108,101,110,116,32,116,111,32,115,101,116, + 116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,105, + 111,110,39,32,116,111,32,39,49,39,46,10,10,32,32,32, + 32,73,102,32,115,121,115,46,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, + 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, + 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, + 32,32,78,122,70,116,104,101,32,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,32,112,97,114,97,109,101,116,101, + 114,32,105,115,32,100,101,112,114,101,99,97,116,101,100,59, + 32,117,115,101,32,39,111,112,116,105,109,105,122,97,116,105, + 111,110,39,32,105,110,115,116,101,97,100,122,50,100,101,98, + 117,103,95,111,118,101,114,114,105,100,101,32,111,114,32,111, + 112,116,105,109,105,122,97,116,105,111,110,32,109,117,115,116, + 32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,114, + 10,0,0,0,114,3,0,0,0,218,1,46,250,36,115,121, + 115,46,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 46,99,97,99,104,101,95,116,97,103,32,105,115,32,78,111, + 110,101,114,0,0,0,0,122,24,123,33,114,125,32,105,115, + 32,110,111,116,32,97,108,112,104,97,110,117,109,101,114,105, + 99,122,7,123,125,46,123,125,123,125,114,11,0,0,0,114, + 39,0,0,0,41,28,218,9,95,119,97,114,110,105,110,103, + 115,218,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,218,9,84,121,112, + 101,69,114,114,111,114,114,18,0,0,0,218,6,102,115,112, + 97,116,104,114,55,0,0,0,114,49,0,0,0,114,15,0, + 0,0,218,14,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,218,9,99,97,99,104,101,95,116,97,103,218,19,78, + 111,116,73,109,112,108,101,109,101,110,116,101,100,69,114,114, + 111,114,114,46,0,0,0,114,16,0,0,0,218,8,111,112, + 116,105,109,105,122,101,218,3,115,116,114,218,7,105,115,97, + 108,110,117,109,218,10,86,97,108,117,101,69,114,114,111,114, + 114,70,0,0,0,218,4,95,79,80,84,218,17,66,89,84, + 69,67,79,68,69,95,83,85,70,70,73,88,69,83,218,14, + 112,121,99,97,99,104,101,95,112,114,101,102,105,120,114,67, + 0,0,0,114,48,0,0,0,114,63,0,0,0,114,42,0, + 0,0,218,6,108,115,116,114,105,112,218,8,95,80,89,67, + 65,67,72,69,41,12,114,52,0,0,0,90,14,100,101,98, + 117,103,95,111,118,101,114,114,105,100,101,114,78,0,0,0, + 218,7,109,101,115,115,97,103,101,218,4,104,101,97,100,114, + 54,0,0,0,90,4,98,97,115,101,114,6,0,0,0,218, + 4,114,101,115,116,90,3,116,97,103,90,15,97,108,109,111, + 115,116,95,102,105,108,101,110,97,109,101,218,8,102,105,108, + 101,110,97,109,101,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,17,99,97,99,104,101,95,102,114,111,109, + 95,115,111,117,114,99,101,85,1,0,0,115,74,0,0,0, + 8,18,6,1,2,1,4,255,8,2,4,1,8,1,12,1, + 10,1,12,1,16,1,8,1,8,1,8,1,24,1,8,1, + 12,1,6,1,8,2,8,1,8,1,8,1,14,1,14,1, + 12,1,12,1,10,9,14,1,28,5,12,1,2,4,4,1, + 8,1,2,1,4,253,12,5,255,128,114,102,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, + 5,0,0,0,67,0,0,0,115,44,1,0,0,116,0,106, + 1,106,2,100,1,117,0,114,20,116,3,100,2,131,1,130, + 1,116,4,160,5,124,0,161,1,125,0,116,6,124,0,131, + 1,92,2,125,1,125,2,100,3,125,3,116,0,106,7,100, + 1,117,1,114,102,116,0,106,7,160,8,116,9,161,1,125, + 4,124,1,160,10,124,4,116,11,23,0,161,1,114,102,124, + 1,116,12,124,4,131,1,100,1,133,2,25,0,125,1,100, + 4,125,3,124,3,115,144,116,6,124,1,131,1,92,2,125, + 1,125,5,124,5,116,13,107,3,114,144,116,14,116,13,155, + 0,100,5,124,0,155,2,157,3,131,1,130,1,124,2,160, + 15,100,6,161,1,125,6,124,6,100,7,118,1,114,176,116, + 14,100,8,124,2,155,2,157,2,131,1,130,1,124,6,100, + 9,107,2,144,1,114,12,124,2,160,16,100,6,100,10,161, + 2,100,11,25,0,125,7,124,7,160,10,116,17,161,1,115, + 226,116,14,100,12,116,17,155,2,157,2,131,1,130,1,124, + 7,116,12,116,17,131,1,100,1,133,2,25,0,125,8,124, + 8,160,18,161,0,144,1,115,12,116,14,100,13,124,7,155, + 2,100,14,157,3,131,1,130,1,124,2,160,19,100,6,161, + 1,100,15,25,0,125,9,116,20,124,1,124,9,116,21,100, + 15,25,0,23,0,131,2,83,0,41,16,97,110,1,0,0, + 71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,116, + 111,32,97,32,46,112,121,99,46,32,102,105,108,101,44,32, + 114,101,116,117,114,110,32,116,104,101,32,112,97,116,104,32, + 116,111,32,105,116,115,32,46,112,121,32,102,105,108,101,46, + 10,10,32,32,32,32,84,104,101,32,46,112,121,99,32,102, + 105,108,101,32,100,111,101,115,32,110,111,116,32,110,101,101, + 100,32,116,111,32,101,120,105,115,116,59,32,116,104,105,115, + 32,115,105,109,112,108,121,32,114,101,116,117,114,110,115,32, + 116,104,101,32,112,97,116,104,32,116,111,10,32,32,32,32, + 116,104,101,32,46,112,121,32,102,105,108,101,32,99,97,108, + 99,117,108,97,116,101,100,32,116,111,32,99,111,114,114,101, + 115,112,111,110,100,32,116,111,32,116,104,101,32,46,112,121, + 99,32,102,105,108,101,46,32,32,73,102,32,112,97,116,104, + 32,100,111,101,115,10,32,32,32,32,110,111,116,32,99,111, + 110,102,111,114,109,32,116,111,32,80,69,80,32,51,49,52, + 55,47,52,56,56,32,102,111,114,109,97,116,44,32,86,97, + 108,117,101,69,114,114,111,114,32,119,105,108,108,32,98,101, + 32,114,97,105,115,101,100,46,32,73,102,10,32,32,32,32, 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, 78,111,110,101,32,116,104,101,110,32,78,111,116,73,109,112, 108,101,109,101,110,116,101,100,69,114,114,111,114,32,105,115, - 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,122, - 70,116,104,101,32,100,101,98,117,103,95,111,118,101,114,114, - 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,59,32,117,115,101, - 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, - 105,110,115,116,101,97,100,122,50,100,101,98,117,103,95,111, - 118,101,114,114,105,100,101,32,111,114,32,111,112,116,105,109, - 105,122,97,116,105,111,110,32,109,117,115,116,32,98,101,32, - 115,101,116,32,116,111,32,78,111,110,101,114,10,0,0,0, - 114,3,0,0,0,218,1,46,250,36,115,121,115,46,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,46,99,97,99, - 104,101,95,116,97,103,32,105,115,32,78,111,110,101,114,0, - 0,0,0,122,24,123,33,114,125,32,105,115,32,110,111,116, - 32,97,108,112,104,97,110,117,109,101,114,105,99,122,7,123, - 125,46,123,125,123,125,114,11,0,0,0,114,39,0,0,0, - 41,28,218,9,95,119,97,114,110,105,110,103,115,218,4,119, - 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, - 87,97,114,110,105,110,103,218,9,84,121,112,101,69,114,114, - 111,114,114,18,0,0,0,218,6,102,115,112,97,116,104,114, - 55,0,0,0,114,49,0,0,0,114,15,0,0,0,218,14, - 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9, - 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,46, - 0,0,0,114,16,0,0,0,218,8,111,112,116,105,109,105, - 122,101,218,3,115,116,114,218,7,105,115,97,108,110,117,109, - 218,10,86,97,108,117,101,69,114,114,111,114,114,70,0,0, - 0,218,4,95,79,80,84,218,17,66,89,84,69,67,79,68, - 69,95,83,85,70,70,73,88,69,83,218,14,112,121,99,97, - 99,104,101,95,112,114,101,102,105,120,114,67,0,0,0,114, - 48,0,0,0,114,63,0,0,0,114,42,0,0,0,218,6, - 108,115,116,114,105,112,218,8,95,80,89,67,65,67,72,69, - 41,12,114,52,0,0,0,90,14,100,101,98,117,103,95,111, - 118,101,114,114,105,100,101,114,78,0,0,0,218,7,109,101, - 115,115,97,103,101,218,4,104,101,97,100,114,54,0,0,0, - 90,4,98,97,115,101,114,6,0,0,0,218,4,114,101,115, - 116,90,3,116,97,103,90,15,97,108,109,111,115,116,95,102, - 105,108,101,110,97,109,101,218,8,102,105,108,101,110,97,109, - 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, - 114,99,101,85,1,0,0,115,74,0,0,0,8,18,6,1, - 2,1,4,255,8,2,4,1,8,1,12,1,10,1,12,1, - 16,1,8,1,8,1,8,1,24,1,8,1,12,1,6,1, - 8,2,8,1,8,1,8,1,14,1,14,1,12,1,12,1, - 10,9,14,1,28,5,12,1,2,4,4,1,8,1,2,1, - 4,253,12,5,255,128,114,102,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, - 67,0,0,0,115,44,1,0,0,116,0,106,1,106,2,100, - 1,117,0,114,20,116,3,100,2,131,1,130,1,116,4,160, - 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, - 1,125,2,100,3,125,3,116,0,106,7,100,1,117,1,114, - 102,116,0,106,7,160,8,116,9,161,1,125,4,124,1,160, - 10,124,4,116,11,23,0,161,1,114,102,124,1,116,12,124, - 4,131,1,100,1,133,2,25,0,125,1,100,4,125,3,124, - 3,115,144,116,6,124,1,131,1,92,2,125,1,125,5,124, - 5,116,13,107,3,114,144,116,14,116,13,155,0,100,5,124, - 0,155,2,157,3,131,1,130,1,124,2,160,15,100,6,161, - 1,125,6,124,6,100,7,118,1,114,176,116,14,100,8,124, - 2,155,2,157,2,131,1,130,1,124,6,100,9,107,2,144, - 1,114,12,124,2,160,16,100,6,100,10,161,2,100,11,25, - 0,125,7,124,7,160,10,116,17,161,1,115,226,116,14,100, - 12,116,17,155,2,157,2,131,1,130,1,124,7,116,12,116, - 17,131,1,100,1,133,2,25,0,125,8,124,8,160,18,161, - 0,144,1,115,12,116,14,100,13,124,7,155,2,100,14,157, - 3,131,1,130,1,124,2,160,19,100,6,161,1,100,15,25, - 0,125,9,116,20,124,1,124,9,116,21,100,15,25,0,23, - 0,131,2,83,0,41,16,97,110,1,0,0,71,105,118,101, - 110,32,116,104,101,32,112,97,116,104,32,116,111,32,97,32, - 46,112,121,99,46,32,102,105,108,101,44,32,114,101,116,117, - 114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,105, - 116,115,32,46,112,121,32,102,105,108,101,46,10,10,32,32, - 32,32,84,104,101,32,46,112,121,99,32,102,105,108,101,32, - 100,111,101,115,32,110,111,116,32,110,101,101,100,32,116,111, - 32,101,120,105,115,116,59,32,116,104,105,115,32,115,105,109, - 112,108,121,32,114,101,116,117,114,110,115,32,116,104,101,32, - 112,97,116,104,32,116,111,10,32,32,32,32,116,104,101,32, - 46,112,121,32,102,105,108,101,32,99,97,108,99,117,108,97, - 116,101,100,32,116,111,32,99,111,114,114,101,115,112,111,110, - 100,32,116,111,32,116,104,101,32,46,112,121,99,32,102,105, - 108,101,46,32,32,73,102,32,112,97,116,104,32,100,111,101, - 115,10,32,32,32,32,110,111,116,32,99,111,110,102,111,114, - 109,32,116,111,32,80,69,80,32,51,49,52,55,47,52,56, - 56,32,102,111,114,109,97,116,44,32,86,97,108,117,101,69, - 114,114,111,114,32,119,105,108,108,32,98,101,32,114,97,105, - 115,101,100,46,32,73,102,10,32,32,32,32,115,121,115,46, - 105,109,112,108,101,109,101,110,116,97,116,105,111,110,46,99, - 97,99,104,101,95,116,97,103,32,105,115,32,78,111,110,101, - 32,116,104,101,110,32,78,111,116,73,109,112,108,101,109,101, - 110,116,101,100,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,46,10,10,32,32,32,32,78,114,80,0,0,0, - 70,84,122,31,32,110,111,116,32,98,111,116,116,111,109,45, - 108,101,118,101,108,32,100,105,114,101,99,116,111,114,121,32, - 105,110,32,114,79,0,0,0,62,2,0,0,0,114,39,0, - 0,0,114,65,0,0,0,122,29,101,120,112,101,99,116,101, - 100,32,111,110,108,121,32,50,32,111,114,32,51,32,100,111, - 116,115,32,105,110,32,114,65,0,0,0,114,39,0,0,0, - 233,254,255,255,255,122,53,111,112,116,105,109,105,122,97,116, - 105,111,110,32,112,111,114,116,105,111,110,32,111,102,32,102, - 105,108,101,110,97,109,101,32,100,111,101,115,32,110,111,116, - 32,115,116,97,114,116,32,119,105,116,104,32,122,19,111,112, - 116,105,109,105,122,97,116,105,111,110,32,108,101,118,101,108, - 32,122,29,32,105,115,32,110,111,116,32,97,110,32,97,108, - 112,104,97,110,117,109,101,114,105,99,32,118,97,108,117,101, - 114,0,0,0,0,41,22,114,15,0,0,0,114,86,0,0, - 0,114,87,0,0,0,114,88,0,0,0,114,18,0,0,0, - 114,85,0,0,0,114,55,0,0,0,114,95,0,0,0,114, - 41,0,0,0,114,42,0,0,0,114,23,0,0,0,114,45, - 0,0,0,114,4,0,0,0,114,97,0,0,0,114,92,0, - 0,0,218,5,99,111,117,110,116,114,51,0,0,0,114,93, - 0,0,0,114,91,0,0,0,218,9,112,97,114,116,105,116, - 105,111,110,114,48,0,0,0,218,15,83,79,85,82,67,69, - 95,83,85,70,70,73,88,69,83,41,10,114,52,0,0,0, - 114,99,0,0,0,90,16,112,121,99,97,99,104,101,95,102, - 105,108,101,110,97,109,101,90,23,102,111,117,110,100,95,105, - 110,95,112,121,99,97,99,104,101,95,112,114,101,102,105,120, - 90,13,115,116,114,105,112,112,101,100,95,112,97,116,104,90, - 7,112,121,99,97,99,104,101,90,9,100,111,116,95,99,111, - 117,110,116,114,78,0,0,0,90,9,111,112,116,95,108,101, - 118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,97, - 109,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, - 97,99,104,101,156,1,0,0,115,62,0,0,0,12,9,8, - 1,10,1,12,1,4,1,10,1,12,1,14,1,16,1,4, - 1,4,1,12,1,8,1,8,1,2,1,8,255,10,2,8, - 1,14,1,10,1,16,1,10,1,4,1,2,1,8,255,16, - 2,10,1,16,1,14,2,18,1,255,128,114,107,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,9,0,0,0,67,0,0,0,115,122,0,0,0,116,0, - 124,0,131,1,100,1,107,2,114,16,100,2,83,0,124,0, - 160,1,100,3,161,1,92,3,125,1,125,2,125,3,124,1, - 114,56,124,3,160,2,161,0,100,4,100,5,133,2,25,0, - 100,6,107,3,114,60,124,0,83,0,122,12,116,3,124,0, - 131,1,125,4,87,0,110,30,4,0,116,4,116,5,102,2, - 121,120,1,0,1,0,1,0,124,0,100,2,100,5,133,2, - 25,0,125,4,89,0,116,6,124,4,131,1,114,116,124,4, - 83,0,124,0,83,0,119,0,41,7,122,188,67,111,110,118, - 101,114,116,32,97,32,98,121,116,101,99,111,100,101,32,102, - 105,108,101,32,112,97,116,104,32,116,111,32,97,32,115,111, - 117,114,99,101,32,112,97,116,104,32,40,105,102,32,112,111, - 115,115,105,98,108,101,41,46,10,10,32,32,32,32,84,104, - 105,115,32,102,117,110,99,116,105,111,110,32,101,120,105,115, - 116,115,32,112,117,114,101,108,121,32,102,111,114,32,98,97, - 99,107,119,97,114,100,115,45,99,111,109,112,97,116,105,98, - 105,108,105,116,121,32,102,111,114,10,32,32,32,32,80,121, - 73,109,112,111,114,116,95,69,120,101,99,67,111,100,101,77, - 111,100,117,108,101,87,105,116,104,70,105,108,101,110,97,109, - 101,115,40,41,32,105,110,32,116,104,101,32,67,32,65,80, - 73,46,10,10,32,32,32,32,114,0,0,0,0,78,114,79, - 0,0,0,233,253,255,255,255,233,255,255,255,255,90,2,112, - 121,41,7,114,4,0,0,0,114,49,0,0,0,218,5,108, - 111,119,101,114,114,107,0,0,0,114,88,0,0,0,114,92, - 0,0,0,114,62,0,0,0,41,5,218,13,98,121,116,101, - 99,111,100,101,95,112,97,116,104,114,100,0,0,0,114,53, - 0,0,0,90,9,101,120,116,101,110,115,105,111,110,218,11, - 115,111,117,114,99,101,95,112,97,116,104,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,15,95,103,101,116, - 95,115,111,117,114,99,101,102,105,108,101,196,1,0,0,115, - 24,0,0,0,12,7,4,1,16,1,24,1,4,1,2,1, - 12,1,16,1,14,1,16,1,2,254,255,128,114,113,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,8,0,0,0,67,0,0,0,115,68,0,0,0,124, - 0,160,0,116,1,116,2,131,1,161,1,114,44,122,10,116, - 3,124,0,131,1,87,0,83,0,4,0,116,4,121,66,1, - 0,1,0,1,0,89,0,100,0,83,0,124,0,160,0,116, - 1,116,5,131,1,161,1,114,62,124,0,83,0,100,0,83, - 0,119,0,169,1,78,41,6,218,8,101,110,100,115,119,105, - 116,104,218,5,116,117,112,108,101,114,106,0,0,0,114,102, - 0,0,0,114,88,0,0,0,114,94,0,0,0,41,1,114, - 101,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,11,95,103,101,116,95,99,97,99,104,101,100, - 215,1,0,0,115,20,0,0,0,14,1,2,1,10,1,12, - 1,6,1,14,1,4,1,4,2,2,251,255,128,114,117,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,8,0,0,0,67,0,0,0,115,48,0,0,0, - 122,14,116,0,124,0,131,1,106,1,125,1,87,0,110,18, - 4,0,116,2,121,46,1,0,1,0,1,0,100,1,125,1, - 89,0,124,1,100,2,79,0,125,1,124,1,83,0,119,0, - 41,4,122,51,67,97,108,99,117,108,97,116,101,32,116,104, - 101,32,109,111,100,101,32,112,101,114,109,105,115,115,105,111, - 110,115,32,102,111,114,32,97,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,46,114,68,0,0,0,233,128,0,0, - 0,78,41,3,114,57,0,0,0,114,59,0,0,0,114,58, - 0,0,0,41,2,114,52,0,0,0,114,60,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, - 95,99,97,108,99,95,109,111,100,101,227,1,0,0,115,16, - 0,0,0,2,2,14,1,12,1,6,1,8,3,4,1,2, - 251,255,128,114,119,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,4,0,0,0,3,0,0, - 0,115,52,0,0,0,100,6,135,0,102,1,100,2,100,3, - 132,9,125,1,116,0,100,1,117,1,114,30,116,0,106,1, - 125,2,110,8,100,4,100,5,132,0,125,2,124,2,124,1, - 136,0,131,2,1,0,124,1,83,0,41,7,122,252,68,101, - 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, - 121,32,116,104,97,116,32,116,104,101,32,109,111,100,117,108, - 101,32,98,101,105,110,103,32,114,101,113,117,101,115,116,101, - 100,32,109,97,116,99,104,101,115,32,116,104,101,32,111,110, - 101,32,116,104,101,10,32,32,32,32,108,111,97,100,101,114, - 32,99,97,110,32,104,97,110,100,108,101,46,10,10,32,32, - 32,32,84,104,101,32,102,105,114,115,116,32,97,114,103,117, - 109,101,110,116,32,40,115,101,108,102,41,32,109,117,115,116, - 32,100,101,102,105,110,101,32,95,110,97,109,101,32,119,104, - 105,99,104,32,116,104,101,32,115,101,99,111,110,100,32,97, - 114,103,117,109,101,110,116,32,105,115,10,32,32,32,32,99, - 111,109,112,97,114,101,100,32,97,103,97,105,110,115,116,46, - 32,73,102,32,116,104,101,32,99,111,109,112,97,114,105,115, - 111,110,32,102,97,105,108,115,32,116,104,101,110,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,46,10,10,32,32,32,32,78,99,2,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, - 31,0,0,0,115,72,0,0,0,124,1,100,0,117,0,114, - 16,124,0,106,0,125,1,110,32,124,0,106,0,124,1,107, - 3,114,48,116,1,100,1,124,0,106,0,124,1,102,2,22, - 0,124,1,100,2,141,2,130,1,136,0,124,0,124,1,103, - 2,124,2,162,1,82,0,105,0,124,3,164,1,142,1,83, - 0,41,3,78,122,30,108,111,97,100,101,114,32,102,111,114, - 32,37,115,32,99,97,110,110,111,116,32,104,97,110,100,108, - 101,32,37,115,169,1,218,4,110,97,109,101,41,2,114,121, - 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,121,0,0,0,218,4,97, - 114,103,115,218,6,107,119,97,114,103,115,169,1,218,6,109, - 101,116,104,111,100,114,7,0,0,0,114,8,0,0,0,218, - 19,95,99,104,101,99,107,95,110,97,109,101,95,119,114,97, - 112,112,101,114,247,1,0,0,115,20,0,0,0,8,1,8, - 1,10,1,4,1,8,1,2,255,2,1,6,255,24,2,255, - 128,122,40,95,99,104,101,99,107,95,110,97,109,101,46,60, - 108,111,99,97,108,115,62,46,95,99,104,101,99,107,95,110, - 97,109,101,95,119,114,97,112,112,101,114,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0, - 83,0,0,0,115,56,0,0,0,100,1,68,0,93,32,125, - 2,116,0,124,1,124,2,131,2,114,4,116,1,124,0,124, - 2,116,2,124,1,124,2,131,2,131,3,1,0,113,4,124, - 0,106,3,160,4,124,1,106,3,161,1,1,0,100,0,83, - 0,41,2,78,41,4,218,10,95,95,109,111,100,117,108,101, - 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95, - 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111, - 99,95,95,41,5,218,7,104,97,115,97,116,116,114,218,7, - 115,101,116,97,116,116,114,218,7,103,101,116,97,116,116,114, - 218,8,95,95,100,105,99,116,95,95,218,6,117,112,100,97, - 116,101,41,3,90,3,110,101,119,90,3,111,108,100,114,75, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,5,95,119,114,97,112,4,2,0,0,115,12,0, - 0,0,8,1,10,1,18,1,2,128,18,1,255,128,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,2,218, - 10,95,98,111,111,116,115,116,114,97,112,114,138,0,0,0, - 41,3,114,127,0,0,0,114,128,0,0,0,114,138,0,0, - 0,114,7,0,0,0,114,126,0,0,0,114,8,0,0,0, - 218,11,95,99,104,101,99,107,95,110,97,109,101,239,1,0, - 0,115,14,0,0,0,14,8,8,10,8,1,8,2,10,6, - 4,1,255,128,114,140,0,0,0,99,2,0,0,0,0,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,117,0,114,56,116,1,124, - 3,131,1,114,56,100,2,125,4,116,2,160,3,124,4,160, - 4,124,3,100,3,25,0,161,1,116,5,161,2,1,0,124, - 2,83,0,41,4,122,155,84,114,121,32,116,111,32,102,105, - 110,100,32,97,32,108,111,97,100,101,114,32,102,111,114,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,32,98,121,32,100,101,108,101,103,97,116,105, - 110,103,32,116,111,10,32,32,32,32,115,101,108,102,46,102, - 105,110,100,95,108,111,97,100,101,114,40,41,46,10,10,32, - 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,32,105,110,32, - 102,97,118,111,114,32,111,102,32,102,105,110,100,101,114,46, - 102,105,110,100,95,115,112,101,99,40,41,46,10,10,32,32, - 32,32,78,122,44,78,111,116,32,105,109,112,111,114,116,105, - 110,103,32,100,105,114,101,99,116,111,114,121,32,123,125,58, - 32,109,105,115,115,105,110,103,32,95,95,105,110,105,116,95, - 95,114,0,0,0,0,41,6,218,11,102,105,110,100,95,108, - 111,97,100,101,114,114,4,0,0,0,114,81,0,0,0,114, - 82,0,0,0,114,70,0,0,0,218,13,73,109,112,111,114, - 116,87,97,114,110,105,110,103,41,5,114,123,0,0,0,218, - 8,102,117,108,108,110,97,109,101,218,6,108,111,97,100,101, - 114,218,8,112,111,114,116,105,111,110,115,218,3,109,115,103, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 17,95,102,105,110,100,95,109,111,100,117,108,101,95,115,104, - 105,109,14,2,0,0,115,12,0,0,0,14,10,16,1,4, - 1,22,1,4,1,255,128,114,147,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,166,0,0,0,124,0,100,1,100,2, - 133,2,25,0,125,3,124,3,116,0,107,3,114,64,100,3, - 124,1,155,2,100,4,124,3,155,2,157,4,125,4,116,1, - 160,2,100,5,124,4,161,2,1,0,116,3,124,4,102,1, - 105,0,124,2,164,1,142,1,130,1,116,4,124,0,131,1, - 100,6,107,0,114,106,100,7,124,1,155,2,157,2,125,4, - 116,1,160,2,100,5,124,4,161,2,1,0,116,5,124,4, - 131,1,130,1,116,6,124,0,100,2,100,8,133,2,25,0, - 131,1,125,5,124,5,100,9,64,0,114,162,100,10,124,5, - 155,2,100,11,124,1,155,2,157,4,125,4,116,3,124,4, - 102,1,105,0,124,2,164,1,142,1,130,1,124,5,83,0, - 41,12,97,84,2,0,0,80,101,114,102,111,114,109,32,98, - 97,115,105,99,32,118,97,108,105,100,105,116,121,32,99,104, - 101,99,107,105,110,103,32,111,102,32,97,32,112,121,99,32, - 104,101,97,100,101,114,32,97,110,100,32,114,101,116,117,114, - 110,32,116,104,101,32,102,108,97,103,115,32,102,105,101,108, - 100,44,10,32,32,32,32,119,104,105,99,104,32,100,101,116, - 101,114,109,105,110,101,115,32,104,111,119,32,116,104,101,32, - 112,121,99,32,115,104,111,117,108,100,32,98,101,32,102,117, - 114,116,104,101,114,32,118,97,108,105,100,97,116,101,100,32, - 97,103,97,105,110,115,116,32,116,104,101,32,115,111,117,114, - 99,101,46,10,10,32,32,32,32,42,100,97,116,97,42,32, - 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, - 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, - 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, - 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,44,32,116,104,111,117, - 103,104,46,41,10,10,32,32,32,32,42,110,97,109,101,42, - 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, - 116,104,101,32,109,111,100,117,108,101,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,46,32,73,116,32,105,115, - 32,117,115,101,100,32,102,111,114,32,108,111,103,103,105,110, - 103,46,10,10,32,32,32,32,42,101,120,99,95,100,101,116, - 97,105,108,115,42,32,105,115,32,97,32,100,105,99,116,105, - 111,110,97,114,121,32,112,97,115,115,101,100,32,116,111,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,105, - 116,32,114,97,105,115,101,100,32,102,111,114,10,32,32,32, - 32,105,109,112,114,111,118,101,100,32,100,101,98,117,103,103, - 105,110,103,46,10,10,32,32,32,32,73,109,112,111,114,116, - 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32, - 119,104,101,110,32,116,104,101,32,109,97,103,105,99,32,110, - 117,109,98,101,114,32,105,115,32,105,110,99,111,114,114,101, - 99,116,32,111,114,32,119,104,101,110,32,116,104,101,32,102, - 108,97,103,115,10,32,32,32,32,102,105,101,108,100,32,105, - 115,32,105,110,118,97,108,105,100,46,32,69,79,70,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, - 101,110,32,116,104,101,32,100,97,116,97,32,105,115,32,102, - 111,117,110,100,32,116,111,32,98,101,32,116,114,117,110,99, - 97,116,101,100,46,10,10,32,32,32,32,78,114,28,0,0, - 0,122,20,98,97,100,32,109,97,103,105,99,32,110,117,109, - 98,101,114,32,105,110,32,122,2,58,32,250,2,123,125,233, - 16,0,0,0,122,40,114,101,97,99,104,101,100,32,69,79, - 70,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32, - 112,121,99,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,139, - 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, - 115,115,97,103,101,114,122,0,0,0,114,4,0,0,0,218, - 8,69,79,70,69,114,114,111,114,114,38,0,0,0,41,6, - 114,37,0,0,0,114,121,0,0,0,218,11,101,120,99,95, - 100,101,116,97,105,108,115,90,5,109,97,103,105,99,114,98, - 0,0,0,114,16,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,31,2,0,0,115,30,0,0,0,12, - 16,8,1,16,1,12,1,16,1,12,1,10,1,12,1,8, - 1,16,1,8,2,16,1,16,1,4,1,255,128,114,156,0, - 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,4,0,0,0,67,0,0,0,115,124,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,62,100,4,124,3,155,2,157,2, - 125,5,116,1,160,2,100,5,124,5,161,2,1,0,116,3, - 124,5,102,1,105,0,124,4,164,1,142,1,130,1,124,2, - 100,6,117,1,114,120,116,0,124,0,100,2,100,7,133,2, - 25,0,131,1,124,2,100,3,64,0,107,3,114,116,116,3, - 100,4,124,3,155,2,157,2,102,1,105,0,124,4,164,1, - 142,1,130,1,100,6,83,0,100,6,83,0,41,8,97,7, - 2,0,0,86,97,108,105,100,97,116,101,32,97,32,112,121, - 99,32,97,103,97,105,110,115,116,32,116,104,101,32,115,111, - 117,114,99,101,32,108,97,115,116,45,109,111,100,105,102,105, - 101,100,32,116,105,109,101,46,10,10,32,32,32,32,42,100, - 97,116,97,42,32,105,115,32,116,104,101,32,99,111,110,116, - 101,110,116,115,32,111,102,32,116,104,101,32,112,121,99,32, - 102,105,108,101,46,32,40,79,110,108,121,32,116,104,101,32, - 102,105,114,115,116,32,49,54,32,98,121,116,101,115,32,97, - 114,101,10,32,32,32,32,114,101,113,117,105,114,101,100,46, - 41,10,10,32,32,32,32,42,115,111,117,114,99,101,95,109, - 116,105,109,101,42,32,105,115,32,116,104,101,32,108,97,115, - 116,32,109,111,100,105,102,105,101,100,32,116,105,109,101,115, - 116,97,109,112,32,111,102,32,116,104,101,32,115,111,117,114, - 99,101,32,102,105,108,101,46,10,10,32,32,32,32,42,115, - 111,117,114,99,101,95,115,105,122,101,42,32,105,115,32,78, - 111,110,101,32,111,114,32,116,104,101,32,115,105,122,101,32, - 111,102,32,116,104,101,32,115,111,117,114,99,101,32,102,105, - 108,101,32,105,110,32,98,121,116,101,115,46,10,10,32,32, - 32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,32, - 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, - 108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,101, - 100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,111, - 114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,32, - 42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,115, - 32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,97, - 115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,114, - 114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,100, - 32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,101, - 100,32,100,101,98,117,103,103,105,110,103,46,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,150,0,0,0,233, - 12,0,0,0,114,27,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,148,0,0,0,78,114,149,0,0,0,41,4,114,38, - 0,0,0,114,139,0,0,0,114,153,0,0,0,114,122,0, - 0,0,41,6,114,37,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,121,0,0,0,114,155,0,0,0,114,98, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,114, + 80,0,0,0,70,84,122,31,32,110,111,116,32,98,111,116, + 116,111,109,45,108,101,118,101,108,32,100,105,114,101,99,116, + 111,114,121,32,105,110,32,114,79,0,0,0,62,2,0,0, + 0,114,39,0,0,0,114,65,0,0,0,122,29,101,120,112, + 101,99,116,101,100,32,111,110,108,121,32,50,32,111,114,32, + 51,32,100,111,116,115,32,105,110,32,114,65,0,0,0,114, + 39,0,0,0,233,254,255,255,255,122,53,111,112,116,105,109, + 105,122,97,116,105,111,110,32,112,111,114,116,105,111,110,32, + 111,102,32,102,105,108,101,110,97,109,101,32,100,111,101,115, + 32,110,111,116,32,115,116,97,114,116,32,119,105,116,104,32, + 122,19,111,112,116,105,109,105,122,97,116,105,111,110,32,108, + 101,118,101,108,32,122,29,32,105,115,32,110,111,116,32,97, + 110,32,97,108,112,104,97,110,117,109,101,114,105,99,32,118, + 97,108,117,101,114,0,0,0,0,41,22,114,15,0,0,0, + 114,86,0,0,0,114,87,0,0,0,114,88,0,0,0,114, + 18,0,0,0,114,85,0,0,0,114,55,0,0,0,114,95, + 0,0,0,114,41,0,0,0,114,42,0,0,0,114,23,0, + 0,0,114,45,0,0,0,114,4,0,0,0,114,97,0,0, + 0,114,92,0,0,0,218,5,99,111,117,110,116,114,51,0, + 0,0,114,93,0,0,0,114,91,0,0,0,218,9,112,97, + 114,116,105,116,105,111,110,114,48,0,0,0,218,15,83,79, + 85,82,67,69,95,83,85,70,70,73,88,69,83,41,10,114, + 52,0,0,0,114,99,0,0,0,90,16,112,121,99,97,99, + 104,101,95,102,105,108,101,110,97,109,101,90,23,102,111,117, + 110,100,95,105,110,95,112,121,99,97,99,104,101,95,112,114, + 101,102,105,120,90,13,115,116,114,105,112,112,101,100,95,112, + 97,116,104,90,7,112,121,99,97,99,104,101,90,9,100,111, + 116,95,99,111,117,110,116,114,78,0,0,0,90,9,111,112, + 116,95,108,101,118,101,108,90,13,98,97,115,101,95,102,105, + 108,101,110,97,109,101,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,17,115,111,117,114,99,101,95,102,114, + 111,109,95,99,97,99,104,101,156,1,0,0,115,62,0,0, + 0,12,9,8,1,10,1,12,1,4,1,10,1,12,1,14, + 1,16,1,4,1,4,1,12,1,8,1,8,1,2,1,8, + 255,10,2,8,1,14,1,10,1,16,1,10,1,4,1,2, + 1,8,255,16,2,10,1,16,1,14,2,18,1,255,128,114, + 107,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,9,0,0,0,67,0,0,0,115,122,0, + 0,0,116,0,124,0,131,1,100,1,107,2,114,16,100,2, + 83,0,124,0,160,1,100,3,161,1,92,3,125,1,125,2, + 125,3,124,1,114,56,124,3,160,2,161,0,100,4,100,5, + 133,2,25,0,100,6,107,3,114,60,124,0,83,0,122,12, + 116,3,124,0,131,1,125,4,87,0,110,30,4,0,116,4, + 116,5,102,2,121,120,1,0,1,0,1,0,124,0,100,2, + 100,5,133,2,25,0,125,4,89,0,116,6,124,4,131,1, + 114,116,124,4,83,0,124,0,83,0,119,0,41,7,122,188, + 67,111,110,118,101,114,116,32,97,32,98,121,116,101,99,111, + 100,101,32,102,105,108,101,32,112,97,116,104,32,116,111,32, + 97,32,115,111,117,114,99,101,32,112,97,116,104,32,40,105, + 102,32,112,111,115,115,105,98,108,101,41,46,10,10,32,32, + 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, + 101,120,105,115,116,115,32,112,117,114,101,108,121,32,102,111, + 114,32,98,97,99,107,119,97,114,100,115,45,99,111,109,112, + 97,116,105,98,105,108,105,116,121,32,102,111,114,10,32,32, + 32,32,80,121,73,109,112,111,114,116,95,69,120,101,99,67, + 111,100,101,77,111,100,117,108,101,87,105,116,104,70,105,108, + 101,110,97,109,101,115,40,41,32,105,110,32,116,104,101,32, + 67,32,65,80,73,46,10,10,32,32,32,32,114,0,0,0, + 0,78,114,79,0,0,0,233,253,255,255,255,233,255,255,255, + 255,90,2,112,121,41,7,114,4,0,0,0,114,49,0,0, + 0,218,5,108,111,119,101,114,114,107,0,0,0,114,88,0, + 0,0,114,92,0,0,0,114,62,0,0,0,41,5,218,13, + 98,121,116,101,99,111,100,101,95,112,97,116,104,114,100,0, + 0,0,114,53,0,0,0,90,9,101,120,116,101,110,115,105, + 111,110,218,11,115,111,117,114,99,101,95,112,97,116,104,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,196, + 1,0,0,115,24,0,0,0,12,7,4,1,16,1,24,1, + 4,1,2,1,12,1,16,1,14,1,16,1,2,254,255,128, + 114,113,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,68, + 0,0,0,124,0,160,0,116,1,116,2,131,1,161,1,114, + 44,122,10,116,3,124,0,131,1,87,0,83,0,4,0,116, + 4,121,66,1,0,1,0,1,0,89,0,100,0,83,0,124, + 0,160,0,116,1,116,5,131,1,161,1,114,62,124,0,83, + 0,100,0,83,0,119,0,169,1,78,41,6,218,8,101,110, + 100,115,119,105,116,104,218,5,116,117,112,108,101,114,106,0, + 0,0,114,102,0,0,0,114,88,0,0,0,114,94,0,0, + 0,41,1,114,101,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,11,95,103,101,116,95,99,97, + 99,104,101,100,215,1,0,0,115,20,0,0,0,14,1,2, + 1,10,1,12,1,6,1,14,1,4,1,4,2,2,251,255, + 128,114,117,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, + 48,0,0,0,122,14,116,0,124,0,131,1,106,1,125,1, + 87,0,110,18,4,0,116,2,121,46,1,0,1,0,1,0, + 100,1,125,1,89,0,124,1,100,2,79,0,125,1,124,1, + 83,0,119,0,41,4,122,51,67,97,108,99,117,108,97,116, + 101,32,116,104,101,32,109,111,100,101,32,112,101,114,109,105, + 115,115,105,111,110,115,32,102,111,114,32,97,32,98,121,116, + 101,99,111,100,101,32,102,105,108,101,46,114,68,0,0,0, + 233,128,0,0,0,78,41,3,114,57,0,0,0,114,59,0, + 0,0,114,58,0,0,0,41,2,114,52,0,0,0,114,60, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,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,64,2,0,0,115, - 20,0,0,0,24,19,10,1,12,1,16,1,8,1,22,1, - 2,255,22,2,8,254,255,128,114,160,0,0,0,99,4,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, - 0,0,67,0,0,0,115,42,0,0,0,124,0,100,1,100, - 2,133,2,25,0,124,1,107,3,114,38,116,0,100,3,124, - 2,155,2,157,2,102,1,105,0,124,3,164,1,142,1,130, - 1,100,4,83,0,41,5,97,243,1,0,0,86,97,108,105, - 100,97,116,101,32,97,32,104,97,115,104,45,98,97,115,101, - 100,32,112,121,99,32,98,121,32,99,104,101,99,107,105,110, - 103,32,116,104,101,32,114,101,97,108,32,115,111,117,114,99, - 101,32,104,97,115,104,32,97,103,97,105,110,115,116,32,116, - 104,101,32,111,110,101,32,105,110,10,32,32,32,32,116,104, - 101,32,112,121,99,32,104,101,97,100,101,114,46,10,10,32, - 32,32,32,42,100,97,116,97,42,32,105,115,32,116,104,101, - 32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101, - 32,112,121,99,32,102,105,108,101,46,32,40,79,110,108,121, - 32,116,104,101,32,102,105,114,115,116,32,49,54,32,98,121, - 116,101,115,32,97,114,101,10,32,32,32,32,114,101,113,117, - 105,114,101,100,46,41,10,10,32,32,32,32,42,115,111,117, - 114,99,101,95,104,97,115,104,42,32,105,115,32,116,104,101, - 32,105,109,112,111,114,116,108,105,98,46,117,116,105,108,46, - 115,111,117,114,99,101,95,104,97,115,104,40,41,32,111,102, - 32,116,104,101,32,115,111,117,114,99,101,32,102,105,108,101, - 46,10,10,32,32,32,32,42,110,97,109,101,42,32,105,115, - 32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,32,98,101,105,110,103,32,105,109, - 112,111,114,116,101,100,46,32,73,116,32,105,115,32,117,115, - 101,100,32,102,111,114,32,108,111,103,103,105,110,103,46,10, - 10,32,32,32,32,42,101,120,99,95,100,101,116,97,105,108, - 115,42,32,105,115,32,97,32,100,105,99,116,105,111,110,97, - 114,121,32,112,97,115,115,101,100,32,116,111,32,73,109,112, - 111,114,116,69,114,114,111,114,32,105,102,32,105,116,32,114, - 97,105,115,101,100,32,102,111,114,10,32,32,32,32,105,109, - 112,114,111,118,101,100,32,100,101,98,117,103,103,105,110,103, - 46,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, - 150,0,0,0,114,149,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,122,0,0, - 0,41,4,114,37,0,0,0,218,11,115,111,117,114,99,101, - 95,104,97,115,104,114,121,0,0,0,114,155,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,18, - 95,118,97,108,105,100,97,116,101,95,104,97,115,104,95,112, - 121,99,92,2,0,0,115,16,0,0,0,16,17,2,1,8, - 1,4,255,2,2,6,254,4,255,255,128,114,162,0,0,0, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,5,0,0,0,67,0,0,0,115,76,0,0,0,116,0, - 160,1,124,0,161,1,125,4,116,2,124,4,116,3,131,2, - 114,56,116,4,160,5,100,1,124,2,161,2,1,0,124,3, - 100,2,117,1,114,52,116,6,160,7,124,4,124,3,161,2, - 1,0,124,4,83,0,116,8,100,3,160,9,124,2,161,1, - 124,1,124,2,100,4,141,3,130,1,41,5,122,35,67,111, - 109,112,105,108,101,32,98,121,116,101,99,111,100,101,32,97, - 115,32,102,111,117,110,100,32,105,110,32,97,32,112,121,99, - 46,122,21,99,111,100,101,32,111,98,106,101,99,116,32,102, - 114,111,109,32,123,33,114,125,78,122,23,78,111,110,45,99, - 111,100,101,32,111,98,106,101,99,116,32,105,110,32,123,33, - 114,125,169,2,114,121,0,0,0,114,52,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,139,0,0,0,114,153,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,122,0,0,0,114, - 70,0,0,0,41,5,114,37,0,0,0,114,121,0,0,0, - 114,111,0,0,0,114,112,0,0,0,218,4,99,111,100,101, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 17,95,99,111,109,112,105,108,101,95,98,121,116,101,99,111, - 100,101,116,2,0,0,115,20,0,0,0,10,2,10,1,12, - 1,8,1,12,1,4,1,10,2,4,1,6,255,255,128,114, - 169,0,0,0,99,3,0,0,0,0,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,131,1,161,1,1,0,124,3,160,2,116,3,124,1, - 131,1,161,1,1,0,124,3,160,2,116,3,124,2,131,1, - 161,1,1,0,124,3,160,2,116,4,160,5,124,0,161,1, - 161,1,1,0,124,3,83,0,41,3,122,43,80,114,111,100, - 117,99,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,0,0,0,0,78,41,6,218, - 9,98,121,116,101,97,114,114,97,121,114,152,0,0,0,218, - 6,101,120,116,101,110,100,114,33,0,0,0,114,164,0,0, - 0,218,5,100,117,109,112,115,41,4,114,168,0,0,0,218, - 5,109,116,105,109,101,114,159,0,0,0,114,37,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,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,129,2,0,0,115,14,0,0,0, - 8,2,14,1,14,1,14,1,16,1,4,1,255,128,114,174, - 0,0,0,84,99,3,0,0,0,0,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,2,116,3,124,4,131,1, - 161,1,1,0,116,4,124,1,131,1,100,2,107,2,115,50, - 74,0,130,1,124,3,160,2,124,1,161,1,1,0,124,3, - 160,2,116,5,160,6,124,0,161,1,161,1,1,0,124,3, - 83,0,41,4,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,3,0,0, - 0,114,150,0,0,0,78,41,7,114,170,0,0,0,114,152, - 0,0,0,114,171,0,0,0,114,33,0,0,0,114,4,0, - 0,0,114,164,0,0,0,114,172,0,0,0,41,5,114,168, - 0,0,0,114,161,0,0,0,90,7,99,104,101,99,107,101, - 100,114,37,0,0,0,114,16,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,17,95,99,111,100, - 101,95,116,111,95,104,97,115,104,95,112,121,99,139,2,0, - 0,115,16,0,0,0,8,2,12,1,14,1,16,1,10,1, - 16,1,4,1,255,128,114,175,0,0,0,99,1,0,0,0, - 0,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,100,2,100,3,161, - 2,125,4,124,4,160,6,124,0,160,6,124,3,100,1,25, - 0,161,1,161,1,83,0,41,4,122,121,68,101,99,111,100, - 101,32,98,121,116,101,115,32,114,101,112,114,101,115,101,110, - 116,105,110,103,32,115,111,117,114,99,101,32,99,111,100,101, - 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, - 115,116,114,105,110,103,46,10,10,32,32,32,32,85,110,105, - 118,101,114,115,97,108,32,110,101,119,108,105,110,101,32,115, - 117,112,112,111,114,116,32,105,115,32,117,115,101,100,32,105, - 110,32,116,104,101,32,100,101,99,111,100,105,110,103,46,10, - 32,32,32,32,114,0,0,0,0,78,84,41,7,218,8,116, - 111,107,101,110,105,122,101,114,72,0,0,0,90,7,66,121, - 116,101,115,73,79,90,8,114,101,97,100,108,105,110,101,90, - 15,100,101,116,101,99,116,95,101,110,99,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,176,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,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,13,100,101,99,111,100, - 101,95,115,111,117,114,99,101,150,2,0,0,115,12,0,0, - 0,8,5,12,1,10,1,12,1,20,1,255,128,114,180,0, - 0,0,169,2,114,144,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,0,0,0,0,2,0, - 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,12, - 1,0,0,124,1,100,1,117,0,114,56,100,2,125,1,116, - 0,124,2,100,3,131,2,114,66,122,14,124,2,160,1,124, - 0,161,1,125,1,87,0,110,28,4,0,116,2,144,1,121, - 10,1,0,1,0,1,0,89,0,110,10,116,3,160,4,124, - 1,161,1,125,1,116,5,106,6,124,0,124,2,124,1,100, - 4,141,3,125,4,100,5,124,4,95,7,124,2,100,1,117, - 0,114,148,116,8,131,0,68,0,93,40,92,2,125,5,125, - 6,124,1,160,9,116,10,124,6,131,1,161,1,114,102,124, - 5,124,0,124,1,131,2,125,2,124,2,124,4,95,11,1, - 0,113,148,100,1,83,0,124,3,116,12,117,0,114,212,116, - 0,124,2,100,6,131,2,114,218,122,14,124,2,160,13,124, - 0,161,1,125,7,87,0,110,18,4,0,116,2,144,1,121, - 8,1,0,1,0,1,0,89,0,110,18,124,7,114,218,103, - 0,124,4,95,14,110,6,124,3,124,4,95,14,124,4,106, - 14,103,0,107,2,144,1,114,4,124,1,144,1,114,4,116, - 15,124,1,131,1,100,7,25,0,125,8,124,4,106,14,160, - 16,124,8,161,1,1,0,124,4,83,0,119,0,119,0,41, - 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109, - 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, - 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116, - 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100, - 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109, - 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, - 103,101,44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105,115,116, - 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97, - 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112, - 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105, - 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116, - 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32, - 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32, - 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46, - 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114, - 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101, - 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95, - 105,110,105,116,95,95,40,41,32,97,114,103,46,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,0,0,0,0,41,17,114,133,0,0,0, - 114,183,0,0,0,114,122,0,0,0,114,18,0,0,0,114, - 85,0,0,0,114,139,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,115,0,0,0,114,116,0,0,0,114,144,0,0,0, - 218,9,95,80,79,80,85,76,65,84,69,114,186,0,0,0, - 114,182,0,0,0,114,55,0,0,0,218,6,97,112,112,101, - 110,100,41,9,114,121,0,0,0,90,8,108,111,99,97,116, - 105,111,110,114,144,0,0,0,114,182,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,186,0,0,0, - 90,7,100,105,114,110,97,109,101,114,7,0,0,0,114,7, - 0,0,0,114,8,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,167,2,0,0,115,68,0,0,0,8,12,4,4,10,1, - 2,2,14,1,14,1,4,1,10,2,16,8,6,1,8,3, - 14,1,14,1,10,1,6,1,4,1,4,2,8,3,10,2, - 2,1,14,1,14,1,4,1,4,2,8,1,6,2,12,1, - 6,1,12,1,12,1,4,2,2,244,2,226,255,128,114,194, - 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,88,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, - 4,100,3,90,5,101,6,111,30,100,4,101,7,118,0,90, - 8,101,9,100,5,100,6,132,0,131,1,90,10,101,11,100, - 7,100,8,132,0,131,1,90,12,101,11,100,14,100,10,100, - 11,132,1,131,1,90,13,101,11,100,15,100,12,100,13,132, - 1,131,1,90,14,100,9,83,0,41,16,218,21,87,105,110, - 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, - 101,114,122,62,77,101,116,97,32,112,97,116,104,32,102,105, - 110,100,101,114,32,102,111,114,32,109,111,100,117,108,101,115, - 32,100,101,99,108,97,114,101,100,32,105,110,32,116,104,101, - 32,87,105,110,100,111,119,115,32,114,101,103,105,115,116,114, - 121,46,122,59,83,111,102,116,119,97,114,101,92,80,121,116, - 104,111,110,92,80,121,116,104,111,110,67,111,114,101,92,123, - 115,121,115,95,118,101,114,115,105,111,110,125,92,77,111,100, - 117,108,101,115,92,123,102,117,108,108,110,97,109,101,125,122, - 65,83,111,102,116,119,97,114,101,92,80,121,116,104,111,110, - 92,80,121,116,104,111,110,67,111,114,101,92,123,115,121,115, - 95,118,101,114,115,105,111,110,125,92,77,111,100,117,108,101, - 115,92,123,102,117,108,108,110,97,109,101,125,92,68,101,98, - 117,103,122,6,95,100,46,112,121,100,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, - 0,0,0,115,50,0,0,0,122,16,116,0,160,1,116,0, - 106,2,124,0,161,2,87,0,83,0,4,0,116,3,121,48, - 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,0, - 161,2,6,0,89,0,83,0,119,0,114,114,0,0,0,41, - 5,218,6,119,105,110,114,101,103,90,7,79,112,101,110,75, - 101,121,90,17,72,75,69,89,95,67,85,82,82,69,78,84, - 95,85,83,69,82,114,58,0,0,0,90,18,72,75,69,89, - 95,76,79,67,65,76,95,77,65,67,72,73,78,69,114,19, + 0,0,218,10,95,99,97,108,99,95,109,111,100,101,227,1, + 0,0,115,16,0,0,0,2,2,14,1,12,1,6,1,8, + 3,4,1,2,251,255,128,114,119,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, + 0,3,0,0,0,115,52,0,0,0,100,6,135,0,102,1, + 100,2,100,3,132,9,125,1,116,0,100,1,117,1,114,30, + 116,0,106,1,125,2,110,8,100,4,100,5,132,0,125,2, + 124,2,124,1,136,0,131,2,1,0,124,1,83,0,41,7, + 122,252,68,101,99,111,114,97,116,111,114,32,116,111,32,118, + 101,114,105,102,121,32,116,104,97,116,32,116,104,101,32,109, + 111,100,117,108,101,32,98,101,105,110,103,32,114,101,113,117, + 101,115,116,101,100,32,109,97,116,99,104,101,115,32,116,104, + 101,32,111,110,101,32,116,104,101,10,32,32,32,32,108,111, + 97,100,101,114,32,99,97,110,32,104,97,110,100,108,101,46, + 10,10,32,32,32,32,84,104,101,32,102,105,114,115,116,32, + 97,114,103,117,109,101,110,116,32,40,115,101,108,102,41,32, + 109,117,115,116,32,100,101,102,105,110,101,32,95,110,97,109, + 101,32,119,104,105,99,104,32,116,104,101,32,115,101,99,111, + 110,100,32,97,114,103,117,109,101,110,116,32,105,115,10,32, + 32,32,32,99,111,109,112,97,114,101,100,32,97,103,97,105, + 110,115,116,46,32,73,102,32,116,104,101,32,99,111,109,112, + 97,114,105,115,111,110,32,102,97,105,108,115,32,116,104,101, + 110,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,99, + 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,31,0,0,0,115,72,0,0,0,124,1,100, + 0,117,0,114,16,124,0,106,0,125,1,110,32,124,0,106, + 0,124,1,107,3,114,48,116,1,100,1,124,0,106,0,124, + 1,102,2,22,0,124,1,100,2,141,2,130,1,136,0,124, + 0,124,1,103,2,124,2,162,1,82,0,105,0,124,3,164, + 1,142,1,83,0,41,3,78,122,30,108,111,97,100,101,114, + 32,102,111,114,32,37,115,32,99,97,110,110,111,116,32,104, + 97,110,100,108,101,32,37,115,169,1,218,4,110,97,109,101, + 41,2,114,121,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,121,0,0, + 0,218,4,97,114,103,115,218,6,107,119,97,114,103,115,169, + 1,218,6,109,101,116,104,111,100,114,7,0,0,0,114,8, + 0,0,0,218,19,95,99,104,101,99,107,95,110,97,109,101, + 95,119,114,97,112,112,101,114,247,1,0,0,115,20,0,0, + 0,8,1,8,1,10,1,4,1,8,1,2,255,2,1,6, + 255,24,2,255,128,122,40,95,99,104,101,99,107,95,110,97, + 109,101,46,60,108,111,99,97,108,115,62,46,95,99,104,101, + 99,107,95,110,97,109,101,95,119,114,97,112,112,101,114,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 7,0,0,0,83,0,0,0,115,56,0,0,0,100,1,68, + 0,93,32,125,2,116,0,124,1,124,2,131,2,114,36,116, + 1,124,0,124,2,116,2,124,1,124,2,131,2,131,3,1, + 0,113,4,124,0,106,3,160,4,124,1,106,3,161,1,1, + 0,100,0,83,0,41,2,78,41,4,218,10,95,95,109,111, + 100,117,108,101,95,95,218,8,95,95,110,97,109,101,95,95, + 218,12,95,95,113,117,97,108,110,97,109,101,95,95,218,7, + 95,95,100,111,99,95,95,41,5,218,7,104,97,115,97,116, + 116,114,218,7,115,101,116,97,116,116,114,218,7,103,101,116, + 97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,6, + 117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,111, + 108,100,114,75,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,5,95,119,114,97,112,4,2,0, + 0,115,12,0,0,0,8,1,10,1,18,1,2,128,18,1, + 255,128,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,2,218,10,95,98,111,111,116,115,116,114,97,112,114, + 138,0,0,0,41,3,114,127,0,0,0,114,128,0,0,0, + 114,138,0,0,0,114,7,0,0,0,114,126,0,0,0,114, + 8,0,0,0,218,11,95,99,104,101,99,107,95,110,97,109, + 101,239,1,0,0,115,14,0,0,0,14,8,8,10,8,1, + 8,2,10,6,4,1,255,128,114,140,0,0,0,99,2,0, + 0,0,0,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,117,0,114, + 56,116,1,124,3,131,1,114,56,100,2,125,4,116,2,160, + 3,124,4,160,4,124,3,100,3,25,0,161,1,116,5,161, + 2,1,0,124,2,83,0,41,4,122,155,84,114,121,32,116, + 111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,32, + 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,32,98,121,32,100,101,108,101, + 103,97,116,105,110,103,32,116,111,10,32,32,32,32,115,101, + 108,102,46,102,105,110,100,95,108,111,97,100,101,114,40,41, + 46,10,10,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,105,110,32,102,97,118,111,114,32,111,102,32,102,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,40,41,46, + 10,10,32,32,32,32,78,122,44,78,111,116,32,105,109,112, + 111,114,116,105,110,103,32,100,105,114,101,99,116,111,114,121, + 32,123,125,58,32,109,105,115,115,105,110,103,32,95,95,105, + 110,105,116,95,95,114,0,0,0,0,41,6,218,11,102,105, + 110,100,95,108,111,97,100,101,114,114,4,0,0,0,114,81, + 0,0,0,114,82,0,0,0,114,70,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,41,5,114,123, + 0,0,0,218,8,102,117,108,108,110,97,109,101,218,6,108, + 111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218, + 3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108, + 101,95,115,104,105,109,14,2,0,0,115,12,0,0,0,14, + 10,16,1,4,1,22,1,4,1,255,128,114,147,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,4,0,0,0,67,0,0,0,115,166,0,0,0,124,0, + 100,1,100,2,133,2,25,0,125,3,124,3,116,0,107,3, + 114,64,100,3,124,1,155,2,100,4,124,3,155,2,157,4, + 125,4,116,1,160,2,100,5,124,4,161,2,1,0,116,3, + 124,4,102,1,105,0,124,2,164,1,142,1,130,1,116,4, + 124,0,131,1,100,6,107,0,114,106,100,7,124,1,155,2, + 157,2,125,4,116,1,160,2,100,5,124,4,161,2,1,0, + 116,5,124,4,131,1,130,1,116,6,124,0,100,2,100,8, + 133,2,25,0,131,1,125,5,124,5,100,9,64,0,114,162, + 100,10,124,5,155,2,100,11,124,1,155,2,157,4,125,4, + 116,3,124,4,102,1,105,0,124,2,164,1,142,1,130,1, + 124,5,83,0,41,12,97,84,2,0,0,80,101,114,102,111, + 114,109,32,98,97,115,105,99,32,118,97,108,105,100,105,116, + 121,32,99,104,101,99,107,105,110,103,32,111,102,32,97,32, + 112,121,99,32,104,101,97,100,101,114,32,97,110,100,32,114, + 101,116,117,114,110,32,116,104,101,32,102,108,97,103,115,32, + 102,105,101,108,100,44,10,32,32,32,32,119,104,105,99,104, + 32,100,101,116,101,114,109,105,110,101,115,32,104,111,119,32, + 116,104,101,32,112,121,99,32,115,104,111,117,108,100,32,98, + 101,32,102,117,114,116,104,101,114,32,118,97,108,105,100,97, + 116,101,100,32,97,103,97,105,110,115,116,32,116,104,101,32, + 115,111,117,114,99,101,46,10,10,32,32,32,32,42,100,97, + 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, + 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, + 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, + 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, + 101,10,32,32,32,32,114,101,113,117,105,114,101,100,44,32, + 116,104,111,117,103,104,46,41,10,10,32,32,32,32,42,110, + 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, + 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, + 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, + 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, + 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, + 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, + 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, + 98,117,103,103,105,110,103,46,10,10,32,32,32,32,73,109, + 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,32,119,104,101,110,32,116,104,101,32,109,97,103, + 105,99,32,110,117,109,98,101,114,32,105,115,32,105,110,99, + 111,114,114,101,99,116,32,111,114,32,119,104,101,110,32,116, + 104,101,32,102,108,97,103,115,10,32,32,32,32,102,105,101, + 108,100,32,105,115,32,105,110,118,97,108,105,100,46,32,69, + 79,70,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,32,119,104,101,110,32,116,104,101,32,100,97,116,97,32, + 105,115,32,102,111,117,110,100,32,116,111,32,98,101,32,116, + 114,117,110,99,97,116,101,100,46,10,10,32,32,32,32,78, + 114,28,0,0,0,122,20,98,97,100,32,109,97,103,105,99, + 32,110,117,109,98,101,114,32,105,110,32,122,2,58,32,250, + 2,123,125,233,16,0,0,0,122,40,114,101,97,99,104,101, + 100,32,69,79,70,32,119,104,105,108,101,32,114,101,97,100, + 105,110,103,32,112,121,99,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,139,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,114,122,0,0,0,114,4, + 0,0,0,218,8,69,79,70,69,114,114,111,114,114,38,0, + 0,0,41,6,114,37,0,0,0,114,121,0,0,0,218,11, + 101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103, + 105,99,114,98,0,0,0,114,16,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,13,95,99,108, + 97,115,115,105,102,121,95,112,121,99,31,2,0,0,115,30, + 0,0,0,12,16,8,1,16,1,12,1,16,1,12,1,10, + 1,12,1,8,1,16,1,8,2,16,1,16,1,4,1,255, + 128,114,156,0,0,0,99,5,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, + 124,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,62,100,4,124,3, + 155,2,157,2,125,5,116,1,160,2,100,5,124,5,161,2, + 1,0,116,3,124,5,102,1,105,0,124,4,164,1,142,1, + 130,1,124,2,100,6,117,1,114,120,116,0,124,0,100,2, + 100,7,133,2,25,0,131,1,124,2,100,3,64,0,107,3, + 114,116,116,3,100,4,124,3,155,2,157,2,102,1,105,0, + 124,4,164,1,142,1,130,1,100,6,83,0,100,6,83,0, + 41,8,97,7,2,0,0,86,97,108,105,100,97,116,101,32, + 97,32,112,121,99,32,97,103,97,105,110,115,116,32,116,104, + 101,32,115,111,117,114,99,101,32,108,97,115,116,45,109,111, + 100,105,102,105,101,100,32,116,105,109,101,46,10,10,32,32, + 32,32,42,100,97,116,97,42,32,105,115,32,116,104,101,32, + 99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,32, + 112,121,99,32,102,105,108,101,46,32,40,79,110,108,121,32, + 116,104,101,32,102,105,114,115,116,32,49,54,32,98,121,116, + 101,115,32,97,114,101,10,32,32,32,32,114,101,113,117,105, + 114,101,100,46,41,10,10,32,32,32,32,42,115,111,117,114, + 99,101,95,109,116,105,109,101,42,32,105,115,32,116,104,101, + 32,108,97,115,116,32,109,111,100,105,102,105,101,100,32,116, + 105,109,101,115,116,97,109,112,32,111,102,32,116,104,101,32, + 115,111,117,114,99,101,32,102,105,108,101,46,10,10,32,32, + 32,32,42,115,111,117,114,99,101,95,115,105,122,101,42,32, + 105,115,32,78,111,110,101,32,111,114,32,116,104,101,32,115, + 105,122,101,32,111,102,32,116,104,101,32,115,111,117,114,99, + 101,32,102,105,108,101,32,105,110,32,98,121,116,101,115,46, + 10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,32, + 116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,101, + 100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,10, + 32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,115, + 42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,114, + 121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,97, + 105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,112, + 114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,46, + 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,150, + 0,0,0,233,12,0,0,0,114,27,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,148,0,0,0,78,114,149,0,0,0, + 41,4,114,38,0,0,0,114,139,0,0,0,114,153,0,0, + 0,114,122,0,0,0,41,6,114,37,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,121,0,0,0,114,155,0, + 0,0,114,98,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,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,64, + 2,0,0,115,20,0,0,0,24,19,10,1,12,1,16,1, + 8,1,22,1,2,255,22,2,8,254,255,128,114,160,0,0, + 0,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,42,0,0,0,124, + 0,100,1,100,2,133,2,25,0,124,1,107,3,114,38,116, + 0,100,3,124,2,155,2,157,2,102,1,105,0,124,3,164, + 1,142,1,130,1,100,4,83,0,41,5,97,243,1,0,0, + 86,97,108,105,100,97,116,101,32,97,32,104,97,115,104,45, + 98,97,115,101,100,32,112,121,99,32,98,121,32,99,104,101, + 99,107,105,110,103,32,116,104,101,32,114,101,97,108,32,115, + 111,117,114,99,101,32,104,97,115,104,32,97,103,97,105,110, + 115,116,32,116,104,101,32,111,110,101,32,105,110,10,32,32, + 32,32,116,104,101,32,112,121,99,32,104,101,97,100,101,114, + 46,10,10,32,32,32,32,42,100,97,116,97,42,32,105,115, + 32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102, + 32,116,104,101,32,112,121,99,32,102,105,108,101,46,32,40, + 79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,49, + 54,32,98,121,116,101,115,32,97,114,101,10,32,32,32,32, + 114,101,113,117,105,114,101,100,46,41,10,10,32,32,32,32, + 42,115,111,117,114,99,101,95,104,97,115,104,42,32,105,115, + 32,116,104,101,32,105,109,112,111,114,116,108,105,98,46,117, + 116,105,108,46,115,111,117,114,99,101,95,104,97,115,104,40, + 41,32,111,102,32,116,104,101,32,115,111,117,114,99,101,32, + 102,105,108,101,46,10,10,32,32,32,32,42,110,97,109,101, + 42,32,105,115,32,116,104,101,32,110,97,109,101,32,111,102, + 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, + 103,32,105,109,112,111,114,116,101,100,46,32,73,116,32,105, + 115,32,117,115,101,100,32,102,111,114,32,108,111,103,103,105, + 110,103,46,10,10,32,32,32,32,42,101,120,99,95,100,101, + 116,97,105,108,115,42,32,105,115,32,97,32,100,105,99,116, + 105,111,110,97,114,121,32,112,97,115,115,101,100,32,116,111, + 32,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, + 105,116,32,114,97,105,115,101,100,32,102,111,114,10,32,32, + 32,32,105,109,112,114,111,118,101,100,32,100,101,98,117,103, + 103,105,110,103,46,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,150,0,0,0,114,149,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,122,0,0,0,41,4,114,37,0,0,0,218,11,115,111, + 117,114,99,101,95,104,97,115,104,114,121,0,0,0,114,155, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,14,95,111,112,101,110,95,114,101,103,105,115,116, - 114,121,247,2,0,0,115,12,0,0,0,2,2,16,1,12, - 1,18,1,2,255,255,128,122,36,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,95, - 111,112,101,110,95,114,101,103,105,115,116,114,121,99,2,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, - 0,0,67,0,0,0,115,130,0,0,0,124,0,106,0,114, - 14,124,0,106,1,125,2,110,6,124,0,106,2,125,2,124, - 2,106,3,124,1,100,1,116,4,106,5,100,0,100,2,133, - 2,25,0,22,0,100,3,141,2,125,3,122,60,124,0,160, - 6,124,3,161,1,143,28,125,4,116,7,160,8,124,4,100, - 4,161,2,125,5,87,0,100,0,4,0,4,0,131,3,1, - 0,110,16,49,0,115,94,119,1,1,0,1,0,1,0,89, - 0,1,0,87,0,124,5,83,0,4,0,116,9,121,128,1, - 0,1,0,1,0,89,0,100,0,83,0,119,0,41,5,78, - 122,5,37,100,46,37,100,114,39,0,0,0,41,2,114,143, - 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, - 114,10,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,70,0,0,0,114,15,0,0,0, - 218,12,118,101,114,115,105,111,110,95,105,110,102,111,114,197, - 0,0,0,114,196,0,0,0,90,10,81,117,101,114,121,86, - 97,108,117,101,114,58,0,0,0,41,6,218,3,99,108,115, - 114,143,0,0,0,90,12,114,101,103,105,115,116,114,121,95, - 107,101,121,114,20,0,0,0,90,4,104,107,101,121,218,8, - 102,105,108,101,112,97,116,104,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,16,95,115,101,97,114,99,104, - 95,114,101,103,105,115,116,114,121,254,2,0,0,115,28,0, - 0,0,6,2,8,1,6,2,6,1,16,1,6,255,2,2, - 12,1,44,1,4,3,12,254,6,1,2,255,255,128,122,38, - 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, - 105,110,100,101,114,46,95,115,101,97,114,99,104,95,114,101, - 103,105,115,116,114,121,78,99,4,0,0,0,0,0,0,0, - 0,0,0,0,8,0,0,0,8,0,0,0,67,0,0,0, - 115,118,0,0,0,124,0,160,0,124,1,161,1,125,4,124, - 4,100,0,117,0,114,22,100,0,83,0,122,12,116,1,124, - 4,131,1,1,0,87,0,110,18,4,0,116,2,121,116,1, - 0,1,0,1,0,89,0,100,0,83,0,116,3,131,0,68, - 0,93,50,92,2,125,5,125,6,124,4,160,4,116,5,124, - 6,131,1,161,1,114,60,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,100,0,83,0,119,0,41,2,78,114,184, + 0,0,218,18,95,118,97,108,105,100,97,116,101,95,104,97, + 115,104,95,112,121,99,92,2,0,0,115,16,0,0,0,16, + 17,2,1,8,1,4,255,2,2,6,254,4,255,255,128,114, + 162,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,76,0, + 0,0,116,0,160,1,124,0,161,1,125,4,116,2,124,4, + 116,3,131,2,114,56,116,4,160,5,100,1,124,2,161,2, + 1,0,124,3,100,2,117,1,114,52,116,6,160,7,124,4, + 124,3,161,2,1,0,124,4,83,0,116,8,100,3,160,9, + 124,2,161,1,124,1,124,2,100,4,141,3,130,1,41,5, + 122,35,67,111,109,112,105,108,101,32,98,121,116,101,99,111, + 100,101,32,97,115,32,102,111,117,110,100,32,105,110,32,97, + 32,112,121,99,46,122,21,99,111,100,101,32,111,98,106,101, + 99,116,32,102,114,111,109,32,123,33,114,125,78,122,23,78, + 111,110,45,99,111,100,101,32,111,98,106,101,99,116,32,105, + 110,32,123,33,114,125,169,2,114,121,0,0,0,114,52,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,139,0,0, + 0,114,153,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,122, + 0,0,0,114,70,0,0,0,41,5,114,37,0,0,0,114, + 121,0,0,0,114,111,0,0,0,114,112,0,0,0,218,4, + 99,111,100,101,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,17,95,99,111,109,112,105,108,101,95,98,121, + 116,101,99,111,100,101,116,2,0,0,115,20,0,0,0,10, + 2,10,1,12,1,8,1,12,1,4,1,10,2,4,1,6, + 255,255,128,114,169,0,0,0,99,3,0,0,0,0,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,131,1,161,1,1,0,124,3,160,2, + 116,3,124,1,131,1,161,1,1,0,124,3,160,2,116,3, + 124,2,131,1,161,1,1,0,124,3,160,2,116,4,160,5, + 124,0,161,1,161,1,1,0,124,3,83,0,41,3,122,43, + 80,114,111,100,117,99,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,0,0,0,0, + 78,41,6,218,9,98,121,116,101,97,114,114,97,121,114,152, + 0,0,0,218,6,101,120,116,101,110,100,114,33,0,0,0, + 114,164,0,0,0,218,5,100,117,109,112,115,41,4,114,168, + 0,0,0,218,5,109,116,105,109,101,114,159,0,0,0,114, + 37,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 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,129,2,0,0,115, + 14,0,0,0,8,2,14,1,14,1,14,1,16,1,4,1, + 255,128,114,174,0,0,0,84,99,3,0,0,0,0,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,2,116,3, + 124,4,131,1,161,1,1,0,116,4,124,1,131,1,100,2, + 107,2,115,50,74,0,130,1,124,3,160,2,124,1,161,1, + 1,0,124,3,160,2,116,5,160,6,124,0,161,1,161,1, + 1,0,124,3,83,0,41,4,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,3,0,0,0,114,150,0,0,0,78,41,7,114,170,0, + 0,0,114,152,0,0,0,114,171,0,0,0,114,33,0,0, + 0,114,4,0,0,0,114,164,0,0,0,114,172,0,0,0, + 41,5,114,168,0,0,0,114,161,0,0,0,90,7,99,104, + 101,99,107,101,100,114,37,0,0,0,114,16,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,17, + 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, + 99,139,2,0,0,115,16,0,0,0,8,2,12,1,14,1, + 16,1,10,1,16,1,4,1,255,128,114,175,0,0,0,99, + 1,0,0,0,0,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,100, + 2,100,3,161,2,125,4,124,4,160,6,124,0,160,6,124, + 3,100,1,25,0,161,1,161,1,83,0,41,4,122,121,68, + 101,99,111,100,101,32,98,121,116,101,115,32,114,101,112,114, + 101,115,101,110,116,105,110,103,32,115,111,117,114,99,101,32, + 99,111,100,101,32,97,110,100,32,114,101,116,117,114,110,32, + 116,104,101,32,115,116,114,105,110,103,46,10,10,32,32,32, + 32,85,110,105,118,101,114,115,97,108,32,110,101,119,108,105, + 110,101,32,115,117,112,112,111,114,116,32,105,115,32,117,115, + 101,100,32,105,110,32,116,104,101,32,100,101,99,111,100,105, + 110,103,46,10,32,32,32,32,114,0,0,0,0,78,84,41, + 7,218,8,116,111,107,101,110,105,122,101,114,72,0,0,0, + 90,7,66,121,116,101,115,73,79,90,8,114,101,97,100,108, + 105,110,101,90,15,100,101,116,101,99,116,95,101,110,99,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,176,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,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,13,100, + 101,99,111,100,101,95,115,111,117,114,99,101,150,2,0,0, + 115,12,0,0,0,8,5,12,1,10,1,12,1,20,1,255, + 128,114,180,0,0,0,169,2,114,144,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,0,0, + 0,0,2,0,0,0,9,0,0,0,8,0,0,0,67,0, + 0,0,115,16,1,0,0,124,1,100,1,117,0,114,58,100, + 2,125,1,116,0,124,2,100,3,131,2,114,56,122,14,124, + 2,160,1,124,0,161,1,125,1,87,0,110,30,4,0,116, + 2,144,1,121,14,1,0,1,0,1,0,89,0,110,12,110, + 10,116,3,160,4,124,1,161,1,125,1,116,5,106,6,124, + 0,124,2,124,1,100,4,141,3,125,4,100,5,124,4,95, + 7,124,2,100,1,117,0,114,152,116,8,131,0,68,0,93, + 42,92,2,125,5,125,6,124,1,160,9,116,10,124,6,131, + 1,161,1,114,146,124,5,124,0,124,1,131,2,125,2,124, + 2,124,4,95,11,1,0,113,152,113,104,100,1,83,0,124, + 3,116,12,117,0,114,216,116,0,124,2,100,6,131,2,114, + 214,122,14,124,2,160,13,124,0,161,1,125,7,87,0,110, + 18,4,0,116,2,144,1,121,12,1,0,1,0,1,0,89, + 0,110,18,124,7,114,214,103,0,124,4,95,14,110,6,124, + 3,124,4,95,14,124,4,106,14,103,0,107,2,144,1,114, + 8,124,1,144,1,114,8,116,15,124,1,131,1,100,7,25, + 0,125,8,124,4,106,14,160,16,124,8,161,1,1,0,124, + 4,83,0,119,0,119,0,41,8,97,61,1,0,0,82,101, + 116,117,114,110,32,97,32,109,111,100,117,108,101,32,115,112, + 101,99,32,98,97,115,101,100,32,111,110,32,97,32,102,105, + 108,101,32,108,111,99,97,116,105,111,110,46,10,10,32,32, + 32,32,84,111,32,105,110,100,105,99,97,116,101,32,116,104, + 97,116,32,116,104,101,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,44,32,115,101,116,10, + 32,32,32,32,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,32,116, + 111,32,97,32,108,105,115,116,32,111,102,32,100,105,114,101, + 99,116,111,114,121,32,112,97,116,104,115,46,32,32,65,110, + 10,32,32,32,32,101,109,112,116,121,32,108,105,115,116,32, + 105,115,32,115,117,102,102,105,99,105,101,110,116,44,32,116, + 104,111,117,103,104,32,105,116,115,32,110,111,116,32,111,116, + 104,101,114,119,105,115,101,32,117,115,101,102,117,108,32,116, + 111,32,116,104,101,10,32,32,32,32,105,109,112,111,114,116, + 32,115,121,115,116,101,109,46,10,10,32,32,32,32,84,104, + 101,32,108,111,97,100,101,114,32,109,117,115,116,32,116,97, + 107,101,32,97,32,115,112,101,99,32,97,115,32,105,116,115, + 32,111,110,108,121,32,95,95,105,110,105,116,95,95,40,41, + 32,97,114,103,46,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,0,0,0, + 0,41,17,114,133,0,0,0,114,183,0,0,0,114,122,0, + 0,0,114,18,0,0,0,114,85,0,0,0,114,139,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,115,0,0,0,114,116, + 0,0,0,114,144,0,0,0,218,9,95,80,79,80,85,76, + 65,84,69,114,186,0,0,0,114,182,0,0,0,114,55,0, + 0,0,218,6,97,112,112,101,110,100,41,9,114,121,0,0, + 0,90,8,108,111,99,97,116,105,111,110,114,144,0,0,0, + 114,182,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,186,0,0,0,90,7,100,105,114,110,97,109, + 101,114,7,0,0,0,114,7,0,0,0,114,8,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,167,2,0,0,115,74,0, + 0,0,8,12,4,4,10,1,2,2,14,1,14,1,4,1, + 2,128,10,2,16,8,6,1,8,3,14,1,14,1,10,1, + 6,1,4,1,2,128,4,2,8,3,10,2,2,1,14,1, + 14,1,2,1,2,3,4,255,8,1,6,2,12,1,6,1, + 12,1,12,1,4,2,2,244,2,226,255,128,114,194,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,64,0,0,0,115,88,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,100, + 3,90,5,101,6,111,30,100,4,101,7,118,0,90,8,101, + 9,100,5,100,6,132,0,131,1,90,10,101,11,100,7,100, + 8,132,0,131,1,90,12,101,11,100,14,100,10,100,11,132, + 1,131,1,90,13,101,11,100,15,100,12,100,13,132,1,131, + 1,90,14,100,9,83,0,41,16,218,21,87,105,110,100,111, + 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, + 122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,100, + 101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,100, + 101,99,108,97,114,101,100,32,105,110,32,116,104,101,32,87, + 105,110,100,111,119,115,32,114,101,103,105,115,116,114,121,46, + 122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,111, + 110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,121, + 115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,108, + 101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,83, + 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, + 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, + 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, + 123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,103, + 122,6,95,100,46,112,121,100,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, + 0,115,50,0,0,0,122,16,116,0,160,1,116,0,106,2, + 124,0,161,2,87,0,83,0,4,0,116,3,121,48,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, + 6,0,89,0,83,0,119,0,114,114,0,0,0,41,5,218, + 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, + 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, + 83,69,82,114,58,0,0,0,90,18,72,75,69,89,95,76, + 79,67,65,76,95,77,65,67,72,73,78,69,114,19,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, + 247,2,0,0,115,12,0,0,0,2,2,16,1,12,1,18, + 1,2,255,255,128,122,36,87,105,110,100,111,119,115,82,101, + 103,105,115,116,114,121,70,105,110,100,101,114,46,95,111,112, + 101,110,95,114,101,103,105,115,116,114,121,99,2,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0, + 67,0,0,0,115,130,0,0,0,124,0,106,0,114,14,124, + 0,106,1,125,2,110,6,124,0,106,2,125,2,124,2,106, + 3,124,1,100,1,116,4,106,5,100,0,100,2,133,2,25, + 0,22,0,100,3,141,2,125,3,122,60,124,0,160,6,124, + 3,161,1,143,28,125,4,116,7,160,8,124,4,100,4,161, + 2,125,5,87,0,100,0,4,0,4,0,131,3,1,0,110, + 16,49,0,115,94,119,1,1,0,1,0,1,0,89,0,1, + 0,87,0,124,5,83,0,4,0,116,9,121,128,1,0,1, + 0,1,0,89,0,100,0,83,0,119,0,41,5,78,122,5, + 37,100,46,37,100,114,39,0,0,0,41,2,114,143,0,0, + 0,90,11,115,121,115,95,118,101,114,115,105,111,110,114,10, + 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,70,0,0,0,114,15,0,0,0,218,12, + 118,101,114,115,105,111,110,95,105,110,102,111,114,197,0,0, + 0,114,196,0,0,0,90,10,81,117,101,114,121,86,97,108, + 117,101,114,58,0,0,0,41,6,218,3,99,108,115,114,143, + 0,0,0,90,12,114,101,103,105,115,116,114,121,95,107,101, + 121,114,20,0,0,0,90,4,104,107,101,121,218,8,102,105, + 108,101,112,97,116,104,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,16,95,115,101,97,114,99,104,95,114, + 101,103,105,115,116,114,121,254,2,0,0,115,28,0,0,0, + 6,2,8,1,6,2,6,1,16,1,6,255,2,2,12,1, + 44,1,4,3,12,254,6,1,2,255,255,128,122,38,87,105, + 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, + 100,101,114,46,95,115,101,97,114,99,104,95,114,101,103,105, + 115,116,114,121,78,99,4,0,0,0,0,0,0,0,0,0, + 0,0,8,0,0,0,8,0,0,0,67,0,0,0,115,120, + 0,0,0,124,0,160,0,124,1,161,1,125,4,124,4,100, + 0,117,0,114,22,100,0,83,0,122,12,116,1,124,4,131, + 1,1,0,87,0,110,18,4,0,116,2,121,118,1,0,1, + 0,1,0,89,0,100,0,83,0,116,3,131,0,68,0,93, + 52,92,2,125,5,125,6,124,4,160,4,116,5,124,6,131, + 1,161,1,114,112,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,60,100,0,83,0,119,0,41,2,78,114,184, 0,0,0,41,8,114,204,0,0,0,114,57,0,0,0,114, 58,0,0,0,114,188,0,0,0,114,115,0,0,0,114,116, 0,0,0,114,139,0,0,0,218,16,115,112,101,99,95,102, @@ -1075,1598 +1076,1599 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 103,101,116,114,203,0,0,0,114,144,0,0,0,114,193,0, 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, 0,114,8,0,0,0,218,9,102,105,110,100,95,115,112,101, - 99,13,3,0,0,115,34,0,0,0,10,2,8,1,4,1, + 99,13,3,0,0,115,36,0,0,0,10,2,8,1,4,1, 2,1,12,1,12,1,6,1,14,1,14,1,6,1,8,1, - 2,1,6,254,8,3,4,251,2,254,255,128,122,31,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,115,112,101,99,99,3,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, - 0,0,67,0,0,0,115,30,0,0,0,124,0,160,0,124, - 1,124,2,161,2,125,3,124,3,100,1,117,1,114,26,124, - 3,106,1,83,0,100,1,83,0,41,2,122,108,70,105,110, - 100,32,109,111,100,117,108,101,32,110,97,109,101,100,32,105, - 110,32,116,104,101,32,114,101,103,105,115,116,114,121,46,10, - 10,32,32,32,32,32,32,32,32,84,104,105,115,32,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,78,169,2,114,207,0,0, - 0,114,144,0,0,0,169,4,114,202,0,0,0,114,143,0, - 0,0,114,52,0,0,0,114,191,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,11,102,105,110, - 100,95,109,111,100,117,108,101,29,3,0,0,115,10,0,0, - 0,12,7,8,1,6,1,4,2,255,128,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,2, - 78,78,41,1,78,41,15,114,130,0,0,0,114,129,0,0, - 0,114,131,0,0,0,114,132,0,0,0,114,200,0,0,0, - 114,199,0,0,0,218,11,95,77,83,95,87,73,78,68,79, - 87,83,218,18,69,88,84,69,78,83,73,79,78,95,83,85, - 70,70,73,88,69,83,114,198,0,0,0,218,12,115,116,97, - 116,105,99,109,101,116,104,111,100,114,197,0,0,0,218,11, - 99,108,97,115,115,109,101,116,104,111,100,114,204,0,0,0, - 114,207,0,0,0,114,210,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,195, - 0,0,0,235,2,0,0,115,32,0,0,0,8,0,4,2, - 2,3,2,255,2,4,2,255,12,3,2,2,10,1,2,6, - 10,1,2,14,12,1,2,15,16,1,255,128,114,195,0,0, - 0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7,132, - 0,90,6,100,8,100,9,132,0,90,7,100,10,83,0,41, - 11,218,13,95,76,111,97,100,101,114,66,97,115,105,99,115, - 122,83,66,97,115,101,32,99,108,97,115,115,32,111,102,32, - 99,111,109,109,111,110,32,99,111,100,101,32,110,101,101,100, - 101,100,32,98,121,32,98,111,116,104,32,83,111,117,114,99, - 101,76,111,97,100,101,114,32,97,110,100,10,32,32,32,32, - 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, - 97,100,101,114,46,99,2,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,64, - 0,0,0,116,0,124,0,160,1,124,1,161,1,131,1,100, - 1,25,0,125,2,124,2,160,2,100,2,100,1,161,2,100, - 3,25,0,125,3,124,1,160,3,100,2,161,1,100,4,25, - 0,125,4,124,3,100,5,107,2,111,62,124,4,100,5,107, - 3,83,0,41,7,122,141,67,111,110,99,114,101,116,101,32, - 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, - 102,32,73,110,115,112,101,99,116,76,111,97,100,101,114,46, - 105,115,95,112,97,99,107,97,103,101,32,98,121,32,99,104, - 101,99,107,105,110,103,32,105,102,10,32,32,32,32,32,32, - 32,32,116,104,101,32,112,97,116,104,32,114,101,116,117,114, - 110,101,100,32,98,121,32,103,101,116,95,102,105,108,101,110, - 97,109,101,32,104,97,115,32,97,32,102,105,108,101,110,97, - 109,101,32,111,102,32,39,95,95,105,110,105,116,95,95,46, - 112,121,39,46,114,3,0,0,0,114,79,0,0,0,114,0, - 0,0,0,114,39,0,0,0,218,8,95,95,105,110,105,116, - 95,95,78,41,4,114,55,0,0,0,114,183,0,0,0,114, - 51,0,0,0,114,49,0,0,0,41,5,114,123,0,0,0, - 114,143,0,0,0,114,101,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,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,186,0,0,0,48,3,0,0,115,10,0,0, - 0,18,3,16,1,14,1,16,1,255,128,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,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,169,2,122,42,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,7,0,0,0,169,2,114,123,0, - 0,0,114,191,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,13,99,114,101,97,116,101,95,109, - 111,100,117,108,101,56,3,0,0,115,4,0,0,0,4,0, - 255,128,122,27,95,76,111,97,100,101,114,66,97,115,105,99, - 115,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 5,0,0,0,67,0,0,0,115,56,0,0,0,124,0,160, - 0,124,1,106,1,161,1,125,2,124,2,100,1,117,0,114, - 36,116,2,100,2,160,3,124,1,106,1,161,1,131,1,130, - 1,116,4,160,5,116,6,124,2,124,1,106,7,161,3,1, - 0,100,1,83,0,41,3,122,19,69,120,101,99,117,116,101, - 32,116,104,101,32,109,111,100,117,108,101,46,78,122,52,99, - 97,110,110,111,116,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, - 130,0,0,0,114,122,0,0,0,114,70,0,0,0,114,139, - 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,136,0,0,0,41,3,114,123,0,0,0, - 218,6,109,111,100,117,108,101,114,168,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,101,120, - 101,99,95,109,111,100,117,108,101,59,3,0,0,115,14,0, - 0,0,12,2,8,1,6,1,4,1,6,255,20,2,255,128, - 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, - 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,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,2,122,26,84,104,105,115,32,109,101, - 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,46,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, - 109,111,100,117,108,101,67,3,0,0,115,4,0,0,0,12, - 3,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0, - 114,132,0,0,0,114,186,0,0,0,114,219,0,0,0,114, - 224,0,0,0,114,227,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,215,0, - 0,0,43,3,0,0,115,14,0,0,0,8,0,4,2,8, - 3,8,8,8,3,12,8,255,128,114,215,0,0,0,99,0, - 0,0,0,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,100,6,132,0,90,5,100,7,100,8, - 132,0,90,6,100,9,100,10,132,0,90,7,100,11,100,12, - 156,1,100,13,100,14,132,2,90,8,100,15,100,16,132,0, - 90,9,100,17,83,0,41,18,218,12,83,111,117,114,99,101, - 76,111,97,100,101,114,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, - 4,0,0,0,116,0,130,1,41,2,122,165,79,112,116,105, - 111,110,97,108,32,109,101,116,104,111,100,32,116,104,97,116, - 32,114,101,116,117,114,110,115,32,116,104,101,32,109,111,100, - 105,102,105,99,97,116,105,111,110,32,116,105,109,101,32,40, - 97,110,32,105,110,116,41,32,102,111,114,32,116,104,101,10, - 32,32,32,32,32,32,32,32,115,112,101,99,105,102,105,101, - 100,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, - 10,32,32,32,32,32,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,78,41,1,114,58,0,0,0,169,2,114,123,0,0,0, - 114,52,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, - 75,3,0,0,115,4,0,0,0,4,6,255,128,122,23,83, - 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, - 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 14,0,0,0,100,1,124,0,160,0,124,1,161,1,105,1, - 83,0,41,3,97,158,1,0,0,79,112,116,105,111,110,97, - 108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,105, - 110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,105, - 99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,105, - 102,105,101,100,10,32,32,32,32,32,32,32,32,112,97,116, + 2,1,6,254,8,3,2,128,4,251,2,254,255,128,122,31, + 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,115,112,101,99,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,67,0,0,0,115,30,0,0,0,124,0,160, + 0,124,1,124,2,161,2,125,3,124,3,100,1,117,1,114, + 26,124,3,106,1,83,0,100,1,83,0,41,2,122,108,70, + 105,110,100,32,109,111,100,117,108,101,32,110,97,109,101,100, + 32,105,110,32,116,104,101,32,114,101,103,105,115,116,114,121, + 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 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,78,169,2,114,207, + 0,0,0,114,144,0,0,0,169,4,114,202,0,0,0,114, + 143,0,0,0,114,52,0,0,0,114,191,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,102, + 105,110,100,95,109,111,100,117,108,101,29,3,0,0,115,10, + 0,0,0,12,7,8,1,6,1,4,2,255,128,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,2,78,78,41,1,78,41,15,114,130,0,0,0,114,129, + 0,0,0,114,131,0,0,0,114,132,0,0,0,114,200,0, + 0,0,114,199,0,0,0,218,11,95,77,83,95,87,73,78, + 68,79,87,83,218,18,69,88,84,69,78,83,73,79,78,95, + 83,85,70,70,73,88,69,83,114,198,0,0,0,218,12,115, + 116,97,116,105,99,109,101,116,104,111,100,114,197,0,0,0, + 218,11,99,108,97,115,115,109,101,116,104,111,100,114,204,0, + 0,0,114,207,0,0,0,114,210,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,195,0,0,0,235,2,0,0,115,32,0,0,0,8,0, + 4,2,2,3,2,255,2,4,2,255,12,3,2,2,10,1, + 2,6,10,1,2,14,12,1,2,15,16,1,255,128,114,195, + 0,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,83, + 0,41,11,218,13,95,76,111,97,100,101,114,66,97,115,105, + 99,115,122,83,66,97,115,101,32,99,108,97,115,115,32,111, + 102,32,99,111,109,109,111,110,32,99,111,100,101,32,110,101, + 101,100,101,100,32,98,121,32,98,111,116,104,32,83,111,117, + 114,99,101,76,111,97,100,101,114,32,97,110,100,10,32,32, + 32,32,83,111,117,114,99,101,108,101,115,115,70,105,108,101, + 76,111,97,100,101,114,46,99,2,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, + 115,64,0,0,0,116,0,124,0,160,1,124,1,161,1,131, + 1,100,1,25,0,125,2,124,2,160,2,100,2,100,1,161, + 2,100,3,25,0,125,3,124,1,160,3,100,2,161,1,100, + 4,25,0,125,4,124,3,100,5,107,2,111,62,124,4,100, + 5,107,3,83,0,41,7,122,141,67,111,110,99,114,101,116, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101, + 114,46,105,115,95,112,97,99,107,97,103,101,32,98,121,32, + 99,104,101,99,107,105,110,103,32,105,102,10,32,32,32,32, + 32,32,32,32,116,104,101,32,112,97,116,104,32,114,101,116, + 117,114,110,101,100,32,98,121,32,103,101,116,95,102,105,108, + 101,110,97,109,101,32,104,97,115,32,97,32,102,105,108,101, + 110,97,109,101,32,111,102,32,39,95,95,105,110,105,116,95, + 95,46,112,121,39,46,114,3,0,0,0,114,79,0,0,0, + 114,0,0,0,0,114,39,0,0,0,218,8,95,95,105,110, + 105,116,95,95,78,41,4,114,55,0,0,0,114,183,0,0, + 0,114,51,0,0,0,114,49,0,0,0,41,5,114,123,0, + 0,0,114,143,0,0,0,114,101,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,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,186,0,0,0,48,3,0,0,115,10, + 0,0,0,18,3,16,1,14,1,16,1,255,128,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,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,169,2,122,42,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,7,0,0,0,169,2,114, + 123,0,0,0,114,191,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,13,99,114,101,97,116,101, + 95,109,111,100,117,108,101,56,3,0,0,115,4,0,0,0, + 4,0,255,128,122,27,95,76,111,97,100,101,114,66,97,115, + 105,99,115,46,99,114,101,97,116,101,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,5,0,0,0,67,0,0,0,115,56,0,0,0,124, + 0,160,0,124,1,106,1,161,1,125,2,124,2,100,1,117, + 0,114,36,116,2,100,2,160,3,124,1,106,1,161,1,131, + 1,130,1,116,4,160,5,116,6,124,2,124,1,106,7,161, + 3,1,0,100,1,83,0,41,3,122,19,69,120,101,99,117, + 116,101,32,116,104,101,32,109,111,100,117,108,101,46,78,122, + 52,99,97,110,110,111,116,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,130,0,0,0,114,122,0,0,0,114,70,0,0,0, + 114,139,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,136,0,0,0,41,3,114,123,0, + 0,0,218,6,109,111,100,117,108,101,114,168,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11, + 101,120,101,99,95,109,111,100,117,108,101,59,3,0,0,115, + 14,0,0,0,12,2,8,1,6,1,4,1,6,255,20,2, + 255,128,122,25,95,76,111,97,100,101,114,66,97,115,105,99, + 115,46,101,120,101,99,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,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,2,122,26,84,104,105,115,32, + 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,78,41,2,114,139,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,123,0,0,0,114,143,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,11,108,111,97, + 100,95,109,111,100,117,108,101,67,3,0,0,115,4,0,0, + 0,12,3,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0, + 0,0,114,132,0,0,0,114,186,0,0,0,114,219,0,0, + 0,114,224,0,0,0,114,227,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 215,0,0,0,43,3,0,0,115,14,0,0,0,8,0,4, + 2,8,3,8,8,8,3,12,8,255,128,114,215,0,0,0, + 99,0,0,0,0,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,100,6,132,0,90,5,100,7, + 100,8,132,0,90,6,100,9,100,10,132,0,90,7,100,11, + 100,12,156,1,100,13,100,14,132,2,90,8,100,15,100,16, + 132,0,90,9,100,17,83,0,41,18,218,12,83,111,117,114, + 99,101,76,111,97,100,101,114,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,4,0,0,0,116,0,130,1,41,2,122,165,79,112, + 116,105,111,110,97,108,32,109,101,116,104,111,100,32,116,104, + 97,116,32,114,101,116,117,114,110,115,32,116,104,101,32,109, + 111,100,105,102,105,99,97,116,105,111,110,32,116,105,109,101, + 32,40,97,110,32,105,110,116,41,32,102,111,114,32,116,104, + 101,10,32,32,32,32,32,32,32,32,115,112,101,99,105,102, + 105,101,100,32,112,97,116,104,32,40,97,32,115,116,114,41, + 46,10,10,32,32,32,32,32,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,78,41,1,114,58,0,0,0,169,2,114,123,0, + 0,0,114,52,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,10,112,97,116,104,95,109,116,105, + 109,101,75,3,0,0,115,4,0,0,0,4,6,255,128,122, + 23,83,111,117,114,99,101,76,111,97,100,101,114,46,112,97, + 116,104,95,109,116,105,109,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, + 0,115,14,0,0,0,100,1,124,0,160,0,124,1,161,1, + 105,1,83,0,41,3,97,158,1,0,0,79,112,116,105,111, + 110,97,108,32,109,101,116,104,111,100,32,114,101,116,117,114, + 110,105,110,103,32,97,32,109,101,116,97,100,97,116,97,32, + 100,105,99,116,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,10,32,32,32,32,32,32,32,32,112, + 97,116,104,32,40,97,32,115,116,114,41,46,10,10,32,32, + 32,32,32,32,32,32,80,111,115,115,105,98,108,101,32,107, + 101,121,115,58,10,32,32,32,32,32,32,32,32,45,32,39, + 109,116,105,109,101,39,32,40,109,97,110,100,97,116,111,114, + 121,41,32,105,115,32,116,104,101,32,110,117,109,101,114,105, + 99,32,116,105,109,101,115,116,97,109,112,32,111,102,32,108, + 97,115,116,32,115,111,117,114,99,101,10,32,32,32,32,32, + 32,32,32,32,32,99,111,100,101,32,109,111,100,105,102,105, + 99,97,116,105,111,110,59,10,32,32,32,32,32,32,32,32, + 45,32,39,115,105,122,101,39,32,40,111,112,116,105,111,110, + 97,108,41,32,105,115,32,116,104,101,32,115,105,122,101,32, + 105,110,32,98,121,116,101,115,32,111,102,32,116,104,101,32, + 115,111,117,114,99,101,32,99,111,100,101,46,10,10,32,32, + 32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,105, + 110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,97, + 108,108,111,119,115,32,116,104,101,32,108,111,97,100,101,114, + 32,116,111,32,114,101,97,100,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,115,46,10,32,32,32,32,32,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,173,0,0,0,78,41, + 1,114,230,0,0,0,114,229,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,10,112,97,116,104, + 95,115,116,97,116,115,83,3,0,0,115,4,0,0,0,14, + 12,255,128,122,23,83,111,117,114,99,101,76,111,97,100,101, + 114,46,112,97,116,104,95,115,116,97,116,115,99,4,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, + 0,67,0,0,0,115,12,0,0,0,124,0,160,0,124,2, + 124,3,161,2,83,0,41,2,122,228,79,112,116,105,111,110, + 97,108,32,109,101,116,104,111,100,32,119,104,105,99,104,32, + 119,114,105,116,101,115,32,100,97,116,97,32,40,98,121,116, + 101,115,41,32,116,111,32,97,32,102,105,108,101,32,112,97, + 116,104,32,40,97,32,115,116,114,41,46,10,10,32,32,32, + 32,32,32,32,32,73,109,112,108,101,109,101,110,116,105,110, + 103,32,116,104,105,115,32,109,101,116,104,111,100,32,97,108, + 108,111,119,115,32,102,111,114,32,116,104,101,32,119,114,105, + 116,105,110,103,32,111,102,32,98,121,116,101,99,111,100,101, + 32,102,105,108,101,115,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,115,111,117,114,99,101,32,112,97,116,104, + 32,105,115,32,110,101,101,100,101,100,32,105,110,32,111,114, + 100,101,114,32,116,111,32,99,111,114,114,101,99,116,108,121, + 32,116,114,97,110,115,102,101,114,32,112,101,114,109,105,115, + 115,105,111,110,115,10,32,32,32,32,32,32,32,32,78,41, + 1,218,8,115,101,116,95,100,97,116,97,41,4,114,123,0, + 0,0,114,112,0,0,0,90,10,99,97,99,104,101,95,112, + 97,116,104,114,37,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,15,95,99,97,99,104,101,95, + 98,121,116,101,99,111,100,101,97,3,0,0,115,4,0,0, + 0,12,8,255,128,122,28,83,111,117,114,99,101,76,111,97, + 100,101,114,46,95,99,97,99,104,101,95,98,121,116,101,99, + 111,100,101,99,3,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,41,2,122,150,79,112,116,105,111,110,97, + 108,32,109,101,116,104,111,100,32,119,104,105,99,104,32,119, + 114,105,116,101,115,32,100,97,116,97,32,40,98,121,116,101, + 115,41,32,116,111,32,97,32,102,105,108,101,32,112,97,116, 104,32,40,97,32,115,116,114,41,46,10,10,32,32,32,32, - 32,32,32,32,80,111,115,115,105,98,108,101,32,107,101,121, - 115,58,10,32,32,32,32,32,32,32,32,45,32,39,109,116, - 105,109,101,39,32,40,109,97,110,100,97,116,111,114,121,41, - 32,105,115,32,116,104,101,32,110,117,109,101,114,105,99,32, - 116,105,109,101,115,116,97,109,112,32,111,102,32,108,97,115, - 116,32,115,111,117,114,99,101,10,32,32,32,32,32,32,32, - 32,32,32,99,111,100,101,32,109,111,100,105,102,105,99,97, - 116,105,111,110,59,10,32,32,32,32,32,32,32,32,45,32, - 39,115,105,122,101,39,32,40,111,112,116,105,111,110,97,108, - 41,32,105,115,32,116,104,101,32,115,105,122,101,32,105,110, - 32,98,121,116,101,115,32,111,102,32,116,104,101,32,115,111, - 117,114,99,101,32,99,111,100,101,46,10,10,32,32,32,32, 32,32,32,32,73,109,112,108,101,109,101,110,116,105,110,103, 32,116,104,105,115,32,109,101,116,104,111,100,32,97,108,108, - 111,119,115,32,116,104,101,32,108,111,97,100,101,114,32,116, - 111,32,114,101,97,100,32,98,121,116,101,99,111,100,101,32, - 102,105,108,101,115,46,10,32,32,32,32,32,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,173,0,0,0,78,41,1,114, - 230,0,0,0,114,229,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,10,112,97,116,104,95,115, - 116,97,116,115,83,3,0,0,115,4,0,0,0,14,12,255, - 128,122,23,83,111,117,114,99,101,76,111,97,100,101,114,46, - 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, - 0,0,0,115,12,0,0,0,124,0,160,0,124,2,124,3, - 161,2,83,0,41,2,122,228,79,112,116,105,111,110,97,108, - 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114, - 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115, - 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104, - 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, - 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32, - 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111, - 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105, - 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102, - 105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,105, - 115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,101, - 114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,116, - 114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,105, - 111,110,115,10,32,32,32,32,32,32,32,32,78,41,1,218, - 8,115,101,116,95,100,97,116,97,41,4,114,123,0,0,0, - 114,112,0,0,0,90,10,99,97,99,104,101,95,112,97,116, - 104,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,15,95,99,97,99,104,101,95,98,121, - 116,101,99,111,100,101,97,3,0,0,115,4,0,0,0,12, - 8,255,128,122,28,83,111,117,114,99,101,76,111,97,100,101, - 114,46,95,99,97,99,104,101,95,98,121,116,101,99,111,100, - 101,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 1,83,0,41,2,122,150,79,112,116,105,111,110,97,108,32, - 109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,105, - 116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,41, - 32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,32, - 40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,32, - 32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,116, - 104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,119, - 115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,110, - 103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,115,46,10,32,32,32,32,32,32,32,32,78,114,7, - 0,0,0,41,3,114,123,0,0,0,114,52,0,0,0,114, - 37,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,232,0,0,0,107,3,0,0,115,4,0,0, - 0,4,0,255,128,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,0,0,0,0,5,0,0,0,10,0,0, - 0,67,0,0,0,115,70,0,0,0,124,0,160,0,124,1, - 161,1,125,2,122,20,124,0,160,1,124,2,161,1,125,3, - 87,0,116,4,124,3,131,1,83,0,4,0,116,2,121,68, - 1,0,125,4,1,0,122,14,116,3,100,1,124,1,100,2, - 141,2,124,4,130,2,100,3,125,4,126,4,119,1,119,0, - 41,4,122,52,67,111,110,99,114,101,116,101,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,73, - 110,115,112,101,99,116,76,111,97,100,101,114,46,103,101,116, - 95,115,111,117,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,120,0,0,0,78,41,5,114,183,0,0,0,218,8, - 103,101,116,95,100,97,116,97,114,58,0,0,0,114,122,0, - 0,0,114,180,0,0,0,41,5,114,123,0,0,0,114,143, - 0,0,0,114,52,0,0,0,114,178,0,0,0,218,3,101, - 120,99,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,114,3,0, - 0,115,26,0,0,0,10,2,2,1,12,1,8,4,14,253, - 4,1,2,1,4,255,2,1,2,255,8,128,2,255,255,128, - 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,103, - 101,116,95,115,111,117,114,99,101,114,109,0,0,0,41,1, - 218,9,95,111,112,116,105,109,105,122,101,99,3,0,0,0, - 0,0,0,0,1,0,0,0,4,0,0,0,8,0,0,0, - 67,0,0,0,115,22,0,0,0,116,0,106,1,116,2,124, - 1,124,2,100,1,100,2,124,3,100,3,141,6,83,0,41, - 5,122,130,82,101,116,117,114,110,32,116,104,101,32,99,111, - 100,101,32,111,98,106,101,99,116,32,99,111,109,112,105,108, - 101,100,32,102,114,111,109,32,115,111,117,114,99,101,46,10, - 10,32,32,32,32,32,32,32,32,84,104,101,32,39,100,97, - 116,97,39,32,97,114,103,117,109,101,110,116,32,99,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,222,0,0,0,84,41,2,218,12,100, - 111,110,116,95,105,110,104,101,114,105,116,114,89,0,0,0, - 78,41,3,114,139,0,0,0,114,221,0,0,0,218,7,99, - 111,109,112,105,108,101,41,4,114,123,0,0,0,114,37,0, - 0,0,114,52,0,0,0,114,237,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,14,115,111,117, - 114,99,101,95,116,111,95,99,111,100,101,124,3,0,0,115, - 8,0,0,0,12,5,4,1,6,255,255,128,122,27,83,111, - 117,114,99,101,76,111,97,100,101,114,46,115,111,117,114,99, - 101,95,116,111,95,99,111,100,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,15,0,0,0,9,0,0,0,67,0, - 0,0,115,34,2,0,0,124,0,160,0,124,1,161,1,125, - 2,100,1,125,3,100,1,125,4,100,1,125,5,100,2,125, - 6,100,3,125,7,122,12,116,1,124,2,131,1,125,8,87, - 0,110,24,4,0,116,2,144,2,121,32,1,0,1,0,1, - 0,100,1,125,8,89,0,144,1,110,38,122,14,124,0,160, - 3,124,2,161,1,125,9,87,0,110,20,4,0,116,4,144, - 2,121,30,1,0,1,0,1,0,89,0,144,1,110,2,116, - 5,124,9,100,4,25,0,131,1,125,3,122,14,124,0,160, - 6,124,8,161,1,125,10,87,0,110,18,4,0,116,4,144, - 2,121,28,1,0,1,0,1,0,89,0,110,212,124,1,124, - 8,100,5,156,2,125,11,122,148,116,7,124,10,124,1,124, - 11,131,3,125,12,116,8,124,10,131,1,100,6,100,1,133, - 2,25,0,125,13,124,12,100,7,64,0,100,8,107,3,125, - 6,124,6,144,1,114,30,124,12,100,9,64,0,100,8,107, - 3,125,7,116,9,106,10,100,10,107,3,144,1,114,50,124, - 7,115,248,116,9,106,10,100,11,107,2,144,1,114,50,124, - 0,160,6,124,2,161,1,125,4,116,9,160,11,116,12,124, - 4,161,2,125,5,116,13,124,10,124,5,124,1,124,11,131, - 4,1,0,110,20,116,14,124,10,124,3,124,9,100,12,25, - 0,124,1,124,11,131,5,1,0,87,0,110,22,4,0,116, - 15,116,16,102,2,144,2,121,26,1,0,1,0,1,0,89, - 0,110,30,116,17,160,18,100,13,124,8,124,2,161,3,1, - 0,116,19,124,13,124,1,124,8,124,2,100,14,141,4,83, - 0,124,4,100,1,117,0,144,1,114,126,124,0,160,6,124, - 2,161,1,125,4,124,0,160,20,124,4,124,2,161,2,125, - 14,116,17,160,18,100,15,124,2,161,2,1,0,116,21,106, - 22,144,2,115,20,124,8,100,1,117,1,144,2,114,20,124, - 3,100,1,117,1,144,2,114,20,124,6,144,1,114,218,124, - 5,100,1,117,0,144,1,114,204,116,9,160,11,124,4,161, - 1,125,5,116,23,124,14,124,5,124,7,131,3,125,10,110, - 16,116,24,124,14,124,3,116,25,124,4,131,1,131,3,125, - 10,122,20,124,0,160,26,124,2,124,8,124,10,161,3,1, - 0,87,0,124,14,83,0,4,0,116,2,144,2,121,24,1, - 0,1,0,1,0,89,0,124,14,83,0,124,14,83,0,119, - 0,119,0,119,0,119,0,119,0,41,16,122,190,67,111,110, - 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, - 111,97,100,101,114,46,103,101,116,95,99,111,100,101,46,10, - 10,32,32,32,32,32,32,32,32,82,101,97,100,105,110,103, - 32,111,102,32,98,121,116,101,99,111,100,101,32,114,101,113, - 117,105,114,101,115,32,112,97,116,104,95,115,116,97,116,115, - 32,116,111,32,98,101,32,105,109,112,108,101,109,101,110,116, - 101,100,46,32,84,111,32,119,114,105,116,101,10,32,32,32, - 32,32,32,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,173, - 0,0,0,114,163,0,0,0,114,149,0,0,0,114,3,0, - 0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112,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,183,0,0,0,114,102,0, - 0,0,114,88,0,0,0,114,231,0,0,0,114,58,0,0, - 0,114,30,0,0,0,114,234,0,0,0,114,156,0,0,0, - 218,10,109,101,109,111,114,121,118,105,101,119,114,167,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,161,0,0,0,218,17,95, - 82,65,87,95,77,65,71,73,67,95,78,85,77,66,69,82, - 114,162,0,0,0,114,160,0,0,0,114,122,0,0,0,114, - 154,0,0,0,114,139,0,0,0,114,153,0,0,0,114,169, - 0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4,0,0, - 0,114,233,0,0,0,41,15,114,123,0,0,0,114,143,0, - 0,0,114,112,0,0,0,114,158,0,0,0,114,178,0,0, - 0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0,114,155, - 0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,220,0,0,0,132,3,0,0,115,166,0,0,0,10,7, - 4,1,4,1,4,1,4,1,4,1,2,1,12,1,14,1, - 10,1,2,2,14,1,14,1,6,1,12,2,2,1,14,1, - 14,1,4,1,2,3,2,1,6,254,2,4,12,1,16,1, - 12,1,6,1,12,1,12,1,2,1,2,255,8,2,4,254, - 10,3,4,1,2,1,2,1,4,254,8,4,2,1,6,255, - 2,3,2,1,2,1,6,1,2,1,2,1,8,251,18,7, - 4,1,8,2,2,1,4,255,6,2,2,1,2,1,6,254, - 10,3,10,1,12,1,12,1,18,1,6,1,4,255,6,2, - 10,1,10,1,14,1,6,2,6,1,4,255,2,2,16,1, - 4,3,14,254,2,1,8,1,2,254,2,233,2,225,2,250, - 2,251,255,128,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,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,230,0, - 0,0,114,231,0,0,0,114,233,0,0,0,114,232,0,0, - 0,114,236,0,0,0,114,240,0,0,0,114,220,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,228,0,0,0,73,3,0,0,115,18,0, - 0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10, - 12,8,255,128,114,228,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,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,4,100,5,132, - 0,90,5,100,6,100,7,132,0,90,6,101,7,135,0,102, - 1,100,8,100,9,132,8,131,1,90,8,101,7,100,10,100, - 11,132,0,131,1,90,9,100,12,100,13,132,0,90,10,101, - 7,100,14,100,15,132,0,131,1,90,11,135,0,4,0,90, - 12,83,0,41,16,218,10,70,105,108,101,76,111,97,100,101, - 114,122,103,66,97,115,101,32,102,105,108,101,32,108,111,97, - 100,101,114,32,99,108,97,115,115,32,119,104,105,99,104,32, - 105,109,112,108,101,109,101,110,116,115,32,116,104,101,32,108, - 111,97,100,101,114,32,112,114,111,116,111,99,111,108,32,109, - 101,116,104,111,100,115,32,116,104,97,116,10,32,32,32,32, - 114,101,113,117,105,114,101,32,102,105,108,101,32,115,121,115, - 116,101,109,32,117,115,97,103,101,46,99,3,0,0,0,0, - 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,1,83,0,41,2,122,75,67,97,99,104, - 101,32,116,104,101,32,109,111,100,117,108,101,32,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,163,0,0,0,41,3,114, - 123,0,0,0,114,143,0,0,0,114,52,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,216,0, - 0,0,222,3,0,0,115,6,0,0,0,6,3,10,1,255, - 128,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,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,114,0,0, - 0,169,2,218,9,95,95,99,108,97,115,115,95,95,114,136, - 0,0,0,169,2,114,123,0,0,0,90,5,111,116,104,101, - 114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,6,95,95,101,113,95,95,228,3,0,0,115,8,0,0, - 0,12,1,10,1,2,255,255,128,122,17,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,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,114, - 0,0,0,169,3,218,4,104,97,115,104,114,121,0,0,0, - 114,52,0,0,0,169,1,114,123,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,8,95,95,104, - 97,115,104,95,95,232,3,0,0,115,4,0,0,0,20,1, - 255,128,122,19,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, - 0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0, - 115,16,0,0,0,116,0,116,1,124,0,131,2,160,2,124, - 1,161,1,83,0,41,2,122,100,76,111,97,100,32,97,32, - 109,111,100,117,108,101,32,102,114,111,109,32,97,32,102,105, - 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, - 115,32,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,78,41,3, - 218,5,115,117,112,101,114,114,246,0,0,0,114,227,0,0, - 0,114,226,0,0,0,169,1,114,248,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,227,0,0,0,235,3,0,0, - 115,4,0,0,0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114,110,32, - 116,104,101,32,112,97,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,78,114,56,0,0,0,114,226,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,183,0, - 0,0,247,3,0,0,115,4,0,0,0,6,3,255,128,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,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,128,0,0,0,116,0,124,0,116,1,116,2,102,2, - 131,2,114,72,116,3,160,4,116,5,124,1,131,1,161,1, - 143,24,125,2,124,2,160,6,161,0,87,0,2,0,100,1, - 4,0,4,0,131,3,1,0,83,0,49,0,115,58,119,1, - 1,0,1,0,1,0,89,0,1,0,100,1,83,0,116,3, - 160,7,124,1,100,2,161,2,143,24,125,2,124,2,160,6, - 161,0,87,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,49,0,115,114,119,1,1,0,1,0,1,0,89,0, - 1,0,100,1,83,0,41,3,122,39,82,101,116,117,114,110, - 32,116,104,101,32,100,97,116,97,32,102,114,111,109,32,112, - 97,116,104,32,97,115,32,114,97,119,32,98,121,116,101,115, - 46,78,218,1,114,41,8,114,165,0,0,0,114,228,0,0, - 0,218,19,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,114,72,0,0,0,90,9,111,112,101, - 110,95,99,111,100,101,114,90,0,0,0,90,4,114,101,97, - 100,114,73,0,0,0,41,3,114,123,0,0,0,114,52,0, - 0,0,114,76,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,234,0,0,0,252,3,0,0,115, - 14,0,0,0,14,2,16,1,42,1,14,2,38,1,4,128, - 255,128,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, - 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, - 115,20,0,0,0,100,1,100,2,108,0,109,1,125,2,1, - 0,124,2,124,0,131,1,83,0,41,3,78,114,0,0,0, - 0,41,1,218,10,70,105,108,101,82,101,97,100,101,114,41, - 2,90,17,105,109,112,111,114,116,108,105,98,46,114,101,97, - 100,101,114,115,114,4,1,0,0,41,3,114,123,0,0,0, - 114,223,0,0,0,114,4,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,19,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,5,4, - 0,0,115,6,0,0,0,12,2,8,1,255,128,122,30,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,41,13,114, - 130,0,0,0,114,129,0,0,0,114,131,0,0,0,114,132, - 0,0,0,114,216,0,0,0,114,250,0,0,0,114,254,0, - 0,0,114,140,0,0,0,114,227,0,0,0,114,183,0,0, - 0,114,234,0,0,0,114,5,1,0,0,90,13,95,95,99, - 108,97,115,115,99,101,108,108,95,95,114,7,0,0,0,114, - 7,0,0,0,114,0,1,0,0,114,8,0,0,0,114,246, - 0,0,0,217,3,0,0,115,26,0,0,0,8,0,4,2, - 8,3,8,6,8,4,2,3,14,1,2,11,10,1,8,4, - 2,9,18,1,255,128,114,246,0,0,0,99,0,0,0,0, - 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, + 111,119,115,32,102,111,114,32,116,104,101,32,119,114,105,116, + 105,110,103,32,111,102,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,115,46,10,32,32,32,32,32,32,32,32,78, + 114,7,0,0,0,41,3,114,123,0,0,0,114,52,0,0, + 0,114,37,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,232,0,0,0,107,3,0,0,115,4, + 0,0,0,4,0,255,128,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,0,0,0,0,5,0,0,0,10, + 0,0,0,67,0,0,0,115,70,0,0,0,124,0,160,0, + 124,1,161,1,125,2,122,20,124,0,160,1,124,2,161,1, + 125,3,87,0,116,4,124,3,131,1,83,0,4,0,116,2, + 121,68,1,0,125,4,1,0,122,14,116,3,100,1,124,1, + 100,2,141,2,124,4,130,2,100,3,125,4,126,4,119,1, + 119,0,41,4,122,52,67,111,110,99,114,101,116,101,32,105, + 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102, + 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,103, + 101,116,95,115,111,117,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,120,0,0,0,78,41,5,114,183,0,0,0, + 218,8,103,101,116,95,100,97,116,97,114,58,0,0,0,114, + 122,0,0,0,114,180,0,0,0,41,5,114,123,0,0,0, + 114,143,0,0,0,114,52,0,0,0,114,178,0,0,0,218, + 3,101,120,99,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,114, + 3,0,0,115,26,0,0,0,10,2,2,1,12,1,8,4, + 14,253,4,1,2,1,4,255,2,1,2,255,8,128,2,255, + 255,128,122,23,83,111,117,114,99,101,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,114,109,0,0,0, + 41,1,218,9,95,111,112,116,105,109,105,122,101,99,3,0, + 0,0,0,0,0,0,1,0,0,0,4,0,0,0,8,0, + 0,0,67,0,0,0,115,22,0,0,0,116,0,106,1,116, + 2,124,1,124,2,100,1,100,2,124,3,100,3,141,6,83, + 0,41,5,122,130,82,101,116,117,114,110,32,116,104,101,32, + 99,111,100,101,32,111,98,106,101,99,116,32,99,111,109,112, + 105,108,101,100,32,102,114,111,109,32,115,111,117,114,99,101, + 46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,39, + 100,97,116,97,39,32,97,114,103,117,109,101,110,116,32,99, + 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,222,0,0,0,84,41,2,218, + 12,100,111,110,116,95,105,110,104,101,114,105,116,114,89,0, + 0,0,78,41,3,114,139,0,0,0,114,221,0,0,0,218, + 7,99,111,109,112,105,108,101,41,4,114,123,0,0,0,114, + 37,0,0,0,114,52,0,0,0,114,237,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,124,3,0, + 0,115,8,0,0,0,12,5,4,1,6,255,255,128,122,27, + 83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,15,0,0,0,9,0,0,0, + 67,0,0,0,115,34,2,0,0,124,0,160,0,124,1,161, + 1,125,2,100,1,125,3,100,1,125,4,100,1,125,5,100, + 2,125,6,100,3,125,7,122,12,116,1,124,2,131,1,125, + 8,87,0,110,24,4,0,116,2,144,2,121,32,1,0,1, + 0,1,0,100,1,125,8,89,0,144,1,110,38,122,14,124, + 0,160,3,124,2,161,1,125,9,87,0,110,20,4,0,116, + 4,144,2,121,30,1,0,1,0,1,0,89,0,144,1,110, + 2,116,5,124,9,100,4,25,0,131,1,125,3,122,14,124, + 0,160,6,124,8,161,1,125,10,87,0,110,18,4,0,116, + 4,144,2,121,28,1,0,1,0,1,0,89,0,110,212,124, + 1,124,8,100,5,156,2,125,11,122,148,116,7,124,10,124, + 1,124,11,131,3,125,12,116,8,124,10,131,1,100,6,100, + 1,133,2,25,0,125,13,124,12,100,7,64,0,100,8,107, + 3,125,6,124,6,144,1,114,30,124,12,100,9,64,0,100, + 8,107,3,125,7,116,9,106,10,100,10,107,3,144,1,114, + 28,124,7,115,248,116,9,106,10,100,11,107,2,144,1,114, + 28,124,0,160,6,124,2,161,1,125,4,116,9,160,11,116, + 12,124,4,161,2,125,5,116,13,124,10,124,5,124,1,124, + 11,131,4,1,0,110,20,116,14,124,10,124,3,124,9,100, + 12,25,0,124,1,124,11,131,5,1,0,87,0,110,22,4, + 0,116,15,116,16,102,2,144,2,121,26,1,0,1,0,1, + 0,89,0,110,30,116,17,160,18,100,13,124,8,124,2,161, + 3,1,0,116,19,124,13,124,1,124,8,124,2,100,14,141, + 4,83,0,124,4,100,1,117,0,144,1,114,126,124,0,160, + 6,124,2,161,1,125,4,124,0,160,20,124,4,124,2,161, + 2,125,14,116,17,160,18,100,15,124,2,161,2,1,0,116, + 21,106,22,144,2,115,20,124,8,100,1,117,1,144,2,114, + 20,124,3,100,1,117,1,144,2,114,20,124,6,144,1,114, + 218,124,5,100,1,117,0,144,1,114,204,116,9,160,11,124, + 4,161,1,125,5,116,23,124,14,124,5,124,7,131,3,125, + 10,110,16,116,24,124,14,124,3,116,25,124,4,131,1,131, + 3,125,10,122,20,124,0,160,26,124,2,124,8,124,10,161, + 3,1,0,87,0,124,14,83,0,4,0,116,2,144,2,121, + 24,1,0,1,0,1,0,89,0,124,14,83,0,124,14,83, + 0,119,0,119,0,119,0,119,0,119,0,41,16,122,190,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, + 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, + 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, + 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, + 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, + 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, + 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, + 32,32,32,32,32,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,173,0,0,0,114,163,0,0,0,114,149,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,39,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,121,0,0,0,114,111,0,0,0,114,112, + 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,183,0,0,0,114, + 102,0,0,0,114,88,0,0,0,114,231,0,0,0,114,58, + 0,0,0,114,30,0,0,0,114,234,0,0,0,114,156,0, + 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,167, + 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,161,0,0,0,218, + 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, + 69,82,114,162,0,0,0,114,160,0,0,0,114,122,0,0, + 0,114,154,0,0,0,114,139,0,0,0,114,153,0,0,0, + 114,169,0,0,0,114,240,0,0,0,114,15,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,175,0,0,0,114,174,0,0,0,114,4, + 0,0,0,114,233,0,0,0,41,15,114,123,0,0,0,114, + 143,0,0,0,114,112,0,0,0,114,158,0,0,0,114,178, + 0,0,0,114,161,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,111,0,0,0,218,2,115,116,114,37,0,0,0, + 114,155,0,0,0,114,16,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,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,220,0,0,0,132,3,0,0,115,166,0,0,0, + 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, + 14,1,10,1,2,2,14,1,14,1,6,1,12,2,2,1, + 14,1,14,1,4,1,2,3,2,1,6,254,2,4,12,1, + 16,1,12,1,6,1,12,1,12,1,2,1,2,255,8,2, + 4,254,10,3,4,1,2,1,2,1,4,254,8,4,2,1, + 6,255,2,3,2,1,2,1,6,1,2,1,2,1,8,251, + 18,7,4,1,8,2,2,1,4,255,6,2,2,1,2,1, + 6,254,10,3,10,1,12,1,12,1,18,1,6,1,4,255, + 6,2,10,1,10,1,14,1,6,2,6,1,4,255,2,2, + 16,1,4,3,14,254,2,1,8,1,2,254,2,233,2,225, + 2,250,2,251,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0,0,0,114, + 230,0,0,0,114,231,0,0,0,114,233,0,0,0,114,232, + 0,0,0,114,236,0,0,0,114,240,0,0,0,114,220,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,228,0,0,0,73,3,0,0,115, + 18,0,0,0,8,0,8,2,8,8,8,14,8,10,8,7, + 14,10,12,8,255,128,114,228,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 0,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,4,100, - 5,132,0,90,5,100,6,100,7,156,1,100,8,100,9,132, - 2,90,6,100,10,83,0,41,11,218,16,83,111,117,114,99, - 101,70,105,108,101,76,111,97,100,101,114,122,62,67,111,110, - 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,111,102,32,83,111,117,114,99,101,76,111, - 97,100,101,114,32,117,115,105,110,103,32,116,104,101,32,102, - 105,108,101,32,115,121,115,116,101,109,46,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 67,0,0,0,115,22,0,0,0,116,0,124,1,131,1,125, - 2,124,2,106,1,124,2,106,2,100,1,156,2,83,0,41, - 3,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,173,0,0,0,114,241,0,0,0, - 78,41,3,114,57,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,123,0, - 0,0,114,52,0,0,0,114,245,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,231,0,0,0, - 15,4,0,0,115,6,0,0,0,8,2,14,1,255,128,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,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, - 0,67,0,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,119,0,0,0,114,232,0,0,0,41,5,114,123,0,0, - 0,114,112,0,0,0,114,111,0,0,0,114,37,0,0,0, - 114,60,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,233,0,0,0,20,4,0,0,115,6,0, - 0,0,8,2,16,1,255,128,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,68,0,0,0,114, - 8,1,0,0,99,3,0,0,0,0,0,0,0,1,0,0, - 0,9,0,0,0,11,0,0,0,67,0,0,0,115,4,1, - 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, - 125,6,124,4,114,62,116,1,124,4,131,1,115,62,116,0, - 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, - 161,1,1,0,124,4,114,62,116,1,124,4,131,1,114,28, - 116,3,124,6,131,1,68,0,93,98,125,7,116,4,124,4, - 124,7,131,2,125,4,122,14,116,5,160,6,124,4,161,1, - 1,0,87,0,113,70,4,0,116,7,121,116,1,0,1,0, - 1,0,89,0,113,70,4,0,116,8,144,1,121,2,1,0, - 125,8,1,0,122,30,116,9,160,10,100,1,124,4,124,8, - 161,3,1,0,87,0,89,0,100,2,125,8,126,8,1,0, - 100,2,83,0,100,2,125,8,126,8,119,1,122,30,116,11, - 124,1,124,2,124,3,131,3,1,0,116,9,160,10,100,3, - 124,1,161,2,1,0,87,0,100,2,83,0,4,0,116,8, - 121,252,1,0,125,8,1,0,122,28,116,9,160,10,100,1, - 124,1,124,8,161,3,1,0,87,0,89,0,100,2,125,8, - 126,8,100,2,83,0,100,2,125,8,126,8,119,1,119,0, - 100,2,83,0,119,0,41,4,122,27,87,114,105,116,101,32, - 98,121,116,101,115,32,100,97,116,97,32,116,111,32,97,32, - 102,105,108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114,190,0, - 0,0,114,50,0,0,0,114,48,0,0,0,114,18,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,58,0,0,0,114,139, - 0,0,0,114,153,0,0,0,114,77,0,0,0,41,9,114, - 123,0,0,0,114,52,0,0,0,114,37,0,0,0,114,9, - 1,0,0,218,6,112,97,114,101,110,116,114,101,0,0,0, - 114,47,0,0,0,114,43,0,0,0,114,235,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,232, - 0,0,0,25,4,0,0,115,60,0,0,0,12,2,4,1, - 12,2,12,1,10,1,12,254,12,4,10,1,2,1,14,1, - 12,1,4,2,16,1,6,3,4,1,4,255,16,2,8,128, - 2,1,12,1,18,1,14,1,8,2,2,1,18,255,8,128, - 2,254,4,255,2,248,255,128,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,130,0,0,0,114,129,0,0,0, - 114,131,0,0,0,114,132,0,0,0,114,231,0,0,0,114, - 233,0,0,0,114,232,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,6,1, - 0,0,11,4,0,0,115,12,0,0,0,8,0,4,2,8, - 2,8,5,18,5,255,128,114,6,1,0,0,99,0,0,0, - 0,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,83,0,41,7,218,20,83,111, - 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, - 101,114,122,45,76,111,97,100,101,114,32,119,104,105,99,104, - 32,104,97,110,100,108,101,115,32,115,111,117,114,99,101,108, - 101,115,115,32,102,105,108,101,32,105,109,112,111,114,116,115, - 46,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,5,0,0,0,67,0,0,0,115,68,0,0,0,124, - 0,160,0,124,1,161,1,125,2,124,0,160,1,124,2,161, - 1,125,3,124,1,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,163,0,0,0,114,149,0,0,0, - 41,2,114,121,0,0,0,114,111,0,0,0,41,5,114,183, - 0,0,0,114,234,0,0,0,114,156,0,0,0,114,169,0, - 0,0,114,242,0,0,0,41,5,114,123,0,0,0,114,143, - 0,0,0,114,52,0,0,0,114,37,0,0,0,114,155,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,220,0,0,0,60,4,0,0,115,24,0,0,0,10, - 1,10,1,2,4,2,1,6,254,12,4,2,1,14,1,2, - 1,2,1,6,253,255,128,122,29,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,99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,236,0, - 0,0,76,4,0,0,115,4,0,0,0,4,2,255,128,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,130,0,0,0,114,129,0,0,0,114,131,0, - 0,0,114,132,0,0,0,114,220,0,0,0,114,236,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,12,1,0,0,56,4,0,0,115,10, - 0,0,0,8,0,4,2,8,2,12,16,255,128,114,12,1, - 0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6,100,7, - 132,0,90,6,100,8,100,9,132,0,90,7,100,10,100,11, - 132,0,90,8,100,12,100,13,132,0,90,9,100,14,100,15, - 132,0,90,10,100,16,100,17,132,0,90,11,101,12,100,18, - 100,19,132,0,131,1,90,13,100,20,83,0,41,21,114,3, - 1,0,0,122,93,76,111,97,100,101,114,32,102,111,114,32, - 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, - 115,46,10,10,32,32,32,32,84,104,101,32,99,111,110,115, - 116,114,117,99,116,111,114,32,105,115,32,100,101,115,105,103, - 110,101,100,32,116,111,32,119,111,114,107,32,119,105,116,104, - 32,70,105,108,101,70,105,110,100,101,114,46,10,10,32,32, - 32,32,99,3,0,0,0,0,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,114,0,0,0,114,163,0,0,0,41,3,114,123,0,0, - 0,114,121,0,0,0,114,52,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,216,0,0,0,89, - 4,0,0,115,6,0,0,0,6,1,10,1,255,128,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,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,114,0,0,0,114,247,0,0,0,114,249,0,0, + 5,132,0,90,5,100,6,100,7,132,0,90,6,101,7,135, + 0,102,1,100,8,100,9,132,8,131,1,90,8,101,7,100, + 10,100,11,132,0,131,1,90,9,100,12,100,13,132,0,90, + 10,101,7,100,14,100,15,132,0,131,1,90,11,135,0,4, + 0,90,12,83,0,41,16,218,10,70,105,108,101,76,111,97, + 100,101,114,122,103,66,97,115,101,32,102,105,108,101,32,108, + 111,97,100,101,114,32,99,108,97,115,115,32,119,104,105,99, + 104,32,105,109,112,108,101,109,101,110,116,115,32,116,104,101, + 32,108,111,97,100,101,114,32,112,114,111,116,111,99,111,108, + 32,109,101,116,104,111,100,115,32,116,104,97,116,10,32,32, + 32,32,114,101,113,117,105,114,101,32,102,105,108,101,32,115, + 121,115,116,101,109,32,117,115,97,103,101,46,99,3,0,0, + 0,0,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,1,83,0,41,2,122,75,67,97, + 99,104,101,32,116,104,101,32,109,111,100,117,108,101,32,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,163,0,0,0,41, + 3,114,123,0,0,0,114,143,0,0,0,114,52,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 216,0,0,0,222,3,0,0,115,6,0,0,0,6,3,10, + 1,255,128,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,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,114, + 0,0,0,169,2,218,9,95,95,99,108,97,115,115,95,95, + 114,136,0,0,0,169,2,114,123,0,0,0,90,5,111,116, + 104,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,6,95,95,101,113,95,95,228,3,0,0,115,8, + 0,0,0,12,1,10,1,2,255,255,128,122,17,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,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,114,0,0,0,169,3,218,4,104,97,115,104,114,121,0, + 0,0,114,52,0,0,0,169,1,114,123,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,8,95, + 95,104,97,115,104,95,95,232,3,0,0,115,4,0,0,0, + 20,1,255,128,122,19,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,0,0,0,0,2,0,0,0,3,0,0,0,3,0, + 0,0,115,16,0,0,0,116,0,116,1,124,0,131,2,160, + 2,124,1,161,1,83,0,41,2,122,100,76,111,97,100,32, + 97,32,109,111,100,117,108,101,32,102,114,111,109,32,97,32, + 102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,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,78, + 41,3,218,5,115,117,112,101,114,114,246,0,0,0,114,227, + 0,0,0,114,226,0,0,0,169,1,114,248,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,227,0,0,0,235,3, + 0,0,115,4,0,0,0,16,10,255,128,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,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,169,2,122,58,82,101,116,117,114, + 110,32,116,104,101,32,112,97,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,78,114,56,0,0,0,114,226,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 183,0,0,0,247,3,0,0,115,4,0,0,0,6,3,255, + 128,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,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,128,0,0,0,116,0,124,0,116,1,116,2, + 102,2,131,2,114,72,116,3,160,4,116,5,124,1,131,1, + 161,1,143,24,125,2,124,2,160,6,161,0,87,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,58, + 119,1,1,0,1,0,1,0,89,0,1,0,100,1,83,0, + 116,3,160,7,124,1,100,2,161,2,143,24,125,2,124,2, + 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,49,0,115,114,119,1,1,0,1,0,1,0, + 89,0,1,0,100,1,83,0,41,3,122,39,82,101,116,117, + 114,110,32,116,104,101,32,100,97,116,97,32,102,114,111,109, + 32,112,97,116,104,32,97,115,32,114,97,119,32,98,121,116, + 101,115,46,78,218,1,114,41,8,114,165,0,0,0,114,228, + 0,0,0,218,19,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,114,72,0,0,0,90,9,111, + 112,101,110,95,99,111,100,101,114,90,0,0,0,90,4,114, + 101,97,100,114,73,0,0,0,41,3,114,123,0,0,0,114, + 52,0,0,0,114,76,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,234,0,0,0,252,3,0, + 0,115,14,0,0,0,14,2,16,1,42,1,14,2,38,1, + 4,128,255,128,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,0,0,0,0,3,0,0,0,2,0,0,0,67,0, + 0,0,115,20,0,0,0,100,1,100,2,108,0,109,1,125, + 2,1,0,124,2,124,0,131,1,83,0,41,3,78,114,0, + 0,0,0,41,1,218,10,70,105,108,101,82,101,97,100,101, + 114,41,2,90,17,105,109,112,111,114,116,108,105,98,46,114, + 101,97,100,101,114,115,114,4,1,0,0,41,3,114,123,0, + 0,0,114,223,0,0,0,114,4,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,19,103,101,116, + 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, + 5,4,0,0,115,6,0,0,0,12,2,8,1,255,128,122, + 30,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95, + 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,41, + 13,114,130,0,0,0,114,129,0,0,0,114,131,0,0,0, + 114,132,0,0,0,114,216,0,0,0,114,250,0,0,0,114, + 254,0,0,0,114,140,0,0,0,114,227,0,0,0,114,183, + 0,0,0,114,234,0,0,0,114,5,1,0,0,90,13,95, + 95,99,108,97,115,115,99,101,108,108,95,95,114,7,0,0, + 0,114,7,0,0,0,114,0,1,0,0,114,8,0,0,0, + 114,246,0,0,0,217,3,0,0,115,26,0,0,0,8,0, + 4,2,8,3,8,6,8,4,2,3,14,1,2,11,10,1, + 8,4,2,9,18,1,255,128,114,246,0,0,0,99,0,0, + 0,0,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,7,156,1,100,8,100, + 9,132,2,90,6,100,10,83,0,41,11,218,16,83,111,117, + 114,99,101,70,105,108,101,76,111,97,100,101,114,122,62,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,83,111,117,114,99,101, + 76,111,97,100,101,114,32,117,115,105,110,103,32,116,104,101, + 32,102,105,108,101,32,115,121,115,116,101,109,46,99,2,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0, + 0,0,67,0,0,0,115,22,0,0,0,116,0,124,1,131, + 1,125,2,124,2,106,1,124,2,106,2,100,1,156,2,83, + 0,41,3,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,173,0,0,0,114,241,0, + 0,0,78,41,3,114,57,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, + 123,0,0,0,114,52,0,0,0,114,245,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,231,0, + 0,0,15,4,0,0,115,6,0,0,0,8,2,14,1,255, + 128,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,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5, + 0,0,0,67,0,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,119,0,0,0,114,232,0,0,0,41,5,114,123, + 0,0,0,114,112,0,0,0,114,111,0,0,0,114,37,0, + 0,0,114,60,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,233,0,0,0,20,4,0,0,115, + 6,0,0,0,8,2,16,1,255,128,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,68,0,0, + 0,114,8,1,0,0,99,3,0,0,0,0,0,0,0,1, + 0,0,0,9,0,0,0,11,0,0,0,67,0,0,0,115, + 4,1,0,0,116,0,124,1,131,1,92,2,125,4,125,5, + 103,0,125,6,124,4,114,62,116,1,124,4,131,1,115,62, + 116,0,124,4,131,1,92,2,125,4,125,7,124,6,160,2, + 124,7,161,1,1,0,124,4,114,62,116,1,124,4,131,1, + 114,28,116,3,124,6,131,1,68,0,93,98,125,7,116,4, + 124,4,124,7,131,2,125,4,122,14,116,5,160,6,124,4, + 161,1,1,0,87,0,113,70,4,0,116,7,121,116,1,0, + 1,0,1,0,89,0,113,70,4,0,116,8,144,1,121,2, + 1,0,125,8,1,0,122,30,116,9,160,10,100,1,124,4, + 124,8,161,3,1,0,87,0,89,0,100,2,125,8,126,8, + 1,0,100,2,83,0,100,2,125,8,126,8,119,1,122,30, + 116,11,124,1,124,2,124,3,131,3,1,0,116,9,160,10, + 100,3,124,1,161,2,1,0,87,0,100,2,83,0,4,0, + 116,8,121,252,1,0,125,8,1,0,122,28,116,9,160,10, + 100,1,124,1,124,8,161,3,1,0,87,0,89,0,100,2, + 125,8,126,8,100,2,83,0,100,2,125,8,126,8,119,1, + 119,0,100,2,83,0,119,0,41,4,122,27,87,114,105,116, + 101,32,98,121,116,101,115,32,100,97,116,97,32,116,111,32, + 97,32,102,105,108,101,46,122,27,99,111,117,108,100,32,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,55,0,0,0,114,64,0,0,0,114, + 190,0,0,0,114,50,0,0,0,114,48,0,0,0,114,18, + 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,58,0,0,0, + 114,139,0,0,0,114,153,0,0,0,114,77,0,0,0,41, + 9,114,123,0,0,0,114,52,0,0,0,114,37,0,0,0, + 114,9,1,0,0,218,6,112,97,114,101,110,116,114,101,0, + 0,0,114,47,0,0,0,114,43,0,0,0,114,235,0,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,250,0,0,0,93,4,0,0,115,8,0,0,0,12,1, - 10,1,2,255,255,128,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,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,114,0,0,0,114,251,0,0,0,114,253, + 114,232,0,0,0,25,4,0,0,115,60,0,0,0,12,2, + 4,1,12,2,12,1,10,1,12,254,12,4,10,1,2,1, + 14,1,12,1,4,2,16,1,6,3,4,1,4,255,16,2, + 8,128,2,1,12,1,18,1,14,1,8,2,2,1,18,255, + 8,128,2,254,4,255,2,248,255,128,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,130,0,0,0,114,129,0, + 0,0,114,131,0,0,0,114,132,0,0,0,114,231,0,0, + 0,114,233,0,0,0,114,232,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 6,1,0,0,11,4,0,0,115,12,0,0,0,8,0,4, + 2,8,2,8,5,18,5,255,128,114,6,1,0,0,99,0, + 0,0,0,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,83,0,41,7,218,20, + 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, + 97,100,101,114,122,45,76,111,97,100,101,114,32,119,104,105, + 99,104,32,104,97,110,100,108,101,115,32,115,111,117,114,99, + 101,108,101,115,115,32,102,105,108,101,32,105,109,112,111,114, + 116,115,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,5,0,0,0,67,0,0,0,115,68,0,0, + 0,124,0,160,0,124,1,161,1,125,2,124,0,160,1,124, + 2,161,1,125,3,124,1,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,163,0,0,0,114,149,0, + 0,0,41,2,114,121,0,0,0,114,111,0,0,0,41,5, + 114,183,0,0,0,114,234,0,0,0,114,156,0,0,0,114, + 169,0,0,0,114,242,0,0,0,41,5,114,123,0,0,0, + 114,143,0,0,0,114,52,0,0,0,114,37,0,0,0,114, + 155,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,220,0,0,0,60,4,0,0,115,24,0,0, + 0,10,1,10,1,2,4,2,1,6,254,12,4,2,1,14, + 1,2,1,2,1,6,253,255,128,122,29,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,99,111,100,101,99,2,0,0,0,0,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,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,7,0,0,0,114,226,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 236,0,0,0,76,4,0,0,115,4,0,0,0,4,2,255, + 128,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,130,0,0,0,114,129,0,0,0,114, + 131,0,0,0,114,132,0,0,0,114,220,0,0,0,114,236, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,12,1,0,0,56,4,0,0, + 115,10,0,0,0,8,0,4,2,8,2,12,16,255,128,114, + 12,1,0,0,99,0,0,0,0,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,4,100,5,132,0,90,5,100,6, + 100,7,132,0,90,6,100,8,100,9,132,0,90,7,100,10, + 100,11,132,0,90,8,100,12,100,13,132,0,90,9,100,14, + 100,15,132,0,90,10,100,16,100,17,132,0,90,11,101,12, + 100,18,100,19,132,0,131,1,90,13,100,20,83,0,41,21, + 114,3,1,0,0,122,93,76,111,97,100,101,114,32,102,111, + 114,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,115,46,10,10,32,32,32,32,84,104,101,32,99,111, + 110,115,116,114,117,99,116,111,114,32,105,115,32,100,101,115, + 105,103,110,101,100,32,116,111,32,119,111,114,107,32,119,105, + 116,104,32,70,105,108,101,70,105,110,100,101,114,46,10,10, + 32,32,32,32,99,3,0,0,0,0,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,114,0,0,0,114,163,0,0,0,41,3,114,123, + 0,0,0,114,121,0,0,0,114,52,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,216,0,0, + 0,89,4,0,0,115,6,0,0,0,6,1,10,1,255,128, + 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,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,114,0,0,0,114,247,0,0,0,114,249, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,254,0,0,0,97,4,0,0,115,4,0,0,0, - 20,1,255,128,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,0,0,0,0,3, - 0,0,0,5,0,0,0,67,0,0,0,115,36,0,0,0, - 116,0,160,1,116,2,106,3,124,1,161,2,125,2,116,0, - 160,4,100,1,124,1,106,5,124,0,106,6,161,3,1,0, - 124,2,83,0,41,3,122,38,67,114,101,97,116,101,32,97, - 110,32,117,110,105,116,105,97,108,105,122,101,100,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,38, + 0,0,114,250,0,0,0,93,4,0,0,115,8,0,0,0, + 12,1,10,1,2,255,255,128,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,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,114,0,0,0,114,251,0,0,0, + 114,253,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,254,0,0,0,97,4,0,0,115,4,0, + 0,0,20,1,255,128,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,0,0,0, + 0,3,0,0,0,5,0,0,0,67,0,0,0,115,36,0, + 0,0,116,0,160,1,116,2,106,3,124,1,161,2,125,2, + 116,0,160,4,100,1,124,1,106,5,124,0,106,6,161,3, + 1,0,124,2,83,0,41,3,122,38,67,114,101,97,116,101, + 32,97,110,32,117,110,105,116,105,97,108,105,122,101,100,32, 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,78,41,7,114,139,0,0,0,114,221, - 0,0,0,114,167,0,0,0,90,14,99,114,101,97,116,101, - 95,100,121,110,97,109,105,99,114,153,0,0,0,114,121,0, - 0,0,114,52,0,0,0,41,3,114,123,0,0,0,114,191, - 0,0,0,114,223,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,219,0,0,0,100,4,0,0, - 115,16,0,0,0,4,2,6,1,4,255,6,2,8,1,4, - 255,4,2,255,128,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,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0, - 0,115,36,0,0,0,116,0,160,1,116,2,106,3,124,1, - 161,2,1,0,116,0,160,4,100,1,124,0,106,5,124,0, - 106,6,161,3,1,0,100,2,83,0,41,3,122,30,73,110, - 105,116,105,97,108,105,122,101,32,97,110,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,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,139,0,0,0,114,221, - 0,0,0,114,167,0,0,0,90,12,101,120,101,99,95,100, - 121,110,97,109,105,99,114,153,0,0,0,114,121,0,0,0, - 114,52,0,0,0,169,2,114,123,0,0,0,114,223,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,224,0,0,0,108,4,0,0,115,10,0,0,0,14,2, - 6,1,8,1,8,255,255,128,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,0,0,0,0,0,2,0,0,0,4,0,0,0,3,0, - 0,0,115,36,0,0,0,116,0,124,0,106,1,131,1,100, - 1,25,0,137,0,116,2,135,0,102,1,100,2,100,3,132, - 8,116,3,68,0,131,1,131,1,83,0,41,5,122,49,82, - 101,116,117,114,110,32,84,114,117,101,32,105,102,32,116,104, - 101,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, - 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, - 114,3,0,0,0,99,1,0,0,0,0,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, - 216,0,0,0,78,114,7,0,0,0,169,2,114,5,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,7,0,0,0,114,8,0,0,0, - 114,9,0,0,0,117,4,0,0,115,8,0,0,0,4,0, - 2,1,20,255,255,128,122,49,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,101,46,60,108,111,99,97,108,115,62,46, - 60,103,101,110,101,120,112,114,62,78,41,4,114,55,0,0, - 0,114,52,0,0,0,218,3,97,110,121,114,212,0,0,0, - 114,226,0,0,0,114,7,0,0,0,114,16,1,0,0,114, - 8,0,0,0,114,186,0,0,0,114,4,0,0,115,10,0, - 0,0,14,2,12,1,2,1,8,255,255,128,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,101,99,2,0,0, - 0,0,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, - 122,63,82,101,116,117,114,110,32,78,111,110,101,32,97,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,7,0,0,0,114,226,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,220,0,0,0, - 120,4,0,0,115,4,0,0,0,4,2,255,128,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,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,122, - 53,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 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,78,41,7,114,139,0,0,0, + 114,221,0,0,0,114,167,0,0,0,90,14,99,114,101,97, + 116,101,95,100,121,110,97,109,105,99,114,153,0,0,0,114, + 121,0,0,0,114,52,0,0,0,41,3,114,123,0,0,0, + 114,191,0,0,0,114,223,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,219,0,0,0,100,4, + 0,0,115,16,0,0,0,4,2,6,1,4,255,6,2,8, + 1,4,255,4,2,255,128,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,108,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,67, + 0,0,0,115,36,0,0,0,116,0,160,1,116,2,106,3, + 124,1,161,2,1,0,116,0,160,4,100,1,124,0,106,5, + 124,0,106,6,161,3,1,0,100,2,83,0,41,3,122,30, + 73,110,105,116,105,97,108,105,122,101,32,97,110,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,40, 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,7,0,0,0,114,226,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,236,0,0,0,124,4,0,0,115,4,0,0,0,4,2, - 255,128,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,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,1,1,0,0,114,56,0,0,0, - 114,226,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,183,0,0,0,128,4,0,0,115,4,0, - 0,0,6,3,255,128,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,130,0,0,0, - 114,129,0,0,0,114,131,0,0,0,114,132,0,0,0,114, - 216,0,0,0,114,250,0,0,0,114,254,0,0,0,114,219, - 0,0,0,114,224,0,0,0,114,186,0,0,0,114,220,0, - 0,0,114,236,0,0,0,114,140,0,0,0,114,183,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,3,1,0,0,81,4,0,0,115,26, - 0,0,0,8,0,4,2,8,6,8,4,8,4,8,3,8, - 8,8,6,8,6,8,4,2,4,14,1,255,128,114,3,1, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,64,0,0,0,115,104,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,90,6,100,8,100,9,132,0,90,7,100,10,100,11, - 132,0,90,8,100,12,100,13,132,0,90,9,100,14,100,15, - 132,0,90,10,100,16,100,17,132,0,90,11,100,18,100,19, - 132,0,90,12,100,20,100,21,132,0,90,13,100,22,100,23, - 132,0,90,14,100,24,83,0,41,25,218,14,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,97,38,1,0,0,82, - 101,112,114,101,115,101,110,116,115,32,97,32,110,97,109,101, - 115,112,97,99,101,32,112,97,99,107,97,103,101,39,115,32, - 112,97,116,104,46,32,32,73,116,32,117,115,101,115,32,116, - 104,101,32,109,111,100,117,108,101,32,110,97,109,101,10,32, - 32,32,32,116,111,32,102,105,110,100,32,105,116,115,32,112, - 97,114,101,110,116,32,109,111,100,117,108,101,44,32,97,110, - 100,32,102,114,111,109,32,116,104,101,114,101,32,105,116,32, - 108,111,111,107,115,32,117,112,32,116,104,101,32,112,97,114, - 101,110,116,39,115,10,32,32,32,32,95,95,112,97,116,104, - 95,95,46,32,32,87,104,101,110,32,116,104,105,115,32,99, - 104,97,110,103,101,115,44,32,116,104,101,32,109,111,100,117, - 108,101,39,115,32,111,119,110,32,112,97,116,104,32,105,115, - 32,114,101,99,111,109,112,117,116,101,100,44,10,32,32,32, - 32,117,115,105,110,103,32,112,97,116,104,95,102,105,110,100, - 101,114,46,32,32,70,111,114,32,116,111,112,45,108,101,118, - 101,108,32,109,111,100,117,108,101,115,44,32,116,104,101,32, - 112,97,114,101,110,116,32,109,111,100,117,108,101,39,115,32, - 112,97,116,104,10,32,32,32,32,105,115,32,115,121,115,46, - 112,97,116,104,46,99,4,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,36, - 0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,116, - 2,124,0,160,3,161,0,131,1,124,0,95,4,124,3,124, - 0,95,5,100,0,83,0,114,114,0,0,0,41,6,218,5, - 95,110,97,109,101,218,5,95,112,97,116,104,114,116,0,0, - 0,218,16,95,103,101,116,95,112,97,114,101,110,116,95,112, - 97,116,104,218,17,95,108,97,115,116,95,112,97,114,101,110, - 116,95,112,97,116,104,218,12,95,112,97,116,104,95,102,105, - 110,100,101,114,169,4,114,123,0,0,0,114,121,0,0,0, - 114,52,0,0,0,90,11,112,97,116,104,95,102,105,110,100, - 101,114,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,216,0,0,0,141,4,0,0,115,10,0,0,0,6, - 1,6,1,14,1,10,1,255,128,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,0,0,0,0,4, - 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, - 124,0,106,0,160,1,100,1,161,1,92,3,125,1,125,2, - 125,3,124,2,100,2,107,2,114,30,100,3,83,0,124,1, - 100,4,102,2,83,0,41,6,122,62,82,101,116,117,114,110, - 115,32,97,32,116,117,112,108,101,32,111,102,32,40,112,97, - 114,101,110,116,45,109,111,100,117,108,101,45,110,97,109,101, - 44,32,112,97,114,101,110,116,45,112,97,116,104,45,97,116, - 116,114,45,110,97,109,101,41,114,79,0,0,0,114,10,0, - 0,0,41,2,114,15,0,0,0,114,52,0,0,0,90,8, - 95,95,112,97,116,104,95,95,78,41,2,114,19,1,0,0, - 114,49,0,0,0,41,4,114,123,0,0,0,114,11,1,0, - 0,218,3,100,111,116,90,2,109,101,114,7,0,0,0,114, - 7,0,0,0,114,8,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,147,4,0,0,115,10,0,0,0,18,2,8,1,4, - 2,8,3,255,128,122,38,95,78,97,109,101,115,112,97,99, - 101,80,97,116,104,46,95,102,105,110,100,95,112,97,114,101, - 110,116,95,112,97,116,104,95,110,97,109,101,115,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,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,114,0,0,0,41,4,114,26, - 1,0,0,114,135,0,0,0,114,15,0,0,0,218,7,109, - 111,100,117,108,101,115,41,3,114,123,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,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,21,1,0,0,157,4,0,0,115,6,0,0,0,12,1, - 16,1,255,128,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,0,0, - 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,80, - 0,0,0,116,0,124,0,160,1,161,0,131,1,125,1,124, - 1,124,0,106,2,107,3,114,74,124,0,160,3,124,0,106, - 4,124,1,161,2,125,2,124,2,100,0,117,1,114,68,124, - 2,106,5,100,0,117,0,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,114,0,0,0,41,8,114,116,0,0,0,114, - 21,1,0,0,114,22,1,0,0,114,23,1,0,0,114,19, - 1,0,0,114,144,0,0,0,114,182,0,0,0,114,20,1, - 0,0,41,3,114,123,0,0,0,90,11,112,97,114,101,110, - 116,95,112,97,116,104,114,191,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,12,95,114,101,99, - 97,108,99,117,108,97,116,101,161,4,0,0,115,18,0,0, - 0,12,2,10,1,14,1,18,3,6,1,8,1,6,1,6, - 1,255,128,122,27,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,114,101,99,97,108,99,117,108,97,116,101, - 99,1,0,0,0,0,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,114,0,0,0,41, - 2,218,4,105,116,101,114,114,28,1,0,0,114,253,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,8,95,95,105,116,101,114,95,95,174,4,0,0,115,4, - 0,0,0,12,1,255,128,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,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,2,0,0,0,67,0,0,0,115,12,0,0,0,124,0, - 160,0,161,0,124,1,25,0,83,0,114,114,0,0,0,169, - 1,114,28,1,0,0,41,2,114,123,0,0,0,218,5,105, - 110,100,101,120,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,11,95,95,103,101,116,105,116,101,109,95,95, - 177,4,0,0,115,4,0,0,0,12,1,255,128,122,26,95, + 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,139,0,0,0, + 114,221,0,0,0,114,167,0,0,0,90,12,101,120,101,99, + 95,100,121,110,97,109,105,99,114,153,0,0,0,114,121,0, + 0,0,114,52,0,0,0,169,2,114,123,0,0,0,114,223, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,224,0,0,0,108,4,0,0,115,10,0,0,0, + 14,2,6,1,8,1,8,255,255,128,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,0,0,0,0,0,2,0,0,0,4,0,0,0, + 3,0,0,0,115,36,0,0,0,116,0,124,0,106,1,131, + 1,100,1,25,0,137,0,116,2,135,0,102,1,100,2,100, + 3,132,8,116,3,68,0,131,1,131,1,83,0,41,5,122, + 49,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32, + 116,104,101,32,101,120,116,101,110,115,105,111,110,32,109,111, + 100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,103, + 101,46,114,3,0,0,0,99,1,0,0,0,0,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,216,0,0,0,78,114,7,0,0,0,169,2,114,5, + 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,7,0,0,0,114,8,0, + 0,0,114,9,0,0,0,117,4,0,0,115,8,0,0,0, + 4,0,2,1,20,255,255,128,122,49,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,101,46,60,108,111,99,97,108,115, + 62,46,60,103,101,110,101,120,112,114,62,78,41,4,114,55, + 0,0,0,114,52,0,0,0,218,3,97,110,121,114,212,0, + 0,0,114,226,0,0,0,114,7,0,0,0,114,16,1,0, + 0,114,8,0,0,0,114,186,0,0,0,114,4,0,0,115, + 10,0,0,0,14,2,12,1,2,1,8,255,255,128,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,101,99,2, + 0,0,0,0,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,122,63,82,101,116,117,114,110,32,78,111,110,101,32, + 97,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,7,0,0,0,114,226,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,220,0, + 0,0,120,4,0,0,115,4,0,0,0,4,2,255,128,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,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,122,53,82,101,116,117,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,7,0,0,0,114,226, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,236,0,0,0,124,4,0,0,115,4,0,0,0, + 4,2,255,128,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,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,1,1,0,0,114,56,0, + 0,0,114,226,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,183,0,0,0,128,4,0,0,115, + 4,0,0,0,6,3,255,128,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,130,0, + 0,0,114,129,0,0,0,114,131,0,0,0,114,132,0,0, + 0,114,216,0,0,0,114,250,0,0,0,114,254,0,0,0, + 114,219,0,0,0,114,224,0,0,0,114,186,0,0,0,114, + 220,0,0,0,114,236,0,0,0,114,140,0,0,0,114,183, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,3,1,0,0,81,4,0,0, + 115,26,0,0,0,8,0,4,2,8,6,8,4,8,4,8, + 3,8,8,8,6,8,6,8,4,2,4,14,1,255,128,114, + 3,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,64,0,0,0,115,104,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,90,6,100,8,100,9,132,0,90,7,100,10, + 100,11,132,0,90,8,100,12,100,13,132,0,90,9,100,14, + 100,15,132,0,90,10,100,16,100,17,132,0,90,11,100,18, + 100,19,132,0,90,12,100,20,100,21,132,0,90,13,100,22, + 100,23,132,0,90,14,100,24,83,0,41,25,218,14,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,97,38,1,0, + 0,82,101,112,114,101,115,101,110,116,115,32,97,32,110,97, + 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,39, + 115,32,112,97,116,104,46,32,32,73,116,32,117,115,101,115, + 32,116,104,101,32,109,111,100,117,108,101,32,110,97,109,101, + 10,32,32,32,32,116,111,32,102,105,110,100,32,105,116,115, + 32,112,97,114,101,110,116,32,109,111,100,117,108,101,44,32, + 97,110,100,32,102,114,111,109,32,116,104,101,114,101,32,105, + 116,32,108,111,111,107,115,32,117,112,32,116,104,101,32,112, + 97,114,101,110,116,39,115,10,32,32,32,32,95,95,112,97, + 116,104,95,95,46,32,32,87,104,101,110,32,116,104,105,115, + 32,99,104,97,110,103,101,115,44,32,116,104,101,32,109,111, + 100,117,108,101,39,115,32,111,119,110,32,112,97,116,104,32, + 105,115,32,114,101,99,111,109,112,117,116,101,100,44,10,32, + 32,32,32,117,115,105,110,103,32,112,97,116,104,95,102,105, + 110,100,101,114,46,32,32,70,111,114,32,116,111,112,45,108, + 101,118,101,108,32,109,111,100,117,108,101,115,44,32,116,104, + 101,32,112,97,114,101,110,116,32,109,111,100,117,108,101,39, + 115,32,112,97,116,104,10,32,32,32,32,105,115,32,115,121, + 115,46,112,97,116,104,46,99,4,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0, + 115,36,0,0,0,124,1,124,0,95,0,124,2,124,0,95, + 1,116,2,124,0,160,3,161,0,131,1,124,0,95,4,124, + 3,124,0,95,5,100,0,83,0,114,114,0,0,0,41,6, + 218,5,95,110,97,109,101,218,5,95,112,97,116,104,114,116, + 0,0,0,218,16,95,103,101,116,95,112,97,114,101,110,116, + 95,112,97,116,104,218,17,95,108,97,115,116,95,112,97,114, + 101,110,116,95,112,97,116,104,218,12,95,112,97,116,104,95, + 102,105,110,100,101,114,169,4,114,123,0,0,0,114,121,0, + 0,0,114,52,0,0,0,90,11,112,97,116,104,95,102,105, + 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,216,0,0,0,141,4,0,0,115,10,0,0, + 0,6,1,6,1,14,1,10,1,255,128,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,0,0,0, + 0,4,0,0,0,3,0,0,0,67,0,0,0,115,38,0, + 0,0,124,0,106,0,160,1,100,1,161,1,92,3,125,1, + 125,2,125,3,124,2,100,2,107,2,114,30,100,3,83,0, + 124,1,100,4,102,2,83,0,41,6,122,62,82,101,116,117, + 114,110,115,32,97,32,116,117,112,108,101,32,111,102,32,40, + 112,97,114,101,110,116,45,109,111,100,117,108,101,45,110,97, + 109,101,44,32,112,97,114,101,110,116,45,112,97,116,104,45, + 97,116,116,114,45,110,97,109,101,41,114,79,0,0,0,114, + 10,0,0,0,41,2,114,15,0,0,0,114,52,0,0,0, + 90,8,95,95,112,97,116,104,95,95,78,41,2,114,19,1, + 0,0,114,49,0,0,0,41,4,114,123,0,0,0,114,11, + 1,0,0,218,3,100,111,116,90,2,109,101,114,7,0,0, + 0,114,7,0,0,0,114,8,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,147,4,0,0,115,10,0,0,0,18,2,8, + 1,4,2,8,3,255,128,122,38,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,102,105,110,100,95,112,97, + 114,101,110,116,95,112,97,116,104,95,110,97,109,101,115,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 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,114,0,0,0,41,4, + 114,26,1,0,0,114,135,0,0,0,114,15,0,0,0,218, + 7,109,111,100,117,108,101,115,41,3,114,123,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,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,21,1,0,0,157,4,0,0,115,6,0,0,0, + 12,1,16,1,255,128,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, + 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, + 115,80,0,0,0,116,0,124,0,160,1,161,0,131,1,125, + 1,124,1,124,0,106,2,107,3,114,74,124,0,160,3,124, + 0,106,4,124,1,161,2,125,2,124,2,100,0,117,1,114, + 68,124,2,106,5,100,0,117,0,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,114,0,0,0,41,8,114,116,0,0, + 0,114,21,1,0,0,114,22,1,0,0,114,23,1,0,0, + 114,19,1,0,0,114,144,0,0,0,114,182,0,0,0,114, + 20,1,0,0,41,3,114,123,0,0,0,90,11,112,97,114, + 101,110,116,95,112,97,116,104,114,191,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,12,95,114, + 101,99,97,108,99,117,108,97,116,101,161,4,0,0,115,18, + 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, + 1,6,1,255,128,122,27,95,78,97,109,101,115,112,97,99, + 101,80,97,116,104,46,95,114,101,99,97,108,99,117,108,97, + 116,101,99,1,0,0,0,0,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,114,0,0, + 0,41,2,218,4,105,116,101,114,114,28,1,0,0,114,253, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,8,95,95,105,116,101,114,95,95,174,4,0,0, + 115,4,0,0,0,12,1,255,128,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,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,2,0,0,0,67,0,0,0,115,12,0,0,0, + 124,0,160,0,161,0,124,1,25,0,83,0,114,114,0,0, + 0,169,1,114,28,1,0,0,41,2,114,123,0,0,0,218, + 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, + 95,95,177,4,0,0,115,4,0,0,0,12,1,255,128,122, + 26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,95,103,101,116,105,116,101,109,95,95,99,3,0,0,0, + 0,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,114,0,0,0,41,1,114,20, + 1,0,0,41,3,114,123,0,0,0,114,32,1,0,0,114, + 52,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,95, + 180,4,0,0,115,4,0,0,0,14,1,255,128,122,26,95, 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, - 103,101,116,105,116,101,109,95,95,99,3,0,0,0,0,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,114,0,0,0,41,1,114,20,1,0, - 0,41,3,114,123,0,0,0,114,32,1,0,0,114,52,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,11,95,95,115,101,116,105,116,101,109,95,95,180,4, - 0,0,115,4,0,0,0,14,1,255,128,122,26,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,115,101, - 116,105,116,101,109,95,95,99,1,0,0,0,0,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,114,0,0,0,41,2,114,4,0,0,0,114,28,1, - 0,0,114,253,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,7,95,95,108,101,110,95,95,183, - 4,0,0,115,4,0,0,0,12,1,255,128,122,22,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,108, - 101,110,95,95,99,1,0,0,0,0,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, - 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,70,0,0,0,114,20, - 1,0,0,114,253,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,8,95,95,114,101,112,114,95, - 95,186,4,0,0,115,4,0,0,0,12,1,255,128,122,23, + 115,101,116,105,116,101,109,95,95,99,1,0,0,0,0,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,114,0,0,0,41,2,114,4,0,0,0,114, + 28,1,0,0,114,253,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, + 95,183,4,0,0,115,4,0,0,0,12,1,255,128,122,22, 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, - 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,118,0,83, - 0,114,114,0,0,0,114,31,1,0,0,169,2,114,123,0, - 0,0,218,4,105,116,101,109,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,12,95,95,99,111,110,116,97, - 105,110,115,95,95,189,4,0,0,115,4,0,0,0,12,1, - 255,128,122,27,95,78,97,109,101,115,112,97,99,101,80,97, - 116,104,46,95,95,99,111,110,116,97,105,110,115,95,95,99, - 2,0,0,0,0,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,114,0, - 0,0,41,2,114,20,1,0,0,114,190,0,0,0,114,37, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,190,0,0,0,192,4,0,0,115,4,0,0,0, - 16,1,255,128,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,15,114,130, - 0,0,0,114,129,0,0,0,114,131,0,0,0,114,132,0, - 0,0,114,216,0,0,0,114,26,1,0,0,114,21,1,0, - 0,114,28,1,0,0,114,30,1,0,0,114,33,1,0,0, - 114,34,1,0,0,114,35,1,0,0,114,36,1,0,0,114, - 39,1,0,0,114,190,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,18,1, - 0,0,134,4,0,0,115,28,0,0,0,8,0,4,1,8, - 6,8,6,8,10,8,4,8,13,8,3,8,3,8,3,8, - 3,8,3,12,3,255,128,114,18,1,0,0,99,0,0,0, - 0,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,4, - 132,0,131,1,90,5,100,5,100,6,132,0,90,6,100,7, - 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11, - 100,12,132,0,90,9,100,13,100,14,132,0,90,10,100,15, - 100,16,132,0,90,11,100,17,83,0,41,18,218,16,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,99,4, - 0,0,0,0,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,114, - 0,0,0,41,2,114,18,1,0,0,114,20,1,0,0,114, - 24,1,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,216,0,0,0,198,4,0,0,115,4,0,0, - 0,18,1,255,128,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,1,0,0,0,0,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,3,122,115,82,101, - 116,117,114,110,32,114,101,112,114,32,102,111,114,32,116,104, - 101,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,101,32,109,101,116,104,111,100,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,46,32,32,84,104, - 101,32,105,109,112,111,114,116,32,109,97,99,104,105,110,101, - 114,121,32,100,111,101,115,32,116,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,78,41,2,114, - 70,0,0,0,114,130,0,0,0,41,1,114,223,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,109,111,100,117,108,101,95,114,101,112,114,201,4,0,0, - 115,4,0,0,0,12,7,255,128,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, - 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,7,0, - 0,0,114,226,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,186,0,0,0,210,4,0,0,115, - 4,0,0,0,4,1,255,128,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,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,10,0,0,0,114, - 7,0,0,0,114,226,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,236,0,0,0,213,4,0, - 0,115,4,0,0,0,4,1,255,128,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, - 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,10,0,0,0,122,8,60, - 115,116,114,105,110,103,62,114,222,0,0,0,84,41,1,114, - 238,0,0,0,41,1,114,239,0,0,0,114,226,0,0,0, + 95,108,101,110,95,95,99,1,0,0,0,0,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,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,70,0,0,0, + 114,20,1,0,0,114,253,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,8,95,95,114,101,112, + 114,95,95,186,4,0,0,115,4,0,0,0,12,1,255,128, + 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,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,118, + 0,83,0,114,114,0,0,0,114,31,1,0,0,169,2,114, + 123,0,0,0,218,4,105,116,101,109,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,12,95,95,99,111,110, + 116,97,105,110,115,95,95,189,4,0,0,115,4,0,0,0, + 12,1,255,128,122,27,95,78,97,109,101,115,112,97,99,101, + 80,97,116,104,46,95,95,99,111,110,116,97,105,110,115,95, + 95,99,2,0,0,0,0,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, + 114,0,0,0,41,2,114,20,1,0,0,114,190,0,0,0, + 114,37,1,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,190,0,0,0,192,4,0,0,115,4,0, + 0,0,16,1,255,128,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,15, + 114,130,0,0,0,114,129,0,0,0,114,131,0,0,0,114, + 132,0,0,0,114,216,0,0,0,114,26,1,0,0,114,21, + 1,0,0,114,28,1,0,0,114,30,1,0,0,114,33,1, + 0,0,114,34,1,0,0,114,35,1,0,0,114,36,1,0, + 0,114,39,1,0,0,114,190,0,0,0,114,7,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 220,0,0,0,216,4,0,0,115,4,0,0,0,16,1,255, - 128,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,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,217, - 0,0,0,114,7,0,0,0,114,218,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,219,0,0, - 0,219,4,0,0,115,4,0,0,0,4,0,255,128,122,30, + 18,1,0,0,134,4,0,0,115,28,0,0,0,8,0,4, + 1,8,6,8,6,8,10,8,4,8,13,8,3,8,3,8, + 3,8,3,8,3,12,3,255,128,114,18,1,0,0,99,0, + 0,0,0,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,4,132,0,131,1,90,5,100,5,100,6,132,0,90,6, + 100,7,100,8,132,0,90,7,100,9,100,10,132,0,90,8, + 100,11,100,12,132,0,90,9,100,13,100,14,132,0,90,10, + 100,15,100,16,132,0,90,11,100,17,83,0,41,18,218,16, 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, + 99,4,0,0,0,0,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,114,0,0,0,41,2,114,18,1,0,0,114,20,1,0, + 0,114,24,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,216,0,0,0,198,4,0,0,115,4, + 0,0,0,18,1,255,128,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,1,0,0,0,0,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,3,122,115, + 82,101,116,117,114,110,32,114,101,112,114,32,102,111,114,32, + 116,104,101,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,109,101,116,104,111,100,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, + 84,104,101,32,105,109,112,111,114,116,32,109,97,99,104,105, + 110,101,114,121,32,100,111,101,115,32,116,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,78,41, + 2,114,70,0,0,0,114,130,0,0,0,41,1,114,223,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,11,109,111,100,117,108,101,95,114,101,112,114,201,4, + 0,0,115,4,0,0,0,12,7,255,128,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,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, + 7,0,0,0,114,226,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,186,0,0,0,210,4,0, + 0,115,4,0,0,0,4,1,255,128,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, + 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,10,0,0, + 0,114,7,0,0,0,114,226,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,236,0,0,0,213, + 4,0,0,115,4,0,0,0,4,1,255,128,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,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,10,0,0,0,122, + 8,60,115,116,114,105,110,103,62,114,222,0,0,0,84,41, + 1,114,238,0,0,0,41,1,114,239,0,0,0,114,226,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,220,0,0,0,216,4,0,0,115,4,0,0,0,16, + 1,255,128,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,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,114,0,0,0,114,7,0,0,0,114,13,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,224, - 0,0,0,222,4,0,0,115,4,0,0,0,4,1,255,128, - 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,67,0,0,0,115,4,0,0,0,100,1,83,0, + 114,217,0,0,0,114,7,0,0,0,114,218,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,219, + 0,0,0,219,4,0,0,115,4,0,0,0,4,0,255,128, + 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,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,114,0,0,0,114,7,0,0,0,114,13,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,224,0,0,0,222,4,0,0,115,4,0,0,0,4,1, + 255,128,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,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,67,0,0,0,115,26,0,0,0,116,0, + 160,1,100,1,124,0,106,2,161,2,1,0,116,0,160,3, + 124,0,124,1,161,2,83,0,41,3,122,98,76,111,97,100, + 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 105,115,32,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,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,78,41,4,114,139,0,0,0,114,153, + 0,0,0,114,20,1,0,0,114,225,0,0,0,114,226,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,227,0,0,0,225,4,0,0,115,10,0,0,0,6, + 7,4,1,4,255,12,3,255,128,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,130,0,0,0,114, + 129,0,0,0,114,131,0,0,0,114,216,0,0,0,114,213, + 0,0,0,114,41,1,0,0,114,186,0,0,0,114,236,0, + 0,0,114,220,0,0,0,114,219,0,0,0,114,224,0,0, + 0,114,227,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,40,1,0,0,197, + 4,0,0,115,22,0,0,0,8,0,8,1,2,3,10,1, + 8,8,8,3,8,3,8,3,8,3,12,3,255,128,114,40, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132, + 0,131,1,90,6,101,7,100,6,100,7,132,0,131,1,90, + 8,101,7,100,8,100,9,132,0,131,1,90,9,101,7,100, + 19,100,11,100,12,132,1,131,1,90,10,101,7,100,20,100, + 13,100,14,132,1,131,1,90,11,101,7,100,21,100,15,100, + 16,132,1,131,1,90,12,101,4,100,17,100,18,132,0,131, + 1,90,13,100,10,83,0,41,22,218,10,80,97,116,104,70, + 105,110,100,101,114,122,62,77,101,116,97,32,112,97,116,104, + 32,102,105,110,100,101,114,32,102,111,114,32,115,121,115,46, + 112,97,116,104,32,97,110,100,32,112,97,99,107,97,103,101, + 32,95,95,112,97,116,104,95,95,32,97,116,116,114,105,98, + 117,116,101,115,46,99,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,64, + 0,0,0,116,0,116,1,106,2,160,3,161,0,131,1,68, + 0,93,44,92,2,125,0,125,1,124,1,100,1,117,0,114, + 40,116,1,106,2,124,0,61,0,113,14,116,4,124,1,100, + 2,131,2,114,58,124,1,160,5,161,0,1,0,113,14,100, + 1,83,0,41,3,122,125,67,97,108,108,32,116,104,101,32, + 105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101, + 115,40,41,32,109,101,116,104,111,100,32,111,110,32,97,108, + 108,32,112,97,116,104,32,101,110,116,114,121,32,102,105,110, + 100,101,114,115,10,32,32,32,32,32,32,32,32,115,116,111, + 114,101,100,32,105,110,32,115,121,115,46,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,115,32, + 40,119,104,101,114,101,32,105,109,112,108,101,109,101,110,116, + 101,100,41,46,78,218,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,15,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,133,0,0,0,114,43,1,0,0,41,2,114,121,0, + 0,0,218,6,102,105,110,100,101,114,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,43,1,0,0,244,4, + 0,0,115,16,0,0,0,22,4,8,1,10,1,10,1,8, + 1,2,128,4,252,255,128,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,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,9,0,0,0,67,0,0,0,115,76, + 0,0,0,116,0,106,1,100,1,117,1,114,28,116,0,106, + 1,115,28,116,2,160,3,100,2,116,4,161,2,1,0,116, + 0,106,1,68,0,93,34,125,1,122,14,124,1,124,0,131, + 1,87,0,2,0,1,0,83,0,4,0,116,5,121,74,1, + 0,1,0,1,0,89,0,113,34,100,1,83,0,119,0,41, + 3,122,46,83,101,97,114,99,104,32,115,121,115,46,112,97, + 116,104,95,104,111,111,107,115,32,102,111,114,32,97,32,102, + 105,110,100,101,114,32,102,111,114,32,39,112,97,116,104,39, + 46,78,122,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,15,0, + 0,0,218,10,112,97,116,104,95,104,111,111,107,115,114,81, + 0,0,0,114,82,0,0,0,114,142,0,0,0,114,122,0, + 0,0,41,2,114,52,0,0,0,90,4,104,111,111,107,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,11, + 95,112,97,116,104,95,104,111,111,107,115,254,4,0,0,115, + 20,0,0,0,16,3,12,1,10,1,2,1,14,1,12,1, + 4,1,4,2,2,253,255,128,122,22,80,97,116,104,70,105, + 110,100,101,114,46,95,112,97,116,104,95,104,111,111,107,115, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,8,0,0,0,67,0,0,0,115,100,0,0,0,124,1, + 100,1,107,2,114,40,122,12,116,0,160,1,161,0,125,1, + 87,0,110,18,4,0,116,2,121,98,1,0,1,0,1,0, + 89,0,100,2,83,0,122,16,116,3,106,4,124,1,25,0, + 125,2,87,0,124,2,83,0,4,0,116,5,121,96,1,0, + 1,0,1,0,124,0,160,6,124,1,161,1,125,2,124,2, + 116,3,106,4,124,1,60,0,89,0,124,2,83,0,119,0, + 119,0,41,3,122,210,71,101,116,32,116,104,101,32,102,105, + 110,100,101,114,32,102,111,114,32,116,104,101,32,112,97,116, + 104,32,101,110,116,114,121,32,102,114,111,109,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,10,32,32,32,32,32,32,32,32,73, + 102,32,116,104,101,32,112,97,116,104,32,101,110,116,114,121, + 32,105,115,32,110,111,116,32,105,110,32,116,104,101,32,99, + 97,99,104,101,44,32,102,105,110,100,32,116,104,101,32,97, + 112,112,114,111,112,114,105,97,116,101,32,102,105,110,100,101, + 114,10,32,32,32,32,32,32,32,32,97,110,100,32,99,97, + 99,104,101,32,105,116,46,32,73,102,32,110,111,32,102,105, + 110,100,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,10,0,0,0,78,41,7, + 114,18,0,0,0,114,63,0,0,0,218,17,70,105,108,101, + 78,111,116,70,111,117,110,100,69,114,114,111,114,114,15,0, + 0,0,114,45,1,0,0,218,8,75,101,121,69,114,114,111, + 114,114,49,1,0,0,41,3,114,202,0,0,0,114,52,0, + 0,0,114,47,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,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,11,5,0,0, + 115,30,0,0,0,8,8,2,1,12,1,12,1,6,3,2, + 1,12,1,4,4,12,253,10,1,12,1,4,1,2,253,2, + 250,255,128,122,31,80,97,116,104,70,105,110,100,101,114,46, + 95,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,99,3,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,4,0,0,0,67,0,0,0,115,82,0, + 0,0,116,0,124,2,100,1,131,2,114,26,124,2,160,1, + 124,1,161,1,92,2,125,3,125,4,110,14,124,2,160,2, + 124,1,161,1,125,3,103,0,125,4,124,3,100,0,117,1, + 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,141,0,0,0,41,7,114,133, + 0,0,0,114,141,0,0,0,114,210,0,0,0,114,139,0, + 0,0,114,205,0,0,0,114,187,0,0,0,114,182,0,0, + 0,41,6,114,202,0,0,0,114,143,0,0,0,114,47,1, + 0,0,114,144,0,0,0,114,145,0,0,0,114,191,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,16,95,108,101,103,97,99,121,95,103,101,116,95,115,112, + 101,99,33,5,0,0,115,20,0,0,0,10,4,16,1,10, + 2,4,1,8,1,12,1,12,1,6,1,4,1,255,128,122, + 27,80,97,116,104,70,105,110,100,101,114,46,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,78,99,4,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,5,0, + 0,0,67,0,0,0,115,166,0,0,0,103,0,125,4,124, + 2,68,0,93,134,125,5,116,0,124,5,116,1,116,2,102, + 2,131,2,115,28,113,8,124,0,160,3,124,5,161,1,125, + 6,124,6,100,1,117,1,114,142,116,4,124,6,100,2,131, + 2,114,70,124,6,160,5,124,1,124,3,161,2,125,7,110, + 12,124,0,160,6,124,1,124,6,161,2,125,7,124,7,100, + 1,117,0,114,92,113,8,124,7,106,7,100,1,117,1,114, + 110,124,7,2,0,1,0,83,0,124,7,106,8,125,8,124, + 8,100,1,117,0,114,132,116,9,100,3,131,1,130,1,124, + 4,160,10,124,8,161,1,1,0,113,8,116,11,160,12,124, + 1,100,1,161,2,125,7,124,4,124,7,95,8,124,7,83, + 0,41,4,122,63,70,105,110,100,32,116,104,101,32,108,111, + 97,100,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,207,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,165,0,0,0,114,90,0,0,0,218,5,98,121,116, + 101,115,114,52,1,0,0,114,133,0,0,0,114,207,0,0, + 0,114,53,1,0,0,114,144,0,0,0,114,182,0,0,0, + 114,122,0,0,0,114,171,0,0,0,114,139,0,0,0,114, + 187,0,0,0,41,9,114,202,0,0,0,114,143,0,0,0, + 114,52,0,0,0,114,206,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,47,1,0,0,114,191,0,0,0,114,145,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 9,95,103,101,116,95,115,112,101,99,48,5,0,0,115,44, + 0,0,0,4,5,8,1,14,1,2,1,10,1,8,1,10, + 1,14,1,12,2,8,1,2,1,10,1,8,1,6,1,8, + 1,8,1,10,5,2,128,12,2,6,1,4,1,255,128,122, + 20,80,97,116,104,70,105,110,100,101,114,46,95,103,101,116, + 95,115,112,101,99,99,4,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,5,0,0,0,67,0,0,0,115,94, + 0,0,0,124,2,100,1,117,0,114,14,116,0,106,1,125, + 2,124,0,160,2,124,1,124,2,124,3,161,3,125,4,124, + 4,100,1,117,0,114,40,100,1,83,0,124,4,106,3,100, + 1,117,0,114,90,124,4,106,4,125,5,124,5,114,86,100, + 1,124,4,95,5,116,6,124,1,124,5,124,0,106,2,131, + 3,124,4,95,4,124,4,83,0,100,1,83,0,124,4,83, + 0,41,2,122,141,84,114,121,32,116,111,32,102,105,110,100, + 32,97,32,115,112,101,99,32,102,111,114,32,39,102,117,108, + 108,110,97,109,101,39,32,111,110,32,115,121,115,46,112,97, + 116,104,32,111,114,32,39,112,97,116,104,39,46,10,10,32, + 32,32,32,32,32,32,32,84,104,101,32,115,101,97,114,99, + 104,32,105,115,32,98,97,115,101,100,32,111,110,32,115,121, + 115,46,112,97,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,15,0,0,0,114,52,0,0,0,114, + 56,1,0,0,114,144,0,0,0,114,182,0,0,0,114,185, + 0,0,0,114,18,1,0,0,41,6,114,202,0,0,0,114, + 143,0,0,0,114,52,0,0,0,114,206,0,0,0,114,191, + 0,0,0,114,55,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,207,0,0,0,80,5,0,0, + 115,28,0,0,0,8,6,6,1,14,1,8,1,4,1,10, + 1,6,1,4,1,6,3,16,1,4,1,4,2,4,2,255, + 128,122,20,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,115,112,101,99,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, + 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, + 3,124,3,100,1,117,0,114,24,100,1,83,0,124,3,106, + 1,83,0,41,2,122,170,102,105,110,100,32,116,104,101,32, + 109,111,100,117,108,101,32,111,110,32,115,121,115,46,112,97, + 116,104,32,111,114,32,39,112,97,116,104,39,32,98,97,115, + 101,100,32,111,110,32,115,121,115,46,112,97,116,104,95,104, + 111,111,107,115,32,97,110,100,10,32,32,32,32,32,32,32, + 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,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,210,0,0,0, + 104,5,0,0,115,10,0,0,0,12,8,8,1,4,1,6, + 1,255,128,122,22,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,109,111,100,117,108,101,99,0,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 79,0,0,0,115,28,0,0,0,100,1,100,2,108,0,109, + 1,125,2,1,0,124,2,106,2,124,0,105,0,124,1,164, + 1,142,1,83,0,41,4,97,32,1,0,0,10,32,32,32, + 32,32,32,32,32,70,105,110,100,32,100,105,115,116,114,105, + 98,117,116,105,111,110,115,46,10,10,32,32,32,32,32,32, + 32,32,82,101,116,117,114,110,32,97,110,32,105,116,101,114, + 97,98,108,101,32,111,102,32,97,108,108,32,68,105,115,116, + 114,105,98,117,116,105,111,110,32,105,110,115,116,97,110,99, + 101,115,32,99,97,112,97,98,108,101,32,111,102,10,32,32, + 32,32,32,32,32,32,108,111,97,100,105,110,103,32,116,104, + 101,32,109,101,116,97,100,97,116,97,32,102,111,114,32,112, + 97,99,107,97,103,101,115,32,109,97,116,99,104,105,110,103, + 32,96,96,99,111,110,116,101,120,116,46,110,97,109,101,96, + 96,10,32,32,32,32,32,32,32,32,40,111,114,32,97,108, + 108,32,110,97,109,101,115,32,105,102,32,96,96,78,111,110, + 101,96,96,32,105,110,100,105,99,97,116,101,100,41,32,97, + 108,111,110,103,32,116,104,101,32,112,97,116,104,115,32,105, + 110,32,116,104,101,32,108,105,115,116,10,32,32,32,32,32, + 32,32,32,111,102,32,100,105,114,101,99,116,111,114,105,101, + 115,32,96,96,99,111,110,116,101,120,116,46,112,97,116,104, + 96,96,46,10,32,32,32,32,32,32,32,32,114,0,0,0, + 0,41,1,218,18,77,101,116,97,100,97,116,97,80,97,116, + 104,70,105,110,100,101,114,78,41,3,90,18,105,109,112,111, + 114,116,108,105,98,46,109,101,116,97,100,97,116,97,114,57, + 1,0,0,218,18,102,105,110,100,95,100,105,115,116,114,105, + 98,117,116,105,111,110,115,41,3,114,124,0,0,0,114,125, + 0,0,0,114,57,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,58,1,0,0,117,5,0,0, + 115,6,0,0,0,12,10,16,1,255,128,122,29,80,97,116, + 104,70,105,110,100,101,114,46,102,105,110,100,95,100,105,115, + 116,114,105,98,117,116,105,111,110,115,41,1,78,41,2,78, + 78,41,1,78,41,14,114,130,0,0,0,114,129,0,0,0, + 114,131,0,0,0,114,132,0,0,0,114,213,0,0,0,114, + 43,1,0,0,114,49,1,0,0,114,214,0,0,0,114,52, + 1,0,0,114,53,1,0,0,114,56,1,0,0,114,207,0, + 0,0,114,210,0,0,0,114,58,1,0,0,114,7,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,42,1,0,0,240,4,0,0,115,38,0,0,0,8,0, + 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, + 10,1,2,14,12,1,2,31,12,1,2,23,12,1,2,12, + 14,1,255,128,114,42,1,0,0,99,0,0,0,0,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,90,5,101,6,90,7,100,6,100,7,132,0,90,8,100, + 8,100,9,132,0,90,9,100,19,100,11,100,12,132,1,90, + 10,100,13,100,14,132,0,90,11,101,12,100,15,100,16,132, + 0,131,1,90,13,100,17,100,18,132,0,90,14,100,10,83, + 0,41,20,218,10,70,105,108,101,70,105,110,100,101,114,122, + 172,70,105,108,101,45,98,97,115,101,100,32,102,105,110,100, + 101,114,46,10,10,32,32,32,32,73,110,116,101,114,97,99, + 116,105,111,110,115,32,119,105,116,104,32,116,104,101,32,102, + 105,108,101,32,115,121,115,116,101,109,32,97,114,101,32,99, + 97,99,104,101,100,32,102,111,114,32,112,101,114,102,111,114, + 109,97,110,99,101,44,32,98,101,105,110,103,10,32,32,32, + 32,114,101,102,114,101,115,104,101,100,32,119,104,101,110,32, + 116,104,101,32,100,105,114,101,99,116,111,114,121,32,116,104, + 101,32,102,105,110,100,101,114,32,105,115,32,104,97,110,100, + 108,105,110,103,32,104,97,115,32,98,101,101,110,32,109,111, + 100,105,102,105,101,100,46,10,10,32,32,32,32,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,6,0, + 0,0,7,0,0,0,115,84,0,0,0,103,0,125,3,124, + 2,68,0,93,32,92,2,137,0,125,4,124,3,160,0,135, + 0,102,1,100,1,100,2,132,8,124,4,68,0,131,1,161, + 1,1,0,113,8,124,3,124,0,95,1,124,1,112,54,100, + 3,124,0,95,2,100,4,124,0,95,3,116,4,131,0,124, + 0,95,5,116,4,131,0,124,0,95,6,100,5,83,0,41, + 6,122,154,73,110,105,116,105,97,108,105,122,101,32,119,105, + 116,104,32,116,104,101,32,112,97,116,104,32,116,111,32,115, + 101,97,114,99,104,32,111,110,32,97,110,100,32,97,32,118, + 97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,111, + 102,10,32,32,32,32,32,32,32,32,50,45,116,117,112,108, + 101,115,32,99,111,110,116,97,105,110,105,110,103,32,116,104, + 101,32,108,111,97,100,101,114,32,97,110,100,32,116,104,101, + 32,102,105,108,101,32,115,117,102,102,105,120,101,115,32,116, + 104,101,32,108,111,97,100,101,114,10,32,32,32,32,32,32, + 32,32,114,101,99,111,103,110,105,122,101,115,46,99,1,0, + 0,0,0,0,0,0,0,0,0,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,114,0,0,0,114,7,0,0,0,114,14,1,0,0, + 169,1,114,144,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,9,0,0,0,146,5,0,0,115,4,0,0,0,22, + 0,255,128,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,79,0,0,0, + 114,109,0,0,0,78,41,7,114,171,0,0,0,218,8,95, + 108,111,97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0,114,7,0,0,0,114, + 60,1,0,0,114,8,0,0,0,114,216,0,0,0,140,5, + 0,0,115,18,0,0,0,4,4,12,1,26,1,6,1,10, + 2,6,1,8,1,12,1,255,128,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,0,0,0,0,1,0,0,0,2, + 0,0,0,67,0,0,0,115,10,0,0,0,100,1,124,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,109,0,0,0,78,41, + 1,114,62,1,0,0,114,253,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,43,1,0,0,154, + 5,0,0,115,4,0,0,0,10,2,255,128,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,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, + 0,0,0,115,42,0,0,0,124,0,160,0,124,1,161,1, + 125,2,124,2,100,1,117,0,114,26,100,1,103,0,102,2, + 83,0,124,2,106,1,124,2,106,2,112,38,103,0,102,2, + 83,0,41,2,122,197,84,114,121,32,116,111,32,102,105,110, + 100,32,97,32,108,111,97,100,101,114,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,44,32,111,114,32,116,104,101,32,110,97,109,101, + 115,112,97,99,101,10,32,32,32,32,32,32,32,32,112,97, + 99,107,97,103,101,32,112,111,114,116,105,111,110,115,46,32, + 82,101,116,117,114,110,115,32,40,108,111,97,100,101,114,44, + 32,108,105,115,116,45,111,102,45,112,111,114,116,105,111,110, + 115,41,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,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,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,207, + 0,0,0,114,144,0,0,0,114,182,0,0,0,41,3,114, + 123,0,0,0,114,143,0,0,0,114,191,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,141,0, + 0,0,160,5,0,0,115,10,0,0,0,10,7,8,1,8, + 1,16,1,255,128,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,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,181,0,0,0,41,1,114, + 194,0,0,0,41,7,114,123,0,0,0,114,192,0,0,0, + 114,143,0,0,0,114,52,0,0,0,90,4,115,109,115,108, + 114,206,0,0,0,114,144,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,56,1,0,0,172,5, + 0,0,115,10,0,0,0,10,1,8,1,2,1,6,255,255, + 128,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,0,0,0, + 0,0,0,0,0,14,0,0,0,8,0,0,0,67,0,0, + 0,115,100,1,0,0,100,1,125,3,124,1,160,0,100,2, + 161,1,100,3,25,0,125,4,122,24,116,1,124,0,106,2, + 112,34,116,3,160,4,161,0,131,1,106,5,125,5,87,0, + 110,20,4,0,116,6,144,1,121,98,1,0,1,0,1,0, + 100,4,125,5,89,0,124,5,124,0,106,7,107,3,114,88, + 124,0,160,8,161,0,1,0,124,5,124,0,95,7,116,9, + 131,0,114,110,124,0,106,10,125,6,124,4,160,11,161,0, + 125,7,110,10,124,0,106,12,125,6,124,4,125,7,124,7, + 124,6,118,0,114,214,116,13,124,0,106,2,124,4,131,2, + 125,8,124,0,106,14,68,0,93,58,92,2,125,9,125,10, + 100,5,124,9,23,0,125,11,116,13,124,8,124,11,131,2, + 125,12,116,15,124,12,131,1,114,204,124,0,160,16,124,10, + 124,1,124,12,124,8,103,1,124,2,161,5,2,0,1,0, + 83,0,113,146,116,17,124,8,131,1,125,3,124,0,106,14, + 68,0,93,86,92,2,125,9,125,10,116,13,124,0,106,2, + 124,4,124,9,23,0,131,2,125,12,116,18,106,19,100,6, + 124,12,100,3,100,7,141,3,1,0,124,7,124,9,23,0, + 124,6,118,0,144,1,114,50,116,15,124,12,131,1,144,1, + 114,50,124,0,160,16,124,10,124,1,124,12,100,8,124,2, + 161,5,2,0,1,0,83,0,113,220,124,3,144,1,114,94, + 116,18,160,19,100,9,124,8,161,2,1,0,116,18,160,20, + 124,1,100,8,161,2,125,13,124,8,103,1,124,13,95,21, + 124,13,83,0,100,8,83,0,119,0,41,10,122,111,84,114, + 121,32,116,111,32,102,105,110,100,32,97,32,115,112,101,99, + 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, + 101,100,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,82,101,116,117,114,110,115,32,116,104,101,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,79, + 0,0,0,114,39,0,0,0,114,109,0,0,0,114,216,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,49,0,0,0,114,57,0, + 0,0,114,52,0,0,0,114,18,0,0,0,114,63,0,0, + 0,114,7,1,0,0,114,58,0,0,0,114,62,1,0,0, + 218,11,95,102,105,108,108,95,99,97,99,104,101,114,21,0, + 0,0,114,65,1,0,0,114,110,0,0,0,114,64,1,0, + 0,114,48,0,0,0,114,61,1,0,0,114,62,0,0,0, + 114,56,1,0,0,114,64,0,0,0,114,139,0,0,0,114, + 153,0,0,0,114,187,0,0,0,114,182,0,0,0,41,14, + 114,123,0,0,0,114,143,0,0,0,114,206,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,173,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, + 15,1,0,0,114,192,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,191,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,207,0,0,0,177,5,0,0, + 115,80,0,0,0,4,5,14,1,2,1,24,1,14,1,6, + 1,10,1,8,1,6,1,6,2,6,1,10,1,6,2,4, + 1,8,2,12,1,14,1,8,1,10,1,8,1,24,1,2, + 128,8,4,14,2,16,1,16,1,14,1,10,1,10,1,4, + 1,8,255,2,128,6,2,12,1,12,1,8,1,4,1,4, + 1,2,219,255,128,122,20,70,105,108,101,70,105,110,100,101, + 114,46,102,105,110,100,95,115,112,101,99,99,1,0,0,0, + 0,0,0,0,0,0,0,0,9,0,0,0,10,0,0,0, + 67,0,0,0,115,190,0,0,0,124,0,106,0,125,1,122, + 22,116,1,160,2,124,1,112,22,116,1,160,3,161,0,161, + 1,125,2,87,0,110,24,4,0,116,4,116,5,116,6,102, + 3,121,188,1,0,1,0,1,0,103,0,125,2,89,0,116, + 7,106,8,160,9,100,1,161,1,115,78,116,10,124,2,131, + 1,124,0,95,11,110,74,116,10,131,0,125,3,124,2,68, + 0,93,56,125,4,124,4,160,12,100,2,161,1,92,3,125, + 5,125,6,125,7,124,6,114,130,100,3,160,13,124,5,124, + 7,160,14,161,0,161,2,125,8,110,4,124,5,125,8,124, + 3,160,15,124,8,161,1,1,0,113,88,124,3,124,0,95, + 11,116,7,106,8,160,9,116,16,161,1,114,184,100,4,100, + 5,132,0,124,2,68,0,131,1,124,0,95,17,100,6,83, + 0,100,6,83,0,119,0,41,7,122,68,70,105,108,108,32, + 116,104,101,32,99,97,99,104,101,32,111,102,32,112,111,116, + 101,110,116,105,97,108,32,109,111,100,117,108,101,115,32,97, + 110,100,32,112,97,99,107,97,103,101,115,32,102,111,114,32, + 116,104,105,115,32,100,105,114,101,99,116,111,114,121,46,114, + 14,0,0,0,114,79,0,0,0,114,69,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,26,0,0,0,116,0,160,1, - 100,1,124,0,106,2,161,2,1,0,116,0,160,3,124,0, - 124,1,161,2,83,0,41,3,122,98,76,111,97,100,32,97, - 32,110,97,109,101,115,112,97,99,101,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, - 32,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,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,78,41,4,114,139,0,0,0,114,153,0,0, - 0,114,20,1,0,0,114,225,0,0,0,114,226,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 227,0,0,0,225,4,0,0,115,10,0,0,0,6,7,4, - 1,4,255,12,3,255,128,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,130,0,0,0,114,129,0, - 0,0,114,131,0,0,0,114,216,0,0,0,114,213,0,0, - 0,114,41,1,0,0,114,186,0,0,0,114,236,0,0,0, - 114,220,0,0,0,114,219,0,0,0,114,224,0,0,0,114, - 227,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,40,1,0,0,197,4,0, - 0,115,22,0,0,0,8,0,8,1,2,3,10,1,8,8, - 8,3,8,3,8,3,8,3,12,3,255,128,114,40,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,64,0,0,0,115,118,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,4,100,4,100,5,132,0,131, - 1,90,6,101,7,100,6,100,7,132,0,131,1,90,8,101, - 7,100,8,100,9,132,0,131,1,90,9,101,7,100,19,100, - 11,100,12,132,1,131,1,90,10,101,7,100,20,100,13,100, - 14,132,1,131,1,90,11,101,7,100,21,100,15,100,16,132, - 1,131,1,90,12,101,4,100,17,100,18,132,0,131,1,90, - 13,100,10,83,0,41,22,218,10,80,97,116,104,70,105,110, - 100,101,114,122,62,77,101,116,97,32,112,97,116,104,32,102, - 105,110,100,101,114,32,102,111,114,32,115,121,115,46,112,97, - 116,104,32,97,110,100,32,112,97,99,107,97,103,101,32,95, - 95,112,97,116,104,95,95,32,97,116,116,114,105,98,117,116, - 101,115,46,99,0,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, - 0,116,0,116,1,106,2,160,3,161,0,131,1,68,0,93, - 44,92,2,125,0,125,1,124,1,100,1,117,0,114,40,116, - 1,106,2,124,0,61,0,113,14,116,4,124,1,100,2,131, - 2,114,14,124,1,160,5,161,0,1,0,113,14,100,1,83, - 0,41,3,122,125,67,97,108,108,32,116,104,101,32,105,110, - 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,40, - 41,32,109,101,116,104,111,100,32,111,110,32,97,108,108,32, - 112,97,116,104,32,101,110,116,114,121,32,102,105,110,100,101, - 114,115,10,32,32,32,32,32,32,32,32,115,116,111,114,101, - 100,32,105,110,32,115,121,115,46,112,97,116,104,95,105,109, - 112,111,114,116,101,114,95,99,97,99,104,101,115,32,40,119, - 104,101,114,101,32,105,109,112,108,101,109,101,110,116,101,100, - 41,46,78,218,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,15, - 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, - 133,0,0,0,114,43,1,0,0,41,2,114,121,0,0,0, - 218,6,102,105,110,100,101,114,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,43,1,0,0,244,4,0,0, - 115,16,0,0,0,22,4,8,1,10,1,10,1,8,1,2, - 128,4,252,255,128,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,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,9,0,0,0,67,0,0,0,115,76,0,0, - 0,116,0,106,1,100,1,117,1,114,28,116,0,106,1,115, - 28,116,2,160,3,100,2,116,4,161,2,1,0,116,0,106, - 1,68,0,93,34,125,1,122,14,124,1,124,0,131,1,87, - 0,2,0,1,0,83,0,4,0,116,5,121,74,1,0,1, - 0,1,0,89,0,113,34,100,1,83,0,119,0,41,3,122, - 46,83,101,97,114,99,104,32,115,121,115,46,112,97,116,104, - 95,104,111,111,107,115,32,102,111,114,32,97,32,102,105,110, - 100,101,114,32,102,111,114,32,39,112,97,116,104,39,46,78, - 122,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,15,0,0,0, - 218,10,112,97,116,104,95,104,111,111,107,115,114,81,0,0, - 0,114,82,0,0,0,114,142,0,0,0,114,122,0,0,0, - 41,2,114,52,0,0,0,90,4,104,111,111,107,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,95,112, - 97,116,104,95,104,111,111,107,115,254,4,0,0,115,20,0, - 0,0,16,3,12,1,10,1,2,1,14,1,12,1,4,1, - 4,2,2,253,255,128,122,22,80,97,116,104,70,105,110,100, - 101,114,46,95,112,97,116,104,95,104,111,111,107,115,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, - 0,0,0,67,0,0,0,115,100,0,0,0,124,1,100,1, - 107,2,114,40,122,12,116,0,160,1,161,0,125,1,87,0, - 110,18,4,0,116,2,121,98,1,0,1,0,1,0,89,0, - 100,2,83,0,122,16,116,3,106,4,124,1,25,0,125,2, - 87,0,124,2,83,0,4,0,116,5,121,96,1,0,1,0, - 1,0,124,0,160,6,124,1,161,1,125,2,124,2,116,3, - 106,4,124,1,60,0,89,0,124,2,83,0,119,0,119,0, - 41,3,122,210,71,101,116,32,116,104,101,32,102,105,110,100, - 101,114,32,102,111,114,32,116,104,101,32,112,97,116,104,32, - 101,110,116,114,121,32,102,114,111,109,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,10,32,32,32,32,32,32,32,32,73,102,32, - 116,104,101,32,112,97,116,104,32,101,110,116,114,121,32,105, - 115,32,110,111,116,32,105,110,32,116,104,101,32,99,97,99, - 104,101,44,32,102,105,110,100,32,116,104,101,32,97,112,112, - 114,111,112,114,105,97,116,101,32,102,105,110,100,101,114,10, - 32,32,32,32,32,32,32,32,97,110,100,32,99,97,99,104, - 101,32,105,116,46,32,73,102,32,110,111,32,102,105,110,100, - 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,10,0,0,0,78,41,7,114,18, - 0,0,0,114,63,0,0,0,218,17,70,105,108,101,78,111, - 116,70,111,117,110,100,69,114,114,111,114,114,15,0,0,0, - 114,45,1,0,0,218,8,75,101,121,69,114,114,111,114,114, - 49,1,0,0,41,3,114,202,0,0,0,114,52,0,0,0, - 114,47,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,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,11,5,0,0,115,30, - 0,0,0,8,8,2,1,12,1,12,1,6,3,2,1,12, - 1,4,4,12,253,10,1,12,1,4,1,2,253,2,250,255, - 128,122,31,80,97,116,104,70,105,110,100,101,114,46,95,112, - 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,99,3,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,4,0,0,0,67,0,0,0,115,82,0,0,0, - 116,0,124,2,100,1,131,2,114,26,124,2,160,1,124,1, - 161,1,92,2,125,3,125,4,110,14,124,2,160,2,124,1, - 161,1,125,3,103,0,125,4,124,3,100,0,117,1,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,141,0,0,0,41,7,114,133,0,0, - 0,114,141,0,0,0,114,210,0,0,0,114,139,0,0,0, - 114,205,0,0,0,114,187,0,0,0,114,182,0,0,0,41, - 6,114,202,0,0,0,114,143,0,0,0,114,47,1,0,0, - 114,144,0,0,0,114,145,0,0,0,114,191,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,16, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 33,5,0,0,115,20,0,0,0,10,4,16,1,10,2,4, - 1,8,1,12,1,12,1,6,1,4,1,255,128,122,27,80, - 97,116,104,70,105,110,100,101,114,46,95,108,101,103,97,99, - 121,95,103,101,116,95,115,112,101,99,78,99,4,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, - 67,0,0,0,115,166,0,0,0,103,0,125,4,124,2,68, - 0,93,134,125,5,116,0,124,5,116,1,116,2,102,2,131, - 2,115,28,113,8,124,0,160,3,124,5,161,1,125,6,124, - 6,100,1,117,1,114,8,116,4,124,6,100,2,131,2,114, - 70,124,6,160,5,124,1,124,3,161,2,125,7,110,12,124, - 0,160,6,124,1,124,6,161,2,125,7,124,7,100,1,117, - 0,114,92,113,8,124,7,106,7,100,1,117,1,114,110,124, - 7,2,0,1,0,83,0,124,7,106,8,125,8,124,8,100, - 1,117,0,114,132,116,9,100,3,131,1,130,1,124,4,160, - 10,124,8,161,1,1,0,113,8,116,11,160,12,124,1,100, - 1,161,2,125,7,124,4,124,7,95,8,124,7,83,0,41, - 4,122,63,70,105,110,100,32,116,104,101,32,108,111,97,100, - 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,207,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, - 165,0,0,0,114,90,0,0,0,218,5,98,121,116,101,115, - 114,52,1,0,0,114,133,0,0,0,114,207,0,0,0,114, - 53,1,0,0,114,144,0,0,0,114,182,0,0,0,114,122, - 0,0,0,114,171,0,0,0,114,139,0,0,0,114,187,0, - 0,0,41,9,114,202,0,0,0,114,143,0,0,0,114,52, - 0,0,0,114,206,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, - 47,1,0,0,114,191,0,0,0,114,145,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,9,95, - 103,101,116,95,115,112,101,99,48,5,0,0,115,44,0,0, - 0,4,5,8,1,14,1,2,1,10,1,8,1,10,1,14, - 1,12,2,8,1,2,1,10,1,8,1,6,1,8,1,8, - 1,10,5,2,128,12,2,6,1,4,1,255,128,122,20,80, - 97,116,104,70,105,110,100,101,114,46,95,103,101,116,95,115, - 112,101,99,99,4,0,0,0,0,0,0,0,0,0,0,0, - 6,0,0,0,5,0,0,0,67,0,0,0,115,94,0,0, - 0,124,2,100,1,117,0,114,14,116,0,106,1,125,2,124, - 0,160,2,124,1,124,2,124,3,161,3,125,4,124,4,100, - 1,117,0,114,40,100,1,83,0,124,4,106,3,100,1,117, - 0,114,90,124,4,106,4,125,5,124,5,114,86,100,1,124, - 4,95,5,116,6,124,1,124,5,124,0,106,2,131,3,124, - 4,95,4,124,4,83,0,100,1,83,0,124,4,83,0,41, - 2,122,141,84,114,121,32,116,111,32,102,105,110,100,32,97, - 32,115,112,101,99,32,102,111,114,32,39,102,117,108,108,110, - 97,109,101,39,32,111,110,32,115,121,115,46,112,97,116,104, - 32,111,114,32,39,112,97,116,104,39,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,115,101,97,114,99,104,32, - 105,115,32,98,97,115,101,100,32,111,110,32,115,121,115,46, - 112,97,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,15,0,0,0,114,52,0,0,0,114,56,1, - 0,0,114,144,0,0,0,114,182,0,0,0,114,185,0,0, - 0,114,18,1,0,0,41,6,114,202,0,0,0,114,143,0, - 0,0,114,52,0,0,0,114,206,0,0,0,114,191,0,0, - 0,114,55,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,207,0,0,0,80,5,0,0,115,28, - 0,0,0,8,6,6,1,14,1,8,1,4,1,10,1,6, - 1,4,1,6,3,16,1,4,1,4,2,4,2,255,128,122, - 20,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100, - 95,115,112,101,99,99,3,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,30, - 0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,124, - 3,100,1,117,0,114,24,100,1,83,0,124,3,106,1,83, - 0,41,2,122,170,102,105,110,100,32,116,104,101,32,109,111, - 100,117,108,101,32,111,110,32,115,121,115,46,112,97,116,104, - 32,111,114,32,39,112,97,116,104,39,32,98,97,115,101,100, - 32,111,110,32,115,121,115,46,112,97,116,104,95,104,111,111, - 107,115,32,97,110,100,10,32,32,32,32,32,32,32,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,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,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,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,208,0,0,0,114,209,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,210,0,0,0,104,5, - 0,0,115,10,0,0,0,12,8,8,1,4,1,6,1,255, - 128,122,22,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,0,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,4,0,0,0,79,0, - 0,0,115,28,0,0,0,100,1,100,2,108,0,109,1,125, - 2,1,0,124,2,106,2,124,0,105,0,124,1,164,1,142, - 1,83,0,41,4,97,32,1,0,0,10,32,32,32,32,32, - 32,32,32,70,105,110,100,32,100,105,115,116,114,105,98,117, - 116,105,111,110,115,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,97,110,32,105,116,101,114,97,98, - 108,101,32,111,102,32,97,108,108,32,68,105,115,116,114,105, - 98,117,116,105,111,110,32,105,110,115,116,97,110,99,101,115, - 32,99,97,112,97,98,108,101,32,111,102,10,32,32,32,32, - 32,32,32,32,108,111,97,100,105,110,103,32,116,104,101,32, - 109,101,116,97,100,97,116,97,32,102,111,114,32,112,97,99, - 107,97,103,101,115,32,109,97,116,99,104,105,110,103,32,96, - 96,99,111,110,116,101,120,116,46,110,97,109,101,96,96,10, - 32,32,32,32,32,32,32,32,40,111,114,32,97,108,108,32, - 110,97,109,101,115,32,105,102,32,96,96,78,111,110,101,96, - 96,32,105,110,100,105,99,97,116,101,100,41,32,97,108,111, - 110,103,32,116,104,101,32,112,97,116,104,115,32,105,110,32, - 116,104,101,32,108,105,115,116,10,32,32,32,32,32,32,32, - 32,111,102,32,100,105,114,101,99,116,111,114,105,101,115,32, - 96,96,99,111,110,116,101,120,116,46,112,97,116,104,96,96, - 46,10,32,32,32,32,32,32,32,32,114,0,0,0,0,41, - 1,218,18,77,101,116,97,100,97,116,97,80,97,116,104,70, - 105,110,100,101,114,78,41,3,90,18,105,109,112,111,114,116, - 108,105,98,46,109,101,116,97,100,97,116,97,114,57,1,0, - 0,218,18,102,105,110,100,95,100,105,115,116,114,105,98,117, - 116,105,111,110,115,41,3,114,124,0,0,0,114,125,0,0, - 0,114,57,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,58,1,0,0,117,5,0,0,115,6, - 0,0,0,12,10,16,1,255,128,122,29,80,97,116,104,70, - 105,110,100,101,114,46,102,105,110,100,95,100,105,115,116,114, - 105,98,117,116,105,111,110,115,41,1,78,41,2,78,78,41, - 1,78,41,14,114,130,0,0,0,114,129,0,0,0,114,131, - 0,0,0,114,132,0,0,0,114,213,0,0,0,114,43,1, - 0,0,114,49,1,0,0,114,214,0,0,0,114,52,1,0, - 0,114,53,1,0,0,114,56,1,0,0,114,207,0,0,0, - 114,210,0,0,0,114,58,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,42, - 1,0,0,240,4,0,0,115,38,0,0,0,8,0,4,2, - 2,2,10,1,2,9,10,1,2,12,10,1,2,21,10,1, - 2,14,12,1,2,31,12,1,2,23,12,1,2,12,14,1, - 255,128,114,42,1,0,0,99,0,0,0,0,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,90, - 5,101,6,90,7,100,6,100,7,132,0,90,8,100,8,100, - 9,132,0,90,9,100,19,100,11,100,12,132,1,90,10,100, - 13,100,14,132,0,90,11,101,12,100,15,100,16,132,0,131, - 1,90,13,100,17,100,18,132,0,90,14,100,10,83,0,41, - 20,218,10,70,105,108,101,70,105,110,100,101,114,122,172,70, - 105,108,101,45,98,97,115,101,100,32,102,105,110,100,101,114, - 46,10,10,32,32,32,32,73,110,116,101,114,97,99,116,105, - 111,110,115,32,119,105,116,104,32,116,104,101,32,102,105,108, - 101,32,115,121,115,116,101,109,32,97,114,101,32,99,97,99, - 104,101,100,32,102,111,114,32,112,101,114,102,111,114,109,97, - 110,99,101,44,32,98,101,105,110,103,10,32,32,32,32,114, - 101,102,114,101,115,104,101,100,32,119,104,101,110,32,116,104, - 101,32,100,105,114,101,99,116,111,114,121,32,116,104,101,32, - 102,105,110,100,101,114,32,105,115,32,104,97,110,100,108,105, - 110,103,32,104,97,115,32,98,101,101,110,32,109,111,100,105, - 102,105,101,100,46,10,10,32,32,32,32,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 7,0,0,0,115,84,0,0,0,103,0,125,3,124,2,68, - 0,93,32,92,2,137,0,125,4,124,3,160,0,135,0,102, - 1,100,1,100,2,132,8,124,4,68,0,131,1,161,1,1, - 0,113,8,124,3,124,0,95,1,124,1,112,54,100,3,124, - 0,95,2,100,4,124,0,95,3,116,4,131,0,124,0,95, - 5,116,4,131,0,124,0,95,6,100,5,83,0,41,6,122, - 154,73,110,105,116,105,97,108,105,122,101,32,119,105,116,104, - 32,116,104,101,32,112,97,116,104,32,116,111,32,115,101,97, - 114,99,104,32,111,110,32,97,110,100,32,97,32,118,97,114, - 105,97,98,108,101,32,110,117,109,98,101,114,32,111,102,10, - 32,32,32,32,32,32,32,32,50,45,116,117,112,108,101,115, - 32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,32, - 108,111,97,100,101,114,32,97,110,100,32,116,104,101,32,102, - 105,108,101,32,115,117,102,102,105,120,101,115,32,116,104,101, - 32,108,111,97,100,101,114,10,32,32,32,32,32,32,32,32, - 114,101,99,111,103,110,105,122,101,115,46,99,1,0,0,0, - 0,0,0,0,0,0,0,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, - 114,0,0,0,114,7,0,0,0,114,14,1,0,0,169,1, - 114,144,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 9,0,0,0,146,5,0,0,115,4,0,0,0,22,0,255, - 128,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,79,0,0,0,114,109, - 0,0,0,78,41,7,114,171,0,0,0,218,8,95,108,111, - 97,100,101,114,115,114,52,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,123,0,0,0,114,52,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,193,0,0,0,114,7,0,0,0,114,60,1, - 0,0,114,8,0,0,0,114,216,0,0,0,140,5,0,0, - 115,18,0,0,0,4,4,12,1,26,1,6,1,10,2,6, - 1,8,1,12,1,255,128,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,0,0,0,0,1,0,0,0,2,0,0, - 0,67,0,0,0,115,10,0,0,0,100,1,124,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,109,0,0,0,78,41,1,114, - 62,1,0,0,114,253,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,43,1,0,0,154,5,0, - 0,115,4,0,0,0,10,2,255,128,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,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, - 0,115,42,0,0,0,124,0,160,0,124,1,161,1,125,2, - 124,2,100,1,117,0,114,26,100,1,103,0,102,2,83,0, - 124,2,106,1,124,2,106,2,112,38,103,0,102,2,83,0, - 41,2,122,197,84,114,121,32,116,111,32,102,105,110,100,32, - 97,32,108,111,97,100,101,114,32,102,111,114,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, - 101,44,32,111,114,32,116,104,101,32,110,97,109,101,115,112, - 97,99,101,10,32,32,32,32,32,32,32,32,112,97,99,107, - 97,103,101,32,112,111,114,116,105,111,110,115,46,32,82,101, - 116,117,114,110,115,32,40,108,111,97,100,101,114,44,32,108, - 105,115,116,45,111,102,45,112,111,114,116,105,111,110,115,41, - 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, - 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,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,207,0,0, - 0,114,144,0,0,0,114,182,0,0,0,41,3,114,123,0, - 0,0,114,143,0,0,0,114,191,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,141,0,0,0, - 160,5,0,0,115,10,0,0,0,10,7,8,1,8,1,16, - 1,255,128,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,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,181,0,0,0,41,1,114,194,0, - 0,0,41,7,114,123,0,0,0,114,192,0,0,0,114,143, - 0,0,0,114,52,0,0,0,90,4,115,109,115,108,114,206, - 0,0,0,114,144,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,56,1,0,0,172,5,0,0, - 115,10,0,0,0,10,1,8,1,2,1,6,255,255,128,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,0,0,0,0,0, - 0,0,0,14,0,0,0,8,0,0,0,67,0,0,0,115, - 92,1,0,0,100,1,125,3,124,1,160,0,100,2,161,1, - 100,3,25,0,125,4,122,24,116,1,124,0,106,2,112,34, - 116,3,160,4,161,0,131,1,106,5,125,5,87,0,110,20, - 4,0,116,6,144,1,121,90,1,0,1,0,1,0,100,4, - 125,5,89,0,124,5,124,0,106,7,107,3,114,88,124,0, - 160,8,161,0,1,0,124,5,124,0,95,7,116,9,131,0, - 114,110,124,0,106,10,125,6,124,4,160,11,161,0,125,7, - 110,10,124,0,106,12,125,6,124,4,125,7,124,7,124,6, - 118,0,114,212,116,13,124,0,106,2,124,4,131,2,125,8, - 124,0,106,14,68,0,93,56,92,2,125,9,125,10,100,5, - 124,9,23,0,125,11,116,13,124,8,124,11,131,2,125,12, - 116,15,124,12,131,1,114,146,124,0,160,16,124,10,124,1, - 124,12,124,8,103,1,124,2,161,5,2,0,1,0,83,0, - 116,17,124,8,131,1,125,3,124,0,106,14,68,0,93,80, - 92,2,125,9,125,10,116,13,124,0,106,2,124,4,124,9, - 23,0,131,2,125,12,116,18,106,19,100,6,124,12,100,3, - 100,7,141,3,1,0,124,7,124,9,23,0,124,6,118,0, - 114,218,116,15,124,12,131,1,114,218,124,0,160,16,124,10, - 124,1,124,12,100,8,124,2,161,5,2,0,1,0,83,0, - 124,3,144,1,114,86,116,18,160,19,100,9,124,8,161,2, - 1,0,116,18,160,20,124,1,100,8,161,2,125,13,124,8, - 103,1,124,13,95,21,124,13,83,0,100,8,83,0,119,0, - 41,10,122,111,84,114,121,32,116,111,32,102,105,110,100,32, - 97,32,115,112,101,99,32,102,111,114,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, - 115,32,116,104,101,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,79,0,0,0,114,39,0,0,0,114,109, - 0,0,0,114,216,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,49, - 0,0,0,114,57,0,0,0,114,52,0,0,0,114,18,0, - 0,0,114,63,0,0,0,114,7,1,0,0,114,58,0,0, - 0,114,62,1,0,0,218,11,95,102,105,108,108,95,99,97, - 99,104,101,114,21,0,0,0,114,65,1,0,0,114,110,0, - 0,0,114,64,1,0,0,114,48,0,0,0,114,61,1,0, - 0,114,62,0,0,0,114,56,1,0,0,114,64,0,0,0, - 114,139,0,0,0,114,153,0,0,0,114,187,0,0,0,114, - 182,0,0,0,41,14,114,123,0,0,0,114,143,0,0,0, - 114,206,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,173,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,15,1,0,0,114,192,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,191,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,207,0, - 0,0,177,5,0,0,115,76,0,0,0,4,5,14,1,2, - 1,24,1,14,1,6,1,10,1,8,1,6,1,6,2,6, - 1,10,1,6,2,4,1,8,2,12,1,14,1,8,1,10, - 1,8,1,24,1,8,4,14,2,16,1,16,1,12,1,8, - 1,10,1,4,1,8,255,6,2,12,1,12,1,8,1,4, - 1,4,1,2,219,255,128,122,20,70,105,108,101,70,105,110, - 100,101,114,46,102,105,110,100,95,115,112,101,99,99,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,10,0, - 0,0,67,0,0,0,115,190,0,0,0,124,0,106,0,125, - 1,122,22,116,1,160,2,124,1,112,22,116,1,160,3,161, - 0,161,1,125,2,87,0,110,24,4,0,116,4,116,5,116, - 6,102,3,121,188,1,0,1,0,1,0,103,0,125,2,89, - 0,116,7,106,8,160,9,100,1,161,1,115,78,116,10,124, - 2,131,1,124,0,95,11,110,74,116,10,131,0,125,3,124, - 2,68,0,93,56,125,4,124,4,160,12,100,2,161,1,92, - 3,125,5,125,6,125,7,124,6,114,130,100,3,160,13,124, - 5,124,7,160,14,161,0,161,2,125,8,110,4,124,5,125, - 8,124,3,160,15,124,8,161,1,1,0,113,88,124,3,124, - 0,95,11,116,7,106,8,160,9,116,16,161,1,114,184,100, - 4,100,5,132,0,124,2,68,0,131,1,124,0,95,17,100, - 6,83,0,100,6,83,0,119,0,41,7,122,68,70,105,108, - 108,32,116,104,101,32,99,97,99,104,101,32,111,102,32,112, - 111,116,101,110,116,105,97,108,32,109,111,100,117,108,101,115, - 32,97,110,100,32,112,97,99,107,97,103,101,115,32,102,111, - 114,32,116,104,105,115,32,100,105,114,101,99,116,111,114,121, - 46,114,14,0,0,0,114,79,0,0,0,114,69,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,4,0,0,0,83,0,0,0,115,20,0,0,0,104,0, - 124,0,93,12,125,1,124,1,160,0,161,0,146,2,113,4, - 83,0,114,7,0,0,0,41,1,114,110,0,0,0,41,2, - 114,5,0,0,0,90,2,102,110,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,13,0,0,0,254,5,0, - 0,115,4,0,0,0,20,0,255,128,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,52,0,0,0,114,18,0, - 0,0,90,7,108,105,115,116,100,105,114,114,63,0,0,0, - 114,50,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,15,0,0,0,114, - 22,0,0,0,114,23,0,0,0,114,63,1,0,0,114,64, - 1,0,0,114,105,0,0,0,114,70,0,0,0,114,110,0, - 0,0,218,3,97,100,100,114,24,0,0,0,114,65,1,0, - 0,41,9,114,123,0,0,0,114,52,0,0,0,90,8,99, - 111,110,116,101,110,116,115,90,21,108,111,119,101,114,95,115, - 117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,38, - 1,0,0,114,121,0,0,0,114,25,1,0,0,114,15,1, - 0,0,90,8,110,101,119,95,110,97,109,101,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,67,1,0,0, - 225,5,0,0,115,40,0,0,0,6,2,2,1,22,1,18, - 1,6,3,12,3,12,1,6,7,8,1,16,1,4,1,18, - 1,4,2,12,1,6,1,12,1,20,1,4,255,2,233,255, - 128,122,22,70,105,108,101,70,105,110,100,101,114,46,95,102, - 105,108,108,95,99,97,99,104,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,7,0, - 0,0,115,18,0,0,0,135,0,135,1,102,2,100,1,100, - 2,132,8,125,2,124,2,83,0,41,4,97,20,1,0,0, - 65,32,99,108,97,115,115,32,109,101,116,104,111,100,32,119, - 104,105,99,104,32,114,101,116,117,114,110,115,32,97,32,99, - 108,111,115,117,114,101,32,116,111,32,117,115,101,32,111,110, - 32,115,121,115,46,112,97,116,104,95,104,111,111,107,10,32, - 32,32,32,32,32,32,32,119,104,105,99,104,32,119,105,108, - 108,32,114,101,116,117,114,110,32,97,110,32,105,110,115,116, - 97,110,99,101,32,117,115,105,110,103,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,108,111,97,100,101,114,115, - 32,97,110,100,32,116,104,101,32,112,97,116,104,10,32,32, - 32,32,32,32,32,32,99,97,108,108,101,100,32,111,110,32, - 116,104,101,32,99,108,111,115,117,114,101,46,10,10,32,32, - 32,32,32,32,32,32,73,102,32,116,104,101,32,112,97,116, - 104,32,99,97,108,108,101,100,32,111,110,32,116,104,101,32, - 99,108,111,115,117,114,101,32,105,115,32,110,111,116,32,97, - 32,100,105,114,101,99,116,111,114,121,44,32,73,109,112,111, - 114,116,69,114,114,111,114,32,105,115,10,32,32,32,32,32, - 32,32,32,114,97,105,115,101,100,46,10,10,32,32,32,32, - 32,32,32,32,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,19,0,0,0,115,36,0, - 0,0,116,0,124,0,131,1,115,20,116,1,100,1,124,0, - 100,2,141,2,130,1,136,0,124,0,103,1,136,1,162,1, - 82,0,142,0,83,0,41,4,122,45,80,97,116,104,32,104, - 111,111,107,32,102,111,114,32,105,109,112,111,114,116,108,105, - 98,46,109,97,99,104,105,110,101,114,121,46,70,105,108,101, - 70,105,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,56,0,0,0,78,41,2,114, - 64,0,0,0,114,122,0,0,0,114,56,0,0,0,169,2, - 114,202,0,0,0,114,66,1,0,0,114,7,0,0,0,114, - 8,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,10,6, - 0,0,115,8,0,0,0,8,2,12,1,16,1,255,128,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,78,114,7,0,0,0,41,3,114, - 202,0,0,0,114,66,1,0,0,114,72,1,0,0,114,7, - 0,0,0,114,71,1,0,0,114,8,0,0,0,218,9,112, - 97,116,104,95,104,111,111,107,0,6,0,0,115,6,0,0, - 0,14,10,4,6,255,128,122,20,70,105,108,101,70,105,110, - 100,101,114,46,112,97,116,104,95,104,111,111,107,99,1,0, - 0,0,0,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,78,122,16,70,105,108,101, - 70,105,110,100,101,114,40,123,33,114,125,41,41,2,114,70, - 0,0,0,114,52,0,0,0,114,253,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,36,1,0, - 0,18,6,0,0,115,4,0,0,0,12,1,255,128,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,130,0,0,0,114,129,0, - 0,0,114,131,0,0,0,114,132,0,0,0,114,216,0,0, - 0,114,43,1,0,0,114,147,0,0,0,114,210,0,0,0, - 114,141,0,0,0,114,56,1,0,0,114,207,0,0,0,114, - 67,1,0,0,114,214,0,0,0,114,73,1,0,0,114,36, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,59,1,0,0,131,5,0,0, - 115,26,0,0,0,8,0,4,2,8,7,8,14,4,4,8, - 2,8,12,10,5,8,48,2,31,10,1,12,17,255,128,114, - 59,1,0,0,99,4,0,0,0,0,0,0,0,0,0,0, - 0,6,0,0,0,8,0,0,0,67,0,0,0,115,148,0, - 0,0,124,0,160,0,100,1,161,1,125,4,124,0,160,0, - 100,2,161,1,125,5,124,4,115,66,124,5,114,36,124,5, - 106,1,125,4,110,30,124,2,124,3,107,2,114,56,116,2, - 124,1,124,2,131,2,125,4,110,10,116,3,124,1,124,2, - 131,2,125,4,124,5,115,84,116,4,124,1,124,2,124,4, - 100,3,141,3,125,5,122,38,124,5,124,0,100,2,60,0, - 124,4,124,0,100,1,60,0,124,2,124,0,100,4,60,0, - 124,3,124,0,100,5,60,0,87,0,100,0,83,0,4,0, - 116,5,121,142,1,0,1,0,1,0,89,0,100,0,83,0, - 119,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, - 60,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,144,0,0,0,114,12,1,0,0,114,6,1,0,0, - 114,194,0,0,0,218,9,69,120,99,101,112,116,105,111,110, - 41,6,90,2,110,115,114,121,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,144,0,0,0,114,191,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,14,95,102,105,120,95, - 117,112,95,109,111,100,117,108,101,24,6,0,0,115,40,0, - 0,0,10,2,10,1,4,1,4,1,8,1,8,1,12,1, - 10,2,4,1,14,1,2,1,8,1,8,1,8,1,14,1, - 12,1,6,2,2,254,4,255,255,128,114,78,1,0,0,99, - 0,0,0,0,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,5,116,6,102,2,125,2,124,0,124,1,124,2,103, - 3,83,0,41,2,122,95,82,101,116,117,114,110,115,32,97, - 32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,97, - 115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,101, - 114,115,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,78,41,7,114,3,1,0,0,114,167, - 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, - 117,102,102,105,120,101,115,114,6,1,0,0,114,106,0,0, - 0,114,12,1,0,0,114,94,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,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,188,0,0,0,47, - 6,0,0,115,10,0,0,0,12,5,8,1,8,1,10,1, - 255,128,114,188,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, - 115,8,0,0,0,124,0,97,0,100,0,83,0,114,114,0, - 0,0,41,1,114,139,0,0,0,41,1,218,17,95,98,111, - 111,116,115,116,114,97,112,95,109,111,100,117,108,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,21,95, - 115,101,116,95,98,111,111,116,115,116,114,97,112,95,109,111, - 100,117,108,101,58,6,0,0,115,4,0,0,0,8,2,255, - 128,114,81,1,0,0,99,1,0,0,0,0,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,1,161,1,1,0,116,2,106,7,160,8,116,9,161,1, - 1,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,81,1,0,0,114,188,0,0,0, - 114,15,0,0,0,114,48,1,0,0,114,171,0,0,0,114, - 59,1,0,0,114,73,1,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,190,0,0,0,114,42,1,0,0,41,2, - 114,80,1,0,0,90,17,115,117,112,112,111,114,116,101,100, - 95,108,111,97,100,101,114,115,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,218,8,95,105,110,115,116,97,108, - 108,63,6,0,0,115,10,0,0,0,8,2,6,1,20,1, - 16,1,255,128,114,83,1,0,0,41,1,114,68,0,0,0, - 41,1,78,41,3,78,78,78,41,2,114,0,0,0,0,114, - 0,0,0,0,41,1,84,41,1,78,41,1,78,41,83,114, - 132,0,0,0,114,139,0,0,0,114,167,0,0,0,114,72, - 0,0,0,114,15,0,0,0,114,81,0,0,0,114,164,0, - 0,0,114,22,0,0,0,114,211,0,0,0,90,2,110,116, - 114,18,0,0,0,114,196,0,0,0,90,5,112,111,115,105, - 120,114,42,0,0,0,218,3,97,108,108,114,45,0,0,0, - 114,46,0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0, - 114,21,0,0,0,114,33,0,0,0,114,38,0,0,0,114, - 40,0,0,0,114,48,0,0,0,114,55,0,0,0,114,57, - 0,0,0,114,61,0,0,0,114,62,0,0,0,114,64,0, - 0,0,114,67,0,0,0,114,77,0,0,0,218,4,116,121, - 112,101,218,8,95,95,99,111,100,101,95,95,114,166,0,0, - 0,114,31,0,0,0,114,152,0,0,0,114,30,0,0,0, - 114,35,0,0,0,114,243,0,0,0,114,97,0,0,0,114, - 93,0,0,0,114,106,0,0,0,114,190,0,0,0,114,79, - 1,0,0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0, - 0,0,114,117,0,0,0,114,119,0,0,0,114,140,0,0, - 0,114,147,0,0,0,114,156,0,0,0,114,160,0,0,0, - 114,162,0,0,0,114,169,0,0,0,114,174,0,0,0,114, - 175,0,0,0,114,180,0,0,0,218,6,111,98,106,101,99, - 116,114,189,0,0,0,114,194,0,0,0,114,195,0,0,0, - 114,215,0,0,0,114,228,0,0,0,114,246,0,0,0,114, - 6,1,0,0,114,12,1,0,0,114,3,1,0,0,114,18, - 1,0,0,114,40,1,0,0,114,42,1,0,0,114,59,1, - 0,0,114,78,1,0,0,114,188,0,0,0,114,81,1,0, - 0,114,83,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,8,60,109,111,100, - 117,108,101,62,1,0,0,0,115,172,0,0,0,4,0,4, - 22,8,3,8,1,8,1,8,1,8,1,10,3,4,1,8, - 1,10,1,8,2,4,3,10,1,6,2,22,2,8,1,10, - 1,14,1,4,4,4,1,2,1,2,1,4,255,8,4,6, - 16,8,3,8,5,8,5,8,6,8,6,8,12,8,10,8, - 9,8,5,8,7,10,9,10,22,0,127,16,24,12,1,4, - 2,4,1,6,2,6,1,10,1,8,2,6,2,8,2,16, - 2,8,71,8,40,8,19,8,12,8,12,8,31,8,17,8, - 33,8,28,10,24,10,13,10,10,8,11,6,14,4,3,2, - 1,12,255,14,68,14,64,16,30,0,127,14,17,18,50,18, - 45,18,25,14,53,14,63,14,43,0,127,14,20,0,127,10, - 22,8,23,8,11,12,5,255,128, + 0,0,0,83,0,0,0,115,20,0,0,0,104,0,124,0, + 93,12,125,1,124,1,160,0,161,0,146,2,113,4,83,0, + 114,7,0,0,0,41,1,114,110,0,0,0,41,2,114,5, + 0,0,0,90,2,102,110,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,13,0,0,0,254,5,0,0,115, + 4,0,0,0,20,0,255,128,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,52,0,0,0,114,18,0,0,0, + 90,7,108,105,115,116,100,105,114,114,63,0,0,0,114,50, + 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,15,0,0,0,114,22,0, + 0,0,114,23,0,0,0,114,63,1,0,0,114,64,1,0, + 0,114,105,0,0,0,114,70,0,0,0,114,110,0,0,0, + 218,3,97,100,100,114,24,0,0,0,114,65,1,0,0,41, + 9,114,123,0,0,0,114,52,0,0,0,90,8,99,111,110, + 116,101,110,116,115,90,21,108,111,119,101,114,95,115,117,102, + 102,105,120,95,99,111,110,116,101,110,116,115,114,38,1,0, + 0,114,121,0,0,0,114,25,1,0,0,114,15,1,0,0, + 90,8,110,101,119,95,110,97,109,101,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,67,1,0,0,225,5, + 0,0,115,40,0,0,0,6,2,2,1,22,1,18,1,6, + 3,12,3,12,1,6,7,8,1,16,1,4,1,18,1,4, + 2,12,1,6,1,12,1,20,1,4,255,2,233,255,128,122, + 22,70,105,108,101,70,105,110,100,101,114,46,95,102,105,108, + 108,95,99,97,99,104,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0, + 115,18,0,0,0,135,0,135,1,102,2,100,1,100,2,132, + 8,125,2,124,2,83,0,41,4,97,20,1,0,0,65,32, + 99,108,97,115,115,32,109,101,116,104,111,100,32,119,104,105, + 99,104,32,114,101,116,117,114,110,115,32,97,32,99,108,111, + 115,117,114,101,32,116,111,32,117,115,101,32,111,110,32,115, + 121,115,46,112,97,116,104,95,104,111,111,107,10,32,32,32, + 32,32,32,32,32,119,104,105,99,104,32,119,105,108,108,32, + 114,101,116,117,114,110,32,97,110,32,105,110,115,116,97,110, + 99,101,32,117,115,105,110,103,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,108,111,97,100,101,114,115,32,97, + 110,100,32,116,104,101,32,112,97,116,104,10,32,32,32,32, + 32,32,32,32,99,97,108,108,101,100,32,111,110,32,116,104, + 101,32,99,108,111,115,117,114,101,46,10,10,32,32,32,32, + 32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,32, + 99,97,108,108,101,100,32,111,110,32,116,104,101,32,99,108, + 111,115,117,114,101,32,105,115,32,110,111,116,32,97,32,100, + 105,114,101,99,116,111,114,121,44,32,73,109,112,111,114,116, + 69,114,114,111,114,32,105,115,10,32,32,32,32,32,32,32, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,32,32, + 32,32,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,19,0,0,0,115,36,0,0,0, + 116,0,124,0,131,1,115,20,116,1,100,1,124,0,100,2, + 141,2,130,1,136,0,124,0,103,1,136,1,162,1,82,0, + 142,0,83,0,41,4,122,45,80,97,116,104,32,104,111,111, + 107,32,102,111,114,32,105,109,112,111,114,116,108,105,98,46, + 109,97,99,104,105,110,101,114,121,46,70,105,108,101,70,105, + 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,56,0,0,0,78,41,2,114,64,0, + 0,0,114,122,0,0,0,114,56,0,0,0,169,2,114,202, + 0,0,0,114,66,1,0,0,114,7,0,0,0,114,8,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,10,6,0,0, + 115,8,0,0,0,8,2,12,1,16,1,255,128,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,78,114,7,0,0,0,41,3,114,202,0, + 0,0,114,66,1,0,0,114,72,1,0,0,114,7,0,0, + 0,114,71,1,0,0,114,8,0,0,0,218,9,112,97,116, + 104,95,104,111,111,107,0,6,0,0,115,6,0,0,0,14, + 10,4,6,255,128,122,20,70,105,108,101,70,105,110,100,101, + 114,46,112,97,116,104,95,104,111,111,107,99,1,0,0,0, + 0,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,78,122,16,70,105,108,101,70,105, + 110,100,101,114,40,123,33,114,125,41,41,2,114,70,0,0, + 0,114,52,0,0,0,114,253,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,36,1,0,0,18, + 6,0,0,115,4,0,0,0,12,1,255,128,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,130,0,0,0,114,129,0,0,0, + 114,131,0,0,0,114,132,0,0,0,114,216,0,0,0,114, + 43,1,0,0,114,147,0,0,0,114,210,0,0,0,114,141, + 0,0,0,114,56,1,0,0,114,207,0,0,0,114,67,1, + 0,0,114,214,0,0,0,114,73,1,0,0,114,36,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,59,1,0,0,131,5,0,0,115,26, + 0,0,0,8,0,4,2,8,7,8,14,4,4,8,2,8, + 12,10,5,8,48,2,31,10,1,12,17,255,128,114,59,1, + 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,8,0,0,0,67,0,0,0,115,148,0,0,0, + 124,0,160,0,100,1,161,1,125,4,124,0,160,0,100,2, + 161,1,125,5,124,4,115,66,124,5,114,36,124,5,106,1, + 125,4,110,30,124,2,124,3,107,2,114,56,116,2,124,1, + 124,2,131,2,125,4,110,10,116,3,124,1,124,2,131,2, + 125,4,124,5,115,84,116,4,124,1,124,2,124,4,100,3, + 141,3,125,5,122,38,124,5,124,0,100,2,60,0,124,4, + 124,0,100,1,60,0,124,2,124,0,100,4,60,0,124,3, + 124,0,100,5,60,0,87,0,100,0,83,0,4,0,116,5, + 121,142,1,0,1,0,1,0,89,0,100,0,83,0,119,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,60,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, + 144,0,0,0,114,12,1,0,0,114,6,1,0,0,114,194, + 0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6, + 90,2,110,115,114,121,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,144, + 0,0,0,114,191,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,14,95,102,105,120,95,117,112, + 95,109,111,100,117,108,101,24,6,0,0,115,40,0,0,0, + 10,2,10,1,4,1,4,1,8,1,8,1,12,1,10,2, + 4,1,14,1,2,1,8,1,8,1,8,1,14,1,12,1, + 6,2,2,254,4,255,255,128,114,78,1,0,0,99,0,0, + 0,0,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, + 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83, + 0,41,2,122,95,82,101,116,117,114,110,115,32,97,32,108, + 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101, + 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115, + 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,78,41,7,114,3,1,0,0,114,167,0,0, + 0,218,18,101,120,116,101,110,115,105,111,110,95,115,117,102, + 102,105,120,101,115,114,6,1,0,0,114,106,0,0,0,114, + 12,1,0,0,114,94,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,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,188,0,0,0,47,6,0, + 0,115,10,0,0,0,12,5,8,1,8,1,10,1,255,128, + 114,188,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,124,0,97,0,100,0,83,0,114,114,0,0,0, + 41,1,114,139,0,0,0,41,1,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,21,95,115,101, + 116,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, + 108,101,58,6,0,0,115,4,0,0,0,8,2,255,128,114, + 81,1,0,0,99,1,0,0,0,0,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,1, + 161,1,1,0,116,2,106,7,160,8,116,9,161,1,1,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,81,1,0,0,114,188,0,0,0,114,15, + 0,0,0,114,48,1,0,0,114,171,0,0,0,114,59,1, + 0,0,114,73,1,0,0,218,9,109,101,116,97,95,112,97, + 116,104,114,190,0,0,0,114,42,1,0,0,41,2,114,80, + 1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,108, + 111,97,100,101,114,115,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,8,95,105,110,115,116,97,108,108,63, + 6,0,0,115,10,0,0,0,8,2,6,1,20,1,16,1, + 255,128,114,83,1,0,0,41,1,114,68,0,0,0,41,1, + 78,41,3,78,78,78,41,2,114,0,0,0,0,114,0,0, + 0,0,41,1,84,41,1,78,41,1,78,41,83,114,132,0, + 0,0,114,139,0,0,0,114,167,0,0,0,114,72,0,0, + 0,114,15,0,0,0,114,81,0,0,0,114,164,0,0,0, + 114,22,0,0,0,114,211,0,0,0,90,2,110,116,114,18, + 0,0,0,114,196,0,0,0,90,5,112,111,115,105,120,114, + 42,0,0,0,218,3,97,108,108,114,45,0,0,0,114,46, + 0,0,0,114,66,0,0,0,114,25,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,24,0,0,0,114,26,0,0,0,114,21, + 0,0,0,114,33,0,0,0,114,38,0,0,0,114,40,0, + 0,0,114,48,0,0,0,114,55,0,0,0,114,57,0,0, + 0,114,61,0,0,0,114,62,0,0,0,114,64,0,0,0, + 114,67,0,0,0,114,77,0,0,0,218,4,116,121,112,101, + 218,8,95,95,99,111,100,101,95,95,114,166,0,0,0,114, + 31,0,0,0,114,152,0,0,0,114,30,0,0,0,114,35, + 0,0,0,114,243,0,0,0,114,97,0,0,0,114,93,0, + 0,0,114,106,0,0,0,114,190,0,0,0,114,79,1,0, + 0,114,212,0,0,0,114,94,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,102,0,0,0,114,107,0,0,0,114,113,0,0,0, + 114,117,0,0,0,114,119,0,0,0,114,140,0,0,0,114, + 147,0,0,0,114,156,0,0,0,114,160,0,0,0,114,162, + 0,0,0,114,169,0,0,0,114,174,0,0,0,114,175,0, + 0,0,114,180,0,0,0,218,6,111,98,106,101,99,116,114, + 189,0,0,0,114,194,0,0,0,114,195,0,0,0,114,215, + 0,0,0,114,228,0,0,0,114,246,0,0,0,114,6,1, + 0,0,114,12,1,0,0,114,3,1,0,0,114,18,1,0, + 0,114,40,1,0,0,114,42,1,0,0,114,59,1,0,0, + 114,78,1,0,0,114,188,0,0,0,114,81,1,0,0,114, + 83,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,172,0,0,0,4,0,4,22,8, + 3,8,1,8,1,8,1,8,1,10,3,4,1,8,1,10, + 1,8,2,4,3,10,1,6,2,22,2,8,1,10,1,14, + 1,4,4,4,1,2,1,2,1,4,255,8,4,6,16,8, + 3,8,5,8,5,8,6,8,6,8,12,8,10,8,9,8, + 5,8,7,10,9,10,22,0,127,16,24,12,1,4,2,4, + 1,6,2,6,1,10,1,8,2,6,2,8,2,16,2,8, + 71,8,40,8,19,8,12,8,12,8,31,8,17,8,33,8, + 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, + 255,14,68,14,64,16,30,0,127,14,17,18,50,18,45,18, + 25,14,53,14,63,14,43,0,127,14,20,0,127,10,22,8, + 23,8,11,12,5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 66e0f3f7f0405..79296d495b588 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -118,916 +118,916 @@ const unsigned char _Py_M__zipimport[] = { 104,101,10,32,32,32,32,122,105,112,102,105,108,101,32,116, 97,114,103,101,116,101,100,46,10,32,32,32,32,99,2,0, 0,0,0,0,0,0,0,0,0,0,8,0,0,0,9,0, - 0,0,67,0,0,0,115,38,1,0,0,116,0,124,1,116, + 0,0,67,0,0,0,115,40,1,0,0,116,0,124,1,116, 1,131,2,115,28,100,1,100,0,108,2,125,2,124,2,160, 3,124,1,161,1,125,1,124,1,115,44,116,4,100,2,124, 1,100,3,141,2,130,1,116,5,114,60,124,1,160,6,116, 5,116,7,161,2,125,1,103,0,125,3,9,0,122,14,116, 8,160,9,124,1,161,1,125,4,87,0,110,70,4,0,116, - 10,116,11,102,2,144,1,121,36,1,0,1,0,1,0,116, + 10,116,11,102,2,144,1,121,38,1,0,1,0,1,0,116, 8,160,12,124,1,161,1,92,2,125,5,125,6,124,5,124, 1,107,2,114,134,116,4,100,5,124,1,100,3,141,2,130, 1,124,5,125,1,124,3,160,13,124,6,161,1,1,0,89, - 0,110,26,124,4,106,14,100,6,64,0,100,7,107,3,114, - 180,116,4,100,5,124,1,100,3,141,2,130,1,113,66,122, - 12,116,15,124,1,25,0,125,7,87,0,110,32,4,0,116, - 16,144,1,121,34,1,0,1,0,1,0,116,17,124,1,131, - 1,125,7,124,7,116,15,124,1,60,0,89,0,124,7,124, - 0,95,18,124,1,124,0,95,19,116,8,106,20,124,3,100, - 0,100,0,100,8,133,3,25,0,142,0,124,0,95,21,124, - 0,106,21,144,1,114,30,124,0,4,0,106,21,116,7,55, - 0,2,0,95,21,100,0,83,0,100,0,83,0,119,0,119, - 0,41,9,78,114,0,0,0,0,122,21,97,114,99,104,105, - 118,101,32,112,97,116,104,32,105,115,32,101,109,112,116,121, - 169,1,218,4,112,97,116,104,84,122,14,110,111,116,32,97, - 32,90,105,112,32,102,105,108,101,105,0,240,0,0,105,0, - 128,0,0,233,255,255,255,255,41,22,218,10,105,115,105,110, - 115,116,97,110,99,101,218,3,115,116,114,218,2,111,115,90, - 8,102,115,100,101,99,111,100,101,114,3,0,0,0,218,12, - 97,108,116,95,112,97,116,104,95,115,101,112,218,7,114,101, - 112,108,97,99,101,218,8,112,97,116,104,95,115,101,112,218, - 19,95,98,111,111,116,115,116,114,97,112,95,101,120,116,101, - 114,110,97,108,90,10,95,112,97,116,104,95,115,116,97,116, - 218,7,79,83,69,114,114,111,114,218,10,86,97,108,117,101, - 69,114,114,111,114,90,11,95,112,97,116,104,95,115,112,108, - 105,116,218,6,97,112,112,101,110,100,90,7,115,116,95,109, - 111,100,101,218,20,95,122,105,112,95,100,105,114,101,99,116, - 111,114,121,95,99,97,99,104,101,218,8,75,101,121,69,114, - 114,111,114,218,15,95,114,101,97,100,95,100,105,114,101,99, - 116,111,114,121,218,6,95,102,105,108,101,115,218,7,97,114, - 99,104,105,118,101,218,10,95,112,97,116,104,95,106,111,105, - 110,218,6,112,114,101,102,105,120,41,8,218,4,115,101,108, - 102,114,13,0,0,0,114,17,0,0,0,114,31,0,0,0, - 90,2,115,116,90,7,100,105,114,110,97,109,101,90,8,98, - 97,115,101,110,97,109,101,218,5,102,105,108,101,115,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,95, - 95,105,110,105,116,95,95,64,0,0,0,115,68,0,0,0, - 10,1,8,1,10,1,4,1,12,1,4,1,12,1,4,2, - 2,1,2,1,14,1,18,1,14,3,8,1,12,1,4,1, - 14,1,14,3,12,2,2,241,2,18,12,1,14,1,8,1, - 10,1,6,1,6,1,22,2,8,1,18,1,4,255,2,249, - 2,239,255,128,122,20,122,105,112,105,109,112,111,114,116,101, - 114,46,95,95,105,110,105,116,95,95,78,99,3,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, - 67,0,0,0,115,78,0,0,0,116,0,124,0,124,1,131, - 2,125,3,124,3,100,1,117,1,114,26,124,0,103,0,102, - 2,83,0,116,1,124,0,124,1,131,2,125,4,116,2,124, - 0,124,4,131,2,114,70,100,1,124,0,106,3,155,0,116, - 4,155,0,124,4,155,0,157,3,103,1,102,2,83,0,100, - 1,103,0,102,2,83,0,41,2,97,47,2,0,0,102,105, - 110,100,95,108,111,97,100,101,114,40,102,117,108,108,110,97, - 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, - 62,32,115,101,108,102,44,32,115,116,114,32,111,114,32,78, - 111,110,101,46,10,10,32,32,32,32,32,32,32,32,83,101, - 97,114,99,104,32,102,111,114,32,97,32,109,111,100,117,108, - 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,39, - 102,117,108,108,110,97,109,101,39,46,32,39,102,117,108,108, - 110,97,109,101,39,32,109,117,115,116,32,98,101,32,116,104, - 101,10,32,32,32,32,32,32,32,32,102,117,108,108,121,32, - 113,117,97,108,105,102,105,101,100,32,40,100,111,116,116,101, - 100,41,32,109,111,100,117,108,101,32,110,97,109,101,46,32, - 73,116,32,114,101,116,117,114,110,115,32,116,104,101,32,122, - 105,112,105,109,112,111,114,116,101,114,10,32,32,32,32,32, - 32,32,32,105,110,115,116,97,110,99,101,32,105,116,115,101, - 108,102,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,119,97,115,32,102,111,117,110,100,44,32,97,32,115,116, - 114,105,110,103,32,99,111,110,116,97,105,110,105,110,103,32, - 116,104,101,10,32,32,32,32,32,32,32,32,102,117,108,108, - 32,112,97,116,104,32,110,97,109,101,32,105,102,32,105,116, - 39,115,32,112,111,115,115,105,98,108,121,32,97,32,112,111, - 114,116,105,111,110,32,111,102,32,97,32,110,97,109,101,115, - 112,97,99,101,32,112,97,99,107,97,103,101,44,10,32,32, - 32,32,32,32,32,32,111,114,32,78,111,110,101,32,111,116, - 104,101,114,119,105,115,101,46,32,84,104,101,32,111,112,116, - 105,111,110,97,108,32,39,112,97,116,104,39,32,97,114,103, - 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, - 32,45,45,32,105,116,39,115,10,32,32,32,32,32,32,32, - 32,116,104,101,114,101,32,102,111,114,32,99,111,109,112,97, - 116,105,98,105,108,105,116,121,32,119,105,116,104,32,116,104, - 101,32,105,109,112,111,114,116,101,114,32,112,114,111,116,111, - 99,111,108,46,10,10,32,32,32,32,32,32,32,32,68,101, - 112,114,101,99,97,116,101,100,32,115,105,110,99,101,32,80, - 121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,78,41,5, - 218,16,95,103,101,116,95,109,111,100,117,108,101,95,105,110, - 102,111,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 112,97,116,104,218,7,95,105,115,95,100,105,114,114,29,0, - 0,0,114,20,0,0,0,41,5,114,32,0,0,0,218,8, - 102,117,108,108,110,97,109,101,114,13,0,0,0,218,2,109, - 105,218,7,109,111,100,112,97,116,104,114,9,0,0,0,114, + 0,110,28,124,4,106,14,100,6,64,0,100,7,107,3,114, + 178,116,4,100,5,124,1,100,3,141,2,130,1,113,182,113, + 66,122,12,116,15,124,1,25,0,125,7,87,0,110,32,4, + 0,116,16,144,1,121,36,1,0,1,0,1,0,116,17,124, + 1,131,1,125,7,124,7,116,15,124,1,60,0,89,0,124, + 7,124,0,95,18,124,1,124,0,95,19,116,8,106,20,124, + 3,100,0,100,0,100,8,133,3,25,0,142,0,124,0,95, + 21,124,0,106,21,144,1,114,32,124,0,4,0,106,21,116, + 7,55,0,2,0,95,21,100,0,83,0,100,0,83,0,119, + 0,119,0,41,9,78,114,0,0,0,0,122,21,97,114,99, + 104,105,118,101,32,112,97,116,104,32,105,115,32,101,109,112, + 116,121,169,1,218,4,112,97,116,104,84,122,14,110,111,116, + 32,97,32,90,105,112,32,102,105,108,101,105,0,240,0,0, + 105,0,128,0,0,233,255,255,255,255,41,22,218,10,105,115, + 105,110,115,116,97,110,99,101,218,3,115,116,114,218,2,111, + 115,90,8,102,115,100,101,99,111,100,101,114,3,0,0,0, + 218,12,97,108,116,95,112,97,116,104,95,115,101,112,218,7, + 114,101,112,108,97,99,101,218,8,112,97,116,104,95,115,101, + 112,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, + 116,101,114,110,97,108,90,10,95,112,97,116,104,95,115,116, + 97,116,218,7,79,83,69,114,114,111,114,218,10,86,97,108, + 117,101,69,114,114,111,114,90,11,95,112,97,116,104,95,115, + 112,108,105,116,218,6,97,112,112,101,110,100,90,7,115,116, + 95,109,111,100,101,218,20,95,122,105,112,95,100,105,114,101, + 99,116,111,114,121,95,99,97,99,104,101,218,8,75,101,121, + 69,114,114,111,114,218,15,95,114,101,97,100,95,100,105,114, + 101,99,116,111,114,121,218,6,95,102,105,108,101,115,218,7, + 97,114,99,104,105,118,101,218,10,95,112,97,116,104,95,106, + 111,105,110,218,6,112,114,101,102,105,120,41,8,218,4,115, + 101,108,102,114,13,0,0,0,114,17,0,0,0,114,31,0, + 0,0,90,2,115,116,90,7,100,105,114,110,97,109,101,90, + 8,98,97,115,101,110,97,109,101,218,5,102,105,108,101,115, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 8,95,95,105,110,105,116,95,95,64,0,0,0,115,70,0, + 0,0,10,1,8,1,10,1,4,1,12,1,4,1,12,1, + 4,2,2,1,2,1,14,1,18,1,14,3,8,1,12,1, + 4,1,14,1,14,3,12,2,2,1,2,240,2,18,12,1, + 14,1,8,1,10,1,6,1,6,1,22,2,8,1,18,1, + 4,255,2,249,2,239,255,128,122,20,122,105,112,105,109,112, + 111,114,116,101,114,46,95,95,105,110,105,116,95,95,78,99, + 3,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 4,0,0,0,67,0,0,0,115,78,0,0,0,116,0,124, + 0,124,1,131,2,125,3,124,3,100,1,117,1,114,26,124, + 0,103,0,102,2,83,0,116,1,124,0,124,1,131,2,125, + 4,116,2,124,0,124,4,131,2,114,70,100,1,124,0,106, + 3,155,0,116,4,155,0,124,4,155,0,157,3,103,1,102, + 2,83,0,100,1,103,0,102,2,83,0,41,2,97,47,2, + 0,0,102,105,110,100,95,108,111,97,100,101,114,40,102,117, + 108,108,110,97,109,101,44,32,112,97,116,104,61,78,111,110, + 101,41,32,45,62,32,115,101,108,102,44,32,115,116,114,32, + 111,114,32,78,111,110,101,46,10,10,32,32,32,32,32,32, + 32,32,83,101,97,114,99,104,32,102,111,114,32,97,32,109, + 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, + 98,121,32,39,102,117,108,108,110,97,109,101,39,46,32,39, + 102,117,108,108,110,97,109,101,39,32,109,117,115,116,32,98, + 101,32,116,104,101,10,32,32,32,32,32,32,32,32,102,117, + 108,108,121,32,113,117,97,108,105,102,105,101,100,32,40,100, + 111,116,116,101,100,41,32,109,111,100,117,108,101,32,110,97, + 109,101,46,32,73,116,32,114,101,116,117,114,110,115,32,116, + 104,101,32,122,105,112,105,109,112,111,114,116,101,114,10,32, + 32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,32, + 105,116,115,101,108,102,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,119,97,115,32,102,111,117,110,100,44,32, + 97,32,115,116,114,105,110,103,32,99,111,110,116,97,105,110, + 105,110,103,32,116,104,101,10,32,32,32,32,32,32,32,32, + 102,117,108,108,32,112,97,116,104,32,110,97,109,101,32,105, + 102,32,105,116,39,115,32,112,111,115,115,105,98,108,121,32, + 97,32,112,111,114,116,105,111,110,32,111,102,32,97,32,110, + 97,109,101,115,112,97,99,101,32,112,97,99,107,97,103,101, + 44,10,32,32,32,32,32,32,32,32,111,114,32,78,111,110, + 101,32,111,116,104,101,114,119,105,115,101,46,32,84,104,101, + 32,111,112,116,105,111,110,97,108,32,39,112,97,116,104,39, + 32,97,114,103,117,109,101,110,116,32,105,115,32,105,103,110, + 111,114,101,100,32,45,45,32,105,116,39,115,10,32,32,32, + 32,32,32,32,32,116,104,101,114,101,32,102,111,114,32,99, + 111,109,112,97,116,105,98,105,108,105,116,121,32,119,105,116, + 104,32,116,104,101,32,105,109,112,111,114,116,101,114,32,112, + 114,111,116,111,99,111,108,46,10,10,32,32,32,32,32,32, + 32,32,68,101,112,114,101,99,97,116,101,100,32,115,105,110, + 99,101,32,80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32, + 32,78,41,5,218,16,95,103,101,116,95,109,111,100,117,108, + 101,95,105,110,102,111,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,112,97,116,104,218,7,95,105,115,95,100,105, + 114,114,29,0,0,0,114,20,0,0,0,41,5,114,32,0, + 0,0,218,8,102,117,108,108,110,97,109,101,114,13,0,0, + 0,218,2,109,105,218,7,109,111,100,112,97,116,104,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,11,102, + 105,110,100,95,108,111,97,100,101,114,110,0,0,0,115,16, + 0,0,0,10,12,8,1,8,2,10,7,10,1,24,4,8, + 2,255,128,122,23,122,105,112,105,109,112,111,114,116,101,114, + 46,102,105,110,100,95,108,111,97,100,101,114,99,3,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, + 0,67,0,0,0,115,16,0,0,0,124,0,160,0,124,1, + 124,2,161,2,100,1,25,0,83,0,41,3,97,203,1,0, + 0,102,105,110,100,95,109,111,100,117,108,101,40,102,117,108, + 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, + 41,32,45,62,32,115,101,108,102,32,111,114,32,78,111,110, + 101,46,10,10,32,32,32,32,32,32,32,32,83,101,97,114, + 99,104,32,102,111,114,32,97,32,109,111,100,117,108,101,32, + 115,112,101,99,105,102,105,101,100,32,98,121,32,39,102,117, + 108,108,110,97,109,101,39,46,32,39,102,117,108,108,110,97, + 109,101,39,32,109,117,115,116,32,98,101,32,116,104,101,10, + 32,32,32,32,32,32,32,32,102,117,108,108,121,32,113,117, + 97,108,105,102,105,101,100,32,40,100,111,116,116,101,100,41, + 32,109,111,100,117,108,101,32,110,97,109,101,46,32,73,116, + 32,114,101,116,117,114,110,115,32,116,104,101,32,122,105,112, + 105,109,112,111,114,116,101,114,10,32,32,32,32,32,32,32, + 32,105,110,115,116,97,110,99,101,32,105,116,115,101,108,102, + 32,105,102,32,116,104,101,32,109,111,100,117,108,101,32,119, + 97,115,32,102,111,117,110,100,44,32,111,114,32,78,111,110, + 101,32,105,102,32,105,116,32,119,97,115,110,39,116,46,10, + 32,32,32,32,32,32,32,32,84,104,101,32,111,112,116,105, + 111,110,97,108,32,39,112,97,116,104,39,32,97,114,103,117, + 109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,32, + 45,45,32,105,116,39,115,32,116,104,101,114,101,32,102,111, + 114,32,99,111,109,112,97,116,105,98,105,108,105,116,121,10, + 32,32,32,32,32,32,32,32,119,105,116,104,32,116,104,101, + 32,105,109,112,111,114,116,101,114,32,112,114,111,116,111,99, + 111,108,46,10,10,32,32,32,32,32,32,32,32,68,101,112, + 114,101,99,97,116,101,100,32,115,105,110,99,101,32,80,121, + 116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32,114,0,0,0, + 0,78,41,1,114,41,0,0,0,41,3,114,32,0,0,0, + 114,38,0,0,0,114,13,0,0,0,114,9,0,0,0,114, 9,0,0,0,114,10,0,0,0,218,11,102,105,110,100,95, - 108,111,97,100,101,114,110,0,0,0,115,16,0,0,0,10, - 12,8,1,8,2,10,7,10,1,24,4,8,2,255,128,122, - 23,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, - 100,95,108,111,97,100,101,114,99,3,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,0, - 0,115,16,0,0,0,124,0,160,0,124,1,124,2,161,2, - 100,1,25,0,83,0,41,3,97,203,1,0,0,102,105,110, - 100,95,109,111,100,117,108,101,40,102,117,108,108,110,97,109, - 101,44,32,112,97,116,104,61,78,111,110,101,41,32,45,62, - 32,115,101,108,102,32,111,114,32,78,111,110,101,46,10,10, - 32,32,32,32,32,32,32,32,83,101,97,114,99,104,32,102, - 111,114,32,97,32,109,111,100,117,108,101,32,115,112,101,99, - 105,102,105,101,100,32,98,121,32,39,102,117,108,108,110,97, - 109,101,39,46,32,39,102,117,108,108,110,97,109,101,39,32, - 109,117,115,116,32,98,101,32,116,104,101,10,32,32,32,32, - 32,32,32,32,102,117,108,108,121,32,113,117,97,108,105,102, - 105,101,100,32,40,100,111,116,116,101,100,41,32,109,111,100, - 117,108,101,32,110,97,109,101,46,32,73,116,32,114,101,116, - 117,114,110,115,32,116,104,101,32,122,105,112,105,109,112,111, - 114,116,101,114,10,32,32,32,32,32,32,32,32,105,110,115, - 116,97,110,99,101,32,105,116,115,101,108,102,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,119,97,115,32,102, - 111,117,110,100,44,32,111,114,32,78,111,110,101,32,105,102, - 32,105,116,32,119,97,115,110,39,116,46,10,32,32,32,32, - 32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,108, - 32,39,112,97,116,104,39,32,97,114,103,117,109,101,110,116, - 32,105,115,32,105,103,110,111,114,101,100,32,45,45,32,105, - 116,39,115,32,116,104,101,114,101,32,102,111,114,32,99,111, - 109,112,97,116,105,98,105,108,105,116,121,10,32,32,32,32, - 32,32,32,32,119,105,116,104,32,116,104,101,32,105,109,112, - 111,114,116,101,114,32,112,114,111,116,111,99,111,108,46,10, - 10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,97, - 116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,110, - 32,51,46,49,48,46,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, - 32,32,32,32,32,32,32,32,114,0,0,0,0,78,41,1, - 114,41,0,0,0,41,3,114,32,0,0,0,114,38,0,0, - 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, - 108,101,144,0,0,0,115,4,0,0,0,16,11,255,128,122, - 23,122,105,112,105,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,3,0,0,0,0,0,0, - 0,0,0,0,0,7,0,0,0,5,0,0,0,67,0,0, - 0,115,108,0,0,0,116,0,124,0,124,1,131,2,125,3, - 124,3,100,1,117,1,114,34,116,1,106,2,124,1,124,0, - 124,3,100,2,141,3,83,0,116,3,124,0,124,1,131,2, - 125,4,116,4,124,0,124,4,131,2,114,104,124,0,106,5, - 155,0,116,6,155,0,124,4,155,0,157,3,125,5,116,1, - 106,7,124,1,100,1,100,3,100,4,141,3,125,6,124,6, - 106,8,160,9,124,5,161,1,1,0,124,6,83,0,100,1, - 83,0,41,5,122,107,67,114,101,97,116,101,32,97,32,77, - 111,100,117,108,101,83,112,101,99,32,102,111,114,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,82,101,116, - 117,114,110,115,32,78,111,110,101,32,105,102,32,116,104,101, - 32,109,111,100,117,108,101,32,99,97,110,110,111,116,32,98, - 101,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32, - 32,78,41,1,218,10,105,115,95,112,97,99,107,97,103,101, - 84,41,3,218,4,110,97,109,101,90,6,108,111,97,100,101, - 114,114,43,0,0,0,41,10,114,35,0,0,0,218,10,95, - 98,111,111,116,115,116,114,97,112,90,16,115,112,101,99,95, - 102,114,111,109,95,108,111,97,100,101,114,114,36,0,0,0, - 114,37,0,0,0,114,29,0,0,0,114,20,0,0,0,90, - 10,77,111,100,117,108,101,83,112,101,99,90,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,114,24,0,0,0,41,7,114,32, - 0,0,0,114,38,0,0,0,90,6,116,97,114,103,101,116, - 90,11,109,111,100,117,108,101,95,105,110,102,111,114,40,0, - 0,0,114,13,0,0,0,90,4,115,112,101,99,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,9,102,105, - 110,100,95,115,112,101,99,157,0,0,0,115,26,0,0,0, - 10,5,8,1,16,1,10,7,10,1,18,4,8,1,2,1, - 6,255,12,2,4,1,4,2,255,128,122,21,122,105,112,105, - 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, - 99,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, - 0,124,0,124,1,131,2,92,3,125,2,125,3,125,4,124, - 2,83,0,41,2,122,166,103,101,116,95,99,111,100,101,40, - 102,117,108,108,110,97,109,101,41,32,45,62,32,99,111,100, - 101,32,111,98,106,101,99,116,46,10,10,32,32,32,32,32, - 32,32,32,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, + 109,111,100,117,108,101,144,0,0,0,115,4,0,0,0,16, + 11,255,128,122,23,122,105,112,105,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,3,0,0, + 0,0,0,0,0,0,0,0,0,7,0,0,0,5,0,0, + 0,67,0,0,0,115,108,0,0,0,116,0,124,0,124,1, + 131,2,125,3,124,3,100,1,117,1,114,34,116,1,106,2, + 124,1,124,0,124,3,100,2,141,3,83,0,116,3,124,0, + 124,1,131,2,125,4,116,4,124,0,124,4,131,2,114,104, + 124,0,106,5,155,0,116,6,155,0,124,4,155,0,157,3, + 125,5,116,1,106,7,124,1,100,1,100,3,100,4,141,3, + 125,6,124,6,106,8,160,9,124,5,161,1,1,0,124,6, + 83,0,100,1,83,0,41,5,122,107,67,114,101,97,116,101, + 32,97,32,77,111,100,117,108,101,83,112,101,99,32,102,111, + 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,115,32,78,111,110,101,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,99,97,110,110, + 111,116,32,98,101,32,102,111,117,110,100,46,10,32,32,32, + 32,32,32,32,32,78,41,1,218,10,105,115,95,112,97,99, + 107,97,103,101,84,41,3,218,4,110,97,109,101,90,6,108, + 111,97,100,101,114,114,43,0,0,0,41,10,114,35,0,0, + 0,218,10,95,98,111,111,116,115,116,114,97,112,90,16,115, + 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,114, + 36,0,0,0,114,37,0,0,0,114,29,0,0,0,114,20, + 0,0,0,90,10,77,111,100,117,108,101,83,112,101,99,90, + 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,114,24,0,0,0, + 41,7,114,32,0,0,0,114,38,0,0,0,90,6,116,97, + 114,103,101,116,90,11,109,111,100,117,108,101,95,105,110,102, + 111,114,40,0,0,0,114,13,0,0,0,90,4,115,112,101, + 99,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,9,102,105,110,100,95,115,112,101,99,157,0,0,0,115, + 26,0,0,0,10,5,8,1,16,1,10,7,10,1,18,4, + 8,1,2,1,6,255,12,2,4,1,4,2,255,128,122,21, + 122,105,112,105,109,112,111,114,116,101,114,46,102,105,110,100, + 95,115,112,101,99,99,2,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,3,0,0,0,67,0,0,0,115,20, + 0,0,0,116,0,124,0,124,1,131,2,92,3,125,2,125, + 3,125,4,124,2,83,0,41,2,122,166,103,101,116,95,99, + 111,100,101,40,102,117,108,108,110,97,109,101,41,32,45,62, + 32,99,111,100,101,32,111,98,106,101,99,116,46,10,10,32, + 32,32,32,32,32,32,32,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,115,112,101,99,105,102,105,101,100,32, + 109,111,100,117,108,101,46,32,82,97,105,115,101,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, + 32,32,32,32,32,105,102,32,116,104,101,32,109,111,100,117, + 108,101,32,99,111,117,108,100,110,39,116,32,98,101,32,105, + 109,112,111,114,116,101,100,46,10,32,32,32,32,32,32,32, + 32,78,169,1,218,16,95,103,101,116,95,109,111,100,117,108, + 101,95,99,111,100,101,169,5,114,32,0,0,0,114,38,0, + 0,0,218,4,99,111,100,101,218,9,105,115,112,97,99,107, + 97,103,101,114,40,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,8,103,101,116,95,99,111,100, + 101,184,0,0,0,115,6,0,0,0,16,6,4,1,255,128, + 122,20,122,105,112,105,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,0, + 0,0,0,4,0,0,0,8,0,0,0,67,0,0,0,115, + 112,0,0,0,116,0,114,16,124,1,160,1,116,0,116,2, + 161,2,125,1,124,1,125,2,124,1,160,3,124,0,106,4, + 116,2,23,0,161,1,114,58,124,1,116,5,124,0,106,4, + 116,2,23,0,131,1,100,1,133,2,25,0,125,2,122,14, + 124,0,106,6,124,2,25,0,125,3,87,0,110,24,4,0, + 116,7,121,110,1,0,1,0,1,0,116,8,100,2,100,3, + 124,2,131,3,130,1,116,9,124,0,106,4,124,3,131,2, + 83,0,119,0,41,4,122,154,103,101,116,95,100,97,116,97, + 40,112,97,116,104,110,97,109,101,41,32,45,62,32,115,116, + 114,105,110,103,32,119,105,116,104,32,102,105,108,101,32,100, + 97,116,97,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,32,116,104,101,32,100,97,116,97,32,97,115, + 115,111,99,105,97,116,101,100,32,119,105,116,104,32,39,112, + 97,116,104,110,97,109,101,39,46,32,82,97,105,115,101,32, + 79,83,69,114,114,111,114,32,105,102,10,32,32,32,32,32, + 32,32,32,116,104,101,32,102,105,108,101,32,119,97,115,110, + 39,116,32,102,111,117,110,100,46,10,32,32,32,32,32,32, + 32,32,78,114,0,0,0,0,218,0,41,10,114,18,0,0, + 0,114,19,0,0,0,114,20,0,0,0,218,10,115,116,97, + 114,116,115,119,105,116,104,114,29,0,0,0,218,3,108,101, + 110,114,28,0,0,0,114,26,0,0,0,114,22,0,0,0, + 218,9,95,103,101,116,95,100,97,116,97,41,4,114,32,0, + 0,0,218,8,112,97,116,104,110,97,109,101,90,3,107,101, + 121,218,9,116,111,99,95,101,110,116,114,121,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,8,103,101,116, + 95,100,97,116,97,194,0,0,0,115,24,0,0,0,4,6, + 12,1,4,2,16,1,22,1,2,2,14,1,12,1,12,1, + 12,1,2,254,255,128,122,20,122,105,112,105,109,112,111,114, + 116,101,114,46,103,101,116,95,100,97,116,97,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0, + 0,67,0,0,0,115,20,0,0,0,116,0,124,0,124,1, + 131,2,92,3,125,2,125,3,125,4,124,4,83,0,41,2, + 122,165,103,101,116,95,102,105,108,101,110,97,109,101,40,102, + 117,108,108,110,97,109,101,41,32,45,62,32,102,105,108,101, + 110,97,109,101,32,115,116,114,105,110,103,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, + 32,102,105,108,101,110,97,109,101,32,102,111,114,32,116,104, 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,46,32,82,97,105,115,101,32,90,105,112,73,109,112, - 111,114,116,69,114,114,111,114,10,32,32,32,32,32,32,32, - 32,105,102,32,116,104,101,32,109,111,100,117,108,101,32,99, - 111,117,108,100,110,39,116,32,98,101,32,105,109,112,111,114, - 116,101,100,46,10,32,32,32,32,32,32,32,32,78,169,1, - 218,16,95,103,101,116,95,109,111,100,117,108,101,95,99,111, - 100,101,169,5,114,32,0,0,0,114,38,0,0,0,218,4, - 99,111,100,101,218,9,105,115,112,97,99,107,97,103,101,114, - 40,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,8,103,101,116,95,99,111,100,101,184,0,0, - 0,115,6,0,0,0,16,6,4,1,255,128,122,20,122,105, - 112,105,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,0,0,0,0,4, - 0,0,0,8,0,0,0,67,0,0,0,115,112,0,0,0, - 116,0,114,16,124,1,160,1,116,0,116,2,161,2,125,1, - 124,1,125,2,124,1,160,3,124,0,106,4,116,2,23,0, - 161,1,114,58,124,1,116,5,124,0,106,4,116,2,23,0, - 131,1,100,1,133,2,25,0,125,2,122,14,124,0,106,6, - 124,2,25,0,125,3,87,0,110,24,4,0,116,7,121,110, - 1,0,1,0,1,0,116,8,100,2,100,3,124,2,131,3, - 130,1,116,9,124,0,106,4,124,3,131,2,83,0,119,0, - 41,4,122,154,103,101,116,95,100,97,116,97,40,112,97,116, - 104,110,97,109,101,41,32,45,62,32,115,116,114,105,110,103, - 32,119,105,116,104,32,102,105,108,101,32,100,97,116,97,46, - 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, - 32,116,104,101,32,100,97,116,97,32,97,115,115,111,99,105, - 97,116,101,100,32,119,105,116,104,32,39,112,97,116,104,110, - 97,109,101,39,46,32,82,97,105,115,101,32,79,83,69,114, - 114,111,114,32,105,102,10,32,32,32,32,32,32,32,32,116, - 104,101,32,102,105,108,101,32,119,97,115,110,39,116,32,102, - 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,114, - 0,0,0,0,218,0,41,10,114,18,0,0,0,114,19,0, - 0,0,114,20,0,0,0,218,10,115,116,97,114,116,115,119, - 105,116,104,114,29,0,0,0,218,3,108,101,110,114,28,0, - 0,0,114,26,0,0,0,114,22,0,0,0,218,9,95,103, - 101,116,95,100,97,116,97,41,4,114,32,0,0,0,218,8, - 112,97,116,104,110,97,109,101,90,3,107,101,121,218,9,116, - 111,99,95,101,110,116,114,121,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,8,103,101,116,95,100,97,116, - 97,194,0,0,0,115,24,0,0,0,4,6,12,1,4,2, - 16,1,22,1,2,2,14,1,12,1,12,1,12,1,2,254, - 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, - 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,3,0,0,0,67,0,0, - 0,115,20,0,0,0,116,0,124,0,124,1,131,2,92,3, - 125,2,125,3,125,4,124,4,83,0,41,2,122,165,103,101, - 116,95,102,105,108,101,110,97,109,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,102,105,108,101,110,97,109,101, - 32,115,116,114,105,110,103,46,10,10,32,32,32,32,32,32, - 32,32,82,101,116,117,114,110,32,116,104,101,32,102,105,108, - 101,110,97,109,101,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,111, - 114,32,114,97,105,115,101,32,90,105,112,73,109,112,111,114, - 116,69,114,114,111,114,10,32,32,32,32,32,32,32,32,105, - 102,32,105,116,32,99,111,117,108,100,110,39,116,32,98,101, - 32,105,109,112,111,114,116,101,100,46,10,32,32,32,32,32, - 32,32,32,78,114,47,0,0,0,114,49,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,12,103, - 101,116,95,102,105,108,101,110,97,109,101,215,0,0,0,115, - 6,0,0,0,16,8,4,1,255,128,122,24,122,105,112,105, - 109,112,111,114,116,101,114,46,103,101,116,95,102,105,108,101, - 110,97,109,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,6,0,0,0,8,0,0,0,67,0,0,0,115,126,0, - 0,0,116,0,124,0,124,1,131,2,125,2,124,2,100,1, - 117,0,114,36,116,1,100,2,124,1,155,2,157,2,124,1, - 100,3,141,2,130,1,116,2,124,0,124,1,131,2,125,3, - 124,2,114,64,116,3,160,4,124,3,100,4,161,2,125,4, - 110,10,124,3,155,0,100,5,157,2,125,4,122,14,124,0, - 106,5,124,4,25,0,125,5,87,0,110,18,4,0,116,6, - 121,124,1,0,1,0,1,0,89,0,100,1,83,0,116,7, - 124,0,106,8,124,5,131,2,160,9,161,0,83,0,119,0, - 41,6,122,253,103,101,116,95,115,111,117,114,99,101,40,102, - 117,108,108,110,97,109,101,41,32,45,62,32,115,111,117,114, - 99,101,32,115,116,114,105,110,103,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,116,104,101,32,115, - 111,117,114,99,101,32,99,111,100,101,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,32,82,97,105,115,101,32,90,105,112,73,109, - 112,111,114,116,69,114,114,111,114,10,32,32,32,32,32,32, - 32,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32, - 99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,110, - 100,44,32,114,101,116,117,114,110,32,78,111,110,101,32,105, - 102,32,116,104,101,32,97,114,99,104,105,118,101,32,100,111, - 101,115,10,32,32,32,32,32,32,32,32,99,111,110,116,97, - 105,110,32,116,104,101,32,109,111,100,117,108,101,44,32,98, - 117,116,32,104,97,115,32,110,111,32,115,111,117,114,99,101, - 32,102,111,114,32,105,116,46,10,32,32,32,32,32,32,32, - 32,78,250,18,99,97,110,39,116,32,102,105,110,100,32,109, - 111,100,117,108,101,32,169,1,114,44,0,0,0,250,11,95, - 95,105,110,105,116,95,95,46,112,121,250,3,46,112,121,41, - 10,114,35,0,0,0,114,3,0,0,0,114,36,0,0,0, - 114,21,0,0,0,114,30,0,0,0,114,28,0,0,0,114, - 26,0,0,0,114,56,0,0,0,114,29,0,0,0,218,6, - 100,101,99,111,100,101,41,6,114,32,0,0,0,114,38,0, - 0,0,114,39,0,0,0,114,13,0,0,0,218,8,102,117, - 108,108,112,97,116,104,114,58,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,10,103,101,116,95, - 115,111,117,114,99,101,227,0,0,0,115,28,0,0,0,10, - 7,8,1,18,1,10,2,4,1,14,1,10,2,2,2,14, - 1,12,1,6,2,16,1,2,253,255,128,122,22,122,105,112, - 105,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,0,0,0,0, - 3,0,0,0,4,0,0,0,67,0,0,0,115,40,0,0, - 0,116,0,124,0,124,1,131,2,125,2,124,2,100,1,117, - 0,114,36,116,1,100,2,124,1,155,2,157,2,124,1,100, - 3,141,2,130,1,124,2,83,0,41,4,122,171,105,115,95, - 112,97,99,107,97,103,101,40,102,117,108,108,110,97,109,101, - 41,32,45,62,32,98,111,111,108,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,84,114,117,101,32, - 105,102,32,116,104,101,32,109,111,100,117,108,101,32,115,112, - 101,99,105,102,105,101,100,32,98,121,32,102,117,108,108,110, - 97,109,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 46,10,32,32,32,32,32,32,32,32,82,97,105,115,101,32, - 90,105,112,73,109,112,111,114,116,69,114,114,111,114,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,99,111,117, - 108,100,110,39,116,32,98,101,32,102,111,117,110,100,46,10, - 32,32,32,32,32,32,32,32,78,114,61,0,0,0,114,62, - 0,0,0,41,2,114,35,0,0,0,114,3,0,0,0,41, - 3,114,32,0,0,0,114,38,0,0,0,114,39,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,114, - 43,0,0,0,253,0,0,0,115,10,0,0,0,10,6,8, - 1,18,1,4,1,255,128,122,22,122,105,112,105,109,112,111, - 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 8,0,0,0,67,0,0,0,115,252,0,0,0,100,1,125, - 2,116,0,160,1,124,2,116,2,161,2,1,0,116,3,124, - 0,124,1,131,2,92,3,125,3,125,4,125,5,116,4,106, - 5,160,6,124,1,161,1,125,6,124,6,100,2,117,0,115, - 62,116,7,124,6,116,8,131,2,115,80,116,8,124,1,131, - 1,125,6,124,6,116,4,106,5,124,1,60,0,124,0,124, - 6,95,9,122,84,124,4,114,124,116,10,124,0,124,1,131, - 2,125,7,116,11,160,12,124,0,106,13,124,7,161,2,125, - 8,124,8,103,1,124,6,95,14,116,15,124,6,100,3,131, - 2,115,140,116,16,124,6,95,16,116,11,160,17,124,6,106, - 18,124,1,124,5,161,3,1,0,116,19,124,3,124,6,106, - 18,131,2,1,0,87,0,110,16,1,0,1,0,1,0,116, - 4,106,5,124,1,61,0,130,0,122,14,116,4,106,5,124, - 1,25,0,125,6,87,0,110,28,4,0,116,20,121,250,1, - 0,1,0,1,0,116,21,100,4,124,1,155,2,100,5,157, - 3,131,1,130,1,116,22,160,23,100,6,124,1,124,5,161, - 3,1,0,124,6,83,0,119,0,41,7,97,64,1,0,0, - 108,111,97,100,95,109,111,100,117,108,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,76,111,97,100,32,116, - 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, - 105,101,100,32,98,121,32,39,102,117,108,108,110,97,109,101, - 39,46,32,39,102,117,108,108,110,97,109,101,39,32,109,117, - 115,116,32,98,101,32,116,104,101,10,32,32,32,32,32,32, - 32,32,102,117,108,108,121,32,113,117,97,108,105,102,105,101, - 100,32,40,100,111,116,116,101,100,41,32,109,111,100,117,108, - 101,32,110,97,109,101,46,32,73,116,32,114,101,116,117,114, - 110,115,32,116,104,101,32,105,109,112,111,114,116,101,100,10, - 32,32,32,32,32,32,32,32,109,111,100,117,108,101,44,32, - 111,114,32,114,97,105,115,101,115,32,90,105,112,73,109,112, - 111,114,116,69,114,114,111,114,32,105,102,32,105,116,32,99, - 111,117,108,100,32,110,111,116,32,98,101,32,105,109,112,111, - 114,116,101,100,46,10,10,32,32,32,32,32,32,32,32,68, - 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, - 80,121,116,104,111,110,32,51,46,49,48,46,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,32,32,32,32,32,32,32,32, - 122,114,122,105,112,105,109,112,111,114,116,46,122,105,112,105, - 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, - 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, - 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, - 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, - 116,101,97,100,78,218,12,95,95,98,117,105,108,116,105,110, - 115,95,95,122,14,76,111,97,100,101,100,32,109,111,100,117, - 108,101,32,122,25,32,110,111,116,32,102,111,117,110,100,32, - 105,110,32,115,121,115,46,109,111,100,117,108,101,115,122,30, - 105,109,112,111,114,116,32,123,125,32,35,32,108,111,97,100, - 101,100,32,102,114,111,109,32,90,105,112,32,123,125,41,24, - 218,9,95,119,97,114,110,105,110,103,115,90,4,119,97,114, - 110,218,18,68,101,112,114,101,99,97,116,105,111,110,87,97, - 114,110,105,110,103,114,48,0,0,0,218,3,115,121,115,218, - 7,109,111,100,117,108,101,115,218,3,103,101,116,114,15,0, - 0,0,218,12,95,109,111,100,117,108,101,95,116,121,112,101, - 218,10,95,95,108,111,97,100,101,114,95,95,114,36,0,0, - 0,114,21,0,0,0,114,30,0,0,0,114,29,0,0,0, - 90,8,95,95,112,97,116,104,95,95,218,7,104,97,115,97, - 116,116,114,114,68,0,0,0,90,14,95,102,105,120,95,117, - 112,95,109,111,100,117,108,101,218,8,95,95,100,105,99,116, - 95,95,218,4,101,120,101,99,114,26,0,0,0,218,11,73, - 109,112,111,114,116,69,114,114,111,114,114,45,0,0,0,218, - 16,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, - 101,41,9,114,32,0,0,0,114,38,0,0,0,218,3,109, - 115,103,114,50,0,0,0,114,51,0,0,0,114,40,0,0, - 0,90,3,109,111,100,114,13,0,0,0,114,66,0,0,0, + 108,101,32,111,114,32,114,97,105,115,101,32,90,105,112,73, + 109,112,111,114,116,69,114,114,111,114,10,32,32,32,32,32, + 32,32,32,105,102,32,105,116,32,99,111,117,108,100,110,39, + 116,32,98,101,32,105,109,112,111,114,116,101,100,46,10,32, + 32,32,32,32,32,32,32,78,114,47,0,0,0,114,49,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,12,103,101,116,95,102,105,108,101,110,97,109,101,215, + 0,0,0,115,6,0,0,0,16,8,4,1,255,128,122,24, + 122,105,112,105,109,112,111,114,116,101,114,46,103,101,116,95, + 102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,8,0,0,0,67,0,0, + 0,115,126,0,0,0,116,0,124,0,124,1,131,2,125,2, + 124,2,100,1,117,0,114,36,116,1,100,2,124,1,155,2, + 157,2,124,1,100,3,141,2,130,1,116,2,124,0,124,1, + 131,2,125,3,124,2,114,64,116,3,160,4,124,3,100,4, + 161,2,125,4,110,10,124,3,155,0,100,5,157,2,125,4, + 122,14,124,0,106,5,124,4,25,0,125,5,87,0,110,18, + 4,0,116,6,121,124,1,0,1,0,1,0,89,0,100,1, + 83,0,116,7,124,0,106,8,124,5,131,2,160,9,161,0, + 83,0,119,0,41,6,122,253,103,101,116,95,115,111,117,114, + 99,101,40,102,117,108,108,110,97,109,101,41,32,45,62,32, + 115,111,117,114,99,101,32,115,116,114,105,110,103,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,115,111,117,114,99,101,32,99,111,100,101,32,102, + 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,109,111,100,117,108,101,46,32,82,97,105,115,101,32,90, + 105,112,73,109,112,111,114,116,69,114,114,111,114,10,32,32, + 32,32,32,32,32,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, + 102,111,117,110,100,44,32,114,101,116,117,114,110,32,78,111, + 110,101,32,105,102,32,116,104,101,32,97,114,99,104,105,118, + 101,32,100,111,101,115,10,32,32,32,32,32,32,32,32,99, + 111,110,116,97,105,110,32,116,104,101,32,109,111,100,117,108, + 101,44,32,98,117,116,32,104,97,115,32,110,111,32,115,111, + 117,114,99,101,32,102,111,114,32,105,116,46,10,32,32,32, + 32,32,32,32,32,78,250,18,99,97,110,39,116,32,102,105, + 110,100,32,109,111,100,117,108,101,32,169,1,114,44,0,0, + 0,250,11,95,95,105,110,105,116,95,95,46,112,121,250,3, + 46,112,121,41,10,114,35,0,0,0,114,3,0,0,0,114, + 36,0,0,0,114,21,0,0,0,114,30,0,0,0,114,28, + 0,0,0,114,26,0,0,0,114,56,0,0,0,114,29,0, + 0,0,218,6,100,101,99,111,100,101,41,6,114,32,0,0, + 0,114,38,0,0,0,114,39,0,0,0,114,13,0,0,0, + 218,8,102,117,108,108,112,97,116,104,114,58,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,10, + 103,101,116,95,115,111,117,114,99,101,227,0,0,0,115,28, + 0,0,0,10,7,8,1,18,1,10,2,4,1,14,1,10, + 2,2,2,14,1,12,1,6,2,16,1,2,253,255,128,122, + 22,122,105,112,105,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, + 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, + 115,40,0,0,0,116,0,124,0,124,1,131,2,125,2,124, + 2,100,1,117,0,114,36,116,1,100,2,124,1,155,2,157, + 2,124,1,100,3,141,2,130,1,124,2,83,0,41,4,122, + 171,105,115,95,112,97,99,107,97,103,101,40,102,117,108,108, + 110,97,109,101,41,32,45,62,32,98,111,111,108,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,84, + 114,117,101,32,105,102,32,116,104,101,32,109,111,100,117,108, + 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,102, + 117,108,108,110,97,109,101,32,105,115,32,97,32,112,97,99, + 107,97,103,101,46,10,32,32,32,32,32,32,32,32,82,97, + 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117, + 110,100,46,10,32,32,32,32,32,32,32,32,78,114,61,0, + 0,0,114,62,0,0,0,41,2,114,35,0,0,0,114,3, + 0,0,0,41,3,114,32,0,0,0,114,38,0,0,0,114, + 39,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,114,43,0,0,0,253,0,0,0,115,10,0,0, + 0,10,6,8,1,18,1,4,1,255,128,122,22,122,105,112, + 105,109,112,111,114,116,101,114,46,105,115,95,112,97,99,107, + 97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,8,0,0,0,67,0,0,0,115,252,0,0, + 0,100,1,125,2,116,0,160,1,124,2,116,2,161,2,1, + 0,116,3,124,0,124,1,131,2,92,3,125,3,125,4,125, + 5,116,4,106,5,160,6,124,1,161,1,125,6,124,6,100, + 2,117,0,115,62,116,7,124,6,116,8,131,2,115,80,116, + 8,124,1,131,1,125,6,124,6,116,4,106,5,124,1,60, + 0,124,0,124,6,95,9,122,84,124,4,114,124,116,10,124, + 0,124,1,131,2,125,7,116,11,160,12,124,0,106,13,124, + 7,161,2,125,8,124,8,103,1,124,6,95,14,116,15,124, + 6,100,3,131,2,115,140,116,16,124,6,95,16,116,11,160, + 17,124,6,106,18,124,1,124,5,161,3,1,0,116,19,124, + 3,124,6,106,18,131,2,1,0,87,0,110,16,1,0,1, + 0,1,0,116,4,106,5,124,1,61,0,130,0,122,14,116, + 4,106,5,124,1,25,0,125,6,87,0,110,28,4,0,116, + 20,121,250,1,0,1,0,1,0,116,21,100,4,124,1,155, + 2,100,5,157,3,131,1,130,1,116,22,160,23,100,6,124, + 1,124,5,161,3,1,0,124,6,83,0,119,0,41,7,97, + 64,1,0,0,108,111,97,100,95,109,111,100,117,108,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,76,111, + 97,100,32,116,104,101,32,109,111,100,117,108,101,32,115,112, + 101,99,105,102,105,101,100,32,98,121,32,39,102,117,108,108, + 110,97,109,101,39,46,32,39,102,117,108,108,110,97,109,101, + 39,32,109,117,115,116,32,98,101,32,116,104,101,10,32,32, + 32,32,32,32,32,32,102,117,108,108,121,32,113,117,97,108, + 105,102,105,101,100,32,40,100,111,116,116,101,100,41,32,109, + 111,100,117,108,101,32,110,97,109,101,46,32,73,116,32,114, + 101,116,117,114,110,115,32,116,104,101,32,105,109,112,111,114, + 116,101,100,10,32,32,32,32,32,32,32,32,109,111,100,117, + 108,101,44,32,111,114,32,114,97,105,115,101,115,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, + 105,116,32,99,111,117,108,100,32,110,111,116,32,98,101,32, + 105,109,112,111,114,116,101,100,46,10,10,32,32,32,32,32, + 32,32,32,68,101,112,114,101,99,97,116,101,100,32,115,105, + 110,99,101,32,80,121,116,104,111,110,32,51,46,49,48,46, + 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,32,32,32,32, + 32,32,32,32,122,114,122,105,112,105,109,112,111,114,116,46, + 122,105,112,105,109,112,111,114,116,101,114,46,108,111,97,100, + 95,109,111,100,117,108,101,40,41,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,32,97,110,100,32,115,108,97,116, + 101,100,32,102,111,114,32,114,101,109,111,118,97,108,32,105, + 110,32,80,121,116,104,111,110,32,51,46,49,50,59,32,117, + 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,105,110,115,116,101,97,100,78,218,12,95,95,98,117,105, + 108,116,105,110,115,95,95,122,14,76,111,97,100,101,100,32, + 109,111,100,117,108,101,32,122,25,32,110,111,116,32,102,111, + 117,110,100,32,105,110,32,115,121,115,46,109,111,100,117,108, + 101,115,122,30,105,109,112,111,114,116,32,123,125,32,35,32, + 108,111,97,100,101,100,32,102,114,111,109,32,90,105,112,32, + 123,125,41,24,218,9,95,119,97,114,110,105,110,103,115,90, + 4,119,97,114,110,218,18,68,101,112,114,101,99,97,116,105, + 111,110,87,97,114,110,105,110,103,114,48,0,0,0,218,3, + 115,121,115,218,7,109,111,100,117,108,101,115,218,3,103,101, + 116,114,15,0,0,0,218,12,95,109,111,100,117,108,101,95, + 116,121,112,101,218,10,95,95,108,111,97,100,101,114,95,95, + 114,36,0,0,0,114,21,0,0,0,114,30,0,0,0,114, + 29,0,0,0,90,8,95,95,112,97,116,104,95,95,218,7, + 104,97,115,97,116,116,114,114,68,0,0,0,90,14,95,102, + 105,120,95,117,112,95,109,111,100,117,108,101,218,8,95,95, + 100,105,99,116,95,95,218,4,101,120,101,99,114,26,0,0, + 0,218,11,73,109,112,111,114,116,69,114,114,111,114,114,45, + 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,41,9,114,32,0,0,0,114,38,0,0, + 0,218,3,109,115,103,114,50,0,0,0,114,51,0,0,0, + 114,40,0,0,0,90,3,109,111,100,114,13,0,0,0,114, + 66,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,11,108,111,97,100,95,109,111,100,117,108,101, + 10,1,0,0,115,56,0,0,0,4,9,12,2,16,1,12, + 1,18,1,8,1,10,1,6,1,2,2,4,1,10,3,14, + 1,8,1,10,2,6,1,16,1,16,1,6,1,8,1,2, + 1,2,2,14,1,12,1,16,1,14,1,4,1,2,253,255, + 128,122,23,122,105,112,105,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,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,64,0,0,0,122,20,124,0,160,0,124,1, + 161,1,115,18,87,0,100,1,83,0,87,0,110,18,4,0, + 116,1,121,62,1,0,1,0,1,0,89,0,100,1,83,0, + 100,2,100,3,108,2,109,3,125,2,1,0,124,2,124,0, + 124,1,131,2,83,0,119,0,41,4,122,204,82,101,116,117, + 114,110,32,116,104,101,32,82,101,115,111,117,114,99,101,82, + 101,97,100,101,114,32,102,111,114,32,97,32,112,97,99,107, + 97,103,101,32,105,110,32,97,32,122,105,112,32,102,105,108, + 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,39, + 102,117,108,108,110,97,109,101,39,32,105,115,32,97,32,112, + 97,99,107,97,103,101,32,119,105,116,104,105,110,32,116,104, + 101,32,122,105,112,32,102,105,108,101,44,32,114,101,116,117, + 114,110,32,116,104,101,10,32,32,32,32,32,32,32,32,39, + 82,101,115,111,117,114,99,101,82,101,97,100,101,114,39,32, + 111,98,106,101,99,116,32,102,111,114,32,116,104,101,32,112, + 97,99,107,97,103,101,46,32,32,79,116,104,101,114,119,105, + 115,101,32,114,101,116,117,114,110,32,78,111,110,101,46,10, + 32,32,32,32,32,32,32,32,78,114,0,0,0,0,41,1, + 218,9,90,105,112,82,101,97,100,101,114,41,4,114,43,0, + 0,0,114,3,0,0,0,90,17,105,109,112,111,114,116,108, + 105,98,46,114,101,97,100,101,114,115,114,83,0,0,0,41, + 3,114,32,0,0,0,114,38,0,0,0,114,83,0,0,0, 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 11,108,111,97,100,95,109,111,100,117,108,101,10,1,0,0, - 115,56,0,0,0,4,9,12,2,16,1,12,1,18,1,8, - 1,10,1,6,1,2,2,4,1,10,3,14,1,8,1,10, - 2,6,1,16,1,16,1,6,1,8,1,2,1,2,2,14, - 1,12,1,16,1,14,1,4,1,2,253,255,128,122,23,122, - 105,112,105,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,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 64,0,0,0,122,20,124,0,160,0,124,1,161,1,115,18, - 87,0,100,1,83,0,87,0,110,18,4,0,116,1,121,62, - 1,0,1,0,1,0,89,0,100,1,83,0,100,2,100,3, - 108,2,109,3,125,2,1,0,124,2,124,0,124,1,131,2, - 83,0,119,0,41,4,122,204,82,101,116,117,114,110,32,116, - 104,101,32,82,101,115,111,117,114,99,101,82,101,97,100,101, - 114,32,102,111,114,32,97,32,112,97,99,107,97,103,101,32, - 105,110,32,97,32,122,105,112,32,102,105,108,101,46,10,10, - 32,32,32,32,32,32,32,32,73,102,32,39,102,117,108,108, - 110,97,109,101,39,32,105,115,32,97,32,112,97,99,107,97, - 103,101,32,119,105,116,104,105,110,32,116,104,101,32,122,105, - 112,32,102,105,108,101,44,32,114,101,116,117,114,110,32,116, - 104,101,10,32,32,32,32,32,32,32,32,39,82,101,115,111, - 117,114,99,101,82,101,97,100,101,114,39,32,111,98,106,101, - 99,116,32,102,111,114,32,116,104,101,32,112,97,99,107,97, - 103,101,46,32,32,79,116,104,101,114,119,105,115,101,32,114, - 101,116,117,114,110,32,78,111,110,101,46,10,32,32,32,32, - 32,32,32,32,78,114,0,0,0,0,41,1,218,9,90,105, - 112,82,101,97,100,101,114,41,4,114,43,0,0,0,114,3, - 0,0,0,90,17,105,109,112,111,114,116,108,105,98,46,114, - 101,97,100,101,114,115,114,83,0,0,0,41,3,114,32,0, - 0,0,114,38,0,0,0,114,83,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,19,103,101,116, + 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,53,1,0,0,115,18,0,0,0,2,6,10, + 1,10,1,12,1,6,1,12,1,10,1,2,253,255,128,122, + 31,122,105,112,105,109,112,111,114,116,101,114,46,103,101,116, 95,114,101,115,111,117,114,99,101,95,114,101,97,100,101,114, - 53,1,0,0,115,18,0,0,0,2,6,10,1,10,1,12, - 1,6,1,12,1,10,1,2,253,255,128,122,31,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,114,101,115, - 111,117,114,99,101,95,114,101,97,100,101,114,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0, - 0,67,0,0,0,115,24,0,0,0,100,1,124,0,106,0, - 155,0,116,1,155,0,124,0,106,2,155,0,100,2,157,5, - 83,0,41,3,78,122,21,60,122,105,112,105,109,112,111,114, - 116,101,114,32,111,98,106,101,99,116,32,34,122,2,34,62, - 41,3,114,29,0,0,0,114,20,0,0,0,114,31,0,0, - 0,41,1,114,32,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,8,95,95,114,101,112,114,95, - 95,68,1,0,0,115,4,0,0,0,24,1,255,128,122,20, - 122,105,112,105,109,112,111,114,116,101,114,46,95,95,114,101, - 112,114,95,95,41,1,78,41,1,78,41,1,78,41,16,114, - 6,0,0,0,114,7,0,0,0,114,8,0,0,0,218,7, - 95,95,100,111,99,95,95,114,34,0,0,0,114,41,0,0, - 0,114,42,0,0,0,114,46,0,0,0,114,52,0,0,0, - 114,59,0,0,0,114,60,0,0,0,114,67,0,0,0,114, - 43,0,0,0,114,82,0,0,0,114,84,0,0,0,114,85, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,114,4,0,0,0,46,0,0,0, - 115,30,0,0,0,8,0,4,1,8,17,10,46,10,34,10, - 13,8,27,8,10,8,21,8,12,8,26,8,13,8,43,12, - 15,255,128,122,12,95,95,105,110,105,116,95,95,46,112,121, - 99,84,114,63,0,0,0,70,41,3,122,4,46,112,121,99, - 84,70,41,3,114,64,0,0,0,70,70,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,20,0,0,0,124,0,106,0,124,1,160, - 1,100,1,161,1,100,2,25,0,23,0,83,0,41,3,78, - 218,1,46,233,2,0,0,0,41,2,114,31,0,0,0,218, - 10,114,112,97,114,116,105,116,105,111,110,41,2,114,32,0, - 0,0,114,38,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,36,0,0,0,86,1,0,0,115, - 4,0,0,0,20,1,255,128,114,36,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, - 0,0,67,0,0,0,115,18,0,0,0,124,1,116,0,23, - 0,125,2,124,2,124,0,106,1,118,0,83,0,169,1,78, - 41,2,114,20,0,0,0,114,28,0,0,0,41,3,114,32, - 0,0,0,114,13,0,0,0,90,7,100,105,114,112,97,116, - 104,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 114,37,0,0,0,90,1,0,0,115,6,0,0,0,8,4, - 10,2,255,128,114,37,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,7,0,0,0,4,0,0,0,67,0, - 0,0,115,54,0,0,0,116,0,124,0,124,1,131,2,125, - 2,116,1,68,0,93,34,92,3,125,3,125,4,125,5,124, - 2,124,3,23,0,125,6,124,6,124,0,106,2,118,0,114, - 14,124,5,2,0,1,0,83,0,100,0,83,0,114,90,0, - 0,0,41,3,114,36,0,0,0,218,16,95,122,105,112,95, - 115,101,97,114,99,104,111,114,100,101,114,114,28,0,0,0, - 41,7,114,32,0,0,0,114,38,0,0,0,114,13,0,0, - 0,218,6,115,117,102,102,105,120,218,10,105,115,98,121,116, - 101,99,111,100,101,114,51,0,0,0,114,66,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,35, - 0,0,0,99,1,0,0,115,14,0,0,0,10,1,14,1, - 8,1,10,1,8,1,4,1,255,128,114,35,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0, - 9,0,0,0,67,0,0,0,115,236,4,0,0,122,14,116, - 0,160,1,124,0,161,1,125,1,87,0,110,32,4,0,116, - 2,144,4,121,234,1,0,1,0,1,0,116,3,100,1,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,1,144, - 4,143,130,1,0,122,36,124,1,160,4,116,5,11,0,100, - 3,161,2,1,0,124,1,160,6,161,0,125,2,124,1,160, - 7,116,5,161,1,125,3,87,0,110,32,4,0,116,2,144, - 4,121,232,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,116,8,124,3,131, - 1,116,5,107,3,114,156,116,3,100,4,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,3,100,0,100,5,133, - 2,25,0,116,9,107,3,144,1,114,152,122,24,124,1,160, - 4,100,6,100,3,161,2,1,0,124,1,160,6,161,0,125, - 4,87,0,110,32,4,0,116,2,144,4,121,230,1,0,1, - 0,1,0,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,116,10,124,4,116,11,24,0,116,5,24, - 0,100,6,131,2,125,5,122,22,124,1,160,4,124,5,161, - 1,1,0,124,1,160,7,161,0,125,6,87,0,110,32,4, - 0,116,2,144,4,121,228,1,0,1,0,1,0,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 6,160,12,116,9,161,1,125,7,124,7,100,6,107,0,144, - 1,114,88,116,3,100,7,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,6,124,7,124,7,116,5,23,0,133, - 2,25,0,125,3,116,8,124,3,131,1,116,5,107,3,144, - 1,114,136,116,3,100,8,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,4,116,8,124,6,131,1,24,0,124, - 7,23,0,125,2,116,13,124,3,100,9,100,10,133,2,25, - 0,131,1,125,8,116,13,124,3,100,10,100,11,133,2,25, - 0,131,1,125,9,124,2,124,8,107,0,144,1,114,212,116, - 3,100,12,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,2,124,9,107,0,144,1,114,240,116,3,100,13,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,2,124, - 8,56,0,125,2,124,2,124,9,24,0,125,10,124,10,100, - 6,107,0,144,2,114,28,116,3,100,14,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,105,0,125,11,100,6,125, - 12,122,14,124,1,160,4,124,2,161,1,1,0,87,0,110, - 32,4,0,116,2,144,4,121,226,1,0,1,0,1,0,116, - 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,9,0,124,1,160,7,100,16,161,1,125,3,116,8,124, - 3,131,1,100,5,107,0,144,2,114,118,116,14,100,17,131, - 1,130,1,124,3,100,0,100,5,133,2,25,0,100,18,107, - 3,144,2,114,140,144,4,113,170,116,8,124,3,131,1,100, - 16,107,3,144,2,114,162,116,14,100,17,131,1,130,1,116, - 15,124,3,100,19,100,20,133,2,25,0,131,1,125,13,116, - 15,124,3,100,20,100,9,133,2,25,0,131,1,125,14,116, - 15,124,3,100,9,100,21,133,2,25,0,131,1,125,15,116, - 15,124,3,100,21,100,10,133,2,25,0,131,1,125,16,116, - 13,124,3,100,10,100,11,133,2,25,0,131,1,125,17,116, - 13,124,3,100,11,100,22,133,2,25,0,131,1,125,18,116, - 13,124,3,100,22,100,23,133,2,25,0,131,1,125,4,116, - 15,124,3,100,23,100,24,133,2,25,0,131,1,125,19,116, - 15,124,3,100,24,100,25,133,2,25,0,131,1,125,20,116, - 15,124,3,100,25,100,26,133,2,25,0,131,1,125,21,116, - 13,124,3,100,27,100,16,133,2,25,0,131,1,125,22,124, - 19,124,20,23,0,124,21,23,0,125,8,124,22,124,9,107, - 4,144,3,114,122,116,3,100,28,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,124,22,124,10,55,0,125,22,122, - 14,124,1,160,7,124,19,161,1,125,23,87,0,110,32,4, - 0,116,2,144,4,121,224,1,0,1,0,1,0,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,116, - 8,124,23,131,1,124,19,107,3,144,3,114,210,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,122, - 50,116,8,124,1,160,7,124,8,124,19,24,0,161,1,131, - 1,124,8,124,19,24,0,107,3,144,4,114,2,116,3,100, - 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,87, - 0,110,32,4,0,116,2,144,4,121,222,1,0,1,0,1, - 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,13,100,29,64,0,144,4,114,58,124,23,160, - 16,161,0,125,23,110,48,122,14,124,23,160,16,100,30,161, - 1,125,23,87,0,110,32,4,0,116,17,144,4,121,220,1, - 0,1,0,1,0,124,23,160,16,100,31,161,1,160,18,116, - 19,161,1,125,23,89,0,124,23,160,20,100,32,116,21,161, - 2,125,23,116,22,160,23,124,0,124,23,161,2,125,24,124, - 24,124,14,124,18,124,4,124,22,124,15,124,16,124,17,102, - 8,125,25,124,25,124,11,124,23,60,0,124,12,100,33,55, - 0,125,12,144,2,113,86,87,0,100,0,4,0,4,0,131, - 3,1,0,110,18,49,0,144,4,115,192,119,1,1,0,1, - 0,1,0,89,0,1,0,116,24,160,25,100,34,124,12,124, - 0,161,3,1,0,124,11,83,0,119,0,119,0,119,0,119, - 0,119,0,119,0,119,0,119,0,41,35,78,122,21,99,97, - 110,39,116,32,111,112,101,110,32,90,105,112,32,102,105,108, - 101,58,32,114,12,0,0,0,114,88,0,0,0,250,21,99, - 97,110,39,116,32,114,101,97,100,32,90,105,112,32,102,105, - 108,101,58,32,233,4,0,0,0,114,0,0,0,0,122,16, - 110,111,116,32,97,32,90,105,112,32,102,105,108,101,58,32, - 122,18,99,111,114,114,117,112,116,32,90,105,112,32,102,105, - 108,101,58,32,233,12,0,0,0,233,16,0,0,0,233,20, - 0,0,0,122,28,98,97,100,32,99,101,110,116,114,97,108, - 32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,58, - 32,122,30,98,97,100,32,99,101,110,116,114,97,108,32,100, - 105,114,101,99,116,111,114,121,32,111,102,102,115,101,116,58, - 32,122,38,98,97,100,32,99,101,110,116,114,97,108,32,100, - 105,114,101,99,116,111,114,121,32,115,105,122,101,32,111,114, - 32,111,102,102,115,101,116,58,32,84,233,46,0,0,0,250, - 27,69,79,70,32,114,101,97,100,32,119,104,101,114,101,32, - 110,111,116,32,101,120,112,101,99,116,101,100,115,4,0,0, - 0,80,75,1,2,233,8,0,0,0,233,10,0,0,0,233, - 14,0,0,0,233,24,0,0,0,233,28,0,0,0,233,30, - 0,0,0,233,32,0,0,0,233,34,0,0,0,233,42,0, - 0,0,122,25,98,97,100,32,108,111,99,97,108,32,104,101, - 97,100,101,114,32,111,102,102,115,101,116,58,32,105,0,8, - 0,0,218,5,97,115,99,105,105,90,6,108,97,116,105,110, - 49,250,1,47,114,5,0,0,0,122,33,122,105,112,105,109, - 112,111,114,116,58,32,102,111,117,110,100,32,123,125,32,110, - 97,109,101,115,32,105,110,32,123,33,114,125,41,26,218,3, - 95,105,111,218,9,111,112,101,110,95,99,111,100,101,114,22, - 0,0,0,114,3,0,0,0,218,4,115,101,101,107,218,20, - 69,78,68,95,67,69,78,84,82,65,76,95,68,73,82,95, - 83,73,90,69,90,4,116,101,108,108,218,4,114,101,97,100, - 114,55,0,0,0,218,18,83,84,82,73,78,71,95,69,78, - 68,95,65,82,67,72,73,86,69,218,3,109,97,120,218,15, - 77,65,88,95,67,79,77,77,69,78,84,95,76,69,78,218, - 5,114,102,105,110,100,114,2,0,0,0,218,8,69,79,70, - 69,114,114,111,114,114,1,0,0,0,114,65,0,0,0,218, - 18,85,110,105,99,111,100,101,68,101,99,111,100,101,69,114, - 114,111,114,218,9,116,114,97,110,115,108,97,116,101,218,11, - 99,112,52,51,55,95,116,97,98,108,101,114,19,0,0,0, - 114,20,0,0,0,114,21,0,0,0,114,30,0,0,0,114, - 45,0,0,0,114,80,0,0,0,41,26,114,29,0,0,0, - 218,2,102,112,90,15,104,101,97,100,101,114,95,112,111,115, - 105,116,105,111,110,218,6,98,117,102,102,101,114,218,9,102, - 105,108,101,95,115,105,122,101,90,17,109,97,120,95,99,111, - 109,109,101,110,116,95,115,116,97,114,116,218,4,100,97,116, - 97,90,3,112,111,115,218,11,104,101,97,100,101,114,95,115, - 105,122,101,90,13,104,101,97,100,101,114,95,111,102,102,115, - 101,116,90,10,97,114,99,95,111,102,102,115,101,116,114,33, - 0,0,0,218,5,99,111,117,110,116,218,5,102,108,97,103, - 115,218,8,99,111,109,112,114,101,115,115,218,4,116,105,109, - 101,218,4,100,97,116,101,218,3,99,114,99,218,9,100,97, - 116,97,95,115,105,122,101,218,9,110,97,109,101,95,115,105, - 122,101,218,10,101,120,116,114,97,95,115,105,122,101,90,12, - 99,111,109,109,101,110,116,95,115,105,122,101,218,11,102,105, - 108,101,95,111,102,102,115,101,116,114,44,0,0,0,114,13, - 0,0,0,218,1,116,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,114,27,0,0,0,130,1,0,0,115,234, - 0,0,0,2,1,14,1,14,1,18,1,8,2,2,1,14, - 1,8,1,14,1,14,1,18,1,12,1,18,1,18,1,2, - 3,12,1,12,1,14,1,10,1,2,1,6,255,8,2,2, - 1,2,255,2,1,4,255,2,2,10,1,12,1,14,1,10, - 1,2,1,6,255,10,2,10,1,10,1,2,1,6,255,16, - 2,14,1,10,1,2,1,6,255,16,2,16,2,16,1,10, - 1,18,1,10,1,18,1,8,1,8,1,10,1,18,1,4, - 2,4,2,2,1,14,1,14,1,18,1,2,1,10,1,14, - 1,8,1,18,2,4,1,14,1,8,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16, - 1,12,1,10,1,18,1,8,1,2,2,14,1,14,1,18, - 1,14,1,18,1,2,4,28,1,22,1,14,1,18,1,10, - 2,10,2,2,3,14,1,14,1,18,1,12,2,12,1,20, - 1,8,1,8,1,36,202,14,55,4,1,2,247,2,246,2, - 246,2,227,2,227,2,248,2,246,2,248,255,128,114,27,0, - 0,0,117,190,1,0,0,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, - 73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88, - 89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104, - 105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120, - 121,122,123,124,125,126,127,195,135,195,188,195,169,195,162,195, - 164,195,160,195,165,195,167,195,170,195,171,195,168,195,175,195, - 174,195,172,195,132,195,133,195,137,195,166,195,134,195,180,195, - 182,195,178,195,187,195,185,195,191,195,150,195,156,194,162,194, - 163,194,165,226,130,167,198,146,195,161,195,173,195,179,195,186, - 195,177,195,145,194,170,194,186,194,191,226,140,144,194,172,194, - 189,194,188,194,161,194,171,194,187,226,150,145,226,150,146,226, - 150,147,226,148,130,226,148,164,226,149,161,226,149,162,226,149, - 150,226,149,149,226,149,163,226,149,145,226,149,151,226,149,157, - 226,149,156,226,149,155,226,148,144,226,148,148,226,148,180,226, - 148,172,226,148,156,226,148,128,226,148,188,226,149,158,226,149, - 159,226,149,154,226,149,148,226,149,169,226,149,166,226,149,160, - 226,149,144,226,149,172,226,149,167,226,149,168,226,149,164,226, - 149,165,226,149,153,226,149,152,226,149,146,226,149,147,226,149, - 171,226,149,170,226,148,152,226,148,140,226,150,136,226,150,132, - 226,150,140,226,150,144,226,150,128,206,177,195,159,206,147,207, - 128,206,163,207,131,194,181,207,132,206,166,206,152,206,169,206, - 180,226,136,158,207,134,206,181,226,136,169,226,137,161,194,177, - 226,137,165,226,137,164,226,140,160,226,140,161,195,183,226,137, - 136,194,176,226,136,153,194,183,226,136,154,226,129,191,194,178, - 226,150,160,194,160,99,0,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,106, - 0,0,0,116,0,114,22,116,1,160,2,100,1,161,1,1, - 0,116,3,100,2,131,1,130,1,100,3,97,0,122,56,122, - 16,100,4,100,5,108,4,109,5,125,0,1,0,87,0,110, - 30,4,0,116,6,121,104,1,0,1,0,1,0,116,1,160, - 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,87, - 0,100,6,97,0,110,6,100,6,97,0,119,0,116,1,160, - 2,100,7,161,1,1,0,124,0,83,0,119,0,41,8,78, - 122,27,122,105,112,105,109,112,111,114,116,58,32,122,108,105, - 98,32,85,78,65,86,65,73,76,65,66,76,69,250,41,99, - 97,110,39,116,32,100,101,99,111,109,112,114,101,115,115,32, - 100,97,116,97,59,32,122,108,105,98,32,110,111,116,32,97, - 118,97,105,108,97,98,108,101,84,114,0,0,0,0,169,1, - 218,10,100,101,99,111,109,112,114,101,115,115,70,122,25,122, - 105,112,105,109,112,111,114,116,58,32,122,108,105,98,32,97, - 118,97,105,108,97,98,108,101,41,7,218,15,95,105,109,112, - 111,114,116,105,110,103,95,122,108,105,98,114,45,0,0,0, - 114,80,0,0,0,114,3,0,0,0,90,4,122,108,105,98, - 114,143,0,0,0,218,9,69,120,99,101,112,116,105,111,110, - 114,142,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,20,95,103,101,116,95,100,101,99,111,109, - 112,114,101,115,115,95,102,117,110,99,32,2,0,0,115,30, - 0,0,0,4,2,10,3,8,1,4,2,4,1,16,1,12, - 1,10,1,8,1,2,128,12,2,10,2,4,1,2,249,255, - 128,114,146,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,17,0,0,0,9,0,0,0,67,0,0,0,115, - 134,1,0,0,124,1,92,8,125,2,125,3,125,4,125,5, - 125,6,125,7,125,8,125,9,124,4,100,1,107,0,114,36, - 116,0,100,2,131,1,130,1,116,1,160,2,124,0,161,1, - 144,1,143,4,125,10,122,14,124,10,160,3,124,6,161,1, - 1,0,87,0,110,32,4,0,116,4,144,1,121,132,1,0, - 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, - 100,4,141,2,130,1,124,10,160,5,100,5,161,1,125,11, - 116,6,124,11,131,1,100,5,107,3,114,128,116,7,100,6, - 131,1,130,1,124,11,100,0,100,7,133,2,25,0,100,8, - 107,3,114,162,116,0,100,9,124,0,155,2,157,2,124,0, - 100,4,141,2,130,1,116,8,124,11,100,10,100,11,133,2, - 25,0,131,1,125,12,116,8,124,11,100,11,100,5,133,2, - 25,0,131,1,125,13,100,5,124,12,23,0,124,13,23,0, - 125,14,124,6,124,14,55,0,125,6,122,14,124,10,160,3, - 124,6,161,1,1,0,87,0,110,32,4,0,116,4,144,1, - 121,130,1,0,1,0,1,0,116,0,100,3,124,0,155,2, - 157,2,124,0,100,4,141,2,130,1,124,10,160,5,124,4, - 161,1,125,15,116,6,124,15,131,1,124,4,107,3,144,1, - 114,38,116,4,100,12,131,1,130,1,87,0,100,0,4,0, - 4,0,131,3,1,0,110,18,49,0,144,1,115,60,119,1, - 1,0,1,0,1,0,89,0,1,0,124,3,100,1,107,2, - 144,1,114,84,124,15,83,0,122,10,116,9,131,0,125,16, - 87,0,110,22,4,0,116,10,144,1,121,128,1,0,1,0, - 1,0,116,0,100,13,131,1,130,1,124,16,124,15,100,14, - 131,2,83,0,119,0,119,0,119,0,41,15,78,114,0,0, - 0,0,122,18,110,101,103,97,116,105,118,101,32,100,97,116, - 97,32,115,105,122,101,114,94,0,0,0,114,12,0,0,0, - 114,106,0,0,0,114,100,0,0,0,114,95,0,0,0,115, - 4,0,0,0,80,75,3,4,122,23,98,97,100,32,108,111, - 99,97,108,32,102,105,108,101,32,104,101,97,100,101,114,58, - 32,233,26,0,0,0,114,105,0,0,0,122,26,122,105,112, - 105,109,112,111,114,116,58,32,99,97,110,39,116,32,114,101, - 97,100,32,100,97,116,97,114,141,0,0,0,105,241,255,255, - 255,41,11,114,3,0,0,0,114,112,0,0,0,114,113,0, - 0,0,114,114,0,0,0,114,22,0,0,0,114,116,0,0, - 0,114,55,0,0,0,114,121,0,0,0,114,1,0,0,0, - 114,146,0,0,0,114,145,0,0,0,41,17,114,29,0,0, - 0,114,58,0,0,0,90,8,100,97,116,97,112,97,116,104, - 114,132,0,0,0,114,136,0,0,0,114,127,0,0,0,114, - 139,0,0,0,114,133,0,0,0,114,134,0,0,0,114,135, - 0,0,0,114,125,0,0,0,114,126,0,0,0,114,137,0, - 0,0,114,138,0,0,0,114,129,0,0,0,90,8,114,97, - 119,95,100,97,116,97,114,143,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,56,0,0,0,53, - 2,0,0,115,70,0,0,0,20,1,8,1,8,1,14,2, - 2,2,14,1,14,1,18,1,10,1,12,1,8,1,16,2, - 18,2,16,2,16,1,12,1,8,1,2,1,14,1,14,1, - 18,1,10,1,14,1,40,1,10,2,4,2,2,3,10,1, - 14,1,8,1,10,1,2,254,2,243,2,240,255,128,114,56, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,124,0,124,1,24,0,131,1,100,1,107,1,83, - 0,41,2,78,114,5,0,0,0,41,1,218,3,97,98,115, - 41,2,90,2,116,49,90,2,116,50,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,9,95,101,113,95,109, - 116,105,109,101,99,2,0,0,115,4,0,0,0,16,2,255, - 128,114,149,0,0,0,99,5,0,0,0,0,0,0,0,0, - 0,0,0,14,0,0,0,6,0,0,0,67,0,0,0,115, - 254,0,0,0,124,3,124,2,100,1,156,2,125,5,116,0, - 160,1,124,4,124,3,124,5,161,3,125,6,124,6,100,2, - 64,0,100,3,107,3,125,7,124,7,114,126,124,6,100,4, - 64,0,100,3,107,3,125,8,116,2,106,3,100,5,107,3, - 114,206,124,8,115,76,116,2,106,3,100,6,107,2,114,206, - 116,4,124,0,124,2,131,2,125,9,124,9,100,0,117,1, - 114,206,116,2,160,5,116,0,106,6,124,9,161,2,125,10, - 116,0,160,7,124,4,124,10,124,3,124,5,161,4,1,0, - 110,80,116,8,124,0,124,2,131,2,92,2,125,11,125,12, - 124,11,114,206,116,9,116,10,124,4,100,7,100,8,133,2, - 25,0,131,1,124,11,131,2,114,186,116,10,124,4,100,8, - 100,9,133,2,25,0,131,1,124,12,107,3,114,206,116,11, - 160,12,100,10,124,3,155,2,157,2,161,1,1,0,100,0, - 83,0,116,13,160,14,124,4,100,9,100,0,133,2,25,0, - 161,1,125,13,116,15,124,13,116,16,131,2,115,250,116,17, - 100,11,124,1,155,2,100,12,157,3,131,1,130,1,124,13, - 83,0,41,13,78,41,2,114,44,0,0,0,114,13,0,0, - 0,114,5,0,0,0,114,0,0,0,0,114,88,0,0,0, - 90,5,110,101,118,101,114,90,6,97,108,119,97,121,115,114, - 101,0,0,0,114,96,0,0,0,114,97,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,122,16,99,111,109,112,105,108,101,100, - 32,109,111,100,117,108,101,32,122,21,32,105,115,32,110,111, - 116,32,97,32,99,111,100,101,32,111,98,106,101,99,116,41, - 18,114,21,0,0,0,90,13,95,99,108,97,115,115,105,102, - 121,95,112,121,99,218,4,95,105,109,112,90,21,99,104,101, - 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121, - 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117, - 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104, - 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, - 66,69,82,90,18,95,118,97,108,105,100,97,116,101,95,104, - 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116, - 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95, - 115,111,117,114,99,101,114,149,0,0,0,114,2,0,0,0, - 114,45,0,0,0,114,80,0,0,0,218,7,109,97,114,115, - 104,97,108,90,5,108,111,97,100,115,114,15,0,0,0,218, - 10,95,99,111,100,101,95,116,121,112,101,218,9,84,121,112, - 101,69,114,114,111,114,41,14,114,32,0,0,0,114,57,0, - 0,0,114,66,0,0,0,114,38,0,0,0,114,128,0,0, - 0,90,11,101,120,99,95,100,101,116,97,105,108,115,114,131, - 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,90,12,115, - 111,117,114,99,101,95,98,121,116,101,115,114,152,0,0,0, - 90,12,115,111,117,114,99,101,95,109,116,105,109,101,90,11, - 115,111,117,114,99,101,95,115,105,122,101,114,50,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 15,95,117,110,109,97,114,115,104,97,108,95,99,111,100,101, - 107,2,0,0,115,72,0,0,0,2,2,2,1,6,254,14, - 5,12,2,4,1,12,1,10,1,2,1,2,255,8,1,2, - 255,10,2,8,1,4,1,4,1,2,1,4,254,4,5,8, - 1,6,255,8,4,6,255,4,3,22,3,18,1,2,255,4, - 2,8,1,4,255,4,2,18,2,10,1,16,1,4,1,255, - 128,114,157,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, - 28,0,0,0,124,0,160,0,100,1,100,2,161,2,125,0, - 124,0,160,0,100,3,100,2,161,2,125,0,124,0,83,0, - 41,4,78,115,2,0,0,0,13,10,243,1,0,0,0,10, - 243,1,0,0,0,13,41,1,114,19,0,0,0,41,1,218, - 6,115,111,117,114,99,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,23,95,110,111,114,109,97,108,105, - 122,101,95,108,105,110,101,95,101,110,100,105,110,103,115,152, - 2,0,0,115,8,0,0,0,12,1,12,1,4,1,255,128, - 114,161,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,24, - 0,0,0,116,0,124,1,131,1,125,1,116,1,124,1,124, - 0,100,1,100,2,100,3,141,4,83,0,41,4,78,114,78, - 0,0,0,84,41,1,90,12,100,111,110,116,95,105,110,104, - 101,114,105,116,41,2,114,161,0,0,0,218,7,99,111,109, - 112,105,108,101,41,2,114,57,0,0,0,114,160,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 15,95,99,111,109,112,105,108,101,95,115,111,117,114,99,101, - 159,2,0,0,115,6,0,0,0,8,1,16,1,255,128,114, - 163,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,11,0,0,0,67,0,0,0,115,68,0, - 0,0,116,0,160,1,124,0,100,1,63,0,100,2,23,0, - 124,0,100,3,63,0,100,4,64,0,124,0,100,5,64,0, - 124,1,100,6,63,0,124,1,100,3,63,0,100,7,64,0, - 124,1,100,5,64,0,100,8,20,0,100,9,100,9,100,9, - 102,9,161,1,83,0,41,10,78,233,9,0,0,0,105,188, - 7,0,0,233,5,0,0,0,233,15,0,0,0,233,31,0, - 0,0,233,11,0,0,0,233,63,0,0,0,114,88,0,0, - 0,114,14,0,0,0,41,2,114,133,0,0,0,90,6,109, - 107,116,105,109,101,41,2,218,1,100,114,140,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,14, - 95,112,97,114,115,101,95,100,111,115,116,105,109,101,165,2, - 0,0,115,20,0,0,0,4,1,10,1,10,1,6,1,6, - 1,10,1,10,1,6,1,6,249,255,128,114,171,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,10,0,0,0,67,0,0,0,115,110,0,0,0,122,82, - 124,1,100,1,100,0,133,2,25,0,100,2,118,0,115,22, - 74,0,130,1,124,1,100,0,100,1,133,2,25,0,125,1, - 124,0,106,0,124,1,25,0,125,2,124,2,100,3,25,0, - 125,3,124,2,100,4,25,0,125,4,124,2,100,5,25,0, - 125,5,116,1,124,4,124,3,131,2,124,5,102,2,87,0, - 83,0,4,0,116,2,116,3,116,4,102,3,121,108,1,0, - 1,0,1,0,89,0,100,6,83,0,119,0,41,7,78,114, - 14,0,0,0,169,2,218,1,99,218,1,111,114,165,0,0, - 0,233,6,0,0,0,233,3,0,0,0,41,2,114,0,0, - 0,0,114,0,0,0,0,41,5,114,28,0,0,0,114,171, - 0,0,0,114,26,0,0,0,218,10,73,110,100,101,120,69, - 114,114,111,114,114,156,0,0,0,41,6,114,32,0,0,0, - 114,13,0,0,0,114,58,0,0,0,114,133,0,0,0,114, - 134,0,0,0,90,17,117,110,99,111,109,112,114,101,115,115, - 101,100,95,115,105,122,101,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,114,153,0,0,0,178,2,0,0,115, - 24,0,0,0,2,1,20,2,12,1,10,1,8,3,8,1, - 8,1,16,1,18,1,6,1,2,255,255,128,114,153,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,5,0,0,0,67,0,0,0,115,24,0,0,0,100,1, + 124,0,106,0,155,0,116,1,155,0,124,0,106,2,155,0, + 100,2,157,5,83,0,41,3,78,122,21,60,122,105,112,105, + 109,112,111,114,116,101,114,32,111,98,106,101,99,116,32,34, + 122,2,34,62,41,3,114,29,0,0,0,114,20,0,0,0, + 114,31,0,0,0,41,1,114,32,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,8,95,95,114, + 101,112,114,95,95,68,1,0,0,115,4,0,0,0,24,1, + 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, + 95,95,114,101,112,114,95,95,41,1,78,41,1,78,41,1, + 78,41,16,114,6,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,7,95,95,100,111,99,95,95,114,34,0,0,0, + 114,41,0,0,0,114,42,0,0,0,114,46,0,0,0,114, + 52,0,0,0,114,59,0,0,0,114,60,0,0,0,114,67, + 0,0,0,114,43,0,0,0,114,82,0,0,0,114,84,0, + 0,0,114,85,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,4,0,0,0, + 46,0,0,0,115,30,0,0,0,8,0,4,1,8,17,10, + 46,10,34,10,13,8,27,8,10,8,21,8,12,8,26,8, + 13,8,43,12,15,255,128,122,12,95,95,105,110,105,116,95, + 95,46,112,121,99,84,114,63,0,0,0,70,41,3,122,4, + 46,112,121,99,84,70,41,3,114,64,0,0,0,70,70,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,67,0,0,0,115,20,0,0,0,124,0,106, + 0,124,1,160,1,100,1,161,1,100,2,25,0,23,0,83, + 0,41,3,78,218,1,46,233,2,0,0,0,41,2,114,31, + 0,0,0,218,10,114,112,97,114,116,105,116,105,111,110,41, + 2,114,32,0,0,0,114,38,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,36,0,0,0,86, + 1,0,0,115,4,0,0,0,20,1,255,128,114,36,0,0, 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,8,0,0,0,67,0,0,0,115,80,0,0,0,124, - 1,100,1,100,0,133,2,25,0,100,2,118,0,115,20,74, - 0,130,1,124,1,100,0,100,1,133,2,25,0,125,1,122, - 14,124,0,106,0,124,1,25,0,125,2,87,0,110,18,4, - 0,116,1,121,78,1,0,1,0,1,0,89,0,100,0,83, - 0,116,2,124,0,106,3,124,2,131,2,83,0,119,0,41, - 3,78,114,14,0,0,0,114,172,0,0,0,41,4,114,28, - 0,0,0,114,26,0,0,0,114,56,0,0,0,114,29,0, - 0,0,41,3,114,32,0,0,0,114,13,0,0,0,114,58, + 0,0,2,0,0,0,67,0,0,0,115,18,0,0,0,124, + 1,116,0,23,0,125,2,124,2,124,0,106,1,118,0,83, + 0,169,1,78,41,2,114,20,0,0,0,114,28,0,0,0, + 41,3,114,32,0,0,0,114,13,0,0,0,90,7,100,105, + 114,112,97,116,104,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,114,37,0,0,0,90,1,0,0,115,6,0, + 0,0,8,4,10,2,255,128,114,37,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,0, + 0,0,67,0,0,0,115,56,0,0,0,116,0,124,0,124, + 1,131,2,125,2,116,1,68,0,93,36,92,3,125,3,125, + 4,125,5,124,2,124,3,23,0,125,6,124,6,124,0,106, + 2,118,0,114,50,124,5,2,0,1,0,83,0,113,14,100, + 0,83,0,114,90,0,0,0,41,3,114,36,0,0,0,218, + 16,95,122,105,112,95,115,101,97,114,99,104,111,114,100,101, + 114,114,28,0,0,0,41,7,114,32,0,0,0,114,38,0, + 0,0,114,13,0,0,0,218,6,115,117,102,102,105,120,218, + 10,105,115,98,121,116,101,99,111,100,101,114,51,0,0,0, + 114,66,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,114,35,0,0,0,99,1,0,0,115,16,0, + 0,0,10,1,14,1,8,1,10,1,8,1,2,128,4,1, + 255,128,114,35,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,26,0,0,0,9,0,0,0,67,0,0,0, + 115,236,4,0,0,122,14,116,0,160,1,124,0,161,1,125, + 1,87,0,110,32,4,0,116,2,144,4,121,234,1,0,1, + 0,1,0,116,3,100,1,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,1,144,4,143,130,1,0,122,36,124, + 1,160,4,116,5,11,0,100,3,161,2,1,0,124,1,160, + 6,161,0,125,2,124,1,160,7,116,5,161,1,125,3,87, + 0,110,32,4,0,116,2,144,4,121,232,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,116,8,124,3,131,1,116,5,107,3,114,156,116, + 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,124,3,100,0,100,5,133,2,25,0,116,9,107,3,144, + 1,114,152,122,24,124,1,160,4,100,6,100,3,161,2,1, + 0,124,1,160,6,161,0,125,4,87,0,110,32,4,0,116, + 2,144,4,121,230,1,0,1,0,1,0,116,3,100,4,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,116,10,124, + 4,116,11,24,0,116,5,24,0,100,6,131,2,125,5,122, + 22,124,1,160,4,124,5,161,1,1,0,124,1,160,7,161, + 0,125,6,87,0,110,32,4,0,116,2,144,4,121,228,1, + 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,6,160,12,116,9,161,1,125, + 7,124,7,100,6,107,0,144,1,114,88,116,3,100,7,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,6,124, + 7,124,7,116,5,23,0,133,2,25,0,125,3,116,8,124, + 3,131,1,116,5,107,3,144,1,114,136,116,3,100,8,124, + 0,155,2,157,2,124,0,100,2,141,2,130,1,124,4,116, + 8,124,6,131,1,24,0,124,7,23,0,125,2,116,13,124, + 3,100,9,100,10,133,2,25,0,131,1,125,8,116,13,124, + 3,100,10,100,11,133,2,25,0,131,1,125,9,124,2,124, + 8,107,0,144,1,114,212,116,3,100,12,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,124,2,124,9,107,0,144, + 1,114,240,116,3,100,13,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,2,124,8,56,0,125,2,124,2,124, + 9,24,0,125,10,124,10,100,6,107,0,144,2,114,28,116, + 3,100,14,124,0,155,2,157,2,124,0,100,2,141,2,130, + 1,105,0,125,11,100,6,125,12,122,14,124,1,160,4,124, + 2,161,1,1,0,87,0,110,32,4,0,116,2,144,4,121, + 226,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,9,0,124,1,160,7,100, + 16,161,1,125,3,116,8,124,3,131,1,100,5,107,0,144, + 2,114,118,116,14,100,17,131,1,130,1,124,3,100,0,100, + 5,133,2,25,0,100,18,107,3,144,2,114,140,144,4,113, + 170,116,8,124,3,131,1,100,16,107,3,144,2,114,162,116, + 14,100,17,131,1,130,1,116,15,124,3,100,19,100,20,133, + 2,25,0,131,1,125,13,116,15,124,3,100,20,100,9,133, + 2,25,0,131,1,125,14,116,15,124,3,100,9,100,21,133, + 2,25,0,131,1,125,15,116,15,124,3,100,21,100,10,133, + 2,25,0,131,1,125,16,116,13,124,3,100,10,100,11,133, + 2,25,0,131,1,125,17,116,13,124,3,100,11,100,22,133, + 2,25,0,131,1,125,18,116,13,124,3,100,22,100,23,133, + 2,25,0,131,1,125,4,116,15,124,3,100,23,100,24,133, + 2,25,0,131,1,125,19,116,15,124,3,100,24,100,25,133, + 2,25,0,131,1,125,20,116,15,124,3,100,25,100,26,133, + 2,25,0,131,1,125,21,116,13,124,3,100,27,100,16,133, + 2,25,0,131,1,125,22,124,19,124,20,23,0,124,21,23, + 0,125,8,124,22,124,9,107,4,144,3,114,122,116,3,100, + 28,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 22,124,10,55,0,125,22,122,14,124,1,160,7,124,19,161, + 1,125,23,87,0,110,32,4,0,116,2,144,4,121,224,1, + 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,116,8,124,23,131,1,124,19,107, + 3,144,3,114,210,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,122,50,116,8,124,1,160,7,124, + 8,124,19,24,0,161,1,131,1,124,8,124,19,24,0,107, + 3,144,4,114,2,116,3,100,4,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,87,0,110,32,4,0,116,2,144, + 4,121,222,1,0,1,0,1,0,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,124,13,100,29,64, + 0,144,4,114,58,124,23,160,16,161,0,125,23,110,48,122, + 14,124,23,160,16,100,30,161,1,125,23,87,0,110,32,4, + 0,116,17,144,4,121,220,1,0,1,0,1,0,124,23,160, + 16,100,31,161,1,160,18,116,19,161,1,125,23,89,0,124, + 23,160,20,100,32,116,21,161,2,125,23,116,22,160,23,124, + 0,124,23,161,2,125,24,124,24,124,14,124,18,124,4,124, + 22,124,15,124,16,124,17,102,8,125,25,124,25,124,11,124, + 23,60,0,124,12,100,33,55,0,125,12,144,2,113,86,87, + 0,100,0,4,0,4,0,131,3,1,0,110,18,49,0,144, + 4,115,192,119,1,1,0,1,0,1,0,89,0,1,0,116, + 24,160,25,100,34,124,12,124,0,161,3,1,0,124,11,83, + 0,119,0,119,0,119,0,119,0,119,0,119,0,119,0,119, + 0,41,35,78,122,21,99,97,110,39,116,32,111,112,101,110, + 32,90,105,112,32,102,105,108,101,58,32,114,12,0,0,0, + 114,88,0,0,0,250,21,99,97,110,39,116,32,114,101,97, + 100,32,90,105,112,32,102,105,108,101,58,32,233,4,0,0, + 0,114,0,0,0,0,122,16,110,111,116,32,97,32,90,105, + 112,32,102,105,108,101,58,32,122,18,99,111,114,114,117,112, + 116,32,90,105,112,32,102,105,108,101,58,32,233,12,0,0, + 0,233,16,0,0,0,233,20,0,0,0,122,28,98,97,100, + 32,99,101,110,116,114,97,108,32,100,105,114,101,99,116,111, + 114,121,32,115,105,122,101,58,32,122,30,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,111,102,102,115,101,116,58,32,122,38,98,97,100,32,99, + 101,110,116,114,97,108,32,100,105,114,101,99,116,111,114,121, + 32,115,105,122,101,32,111,114,32,111,102,102,115,101,116,58, + 32,84,233,46,0,0,0,250,27,69,79,70,32,114,101,97, + 100,32,119,104,101,114,101,32,110,111,116,32,101,120,112,101, + 99,116,101,100,115,4,0,0,0,80,75,1,2,233,8,0, + 0,0,233,10,0,0,0,233,14,0,0,0,233,24,0,0, + 0,233,28,0,0,0,233,30,0,0,0,233,32,0,0,0, + 233,34,0,0,0,233,42,0,0,0,122,25,98,97,100,32, + 108,111,99,97,108,32,104,101,97,100,101,114,32,111,102,102, + 115,101,116,58,32,105,0,8,0,0,218,5,97,115,99,105, + 105,90,6,108,97,116,105,110,49,250,1,47,114,5,0,0, + 0,122,33,122,105,112,105,109,112,111,114,116,58,32,102,111, + 117,110,100,32,123,125,32,110,97,109,101,115,32,105,110,32, + 123,33,114,125,41,26,218,3,95,105,111,218,9,111,112,101, + 110,95,99,111,100,101,114,22,0,0,0,114,3,0,0,0, + 218,4,115,101,101,107,218,20,69,78,68,95,67,69,78,84, + 82,65,76,95,68,73,82,95,83,73,90,69,90,4,116,101, + 108,108,218,4,114,101,97,100,114,55,0,0,0,218,18,83, + 84,82,73,78,71,95,69,78,68,95,65,82,67,72,73,86, + 69,218,3,109,97,120,218,15,77,65,88,95,67,79,77,77, + 69,78,84,95,76,69,78,218,5,114,102,105,110,100,114,2, + 0,0,0,218,8,69,79,70,69,114,114,111,114,114,1,0, + 0,0,114,65,0,0,0,218,18,85,110,105,99,111,100,101, + 68,101,99,111,100,101,69,114,114,111,114,218,9,116,114,97, + 110,115,108,97,116,101,218,11,99,112,52,51,55,95,116,97, + 98,108,101,114,19,0,0,0,114,20,0,0,0,114,21,0, + 0,0,114,30,0,0,0,114,45,0,0,0,114,80,0,0, + 0,41,26,114,29,0,0,0,218,2,102,112,90,15,104,101, + 97,100,101,114,95,112,111,115,105,116,105,111,110,218,6,98, + 117,102,102,101,114,218,9,102,105,108,101,95,115,105,122,101, + 90,17,109,97,120,95,99,111,109,109,101,110,116,95,115,116, + 97,114,116,218,4,100,97,116,97,90,3,112,111,115,218,11, + 104,101,97,100,101,114,95,115,105,122,101,90,13,104,101,97, + 100,101,114,95,111,102,102,115,101,116,90,10,97,114,99,95, + 111,102,102,115,101,116,114,33,0,0,0,218,5,99,111,117, + 110,116,218,5,102,108,97,103,115,218,8,99,111,109,112,114, + 101,115,115,218,4,116,105,109,101,218,4,100,97,116,101,218, + 3,99,114,99,218,9,100,97,116,97,95,115,105,122,101,218, + 9,110,97,109,101,95,115,105,122,101,218,10,101,120,116,114, + 97,95,115,105,122,101,90,12,99,111,109,109,101,110,116,95, + 115,105,122,101,218,11,102,105,108,101,95,111,102,102,115,101, + 116,114,44,0,0,0,114,13,0,0,0,218,1,116,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,114,27,0, + 0,0,130,1,0,0,115,234,0,0,0,2,1,14,1,14, + 1,18,1,8,2,2,1,14,1,8,1,14,1,14,1,18, + 1,12,1,18,1,18,1,2,3,12,1,12,1,14,1,10, + 1,2,1,6,255,8,2,2,1,2,255,2,1,4,255,2, + 2,10,1,12,1,14,1,10,1,2,1,6,255,10,2,10, + 1,10,1,2,1,6,255,16,2,14,1,10,1,2,1,6, + 255,16,2,16,2,16,1,10,1,18,1,10,1,18,1,8, + 1,8,1,10,1,18,1,4,2,4,2,2,1,14,1,14, + 1,18,1,2,1,10,1,14,1,8,1,18,2,4,1,14, + 1,8,1,16,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,12,1,10,1,18,1,8, + 1,2,2,14,1,14,1,18,1,14,1,18,1,2,4,28, + 1,22,1,14,1,18,1,10,2,10,2,2,3,14,1,14, + 1,18,1,12,2,12,1,20,1,8,1,8,1,36,202,14, + 55,4,1,2,247,2,246,2,246,2,227,2,227,2,248,2, + 246,2,248,255,128,114,27,0,0,0,117,190,1,0,0,0, + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48, + 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64, + 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80, + 81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96, + 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, + 113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,195, + 135,195,188,195,169,195,162,195,164,195,160,195,165,195,167,195, + 170,195,171,195,168,195,175,195,174,195,172,195,132,195,133,195, + 137,195,166,195,134,195,180,195,182,195,178,195,187,195,185,195, + 191,195,150,195,156,194,162,194,163,194,165,226,130,167,198,146, + 195,161,195,173,195,179,195,186,195,177,195,145,194,170,194,186, + 194,191,226,140,144,194,172,194,189,194,188,194,161,194,171,194, + 187,226,150,145,226,150,146,226,150,147,226,148,130,226,148,164, + 226,149,161,226,149,162,226,149,150,226,149,149,226,149,163,226, + 149,145,226,149,151,226,149,157,226,149,156,226,149,155,226,148, + 144,226,148,148,226,148,180,226,148,172,226,148,156,226,148,128, + 226,148,188,226,149,158,226,149,159,226,149,154,226,149,148,226, + 149,169,226,149,166,226,149,160,226,149,144,226,149,172,226,149, + 167,226,149,168,226,149,164,226,149,165,226,149,153,226,149,152, + 226,149,146,226,149,147,226,149,171,226,149,170,226,148,152,226, + 148,140,226,150,136,226,150,132,226,150,140,226,150,144,226,150, + 128,206,177,195,159,206,147,207,128,206,163,207,131,194,181,207, + 132,206,166,206,152,206,169,206,180,226,136,158,207,134,206,181, + 226,136,169,226,137,161,194,177,226,137,165,226,137,164,226,140, + 160,226,140,161,195,183,226,137,136,194,176,226,136,153,194,183, + 226,136,154,226,129,191,194,178,226,150,160,194,160,99,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0, + 0,0,67,0,0,0,115,106,0,0,0,116,0,114,22,116, + 1,160,2,100,1,161,1,1,0,116,3,100,2,131,1,130, + 1,100,3,97,0,122,56,122,16,100,4,100,5,108,4,109, + 5,125,0,1,0,87,0,110,30,4,0,116,6,121,104,1, + 0,1,0,1,0,116,1,160,2,100,1,161,1,1,0,116, + 3,100,2,131,1,130,1,87,0,100,6,97,0,110,6,100, + 6,97,0,119,0,116,1,160,2,100,7,161,1,1,0,124, + 0,83,0,119,0,41,8,78,122,27,122,105,112,105,109,112, + 111,114,116,58,32,122,108,105,98,32,85,78,65,86,65,73, + 76,65,66,76,69,250,41,99,97,110,39,116,32,100,101,99, + 111,109,112,114,101,115,115,32,100,97,116,97,59,32,122,108, + 105,98,32,110,111,116,32,97,118,97,105,108,97,98,108,101, + 84,114,0,0,0,0,169,1,218,10,100,101,99,111,109,112, + 114,101,115,115,70,122,25,122,105,112,105,109,112,111,114,116, + 58,32,122,108,105,98,32,97,118,97,105,108,97,98,108,101, + 41,7,218,15,95,105,109,112,111,114,116,105,110,103,95,122, + 108,105,98,114,45,0,0,0,114,80,0,0,0,114,3,0, + 0,0,90,4,122,108,105,98,114,143,0,0,0,218,9,69, + 120,99,101,112,116,105,111,110,114,142,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,20,95,103, + 101,116,95,100,101,99,111,109,112,114,101,115,115,95,102,117, + 110,99,32,2,0,0,115,30,0,0,0,4,2,10,3,8, + 1,4,2,4,1,16,1,12,1,10,1,8,1,2,128,12, + 2,10,2,4,1,2,249,255,128,114,146,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,9, + 0,0,0,67,0,0,0,115,134,1,0,0,124,1,92,8, + 125,2,125,3,125,4,125,5,125,6,125,7,125,8,125,9, + 124,4,100,1,107,0,114,36,116,0,100,2,131,1,130,1, + 116,1,160,2,124,0,161,1,144,1,143,4,125,10,122,14, + 124,10,160,3,124,6,161,1,1,0,87,0,110,32,4,0, + 116,4,144,1,121,132,1,0,1,0,1,0,116,0,100,3, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,124,10, + 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5, + 107,3,114,128,116,7,100,6,131,1,130,1,124,11,100,0, + 100,7,133,2,25,0,100,8,107,3,114,162,116,0,100,9, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8, + 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8, + 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5, + 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0, + 125,6,122,14,124,10,160,3,124,6,161,1,1,0,87,0, + 110,32,4,0,116,4,144,1,121,130,1,0,1,0,1,0, + 116,0,100,3,124,0,155,2,157,2,124,0,100,4,141,2, + 130,1,124,10,160,5,124,4,161,1,125,15,116,6,124,15, + 131,1,124,4,107,3,144,1,114,38,116,4,100,12,131,1, + 130,1,87,0,100,0,4,0,4,0,131,3,1,0,110,18, + 49,0,144,1,115,60,119,1,1,0,1,0,1,0,89,0, + 1,0,124,3,100,1,107,2,144,1,114,84,124,15,83,0, + 122,10,116,9,131,0,125,16,87,0,110,22,4,0,116,10, + 144,1,121,128,1,0,1,0,1,0,116,0,100,13,131,1, + 130,1,124,16,124,15,100,14,131,2,83,0,119,0,119,0, + 119,0,41,15,78,114,0,0,0,0,122,18,110,101,103,97, + 116,105,118,101,32,100,97,116,97,32,115,105,122,101,114,94, + 0,0,0,114,12,0,0,0,114,106,0,0,0,114,100,0, + 0,0,114,95,0,0,0,115,4,0,0,0,80,75,3,4, + 122,23,98,97,100,32,108,111,99,97,108,32,102,105,108,101, + 32,104,101,97,100,101,114,58,32,233,26,0,0,0,114,105, + 0,0,0,122,26,122,105,112,105,109,112,111,114,116,58,32, + 99,97,110,39,116,32,114,101,97,100,32,100,97,116,97,114, + 141,0,0,0,105,241,255,255,255,41,11,114,3,0,0,0, + 114,112,0,0,0,114,113,0,0,0,114,114,0,0,0,114, + 22,0,0,0,114,116,0,0,0,114,55,0,0,0,114,121, + 0,0,0,114,1,0,0,0,114,146,0,0,0,114,145,0, + 0,0,41,17,114,29,0,0,0,114,58,0,0,0,90,8, + 100,97,116,97,112,97,116,104,114,132,0,0,0,114,136,0, + 0,0,114,127,0,0,0,114,139,0,0,0,114,133,0,0, + 0,114,134,0,0,0,114,135,0,0,0,114,125,0,0,0, + 114,126,0,0,0,114,137,0,0,0,114,138,0,0,0,114, + 129,0,0,0,90,8,114,97,119,95,100,97,116,97,114,143, 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,114,151,0,0,0,197,2,0,0,115,18,0,0,0, - 20,2,12,1,2,2,14,1,12,1,6,1,12,2,2,253, - 255,128,114,151,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,14,0,0,0,11,0,0,0,67,0,0,0, - 115,18,1,0,0,116,0,124,0,124,1,131,2,125,2,100, - 0,125,3,116,1,68,0,93,204,92,3,125,4,125,5,125, - 6,124,2,124,4,23,0,125,7,116,2,106,3,100,1,124, - 0,106,4,116,5,124,7,100,2,100,3,141,5,1,0,122, - 14,124,0,106,6,124,7,25,0,125,8,87,0,110,18,4, - 0,116,7,144,1,121,16,1,0,1,0,1,0,89,0,113, - 18,124,8,100,4,25,0,125,9,116,8,124,0,106,4,124, - 8,131,2,125,10,100,0,125,11,124,5,114,182,122,20,116, - 9,124,0,124,9,124,7,124,1,124,10,131,5,125,11,87, - 0,110,50,4,0,116,10,144,1,121,14,1,0,125,12,1, - 0,122,16,124,12,125,3,87,0,89,0,100,0,125,12,126, - 12,110,18,100,0,125,12,126,12,119,1,116,11,124,9,124, - 10,131,2,125,11,124,11,100,0,117,0,114,202,113,18,124, - 8,100,4,25,0,125,9,124,11,124,6,124,9,102,3,2, - 0,1,0,83,0,124,3,114,252,100,5,124,3,155,0,157, - 2,125,13,116,12,124,13,124,1,100,6,141,2,124,3,130, - 2,116,12,100,7,124,1,155,2,157,2,124,1,100,6,141, - 2,130,1,119,0,119,0,41,8,78,122,13,116,114,121,105, - 110,103,32,123,125,123,125,123,125,114,88,0,0,0,41,1, - 90,9,118,101,114,98,111,115,105,116,121,114,0,0,0,0, - 122,20,109,111,100,117,108,101,32,108,111,97,100,32,102,97, - 105,108,101,100,58,32,114,62,0,0,0,114,61,0,0,0, - 41,13,114,36,0,0,0,114,91,0,0,0,114,45,0,0, - 0,114,80,0,0,0,114,29,0,0,0,114,20,0,0,0, - 114,28,0,0,0,114,26,0,0,0,114,56,0,0,0,114, - 157,0,0,0,114,79,0,0,0,114,163,0,0,0,114,3, - 0,0,0,41,14,114,32,0,0,0,114,38,0,0,0,114, - 13,0,0,0,90,12,105,109,112,111,114,116,95,101,114,114, - 111,114,114,92,0,0,0,114,93,0,0,0,114,51,0,0, - 0,114,66,0,0,0,114,58,0,0,0,114,40,0,0,0, - 114,128,0,0,0,114,50,0,0,0,90,3,101,120,99,114, - 81,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,114,48,0,0,0,212,2,0,0,115,60,0,0, - 0,10,1,4,1,14,1,8,1,22,1,2,1,14,1,14, - 1,4,1,8,2,12,1,4,1,4,1,2,1,20,1,16, - 1,16,1,8,128,10,2,8,1,2,3,8,1,14,1,4, - 2,10,1,14,1,18,2,2,241,2,247,255,128,114,48,0, - 0,0,41,46,114,86,0,0,0,90,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,21,0,0,0,114,1,0,0,0,114, - 2,0,0,0,90,17,95,102,114,111,122,101,110,95,105,109, - 112,111,114,116,108,105,98,114,45,0,0,0,114,150,0,0, - 0,114,112,0,0,0,114,154,0,0,0,114,71,0,0,0, - 114,133,0,0,0,114,69,0,0,0,90,7,95,95,97,108, - 108,95,95,114,20,0,0,0,90,15,112,97,116,104,95,115, - 101,112,97,114,97,116,111,114,115,114,18,0,0,0,114,79, - 0,0,0,114,3,0,0,0,114,25,0,0,0,218,4,116, - 121,112,101,114,74,0,0,0,114,115,0,0,0,114,117,0, - 0,0,114,119,0,0,0,90,13,95,76,111,97,100,101,114, - 66,97,115,105,99,115,114,4,0,0,0,114,91,0,0,0, - 114,36,0,0,0,114,37,0,0,0,114,35,0,0,0,114, - 27,0,0,0,114,124,0,0,0,114,144,0,0,0,114,146, - 0,0,0,114,56,0,0,0,114,149,0,0,0,114,157,0, - 0,0,218,8,95,95,99,111,100,101,95,95,114,155,0,0, - 0,114,161,0,0,0,114,163,0,0,0,114,171,0,0,0, - 114,153,0,0,0,114,151,0,0,0,114,48,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,8,60,109,111,100,117,108,101,62,1,0,0, - 0,115,92,0,0,0,4,0,8,16,16,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,2,6,3,14,1, - 16,3,4,4,8,2,4,2,4,1,4,1,18,2,0,127, - 0,127,12,34,12,1,2,1,2,1,4,252,8,9,8,4, - 8,9,8,31,2,126,2,254,4,29,8,5,8,21,8,46, - 8,8,10,40,8,5,8,7,8,6,8,13,8,19,12,15, - 255,128, + 0,0,114,56,0,0,0,53,2,0,0,115,70,0,0,0, + 20,1,8,1,8,1,14,2,2,2,14,1,14,1,18,1, + 10,1,12,1,8,1,16,2,18,2,16,2,16,1,12,1, + 8,1,2,1,14,1,14,1,18,1,10,1,14,1,40,1, + 10,2,4,2,2,3,10,1,14,1,8,1,10,1,2,254, + 2,243,2,240,255,128,114,56,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,16,0,0,0,116,0,124,0,124,1,24, + 0,131,1,100,1,107,1,83,0,41,2,78,114,5,0,0, + 0,41,1,218,3,97,98,115,41,2,90,2,116,49,90,2, + 116,50,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,9,95,101,113,95,109,116,105,109,101,99,2,0,0, + 115,4,0,0,0,16,2,255,128,114,149,0,0,0,99,5, + 0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,6, + 0,0,0,67,0,0,0,115,254,0,0,0,124,3,124,2, + 100,1,156,2,125,5,116,0,160,1,124,4,124,3,124,5, + 161,3,125,6,124,6,100,2,64,0,100,3,107,3,125,7, + 124,7,114,126,124,6,100,4,64,0,100,3,107,3,125,8, + 116,2,106,3,100,5,107,3,114,124,124,8,115,76,116,2, + 106,3,100,6,107,2,114,124,116,4,124,0,124,2,131,2, + 125,9,124,9,100,0,117,1,114,124,116,2,160,5,116,0, + 106,6,124,9,161,2,125,10,116,0,160,7,124,4,124,10, + 124,3,124,5,161,4,1,0,110,80,116,8,124,0,124,2, + 131,2,92,2,125,11,125,12,124,11,114,206,116,9,116,10, + 124,4,100,7,100,8,133,2,25,0,131,1,124,11,131,2, + 114,186,116,10,124,4,100,8,100,9,133,2,25,0,131,1, + 124,12,107,3,114,206,116,11,160,12,100,10,124,3,155,2, + 157,2,161,1,1,0,100,0,83,0,116,13,160,14,124,4, + 100,9,100,0,133,2,25,0,161,1,125,13,116,15,124,13, + 116,16,131,2,115,250,116,17,100,11,124,1,155,2,100,12, + 157,3,131,1,130,1,124,13,83,0,41,13,78,41,2,114, + 44,0,0,0,114,13,0,0,0,114,5,0,0,0,114,0, + 0,0,0,114,88,0,0,0,90,5,110,101,118,101,114,90, + 6,97,108,119,97,121,115,114,101,0,0,0,114,96,0,0, + 0,114,97,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,122,16, + 99,111,109,112,105,108,101,100,32,109,111,100,117,108,101,32, + 122,21,32,105,115,32,110,111,116,32,97,32,99,111,100,101, + 32,111,98,106,101,99,116,41,18,114,21,0,0,0,90,13, + 95,99,108,97,115,115,105,102,121,95,112,121,99,218,4,95, + 105,109,112,90,21,99,104,101,99,107,95,104,97,115,104,95, + 98,97,115,101,100,95,112,121,99,115,218,15,95,103,101,116, + 95,112,121,99,95,115,111,117,114,99,101,218,11,115,111,117, + 114,99,101,95,104,97,115,104,90,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,90,18,95,118,97, + 108,105,100,97,116,101,95,104,97,115,104,95,112,121,99,218, + 29,95,103,101,116,95,109,116,105,109,101,95,97,110,100,95, + 115,105,122,101,95,111,102,95,115,111,117,114,99,101,114,149, + 0,0,0,114,2,0,0,0,114,45,0,0,0,114,80,0, + 0,0,218,7,109,97,114,115,104,97,108,90,5,108,111,97, + 100,115,114,15,0,0,0,218,10,95,99,111,100,101,95,116, + 121,112,101,218,9,84,121,112,101,69,114,114,111,114,41,14, + 114,32,0,0,0,114,57,0,0,0,114,66,0,0,0,114, + 38,0,0,0,114,128,0,0,0,90,11,101,120,99,95,100, + 101,116,97,105,108,115,114,131,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,90,12,115,111,117,114,99,101,95,98,121, + 116,101,115,114,152,0,0,0,90,12,115,111,117,114,99,101, + 95,109,116,105,109,101,90,11,115,111,117,114,99,101,95,115, + 105,122,101,114,50,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,15,95,117,110,109,97,114,115, + 104,97,108,95,99,111,100,101,107,2,0,0,115,72,0,0, + 0,2,2,2,1,6,254,14,5,12,2,4,1,12,1,10, + 1,2,1,2,255,8,1,2,255,10,2,8,1,4,1,4, + 1,2,1,4,254,4,5,8,1,6,255,8,4,6,255,4, + 3,22,3,18,1,2,255,4,2,8,1,4,255,4,2,18, + 2,10,1,16,1,4,1,255,128,114,157,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,67,0,0,0,115,28,0,0,0,124,0,160,0, + 100,1,100,2,161,2,125,0,124,0,160,0,100,3,100,2, + 161,2,125,0,124,0,83,0,41,4,78,115,2,0,0,0, + 13,10,243,1,0,0,0,10,243,1,0,0,0,13,41,1, + 114,19,0,0,0,41,1,218,6,115,111,117,114,99,101,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,23, + 95,110,111,114,109,97,108,105,122,101,95,108,105,110,101,95, + 101,110,100,105,110,103,115,152,2,0,0,115,8,0,0,0, + 12,1,12,1,4,1,255,128,114,161,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0, + 0,0,67,0,0,0,115,24,0,0,0,116,0,124,1,131, + 1,125,1,116,1,124,1,124,0,100,1,100,2,100,3,141, + 4,83,0,41,4,78,114,78,0,0,0,84,41,1,90,12, + 100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,161, + 0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,57, + 0,0,0,114,160,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,15,95,99,111,109,112,105,108, + 101,95,115,111,117,114,99,101,159,2,0,0,115,6,0,0, + 0,8,1,16,1,255,128,114,163,0,0,0,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0, + 0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,0, + 100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, + 64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, + 100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, + 20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,10, + 78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,0, + 233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,233, + 63,0,0,0,114,88,0,0,0,114,14,0,0,0,41,2, + 114,133,0,0,0,90,6,109,107,116,105,109,101,41,2,218, + 1,100,114,140,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,10,0,0,0,218,14,95,112,97,114,115,101,95,100, + 111,115,116,105,109,101,165,2,0,0,115,20,0,0,0,4, + 1,10,1,10,1,6,1,6,1,10,1,10,1,6,1,6, + 249,255,128,114,171,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,10,0,0,0,67,0,0, + 0,115,110,0,0,0,122,82,124,1,100,1,100,0,133,2, + 25,0,100,2,118,0,115,22,74,0,130,1,124,1,100,0, + 100,1,133,2,25,0,125,1,124,0,106,0,124,1,25,0, + 125,2,124,2,100,3,25,0,125,3,124,2,100,4,25,0, + 125,4,124,2,100,5,25,0,125,5,116,1,124,4,124,3, + 131,2,124,5,102,2,87,0,83,0,4,0,116,2,116,3, + 116,4,102,3,121,108,1,0,1,0,1,0,89,0,100,6, + 83,0,119,0,41,7,78,114,14,0,0,0,169,2,218,1, + 99,218,1,111,114,165,0,0,0,233,6,0,0,0,233,3, + 0,0,0,41,2,114,0,0,0,0,114,0,0,0,0,41, + 5,114,28,0,0,0,114,171,0,0,0,114,26,0,0,0, + 218,10,73,110,100,101,120,69,114,114,111,114,114,156,0,0, + 0,41,6,114,32,0,0,0,114,13,0,0,0,114,58,0, + 0,0,114,133,0,0,0,114,134,0,0,0,90,17,117,110, + 99,111,109,112,114,101,115,115,101,100,95,115,105,122,101,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,153, + 0,0,0,178,2,0,0,115,24,0,0,0,2,1,20,2, + 12,1,10,1,8,3,8,1,8,1,16,1,18,1,6,1, + 2,255,255,128,114,153,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, + 0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25, + 0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100, + 1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25, + 0,125,2,87,0,110,18,4,0,116,1,121,78,1,0,1, + 0,1,0,89,0,100,0,83,0,116,2,124,0,106,3,124, + 2,131,2,83,0,119,0,41,3,78,114,14,0,0,0,114, + 172,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0, + 114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0, + 0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,114,151,0,0,0,197, + 2,0,0,115,18,0,0,0,20,2,12,1,2,2,14,1, + 12,1,6,1,12,2,2,253,255,128,114,151,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, + 11,0,0,0,67,0,0,0,115,18,1,0,0,116,0,124, + 0,124,1,131,2,125,2,100,0,125,3,116,1,68,0,93, + 204,92,3,125,4,125,5,125,6,124,2,124,4,23,0,125, + 7,116,2,106,3,100,1,124,0,106,4,116,5,124,7,100, + 2,100,3,141,5,1,0,122,14,124,0,106,6,124,7,25, + 0,125,8,87,0,110,18,4,0,116,7,144,1,121,16,1, + 0,1,0,1,0,89,0,113,18,124,8,100,4,25,0,125, + 9,116,8,124,0,106,4,124,8,131,2,125,10,100,0,125, + 11,124,5,114,182,122,20,116,9,124,0,124,9,124,7,124, + 1,124,10,131,5,125,11,87,0,110,50,4,0,116,10,144, + 1,121,14,1,0,125,12,1,0,122,16,124,12,125,3,87, + 0,89,0,100,0,125,12,126,12,110,18,100,0,125,12,126, + 12,119,1,116,11,124,9,124,10,131,2,125,11,124,11,100, + 0,117,0,114,202,113,18,124,8,100,4,25,0,125,9,124, + 11,124,6,124,9,102,3,2,0,1,0,83,0,124,3,114, + 252,100,5,124,3,155,0,157,2,125,13,116,12,124,13,124, + 1,100,6,141,2,124,3,130,2,116,12,100,7,124,1,155, + 2,157,2,124,1,100,6,141,2,130,1,119,0,119,0,41, + 8,78,122,13,116,114,121,105,110,103,32,123,125,123,125,123, + 125,114,88,0,0,0,41,1,90,9,118,101,114,98,111,115, + 105,116,121,114,0,0,0,0,122,20,109,111,100,117,108,101, + 32,108,111,97,100,32,102,97,105,108,101,100,58,32,114,62, + 0,0,0,114,61,0,0,0,41,13,114,36,0,0,0,114, + 91,0,0,0,114,45,0,0,0,114,80,0,0,0,114,29, + 0,0,0,114,20,0,0,0,114,28,0,0,0,114,26,0, + 0,0,114,56,0,0,0,114,157,0,0,0,114,79,0,0, + 0,114,163,0,0,0,114,3,0,0,0,41,14,114,32,0, + 0,0,114,38,0,0,0,114,13,0,0,0,90,12,105,109, + 112,111,114,116,95,101,114,114,111,114,114,92,0,0,0,114, + 93,0,0,0,114,51,0,0,0,114,66,0,0,0,114,58, + 0,0,0,114,40,0,0,0,114,128,0,0,0,114,50,0, + 0,0,90,3,101,120,99,114,81,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,114,48,0,0,0, + 212,2,0,0,115,60,0,0,0,10,1,4,1,14,1,8, + 1,22,1,2,1,14,1,14,1,4,1,8,2,12,1,4, + 1,4,1,2,1,20,1,16,1,16,1,8,128,10,2,8, + 1,2,3,8,1,14,1,4,2,10,1,14,1,18,2,2, + 241,2,247,255,128,114,48,0,0,0,41,46,114,86,0,0, + 0,90,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,21,0, + 0,0,114,1,0,0,0,114,2,0,0,0,90,17,95,102, + 114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,114, + 45,0,0,0,114,150,0,0,0,114,112,0,0,0,114,154, + 0,0,0,114,71,0,0,0,114,133,0,0,0,114,69,0, + 0,0,90,7,95,95,97,108,108,95,95,114,20,0,0,0, + 90,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114, + 115,114,18,0,0,0,114,79,0,0,0,114,3,0,0,0, + 114,25,0,0,0,218,4,116,121,112,101,114,74,0,0,0, + 114,115,0,0,0,114,117,0,0,0,114,119,0,0,0,90, + 13,95,76,111,97,100,101,114,66,97,115,105,99,115,114,4, + 0,0,0,114,91,0,0,0,114,36,0,0,0,114,37,0, + 0,0,114,35,0,0,0,114,27,0,0,0,114,124,0,0, + 0,114,144,0,0,0,114,146,0,0,0,114,56,0,0,0, + 114,149,0,0,0,114,157,0,0,0,218,8,95,95,99,111, + 100,101,95,95,114,155,0,0,0,114,161,0,0,0,114,163, + 0,0,0,114,171,0,0,0,114,153,0,0,0,114,151,0, + 0,0,114,48,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111, + 100,117,108,101,62,1,0,0,0,115,92,0,0,0,4,0, + 8,16,16,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, + 4,1,4,1,18,2,0,127,0,127,12,34,12,1,2,1, + 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, + 4,29,8,5,8,21,8,46,8,8,10,40,8,5,8,7, + 8,6,8,13,8,19,12,15,255,128, }; From webhook-mailer at python.org Wed Dec 23 12:41:07 2020 From: webhook-mailer at python.org (rhettinger) Date: Wed, 23 Dec 2020 17:41:07 -0000 Subject: [Python-checkins] bpo-9694: Fix misleading phrase "optional arguments" (GH-23858) Message-ID: https://github.com/python/cpython/commit/41b223d29cdfeb1f222c12c3abaccc3bc128f5e7 commit: 41b223d29cdfeb1f222c12c3abaccc3bc128f5e7 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-23T09:40:56-08:00 summary: bpo-9694: Fix misleading phrase "optional arguments" (GH-23858) files: A Misc/NEWS.d/next/Library/2020-12-19-12-33-38.bpo-9694.CkKK9V.rst M Doc/howto/argparse.rst M Doc/library/argparse.rst M Lib/argparse.py M Lib/test/test_argparse.py diff --git a/Doc/howto/argparse.rst b/Doc/howto/argparse.rst index 76d8e6be42935..a97d10cfe6bb6 100644 --- a/Doc/howto/argparse.rst +++ b/Doc/howto/argparse.rst @@ -83,7 +83,7 @@ Following is a result of running the code: $ python3 prog.py --help usage: prog.py [-h] - optional arguments: + options: -h, --help show this help message and exit $ python3 prog.py --verbose usage: prog.py [-h] @@ -130,7 +130,7 @@ And running the code: positional arguments: echo - optional arguments: + options: -h, --help show this help message and exit $ python3 prog.py foo foo @@ -172,7 +172,7 @@ And we get: positional arguments: echo echo the string you use here - optional arguments: + options: -h, --help show this help message and exit Now, how about doing something even more useful:: @@ -241,7 +241,7 @@ And the output: $ python3 prog.py --help usage: prog.py [-h] [--verbosity VERBOSITY] - optional arguments: + options: -h, --help show this help message and exit --verbosity VERBOSITY increase output verbosity @@ -289,7 +289,7 @@ And the output: $ python3 prog.py --help usage: prog.py [-h] [--verbose] - optional arguments: + options: -h, --help show this help message and exit --verbose increase output verbosity @@ -332,7 +332,7 @@ And here goes: $ python3 prog.py --help usage: prog.py [-h] [-v] - optional arguments: + options: -h, --help show this help message and exit -v, --verbose increase output verbosity @@ -440,7 +440,7 @@ And the output: positional arguments: square display a square of a given number - optional arguments: + options: -h, --help show this help message and exit -v {0,1,2}, --verbosity {0,1,2} increase output verbosity @@ -468,7 +468,8 @@ verbosity argument (check the output of ``python --help``):: print(answer) We have introduced another action, "count", -to count the number of occurrences of a specific optional arguments: +to count the number of occurrences of specific options. + .. code-block:: shell-session @@ -489,7 +490,7 @@ to count the number of occurrences of a specific optional arguments: positional arguments: square display a square of a given number - optional arguments: + options: -h, --help show this help message and exit -v, --verbosity increase output verbosity $ python3 prog.py 4 -vvv @@ -626,7 +627,7 @@ Output: x the base y the exponent - optional arguments: + options: -h, --help show this help message and exit -v, --verbosity $ python3 prog.py 4 2 -v @@ -750,7 +751,7 @@ but not both at the same time: x the base y the exponent - optional arguments: + options: -h, --help show this help message and exit -v, --verbose -q, --quiet diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 4542961d7816e..80e0f013df09e 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -57,7 +57,7 @@ be run at the command line and provides useful help messages: positional arguments: N an integer for the accumulator - optional arguments: + options: -h, --help show this help message and exit --sum sum the integers (default: find the max) @@ -217,14 +217,14 @@ The help for this program will display ``myprogram.py`` as the program name $ python myprogram.py --help usage: myprogram.py [-h] [--foo FOO] - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help $ cd .. $ python subdir/myprogram.py --help usage: myprogram.py [-h] [--foo FOO] - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help @@ -235,7 +235,7 @@ To change this default behavior, another value can be supplied using the >>> parser.print_help() usage: myprogram [-h] - optional arguments: + options: -h, --help show this help message and exit Note that the program name, whether determined from ``sys.argv[0]`` or from the @@ -249,7 +249,7 @@ specifier. >>> parser.print_help() usage: myprogram [-h] [--foo FOO] - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo of the myprogram program @@ -269,7 +269,7 @@ arguments it contains:: positional arguments: bar bar help - optional arguments: + options: -h, --help show this help message and exit --foo [FOO] foo help @@ -284,7 +284,7 @@ The default message can be overridden with the ``usage=`` keyword argument:: positional arguments: bar bar help - optional arguments: + options: -h, --help show this help message and exit --foo [FOO] foo help @@ -307,7 +307,7 @@ various arguments:: A foo that bars - optional arguments: + options: -h, --help show this help message and exit By default, the description will be line-wrapped so that it fits within the @@ -329,7 +329,7 @@ argument to :class:`ArgumentParser`:: A foo that bars - optional arguments: + options: -h, --help show this help message and exit And that's how you'd foo a bar @@ -403,7 +403,7 @@ epilog_ texts in command-line help messages:: this description was indented weird but that is okay - optional arguments: + options: -h, --help show this help message and exit likewise for this epilog whose whitespace will be cleaned up and whose words @@ -432,7 +432,7 @@ should not be line-wrapped:: exactly the way I want it - optional arguments: + options: -h, --help show this help message and exit :class:`RawTextHelpFormatter` maintains whitespace for all sorts of help text, @@ -454,7 +454,7 @@ default values to each of the argument help messages:: positional arguments: bar BAR! (default: [1, 2, 3]) - optional arguments: + options: -h, --help show this help message and exit --foo FOO FOO! (default: 42) @@ -473,7 +473,7 @@ as the regular formatter does):: positional arguments: float - optional arguments: + options: -h, --help show this help message and exit --foo int @@ -592,7 +592,7 @@ older arguments with the same option string. To get this behavior, the value >>> parser.print_help() usage: PROG [-h] [-f FOO] [--foo FOO] - optional arguments: + options: -h, --help show this help message and exit -f FOO old foo help --foo FOO new foo help @@ -623,7 +623,7 @@ help will be printed: $ python myprogram.py --help usage: myprogram.py [-h] [--foo FOO] - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help @@ -636,7 +636,7 @@ This can be achieved by passing ``False`` as the ``add_help=`` argument to >>> parser.print_help() usage: PROG [--foo FOO] - optional arguments: + options: --foo FOO foo help The help option is typically ``-h/--help``. The exception to this is @@ -649,7 +649,7 @@ the help options:: >>> parser.print_help() usage: PROG [+h] - optional arguments: + options: +h, ++help show this help message and exit @@ -1203,7 +1203,7 @@ argument:: positional arguments: bar one of the bars to be frobbled - optional arguments: + options: -h, --help show this help message and exit --foo foo the bars before frobbling @@ -1221,7 +1221,7 @@ specifiers include the program name, ``%(prog)s`` and most keyword arguments to positional arguments: bar the bar to frobble (default: 42) - optional arguments: + options: -h, --help show this help message and exit As the help string supports %-formatting, if you want a literal ``%`` to appear @@ -1235,7 +1235,7 @@ setting the ``help`` value to ``argparse.SUPPRESS``:: >>> parser.print_help() usage: frobble [-h] - optional arguments: + options: -h, --help show this help message and exit @@ -1262,7 +1262,7 @@ will be referred to as ``FOO``. An example:: positional arguments: bar - optional arguments: + options: -h, --help show this help message and exit --foo FOO @@ -1279,7 +1279,7 @@ An alternative name can be specified with ``metavar``:: positional arguments: XXX - optional arguments: + options: -h, --help show this help message and exit --foo YYY @@ -1297,7 +1297,7 @@ arguments:: >>> parser.print_help() usage: PROG [-h] [-x X X] [--foo bar baz] - optional arguments: + options: -h, --help show this help message and exit -x X X --foo bar baz @@ -1701,7 +1701,7 @@ Sub-commands a a help b b help - optional arguments: + options: -h, --help show this help message and exit --foo foo help @@ -1711,13 +1711,13 @@ Sub-commands positional arguments: bar bar help - optional arguments: + options: -h, --help show this help message and exit >>> parser.parse_args(['b', '--help']) usage: PROG b [-h] [--baz {X,Y,Z}] - optional arguments: + options: -h, --help show this help message and exit --baz {X,Y,Z} baz help @@ -1734,7 +1734,7 @@ Sub-commands >>> parser.parse_args(['-h']) usage: [-h] {foo,bar} ... - optional arguments: + options: -h, --help show this help message and exit subcommands: diff --git a/Lib/argparse.py b/Lib/argparse.py index 2fb1da59f942c..8a12dea766879 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -1719,7 +1719,7 @@ def __init__(self, add_group = self.add_argument_group self._positionals = add_group(_('positional arguments')) - self._optionals = add_group(_('optional arguments')) + self._optionals = add_group(_('options')) self._subparsers = None # register types diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index e98c15b11afb3..ec9711e4f6a47 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2078,7 +2078,7 @@ def test_help(self): bar bar help {1,2,3} command help - optional arguments: + options: -h, --help show this help message and exit --foo foo help ''')) @@ -2097,7 +2097,7 @@ def test_help_extra_prefix_chars(self): bar bar help {1,2,3} command help - optional arguments: + options: -h, --help show this help message and exit ++foo foo help ''')) @@ -2114,7 +2114,7 @@ def test_help_non_breaking_spaces(self): main description - optional arguments: + options: -h, --help show this help message and exit --non-breaking help message containing non-breaking spaces shall not wrap\N{NO-BREAK SPACE}at non-breaking spaces @@ -2133,7 +2133,7 @@ def test_help_alternate_prefix_chars(self): bar bar help {1,2,3} command help - optional arguments: + options: +h, ++help show this help message and exit ++foo foo help ''')) @@ -2154,7 +2154,7 @@ def test_parser_command_help(self): 2 2 help 3 3 help - optional arguments: + options: -h, --help show this help message and exit --foo foo help ''')) @@ -2179,7 +2179,7 @@ def test_subparser_title_help(self): positional arguments: bar bar help - optional arguments: + options: -h, --help show this help message and exit --foo foo help @@ -2203,7 +2203,7 @@ def test_subparser1_help(self): positional arguments: {a,b,c} x help - optional arguments: + options: -h, --help show this help message and exit -w W w help ''')) @@ -2217,7 +2217,7 @@ def test_subparser2_help(self): positional arguments: z z help - optional arguments: + options: -h, --help show this help message and exit -y {1,2,3} y help ''')) @@ -2249,7 +2249,7 @@ def test_alias_help(self): positional arguments: bar bar help - optional arguments: + options: -h, --help show this help message and exit --foo foo help @@ -2437,7 +2437,7 @@ def test_parent_help(self): a z - optional arguments: + options: -h, --help show this help message and exit -b B --w W @@ -2467,7 +2467,7 @@ def test_groups_parents(self): self.assertEqual(parser_help, textwrap.dedent('''\ usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z] - optional arguments: + options: -h, --help show this help message and exit -y Y -z Z @@ -2512,7 +2512,7 @@ def test_help(self): expected = '''\ usage: PROG [-h] [--foo | --bar] [--soup | --nuts] - optional arguments: + options: -h, --help show this help message and exit --foo --bar @@ -2597,7 +2597,7 @@ def get_parser(self, required=None): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit --bar BAR bar help --baz [BAZ] baz help @@ -2638,7 +2638,7 @@ def get_parser(self, required=None): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit --abcde ABCDE abcde help --fghij FGHIJ fghij help @@ -2674,7 +2674,7 @@ def get_parser(self, required): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit -y y help ''' @@ -2711,7 +2711,7 @@ def get_parser(self, required): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit ''' @@ -2754,7 +2754,7 @@ def get_parser(self, required): positional arguments: badger BADGER - optional arguments: + options: -h, --help show this help message and exit --foo FOO --spam SPAM SPAM @@ -2793,7 +2793,7 @@ def get_parser(self, required): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit -x x help -a a help @@ -2832,7 +2832,7 @@ def get_parser(self, required=None): ''' help = '''\ - optional arguments: + options: -h, --help show this help message and exit Titled group: @@ -2877,7 +2877,7 @@ def get_parser(self, required): x x help a a help - optional arguments: + options: -h, --help show this help message and exit -y y help -b b help @@ -2908,7 +2908,7 @@ def get_parser(self, required): help = '''\ - optional arguments: + options: -h, --help show this help message and exit -a A -b B @@ -3226,7 +3226,7 @@ class TestHelpBiggerOptionals(HelpTestCase): foo FOO HELP bar BAR HELP - optional arguments: + options: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP @@ -3271,7 +3271,7 @@ def setUp(self): bar BAR HELP - optional arguments: + options: -h, --help show this help @@ -3321,7 +3321,7 @@ class TestHelpBiggerOptionalGroups(HelpTestCase): foo FOO HELP bar BAR HELP - optional arguments: + options: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP @@ -3362,7 +3362,7 @@ class TestHelpBiggerPositionals(HelpTestCase): ekiekiekifekang EKI HELP bar BAR HELP - optional arguments: + options: -h, --help show this help message and exit -x X HELP --y Y Y HELP @@ -3409,7 +3409,7 @@ class TestHelpReformatting(HelpTestCase): positional arguments: yyy normal y help - optional arguments: + options: -h, --help show this help message and exit -x XX oddly formatted -x help @@ -3449,7 +3449,7 @@ class TestHelpWrappingShortNames(HelpTestCase): YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH - optional arguments: + options: -h, --help show this help message and exit -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \ HXXHH HXXHH @@ -3492,7 +3492,7 @@ class TestHelpWrappingLongNames(HelpTestCase): YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH - optional arguments: + options: -h, --help show this help message and exit -v, --version show program's version number and exit -x XXXXXXXXXXXXXXXXXXXXXXXXX @@ -3554,7 +3554,7 @@ class TestHelpUsage(HelpTestCase): b b c c - optional arguments: + options: -h, --help show this help message and exit -w W [W ...] w -x [X ...] x @@ -3623,7 +3623,7 @@ class TestHelpUsageLongProg(HelpTestCase): a b - optional arguments: + options: -h, --help show this help message and exit -w W -x X @@ -3657,7 +3657,7 @@ class TestHelpUsageLongProgOptionsWrap(HelpTestCase): a b - optional arguments: + options: -h, --help show this help message and exit -w WWWWWWWWWWWWWWWWWWWWWWWWW -x XXXXXXXXXXXXXXXXXXXXXXXXX @@ -3720,7 +3720,7 @@ class TestHelpUsageOptionalsWrap(HelpTestCase): b c - optional arguments: + options: -h, --help show this help message and exit -w WWWWWWWWWWWWWWWWWWWWWWWWW -x XXXXXXXXXXXXXXXXXXXXXXXXX @@ -3755,7 +3755,7 @@ class TestHelpUsagePositionalsWrap(HelpTestCase): bbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc - optional arguments: + options: -h, --help show this help message and exit -x X -y Y @@ -3791,7 +3791,7 @@ class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase): bbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc - optional arguments: + options: -h, --help show this help message and exit -x XXXXXXXXXXXXXXXXXXXXXXXXX -y YYYYYYYYYYYYYYYYYYYYYYYYY @@ -3817,7 +3817,7 @@ class TestHelpUsageOptionalsOnlyWrap(HelpTestCase): ''' help = usage + '''\ - optional arguments: + options: -h, --help show this help message and exit -x XXXXXXXXXXXXXXXXXXXXXXXXX -y YYYYYYYYYYYYYYYYYYYYYYYYY @@ -3882,7 +3882,7 @@ class TestHelpVariableExpansion(HelpTestCase): spam spam PROG None badger badger PROG 0.5 - optional arguments: + options: -h, --help show this help message and exit -x X x PROG None int % -y y PROG 42 XXX @@ -3907,7 +3907,7 @@ class TestHelpVariableExpansionUsageSupplied(HelpTestCase): ''') help = usage + '''\ - optional arguments: + options: -h, --help show this help message and exit ''' version = '' @@ -3939,7 +3939,7 @@ class TestHelpSuppressUsage(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help ''' @@ -3986,7 +3986,7 @@ class TestHelpSuppressOptionalGroup(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help ''' @@ -4007,7 +4007,7 @@ class TestHelpSuppressPositional(HelpTestCase): ''' help = usage + '''\ - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help ''' @@ -4027,7 +4027,7 @@ class TestHelpRequiredOptional(HelpTestCase): ''' help = usage + '''\ - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help ''' @@ -4048,7 +4048,7 @@ class TestHelpAlternatePrefixChars(HelpTestCase): ''' help = usage + '''\ - optional arguments: + options: ^^foo foo help ;b BAR, ;;bar BAR bar help ''' @@ -4072,7 +4072,7 @@ class TestHelpNoHelpOptional(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: --foo FOO foo help ''' version = '' @@ -4095,7 +4095,7 @@ class TestHelpNone(HelpTestCase): positional arguments: spam - optional arguments: + options: -h, --help show this help message and exit --foo FOO ''' @@ -4119,7 +4119,7 @@ class TestHelpTupleMetavar(HelpTestCase): ''' help = usage + '''\ - optional arguments: + options: -h, --help show this help message and exit -w W1 [W2 ...] w -x [X1 [X2 ...]] x @@ -4163,7 +4163,7 @@ class TestHelpRawText(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help should also appear as given here @@ -4212,7 +4212,7 @@ class TestHelpRawDescription(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help should not retain this odd formatting @@ -4254,7 +4254,7 @@ class TestHelpArgumentDefaults(HelpTestCase): spam spam help badger badger help (default: wooden) - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help - oh and by the way, None --bar bar help (default: False) @@ -4279,7 +4279,7 @@ class TestHelpVersionAction(HelpTestCase): description - optional arguments: + options: -h, --help show this help message and exit -V, --version show program's version number and exit ''' @@ -4305,7 +4305,7 @@ class TestHelpVersionActionSuppress(HelpTestCase): positional arguments: spam spam help - optional arguments: + options: -h, --help show this help message and exit --foo FOO foo help ''' @@ -4331,7 +4331,7 @@ class TestHelpSubparsersOrdering(HelpTestCase): positional arguments: {a,b,c,d,e} - optional arguments: + options: -h, --help show this help message and exit -v, --version show program's version number and exit ''' @@ -4372,7 +4372,7 @@ class TestHelpSubparsersWithHelpOrdering(HelpTestCase): d d subcommand help e e subcommand help - optional arguments: + options: -h, --help show this help message and exit -v, --version show program's version number and exit ''' @@ -4404,7 +4404,7 @@ def custom_type(string): positional arguments: int - optional arguments: + options: -h, --help show this help message and exit -b custom_type -c SOME FLOAT @@ -4596,7 +4596,7 @@ def test_resolve_error(self): self.assertEqual(parser.format_help(), textwrap.dedent('''\ usage: PROG [-h] [-x X] - optional arguments: + options: -h, --help show this help message and exit -x X NEW X ''')) @@ -4606,7 +4606,7 @@ def test_resolve_error(self): self.assertEqual(parser.format_help(), textwrap.dedent('''\ usage: PROG [-h] [-x X] [--spam NEW_SPAM] - optional arguments: + options: -h, --help show this help message and exit -x X NEW X --spam NEW_SPAM @@ -5337,7 +5337,7 @@ def test_help_with_metavar(self): usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name [-h] [--proxy ] - optional arguments: + options: -h, --help show this help message and exit --proxy ''')) diff --git a/Misc/NEWS.d/next/Library/2020-12-19-12-33-38.bpo-9694.CkKK9V.rst b/Misc/NEWS.d/next/Library/2020-12-19-12-33-38.bpo-9694.CkKK9V.rst new file mode 100644 index 0000000000000..723955270d02c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-19-12-33-38.bpo-9694.CkKK9V.rst @@ -0,0 +1,2 @@ +Argparse help no longer uses the confusing phrase, "optional arguments". +It uses "options" instead. From webhook-mailer at python.org Wed Dec 23 13:17:05 2020 From: webhook-mailer at python.org (vstinner) Date: Wed, 23 Dec 2020 18:17:05 -0000 Subject: [Python-checkins] bpo-32381: pymain_run_command() uses PyCF_IGNORE_COOKIE (GH-23724) Message-ID: https://github.com/python/cpython/commit/a12491681f08a33abcca843f5150330740c91111 commit: a12491681f08a33abcca843f5150330740c91111 branch: master author: Victor Stinner committer: vstinner date: 2020-12-23T19:16:56+01:00 summary: bpo-32381: pymain_run_command() uses PyCF_IGNORE_COOKIE (GH-23724) The coding cookie (ex: "# coding: latin1") is now ignored in the command passed to the -c command line option. Since pymain_run_command() uses UTF-8, pass PyCF_IGNORE_COOKIE compiler flag to the parser. pymain_run_python() no longer propages compiler flags between function calls. files: A Misc/NEWS.d/next/Core and Builtins/2020-12-15-18-43-43.bpo-32381.3tIofL.rst M Lib/test/test_cmd_line.py M Modules/main.c diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index fa3329efa28b8..f12dff3202fe3 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -153,6 +153,14 @@ def test_non_ascii(self): % (os_helper.FS_NONASCII, ord(os_helper.FS_NONASCII))) assert_python_ok('-c', command) + @unittest.skipUnless(os_helper.FS_NONASCII, 'need os_helper.FS_NONASCII') + def test_coding(self): + # bpo-32381: the -c command ignores the coding cookie + ch = os_helper.FS_NONASCII + cmd = f"# coding: latin1\nprint(ascii('{ch}'))" + res = assert_python_ok('-c', cmd) + self.assertEqual(res.out.rstrip(), ascii(ch).encode('ascii')) + # On Windows, pass bytes to subprocess doesn't test how Python decodes the # command line, but how subprocess does decode bytes to unicode. Python # doesn't decode the command line because Windows provides directly the diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-12-15-18-43-43.bpo-32381.3tIofL.rst b/Misc/NEWS.d/next/Core and Builtins/2020-12-15-18-43-43.bpo-32381.3tIofL.rst new file mode 100644 index 0000000000000..fc8ea82fb084b --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-12-15-18-43-43.bpo-32381.3tIofL.rst @@ -0,0 +1,2 @@ +The coding cookie (ex: ``# coding: latin1``) is now ignored in the command +passed to the :option:`-c` command line option. Patch by Victor Stinner. diff --git a/Modules/main.c b/Modules/main.c index b97034ea1e78a..ccf096352e928 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -223,7 +223,7 @@ pymain_import_readline(const PyConfig *config) static int -pymain_run_command(wchar_t *command, PyCompilerFlags *cf) +pymain_run_command(wchar_t *command) { PyObject *unicode, *bytes; int ret; @@ -243,7 +243,9 @@ pymain_run_command(wchar_t *command, PyCompilerFlags *cf) goto error; } - ret = PyRun_SimpleStringFlags(PyBytes_AsString(bytes), cf); + PyCompilerFlags cf = _PyCompilerFlags_INIT; + cf.cf_flags |= PyCF_IGNORE_COOKIE; + ret = PyRun_SimpleStringFlags(PyBytes_AsString(bytes), &cf); Py_DECREF(bytes); return (ret != 0); @@ -306,7 +308,7 @@ pymain_run_module(const wchar_t *modname, int set_argv0) static int pymain_run_file_obj(PyObject *program_name, PyObject *filename, - int skip_source_first_line, PyCompilerFlags *cf) + int skip_source_first_line) { if (PySys_Audit("cpython.run_file", "O", filename) < 0) { return pymain_exit_err_print(); @@ -347,12 +349,13 @@ pymain_run_file_obj(PyObject *program_name, PyObject *filename, } /* PyRun_AnyFileExFlags(closeit=1) calls fclose(fp) before running code */ - int run = _PyRun_AnyFileObject(fp, filename, 1, cf); + PyCompilerFlags cf = _PyCompilerFlags_INIT; + int run = _PyRun_AnyFileObject(fp, filename, 1, &cf); return (run != 0); } static int -pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) +pymain_run_file(const PyConfig *config) { PyObject *filename = PyUnicode_FromWideChar(config->run_filename, -1); if (filename == NULL) { @@ -367,7 +370,7 @@ pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) } int res = pymain_run_file_obj(program_name, filename, - config->skip_source_first_line, cf); + config->skip_source_first_line); Py_DECREF(filename); Py_DECREF(program_name); return res; @@ -375,7 +378,7 @@ pymain_run_file(const PyConfig *config, PyCompilerFlags *cf) static int -pymain_run_startup(PyConfig *config, PyCompilerFlags *cf, int *exitcode) +pymain_run_startup(PyConfig *config, int *exitcode) { int ret; if (!config->use_environment) { @@ -416,7 +419,8 @@ pymain_run_startup(PyConfig *config, PyCompilerFlags *cf, int *exitcode) goto error; } - (void) _PyRun_SimpleFileObject(fp, startup, 0, cf); + PyCompilerFlags cf = _PyCompilerFlags_INIT; + (void) _PyRun_SimpleFileObject(fp, startup, 0, &cf); PyErr_Clear(); fclose(fp); ret = 0; @@ -469,14 +473,14 @@ pymain_run_interactive_hook(int *exitcode) static int -pymain_run_stdin(PyConfig *config, PyCompilerFlags *cf) +pymain_run_stdin(PyConfig *config) { if (stdin_is_interactive(config)) { config->inspect = 0; Py_InspectFlag = 0; /* do exit on SystemExit */ int exitcode; - if (pymain_run_startup(config, cf, &exitcode)) { + if (pymain_run_startup(config, &exitcode)) { return exitcode; } @@ -494,13 +498,14 @@ pymain_run_stdin(PyConfig *config, PyCompilerFlags *cf) return pymain_exit_err_print(); } - int run = PyRun_AnyFileExFlags(stdin, "", 0, cf); + PyCompilerFlags cf = _PyCompilerFlags_INIT; + int run = PyRun_AnyFileExFlags(stdin, "", 0, &cf); return (run != 0); } static void -pymain_repl(PyConfig *config, PyCompilerFlags *cf, int *exitcode) +pymain_repl(PyConfig *config, int *exitcode) { /* Check this environment variable at the end, to give programs the opportunity to set it from Python. */ @@ -519,7 +524,8 @@ pymain_repl(PyConfig *config, PyCompilerFlags *cf, int *exitcode) return; } - int res = PyRun_AnyFileFlags(stdin, "", cf); + PyCompilerFlags cf = _PyCompilerFlags_INIT; + int res = PyRun_AnyFileFlags(stdin, "", &cf); *exitcode = (res != 0); } @@ -565,13 +571,11 @@ pymain_run_python(int *exitcode) } } - PyCompilerFlags cf = _PyCompilerFlags_INIT; - pymain_header(config); pymain_import_readline(config); if (config->run_command) { - *exitcode = pymain_run_command(config->run_command, &cf); + *exitcode = pymain_run_command(config->run_command); } else if (config->run_module) { *exitcode = pymain_run_module(config->run_module, 1); @@ -580,13 +584,13 @@ pymain_run_python(int *exitcode) *exitcode = pymain_run_module(L"__main__", 0); } else if (config->run_filename != NULL) { - *exitcode = pymain_run_file(config, &cf); + *exitcode = pymain_run_file(config); } else { - *exitcode = pymain_run_stdin(config, &cf); + *exitcode = pymain_run_stdin(config); } - pymain_repl(config, &cf, exitcode); + pymain_repl(config, exitcode); goto done; error: From webhook-mailer at python.org Wed Dec 23 14:45:20 2020 From: webhook-mailer at python.org (rhettinger) Date: Wed, 23 Dec 2020 19:45:20 -0000 Subject: [Python-checkins] bpo-25246: Optimize deque.remove() (GH-23898) Message-ID: https://github.com/python/cpython/commit/6b1ac809b9718a369aea67b99077cdd682be2238 commit: 6b1ac809b9718a369aea67b99077cdd682be2238 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-23T11:45:06-08:00 summary: bpo-25246: Optimize deque.remove() (GH-23898) files: A Misc/NEWS.d/next/Library/2020-12-22-13-16-43.bpo-25246.GhhCTl.rst M Modules/_collectionsmodule.c diff --git a/Misc/NEWS.d/next/Library/2020-12-22-13-16-43.bpo-25246.GhhCTl.rst b/Misc/NEWS.d/next/Library/2020-12-22-13-16-43.bpo-25246.GhhCTl.rst new file mode 100644 index 0000000000000..258bb12ff8beb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-22-13-16-43.bpo-25246.GhhCTl.rst @@ -0,0 +1 @@ +Optimized :meth:`collections.deque.remove`. diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 157875067635a..90bafb0ea86d9 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -1128,38 +1128,6 @@ deque_insert(dequeobject *deque, PyObject *const *args, Py_ssize_t nargs) PyDoc_STRVAR(insert_doc, "D.insert(index, object) -- insert object before index"); -static PyObject * -deque_remove(dequeobject *deque, PyObject *value) -{ - Py_ssize_t i, n=Py_SIZE(deque); - - for (i=0 ; ileftblock->data[deque->leftindex]; - int cmp = PyObject_RichCompareBool(item, value, Py_EQ); - - if (Py_SIZE(deque) != n) { - PyErr_SetString(PyExc_IndexError, - "deque mutated during remove()."); - return NULL; - } - if (cmp > 0) { - PyObject *tgt = deque_popleft(deque, NULL); - assert (tgt != NULL); - if (_deque_rotate(deque, i)) - return NULL; - Py_DECREF(tgt); - Py_RETURN_NONE; - } - else if (cmp < 0) { - _deque_rotate(deque, i); - return NULL; - } - _deque_rotate(deque, -1); - } - PyErr_SetString(PyExc_ValueError, "deque.remove(x): x not in deque"); - return NULL; -} - PyDoc_STRVAR(remove_doc, "D.remove(value) -- remove first occurrence of value."); @@ -1227,6 +1195,48 @@ deque_del_item(dequeobject *deque, Py_ssize_t i) return rv; } +static PyObject * +deque_remove(dequeobject *deque, PyObject *value) +{ + PyObject *item; + block *b = deque->leftblock; + Py_ssize_t i, n = Py_SIZE(deque), index = deque->leftindex; + size_t start_state = deque->state; + int cmp, rv; + + for (i = 0 ; i < n; i++) { + item = b->data[index]; + Py_INCREF(item); + cmp = PyObject_RichCompareBool(item, value, Py_EQ); + Py_DECREF(item); + if (cmp < 0) { + return NULL; + } + if (start_state != deque->state) { + PyErr_SetString(PyExc_IndexError, + "deque mutated during iteration"); + return NULL; + } + if (cmp > 0) { + break; + } + index++; + if (index == BLOCKLEN) { + b = b->rightlink; + index = 0; + } + } + if (i == n) { + PyErr_Format(PyExc_ValueError, "%R is not in deque", value); + return NULL; + } + rv = deque_del_item(deque, i); + if (rv == -1) { + return NULL; + } + Py_RETURN_NONE; +} + static int deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v) { From webhook-mailer at python.org Wed Dec 23 17:45:27 2020 From: webhook-mailer at python.org (isidentical) Date: Wed, 23 Dec 2020 22:45:27 -0000 Subject: [Python-checkins] bpo-41960: Add globalns and localns parameters to inspect.signature and Signature.from_callable (GH-22583) Message-ID: https://github.com/python/cpython/commit/eee1c7745ab4eb4f75153e71aaa2a62018b7625a commit: eee1c7745ab4eb4f75153e71aaa2a62018b7625a branch: master author: Batuhan Taskaya committer: isidentical date: 2020-12-24T01:45:13+03:00 summary: bpo-41960: Add globalns and localns parameters to inspect.signature and Signature.from_callable (GH-22583) files: A Misc/NEWS.d/next/Library/2020-10-06-23-59-20.bpo-41960.icQ7Xd.rst M Doc/library/inspect.rst M Doc/whatsnew/3.10.rst M Lib/inspect.py M Lib/test/test_inspect.py diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index b53a9421fbca6..850d6018bab1f 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -556,7 +556,7 @@ The Signature object represents the call signature of a callable object and its return annotation. To retrieve a Signature object, use the :func:`signature` function. -.. function:: signature(callable, *, follow_wrapped=True) +.. function:: signature(callable, *, follow_wrapped=True, globalns=None, localns=None) Return a :class:`Signature` object for the given ``callable``:: @@ -581,6 +581,9 @@ function. Raises :exc:`ValueError` if no signature can be provided, and :exc:`TypeError` if that type of object is not supported. + ``globalns`` and ``localns`` are passed into + :func:`typing.get_type_hints` when resolving the annotations. + A slash(/) in the signature of a function denotes that the parameters prior to it are positional-only. For more info, see :ref:`the FAQ entry on positional-only parameters `. @@ -590,12 +593,21 @@ function. ``callable`` specifically (``callable.__wrapped__`` will not be used to unwrap decorated callables.) + .. versionadded:: 3.10 + ``globalns`` and ``localns`` parameters. + .. note:: Some callables may not be introspectable in certain implementations of Python. For example, in CPython, some built-in functions defined in C provide no metadata about their arguments. + .. note:: + + Will first try to resolve the annotations, but when it fails and + encounters with an error while that operation, the annotations will be + returned unchanged (as strings). + .. class:: Signature(parameters=None, *, return_annotation=Signature.empty) @@ -668,11 +680,12 @@ function. >>> str(new_sig) "(a, b) -> 'new return anno'" - .. classmethod:: Signature.from_callable(obj, *, follow_wrapped=True) + .. classmethod:: Signature.from_callable(obj, *, follow_wrapped=True, globalns=None, localns=None) Return a :class:`Signature` (or its subclass) object for a given callable ``obj``. Pass ``follow_wrapped=False`` to get a signature of ``obj`` - without unwrapping its ``__wrapped__`` chain. + without unwrapping its ``__wrapped__`` chain. ``globalns`` and + ``localns`` will be used as the namespaces when resolving annotations. This method simplifies subclassing of :class:`Signature`:: @@ -683,6 +696,9 @@ function. .. versionadded:: 3.5 + .. versionadded:: 3.10 + ``globalns`` and ``localns`` parameters. + .. class:: Parameter(name, kind, *, default=Parameter.empty, annotation=Parameter.empty) diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index a6f9b0b1754d2..b5fb1e9a629c1 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -238,6 +238,11 @@ inspect When a module does not define ``__loader__``, fall back to ``__spec__.loader``. (Contributed by Brett Cannon in :issue:`42133`.) +Added *globalns* and *localns* parameters in :func:`~inspect.signature` and +:meth:`inspect.Signature.from_callable` to retrieve the annotations in given +local and global namespaces. +(Contributed by Batuhan Taskaya in :issue:`41960`.) + linecache --------- diff --git a/Lib/inspect.py b/Lib/inspect.py index 9150ac104dcb7..70c5ef7bb6471 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -2137,9 +2137,9 @@ def p(name_node, default_node, default=empty): return cls(parameters, return_annotation=cls.empty) -def _get_type_hints(func): +def _get_type_hints(func, **kwargs): try: - return typing.get_type_hints(func) + return typing.get_type_hints(func, **kwargs) except Exception: # First, try to use the get_type_hints to resolve # annotations. But for keeping the behavior intact @@ -2164,7 +2164,8 @@ def _signature_from_builtin(cls, func, skip_bound_arg=True): return _signature_fromstr(cls, func, s, skip_bound_arg) -def _signature_from_function(cls, func, skip_bound_arg=True): +def _signature_from_function(cls, func, skip_bound_arg=True, + globalns=None, localns=None): """Private helper: constructs Signature for the given python function.""" is_duck_function = False @@ -2190,7 +2191,7 @@ def _signature_from_function(cls, func, skip_bound_arg=True): positional = arg_names[:pos_count] keyword_only_count = func_code.co_kwonlyargcount keyword_only = arg_names[pos_count:pos_count + keyword_only_count] - annotations = _get_type_hints(func) + annotations = _get_type_hints(func, globalns=globalns, localns=localns) defaults = func.__defaults__ kwdefaults = func.__kwdefaults__ @@ -2262,23 +2263,28 @@ def _signature_from_function(cls, func, skip_bound_arg=True): def _signature_from_callable(obj, *, follow_wrapper_chains=True, skip_bound_arg=True, + globalns=None, + localns=None, sigcls): """Private helper function to get signature for arbitrary callable objects. """ + _get_signature_of = functools.partial(_signature_from_callable, + follow_wrapper_chains=follow_wrapper_chains, + skip_bound_arg=skip_bound_arg, + globalns=globalns, + localns=localns, + sigcls=sigcls) + if not callable(obj): raise TypeError('{!r} is not a callable object'.format(obj)) if isinstance(obj, types.MethodType): # In this case we skip the first parameter of the underlying # function (usually `self` or `cls`). - sig = _signature_from_callable( - obj.__func__, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + sig = _get_signature_of(obj.__func__) if skip_bound_arg: return _signature_bound_method(sig) @@ -2292,11 +2298,7 @@ def _signature_from_callable(obj, *, # If the unwrapped object is a *method*, we might want to # skip its first parameter (self). # See test_signature_wrapped_bound_method for details. - return _signature_from_callable( - obj, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + return _get_signature_of(obj) try: sig = obj.__signature__ @@ -2323,11 +2325,7 @@ def _signature_from_callable(obj, *, # (usually `self`, or `cls`) will not be passed # automatically (as for boundmethods) - wrapped_sig = _signature_from_callable( - partialmethod.func, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + wrapped_sig = _get_signature_of(partialmethod.func) sig = _signature_get_partial(wrapped_sig, partialmethod, (None,)) first_wrapped_param = tuple(wrapped_sig.parameters.values())[0] @@ -2346,18 +2344,15 @@ def _signature_from_callable(obj, *, # If it's a pure Python function, or an object that is duck type # of a Python function (Cython functions, for instance), then: return _signature_from_function(sigcls, obj, - skip_bound_arg=skip_bound_arg) + skip_bound_arg=skip_bound_arg, + globalns=globalns, localns=localns) if _signature_is_builtin(obj): return _signature_from_builtin(sigcls, obj, skip_bound_arg=skip_bound_arg) if isinstance(obj, functools.partial): - wrapped_sig = _signature_from_callable( - obj.func, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + wrapped_sig = _get_signature_of(obj.func) return _signature_get_partial(wrapped_sig, obj) sig = None @@ -2368,29 +2363,17 @@ def _signature_from_callable(obj, *, # in its metaclass call = _signature_get_user_defined_method(type(obj), '__call__') if call is not None: - sig = _signature_from_callable( - call, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + sig = _get_signature_of(call) else: # Now we check if the 'obj' class has a '__new__' method new = _signature_get_user_defined_method(obj, '__new__') if new is not None: - sig = _signature_from_callable( - new, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + sig = _get_signature_of(new) else: # Finally, we should have at least __init__ implemented init = _signature_get_user_defined_method(obj, '__init__') if init is not None: - sig = _signature_from_callable( - init, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + sig = _get_signature_of(init) if sig is None: # At this point we know, that `obj` is a class, with no user- @@ -2436,11 +2419,7 @@ def _signature_from_callable(obj, *, call = _signature_get_user_defined_method(type(obj), '__call__') if call is not None: try: - sig = _signature_from_callable( - call, - follow_wrapper_chains=follow_wrapper_chains, - skip_bound_arg=skip_bound_arg, - sigcls=sigcls) + sig = _get_signature_of(call) except ValueError as ex: msg = 'no signature found for {!r}'.format(obj) raise ValueError(msg) from ex @@ -2892,10 +2871,12 @@ def from_builtin(cls, func): return _signature_from_builtin(cls, func) @classmethod - def from_callable(cls, obj, *, follow_wrapped=True): + def from_callable(cls, obj, *, + follow_wrapped=True, globalns=None, localns=None): """Constructs Signature for the given callable object.""" return _signature_from_callable(obj, sigcls=cls, - follow_wrapper_chains=follow_wrapped) + follow_wrapper_chains=follow_wrapped, + globalns=globalns, localns=localns) @property def parameters(self): @@ -3143,9 +3124,10 @@ def __str__(self): return rendered -def signature(obj, *, follow_wrapped=True): +def signature(obj, *, follow_wrapped=True, globalns=None, localns=None): """Get a signature object for the passed callable.""" - return Signature.from_callable(obj, follow_wrapped=follow_wrapped) + return Signature.from_callable(obj, follow_wrapped=follow_wrapped, + globalns=globalns, localns=localns) def _main(): diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index c81d828b57ece..706fcbe3439b4 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -3250,6 +3250,26 @@ def test_signater_parameters_is_ordered(self): p2 = inspect.signature(lambda y, x: None).parameters self.assertNotEqual(p1, p2) + def test_signature_annotations_with_local_namespaces(self): + class Foo: ... + def func(foo: Foo) -> int: pass + def func2(foo: Foo, bar: Bar) -> int: pass + + for signature_func in (inspect.signature, inspect.Signature.from_callable): + with self.subTest(signature_func = signature_func): + sig1 = signature_func(func) + self.assertEqual(sig1.return_annotation, 'int') + self.assertEqual(sig1.parameters['foo'].annotation, 'Foo') + + sig2 = signature_func(func, localns=locals()) + self.assertEqual(sig2.return_annotation, int) + self.assertEqual(sig2.parameters['foo'].annotation, Foo) + + sig3 = signature_func(func2, globalns={'Bar': int}, localns=locals()) + self.assertEqual(sig3.return_annotation, int) + self.assertEqual(sig3.parameters['foo'].annotation, Foo) + self.assertEqual(sig3.parameters['bar'].annotation, int) + class TestParameterObject(unittest.TestCase): def test_signature_parameter_kinds(self): diff --git a/Misc/NEWS.d/next/Library/2020-10-06-23-59-20.bpo-41960.icQ7Xd.rst b/Misc/NEWS.d/next/Library/2020-10-06-23-59-20.bpo-41960.icQ7Xd.rst new file mode 100644 index 0000000000000..f7e71998dab9b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-06-23-59-20.bpo-41960.icQ7Xd.rst @@ -0,0 +1,2 @@ +Add ``globalns`` and ``localns`` parameters to the :func:`inspect.signature` +and :meth:`inspect.Signature.from_callable`. From webhook-mailer at python.org Wed Dec 23 21:47:49 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Dec 2020 02:47:49 -0000 Subject: [Python-checkins] bpo-42195: Override _CallableGenericAlias's __getitem__ (GH-23915) Message-ID: https://github.com/python/cpython/commit/6dd3da3cf4a0d6cb62d9c2a155434c127183454d commit: 6dd3da3cf4a0d6cb62d9c2a155434c127183454d branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-23T18:47:40-08:00 summary: bpo-42195: Override _CallableGenericAlias's __getitem__ (GH-23915) Added `__getitem__` for `_CallableGenericAlias` so that it returns a subclass (itself) of `types.GenericAlias` rather than the default behavior of returning a plain `types.GenericAlias`. This fixes `repr` issues occuring after `TypeVar` substitution arising from the previous behavior. files: M Lib/_collections_abc.py M Lib/test/test_genericalias.py diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index 7c3faa64ea7f9..e4eac79646235 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -434,7 +434,7 @@ def __create_ga(cls, origin, args): raise TypeError( "Callable must be used as Callable[[arg, ...], result].") t_args, t_result = args - if isinstance(t_args, list): + if isinstance(t_args, (list, tuple)): ga_args = tuple(t_args) + (t_result,) # This relaxes what t_args can be on purpose to allow things like # PEP 612 ParamSpec. Responsibility for whether a user is using @@ -456,6 +456,16 @@ def __reduce__(self): args = list(args[:-1]), args[-1] return _CallableGenericAlias, (Callable, args) + def __getitem__(self, item): + # Called during TypeVar substitution, returns the custom subclass + # rather than the default types.GenericAlias object. + ga = super().__getitem__(item) + args = ga.__args__ + t_result = args[-1] + t_args = args[:-1] + args = (t_args, t_result) + return _CallableGenericAlias(Callable, args) + def _type_repr(obj): """Return the repr() of an object, special-casing types (internal helper). diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 5de13fe6d2f68..ccf40b13d3a94 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -347,6 +347,12 @@ def test_abc_callable(self): self.assertEqual(C2[int, float, str], Callable[[int, float], str]) self.assertEqual(C3[int], Callable[..., int]) + # multi chaining + C4 = C2[int, V, str] + self.assertEqual(repr(C4).split(".")[-1], "Callable[[int, ~V], str]") + self.assertEqual(repr(C4[dict]).split(".")[-1], "Callable[[int, dict], str]") + self.assertEqual(C4[dict], Callable[[int, dict], str]) + with self.subTest("Testing type erasure"): class C1(Callable): def __call__(self): From webhook-mailer at python.org Wed Dec 23 22:07:55 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Dec 2020 03:07:55 -0000 Subject: [Python-checkins] bpo-42195: Override _CallableGenericAlias's __getitem__ (GH-23915) Message-ID: https://github.com/python/cpython/commit/a1251980d20ee8aab8d887fc0d30a726247327af commit: a1251980d20ee8aab8d887fc0d30a726247327af branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-23T19:07:51-08:00 summary: bpo-42195: Override _CallableGenericAlias's __getitem__ (GH-23915) Added `__getitem__` for `_CallableGenericAlias` so that it returns a subclass (itself) of `types.GenericAlias` rather than the default behavior of returning a plain `types.GenericAlias`. This fixes `repr` issues occuring after `TypeVar` substitution arising from the previous behavior. (cherry picked from commit 6dd3da3cf4a0d6cb62d9c2a155434c127183454d) Co-authored-by: kj <28750310+Fidget-Spinner at users.noreply.github.com> files: M Lib/_collections_abc.py M Lib/test/test_genericalias.py diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index cec19ec47349b..b6ecf8eac6368 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -441,7 +441,7 @@ def __create_ga(cls, origin, args): raise TypeError( "Callable must be used as Callable[[arg, ...], result].") t_args, t_result = args - if isinstance(t_args, list): + if isinstance(t_args, (list, tuple)): ga_args = tuple(t_args) + (t_result,) # This relaxes what t_args can be on purpose to allow things like # PEP 612 ParamSpec. Responsibility for whether a user is using @@ -463,6 +463,16 @@ def __reduce__(self): args = list(args[:-1]), args[-1] return _CallableGenericAlias, (Callable, args) + def __getitem__(self, item): + # Called during TypeVar substitution, returns the custom subclass + # rather than the default types.GenericAlias object. + ga = super().__getitem__(item) + args = ga.__args__ + t_result = args[-1] + t_args = args[:-1] + args = (t_args, t_result) + return _CallableGenericAlias(Callable, args) + def _type_repr(obj): """Return the repr() of an object, special-casing types (internal helper). diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 5de13fe6d2f68..ccf40b13d3a94 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -347,6 +347,12 @@ def test_abc_callable(self): self.assertEqual(C2[int, float, str], Callable[[int, float], str]) self.assertEqual(C3[int], Callable[..., int]) + # multi chaining + C4 = C2[int, V, str] + self.assertEqual(repr(C4).split(".")[-1], "Callable[[int, ~V], str]") + self.assertEqual(repr(C4[dict]).split(".")[-1], "Callable[[int, dict], str]") + self.assertEqual(C4[dict], Callable[[int, dict], str]) + with self.subTest("Testing type erasure"): class C1(Callable): def __call__(self): From webhook-mailer at python.org Wed Dec 23 22:52:23 2020 From: webhook-mailer at python.org (rhettinger) Date: Thu, 24 Dec 2020 03:52:23 -0000 Subject: [Python-checkins] bpo-38308: Add optional weighting to statistics.harmonic_mean() (GH-23914) Message-ID: https://github.com/python/cpython/commit/cc3467a57b61b0e7ef254b36790a1c44b13f2228 commit: cc3467a57b61b0e7ef254b36790a1c44b13f2228 branch: master author: Raymond Hettinger committer: rhettinger date: 2020-12-23T19:52:09-08:00 summary: bpo-38308: Add optional weighting to statistics.harmonic_mean() (GH-23914) files: A Misc/NEWS.d/next/Library/2020-12-23-15-16-12.bpo-38308.lB4Sv0.rst M Doc/library/statistics.rst M Lib/statistics.py M Lib/test/test_statistics.py diff --git a/Doc/library/statistics.rst b/Doc/library/statistics.rst index 38a499ab37e89..6467704006d90 100644 --- a/Doc/library/statistics.rst +++ b/Doc/library/statistics.rst @@ -156,10 +156,11 @@ However, for reading convenience, most of the examples show sorted sequences. .. versionadded:: 3.8 -.. function:: harmonic_mean(data) +.. function:: harmonic_mean(data, weights=None) Return the harmonic mean of *data*, a sequence or iterable of - real-valued numbers. + real-valued numbers. If *weights* is omitted or *None*, then + equal weighting is assumed. The harmonic mean, sometimes called the subcontrary mean, is the reciprocal of the arithmetic :func:`mean` of the reciprocals of the @@ -179,17 +180,17 @@ However, for reading convenience, most of the examples show sorted sequences. >>> harmonic_mean([40, 60]) 48.0 - Suppose an investor purchases an equal value of shares in each of - three companies, with P/E (price/earning) ratios of 2.5, 3 and 10. - What is the average P/E ratio for the investor's portfolio? + Suppose a car travels 40 km/hr for 5 km, and when traffic clears, + speeds-up to 60 km/hr for the remaining 30 km of the journey. What + is the average speed? .. doctest:: - >>> harmonic_mean([2.5, 3, 10]) # For an equal investment portfolio. - 3.6 + >>> harmonic_mean([40, 60], weights=[5, 30]) + 56.0 - :exc:`StatisticsError` is raised if *data* is empty, or any element - is less than zero. + :exc:`StatisticsError` is raised if *data* is empty, any element + is less than zero, or if the weighted sum isn't positive. The current algorithm has an early-out when it encounters a zero in the input. This means that the subsequent inputs are not tested @@ -197,6 +198,8 @@ However, for reading convenience, most of the examples show sorted sequences. .. versionadded:: 3.6 + .. versionchanged:: 3.8 + Added support for *weights*. .. function:: median(data) diff --git a/Lib/statistics.py b/Lib/statistics.py index f9d3802ec5f83..4b054b961141b 100644 --- a/Lib/statistics.py +++ b/Lib/statistics.py @@ -106,7 +106,7 @@ from fractions import Fraction from decimal import Decimal -from itertools import groupby +from itertools import groupby, repeat from bisect import bisect_left, bisect_right from math import hypot, sqrt, fabs, exp, erf, tau, log, fsum from operator import itemgetter @@ -364,37 +364,37 @@ def geometric_mean(data): ' containing positive numbers') from None -def harmonic_mean(data): +def harmonic_mean(data, weights=None): """Return the harmonic mean of data. The harmonic mean, sometimes called the subcontrary mean, is the reciprocal of the arithmetic mean of the reciprocals of the data, and is often appropriate when averaging quantities which are rates - or ratios, for example speeds. Example: + or ratios, for example speeds. - Suppose an investor purchases an equal value of shares in each of - three companies, with P/E (price/earning) ratios of 2.5, 3 and 10. - What is the average P/E ratio for the investor's portfolio? + Suppose a car travels 40 km/hr for 5 km and then speeds-up to + 60 km/hr for another 5 km. What is the average speed? - >>> harmonic_mean([2.5, 3, 10]) # For an equal investment portfolio. - 3.6 + >>> harmonic_mean([40, 60]) + 48.0 - Using the arithmetic mean would give an average of about 5.167, which - is too high. + Suppose a car travels 40 km/hr for 5 km, and when traffic clears, + speeds-up to 60 km/hr for the remaining 30 km of the journey. What + is the average speed? + + >>> harmonic_mean([40, 60], weights=[5, 30]) + 56.0 If ``data`` is empty, or any element is less than zero, ``harmonic_mean`` will raise ``StatisticsError``. """ - # For a justification for using harmonic mean for P/E ratios, see - # http://fixthepitch.pellucid.com/comps-analysis-the-missing-harmony-of-summary-statistics/ - # http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2621087 if iter(data) is data: data = list(data) errmsg = 'harmonic mean does not support negative values' n = len(data) if n < 1: raise StatisticsError('harmonic_mean requires at least one data point') - elif n == 1: + elif n == 1 and weights is None: x = data[0] if isinstance(x, (numbers.Real, Decimal)): if x < 0: @@ -402,13 +402,23 @@ def harmonic_mean(data): return x else: raise TypeError('unsupported type') + if weights is None: + weights = repeat(1, n) + sum_weights = n + else: + if iter(weights) is weights: + weights = list(weights) + if len(weights) != n: + raise StatisticsError('Number of weights does not match data size') + _, sum_weights, _ = _sum(w for w in _fail_neg(weights, errmsg)) try: - T, total, count = _sum(1 / x for x in _fail_neg(data, errmsg)) + data = _fail_neg(data, errmsg) + T, total, count = _sum(w / x if w else 0 for w, x in zip(weights, data)) except ZeroDivisionError: return 0 - assert count == n - return _convert(n / total, T) - + if total <= 0: + raise StatisticsError('Weighted sum must be positive') + return _convert(sum_weights / total, T) # FIXME: investigate ways to calculate medians without sorting? Quickselect? def median(data): diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py index 997110732a176..4b8686b681822 100644 --- a/Lib/test/test_statistics.py +++ b/Lib/test/test_statistics.py @@ -1599,6 +1599,27 @@ def test_doubled_data(self): actual = self.func(data*2) self.assertApproxEqual(actual, expected) + def test_with_weights(self): + self.assertEqual(self.func([40, 60], [5, 30]), 56.0) # common case + self.assertEqual(self.func([40, 60], + weights=[5, 30]), 56.0) # keyword argument + self.assertEqual(self.func(iter([40, 60]), + iter([5, 30])), 56.0) # iterator inputs + self.assertEqual( + self.func([Fraction(10, 3), Fraction(23, 5), Fraction(7, 2)], [5, 2, 10]), + self.func([Fraction(10, 3)] * 5 + + [Fraction(23, 5)] * 2 + + [Fraction(7, 2)] * 10)) + self.assertEqual(self.func([10], [7]), 10) # n=1 fast path + with self.assertRaises(TypeError): + self.func([1, 2, 3], [1, (), 3]) # non-numeric weight + with self.assertRaises(statistics.StatisticsError): + self.func([1, 2, 3], [1, 2]) # wrong number of weights + with self.assertRaises(statistics.StatisticsError): + self.func([10], [0]) # no non-zero weights + with self.assertRaises(statistics.StatisticsError): + self.func([10, 20], [0, 0]) # no non-zero weights + class TestMedian(NumericTestCase, AverageMixin): # Common tests for median and all median.* functions. diff --git a/Misc/NEWS.d/next/Library/2020-12-23-15-16-12.bpo-38308.lB4Sv0.rst b/Misc/NEWS.d/next/Library/2020-12-23-15-16-12.bpo-38308.lB4Sv0.rst new file mode 100644 index 0000000000000..cf3807d9dc48a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-23-15-16-12.bpo-38308.lB4Sv0.rst @@ -0,0 +1 @@ +Add optional *weights* to *statistics.harmonic_mean()*. From webhook-mailer at python.org Wed Dec 23 23:33:57 2020 From: webhook-mailer at python.org (gvanrossum) Date: Thu, 24 Dec 2020 04:33:57 -0000 Subject: [Python-checkins] bpo-41559: Implement PEP 612 - Add ParamSpec and Concatenate to typing (#23702) Message-ID: https://github.com/python/cpython/commit/73607be68668ab7f4bee53507c8dc7b5a46c9cb4 commit: 73607be68668ab7f4bee53507c8dc7b5a46c9cb4 branch: master author: kj <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2020-12-23T20:33:48-08:00 summary: bpo-41559: Implement PEP 612 - Add ParamSpec and Concatenate to typing (#23702) files: A Misc/NEWS.d/next/Library/2020-12-10-00-09-40.bpo-41559.1l4yjP.rst M Lib/_collections_abc.py M Lib/test/test_genericalias.py M Lib/test/test_typing.py M Lib/typing.py M Objects/genericaliasobject.c diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index e4eac79646235..87302ac76d801 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -416,7 +416,7 @@ def __subclasshook__(cls, C): class _CallableGenericAlias(GenericAlias): """ Represent `Callable[argtypes, resulttype]`. - This sets ``__args__`` to a tuple containing the flattened``argtypes`` + This sets ``__args__`` to a tuple containing the flattened ``argtypes`` followed by ``resulttype``. Example: ``Callable[[int, str], float]`` sets ``__args__`` to @@ -444,7 +444,7 @@ def __create_ga(cls, origin, args): return super().__new__(cls, origin, ga_args) def __repr__(self): - if len(self.__args__) == 2 and self.__args__[0] is Ellipsis: + if _has_special_args(self.__args__): return super().__repr__() return (f'collections.abc.Callable' f'[[{", ".join([_type_repr(a) for a in self.__args__[:-1]])}], ' @@ -452,7 +452,7 @@ def __repr__(self): def __reduce__(self): args = self.__args__ - if not (len(args) == 2 and args[0] is Ellipsis): + if not _has_special_args(args): args = list(args[:-1]), args[-1] return _CallableGenericAlias, (Callable, args) @@ -461,12 +461,28 @@ def __getitem__(self, item): # rather than the default types.GenericAlias object. ga = super().__getitem__(item) args = ga.__args__ - t_result = args[-1] - t_args = args[:-1] - args = (t_args, t_result) + # args[0] occurs due to things like Z[[int, str, bool]] from PEP 612 + if not isinstance(ga.__args__[0], tuple): + t_result = ga.__args__[-1] + t_args = ga.__args__[:-1] + args = (t_args, t_result) return _CallableGenericAlias(Callable, args) +def _has_special_args(args): + """Checks if args[0] matches either ``...``, ``ParamSpec`` or + ``_ConcatenateGenericAlias`` from typing.py + """ + if len(args) != 2: + return False + obj = args[0] + if obj is Ellipsis: + return True + obj = type(obj) + names = ('ParamSpec', '_ConcatenateGenericAlias') + return obj.__module__ == 'typing' and any(obj.__name__ == name for name in names) + + def _type_repr(obj): """Return the repr() of an object, special-casing types (internal helper). diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index ccf40b13d3a94..fd024dcec8208 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -369,6 +369,27 @@ def __call__(self): self.assertEqual(c1.__args__, c2.__args__) self.assertEqual(hash(c1.__args__), hash(c2.__args__)) + with self.subTest("Testing ParamSpec uses"): + P = typing.ParamSpec('P') + C1 = Callable[P, T] + # substitution + self.assertEqual(C1[int, str], Callable[[int], str]) + self.assertEqual(C1[[int, str], str], Callable[[int, str], str]) + self.assertEqual(repr(C1).split(".")[-1], "Callable[~P, ~T]") + self.assertEqual(repr(C1[int, str]).split(".")[-1], "Callable[[int], str]") + + C2 = Callable[P, int] + # special case in PEP 612 where + # X[int, str, float] == X[[int, str, float]] + self.assertEqual(C2[int, str, float], C2[[int, str, float]]) + self.assertEqual(repr(C2).split(".")[-1], "Callable[~P, int]") + self.assertEqual(repr(C2[int, str]).split(".")[-1], "Callable[[int, str], int]") + + with self.subTest("Testing Concatenate uses"): + P = typing.ParamSpec('P') + C1 = Callable[typing.Concatenate[int, P], int] + self.assertEqual(repr(C1), "collections.abc.Callable" + "[typing.Concatenate[int, ~P], int]") if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 8e86e769a0d83..c340c8a898289 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -25,6 +25,7 @@ from typing import Pattern, Match from typing import Annotated, ForwardRef from typing import TypeAlias +from typing import ParamSpec, Concatenate import abc import typing import weakref @@ -1130,10 +1131,6 @@ class P(PR[int, T], Protocol[T]): PR[int] with self.assertRaises(TypeError): P[int, str] - with self.assertRaises(TypeError): - PR[int, 1] - with self.assertRaises(TypeError): - PR[int, ClassVar] class C(PR[int, T]): pass @@ -1155,8 +1152,6 @@ class P(PR[int, str], Protocol): self.assertIsSubclass(P, PR) with self.assertRaises(TypeError): PR[int] - with self.assertRaises(TypeError): - PR[int, 1] class P1(Protocol, Generic[T]): def bar(self, x: T) -> str: ... @@ -1175,8 +1170,6 @@ def bar(self, x: str) -> str: return x self.assertIsInstance(Test(), PSub) - with self.assertRaises(TypeError): - PR[int, ClassVar] def test_init_called(self): T = TypeVar('T') @@ -1746,8 +1739,6 @@ def test_extended_generic_rules_eq(self): self.assertEqual(typing.Iterable[Tuple[T, T]][T], typing.Iterable[Tuple[T, T]]) with self.assertRaises(TypeError): Tuple[T, int][()] - with self.assertRaises(TypeError): - Tuple[T, U][T, ...] self.assertEqual(Union[T, int][int], int) self.assertEqual(Union[T, U][int, Union[int, str]], Union[int, str]) @@ -1759,10 +1750,6 @@ class Derived(Base): ... self.assertEqual(Callable[[T], T][KT], Callable[[KT], KT]) self.assertEqual(Callable[..., List[T]][int], Callable[..., List[int]]) - with self.assertRaises(TypeError): - Callable[[T], U][..., int] - with self.assertRaises(TypeError): - Callable[[T], U][[], int] def test_extended_generic_rules_repr(self): T = TypeVar('T') @@ -4243,6 +4230,111 @@ def test_cannot_subscript(self): TypeAlias[int] +class ParamSpecTests(BaseTestCase): + + def test_basic_plain(self): + P = ParamSpec('P') + self.assertEqual(P, P) + self.assertIsInstance(P, ParamSpec) + + def test_valid_uses(self): + P = ParamSpec('P') + T = TypeVar('T') + C1 = Callable[P, int] + self.assertEqual(C1.__args__, (P, int)) + self.assertEqual(C1.__parameters__, (P,)) + C2 = Callable[P, T] + self.assertEqual(C2.__args__, (P, T)) + self.assertEqual(C2.__parameters__, (P, T)) + # Test collections.abc.Callable too. + C3 = collections.abc.Callable[P, int] + self.assertEqual(C3.__args__, (P, int)) + self.assertEqual(C3.__parameters__, (P,)) + C4 = collections.abc.Callable[P, T] + self.assertEqual(C4.__args__, (P, T)) + self.assertEqual(C4.__parameters__, (P, T)) + + # ParamSpec instances should also have args and kwargs attributes. + self.assertIn('args', dir(P)) + self.assertIn('kwargs', dir(P)) + P.args + P.kwargs + + def test_user_generics(self): + T = TypeVar("T") + P = ParamSpec("P") + P_2 = ParamSpec("P_2") + + class X(Generic[T, P]): + f: Callable[P, int] + x: T + G1 = X[int, P_2] + self.assertEqual(G1.__args__, (int, P_2)) + self.assertEqual(G1.__parameters__, (P_2,)) + + G2 = X[int, Concatenate[int, P_2]] + self.assertEqual(G2.__args__, (int, Concatenate[int, P_2])) + self.assertEqual(G2.__parameters__, (P_2,)) + + G3 = X[int, [int, bool]] + self.assertEqual(G3.__args__, (int, (int, bool))) + self.assertEqual(G3.__parameters__, ()) + + G4 = X[int, ...] + self.assertEqual(G4.__args__, (int, Ellipsis)) + self.assertEqual(G4.__parameters__, ()) + + class Z(Generic[P]): + f: Callable[P, int] + + G5 = Z[[int, str, bool]] + self.assertEqual(G5.__args__, ((int, str, bool),)) + self.assertEqual(G5.__parameters__, ()) + + G6 = Z[int, str, bool] + self.assertEqual(G6.__args__, ((int, str, bool),)) + self.assertEqual(G6.__parameters__, ()) + + # G5 and G6 should be equivalent according to the PEP + self.assertEqual(G5.__args__, G6.__args__) + self.assertEqual(G5.__origin__, G6.__origin__) + self.assertEqual(G5.__parameters__, G6.__parameters__) + self.assertEqual(G5, G6) + + def test_var_substitution(self): + T = TypeVar("T") + P = ParamSpec("P") + C1 = Callable[P, T] + self.assertEqual(C1[int, str], Callable[[int], str]) + self.assertEqual(C1[[int, str, dict], float], Callable[[int, str, dict], float]) + + +class ConcatenateTests(BaseTestCase): + def test_basics(self): + P = ParamSpec('P') + class MyClass: ... + c = Concatenate[MyClass, P] + self.assertNotEqual(c, Concatenate) + + def test_valid_uses(self): + P = ParamSpec('P') + T = TypeVar('T') + C1 = Callable[Concatenate[int, P], int] + self.assertEqual(C1.__args__, (Concatenate[int, P], int)) + self.assertEqual(C1.__parameters__, (P,)) + C2 = Callable[Concatenate[int, T, P], T] + self.assertEqual(C2.__args__, (Concatenate[int, T, P], T)) + self.assertEqual(C2.__parameters__, (T, P)) + + # Test collections.abc.Callable too. + C3 = collections.abc.Callable[Concatenate[int, P], int] + self.assertEqual(C3.__args__, (Concatenate[int, P], int)) + self.assertEqual(C3.__parameters__, (P,)) + C4 = collections.abc.Callable[Concatenate[int, T, P], T] + self.assertEqual(C4.__args__, (Concatenate[int, T, P], T)) + self.assertEqual(C4.__parameters__, (T, P)) + + class AllTests(BaseTestCase): """Tests for __all__.""" diff --git a/Lib/typing.py b/Lib/typing.py index 7f07321cda82a..7b79876d4ebc7 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -4,8 +4,10 @@ At large scale, the structure of the module is following: * Imports and exports, all public names should be explicitly added to __all__. * Internal helper functions: these should never be used in code outside this module. -* _SpecialForm and its instances (special forms): Any, NoReturn, ClassVar, Union, Optional -* Two classes whose instances can be type arguments in addition to types: ForwardRef and TypeVar +* _SpecialForm and its instances (special forms): + Any, NoReturn, ClassVar, Union, Optional, Concatenate +* Classes whose instances can be type arguments in addition to types: + ForwardRef, TypeVar and ParamSpec * The core of internal generics API: _GenericAlias and _VariadicGenericAlias, the latter is currently only used by Tuple and Callable. All subscripted types like X[int], Union[int, str], etc., are instances of either of these classes. @@ -36,11 +38,13 @@ 'Any', 'Callable', 'ClassVar', + 'Concatenate', 'Final', 'ForwardRef', 'Generic', 'Literal', 'Optional', + 'ParamSpec', 'Protocol', 'Tuple', 'Type', @@ -154,7 +158,7 @@ def _type_check(arg, msg, is_argument=True): return arg if isinstance(arg, _SpecialForm) or arg in (Generic, Protocol): raise TypeError(f"Plain {arg} is not valid as type argument") - if isinstance(arg, (type, TypeVar, ForwardRef, types.Union)): + if isinstance(arg, (type, TypeVar, ForwardRef, types.Union, ParamSpec)): return arg if not callable(arg): raise TypeError(f"{msg} Got {arg!r:.100}.") @@ -183,14 +187,14 @@ def _type_repr(obj): def _collect_type_vars(types): - """Collect all type variable contained in types in order of - first appearance (lexicographic order). For example:: + """Collect all type variable-like variables contained + in types in order of first appearance (lexicographic order). For example:: _collect_type_vars((T, List[S, T])) == (T, S) """ tvars = [] for t in types: - if isinstance(t, TypeVar) and t not in tvars: + if isinstance(t, _TypeVarLike) and t not in tvars: tvars.append(t) if isinstance(t, (_GenericAlias, GenericAlias)): tvars.extend([t for t in t.__parameters__ if t not in tvars]) @@ -208,6 +212,21 @@ def _check_generic(cls, parameters, elen): raise TypeError(f"Too {'many' if alen > elen else 'few'} parameters for {cls};" f" actual {alen}, expected {elen}") +def _prepare_paramspec_params(cls, params): + """Prepares the parameters for a Generic containing ParamSpec + variables (internal helper). + """ + # Special case where Z[[int, str, bool]] == Z[int, str, bool] in PEP 612. + if len(cls.__parameters__) == 1 and len(params) > 1: + return (params,) + else: + _params = [] + # Convert lists to tuples to help other libraries cache the results. + for p, tvar in zip(params, cls.__parameters__): + if isinstance(tvar, ParamSpec) and isinstance(p, list): + p = tuple(p) + _params.append(p) + return tuple(_params) def _deduplicate(params): # Weed out strict duplicates, preserving the first of each occurrence. @@ -523,6 +542,29 @@ def TypeAlias(self, parameters): raise TypeError(f"{self} is not subscriptable") + at _SpecialForm +def Concatenate(self, parameters): + """Used in conjunction with ParamSpec and Callable to represent a higher + order function which adds, removes or transforms parameters of a Callable. + + For example:: + + Callable[Concatenate[int, P], int] + + See PEP 612 for detailed information. + """ + if parameters == (): + raise TypeError("Cannot take a Concatenate of no types.") + if not isinstance(parameters, tuple): + parameters = (parameters,) + if not isinstance(parameters[-1], ParamSpec): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable.") + msg = "Concatenate[arg, ...]: each arg must be a type." + parameters = tuple(_type_check(p, msg) for p in parameters) + return _ConcatenateGenericAlias(self, parameters) + + class ForwardRef(_Final, _root=True): """Internal wrapper to hold a forward reference.""" @@ -585,8 +627,41 @@ def __hash__(self): def __repr__(self): return f'ForwardRef({self.__forward_arg__!r})' +class _TypeVarLike: + """Mixin for TypeVar-like types (TypeVar and ParamSpec).""" + def __init__(self, bound, covariant, contravariant): + """Used to setup TypeVars and ParamSpec's bound, covariant and + contravariant attributes. + """ + if covariant and contravariant: + raise ValueError("Bivariant types are not supported.") + self.__covariant__ = bool(covariant) + self.__contravariant__ = bool(contravariant) + if bound: + self.__bound__ = _type_check(bound, "Bound must be a type.") + else: + self.__bound__ = None + + def __or__(self, right): + return Union[self, right] + + def __ror__(self, right): + return Union[self, right] + + def __repr__(self): + if self.__covariant__: + prefix = '+' + elif self.__contravariant__: + prefix = '-' + else: + prefix = '~' + return prefix + self.__name__ + + def __reduce__(self): + return self.__name__ + -class TypeVar(_Final, _Immutable, _root=True): +class TypeVar( _Final, _Immutable, _TypeVarLike, _root=True): """Type variable. Usage:: @@ -636,20 +711,13 @@ def longest(x: A, y: A) -> A: def __init__(self, name, *constraints, bound=None, covariant=False, contravariant=False): self.__name__ = name - if covariant and contravariant: - raise ValueError("Bivariant types are not supported.") - self.__covariant__ = bool(covariant) - self.__contravariant__ = bool(contravariant) + super().__init__(bound, covariant, contravariant) if constraints and bound is not None: raise TypeError("Constraints cannot be combined with bound=...") if constraints and len(constraints) == 1: raise TypeError("A single constraint is not allowed") msg = "TypeVar(name, constraint, ...): constraints must be types." self.__constraints__ = tuple(_type_check(t, msg) for t in constraints) - if bound: - self.__bound__ = _type_check(bound, "Bound must be a type.") - else: - self.__bound__ = None try: def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') # for pickling except (AttributeError, ValueError): @@ -657,23 +725,68 @@ def __init__(self, name, *constraints, bound=None, if def_mod != 'typing': self.__module__ = def_mod - def __or__(self, right): - return Union[self, right] - def __ror__(self, right): - return Union[self, right] +class ParamSpec(_Final, _Immutable, _TypeVarLike, _root=True): + """Parameter specification variable. - def __repr__(self): - if self.__covariant__: - prefix = '+' - elif self.__contravariant__: - prefix = '-' - else: - prefix = '~' - return prefix + self.__name__ + Usage:: - def __reduce__(self): - return self.__name__ + P = ParamSpec('P') + + Parameter specification variables exist primarily for the benefit of static + type checkers. They are used to forward the parameter types of one + Callable to another Callable, a pattern commonly found in higher order + functions and decorators. They are only valid when used in Concatenate, or + as the first argument to Callable, or as parameters for user-defined Generics. + See class Generic for more information on generic types. An example for + annotating a decorator:: + + T = TypeVar('T') + P = ParamSpec('P') + + def add_logging(f: Callable[P, T]) -> Callable[P, T]: + '''A type-safe decorator to add logging to a function.''' + def inner(*args: P.args, **kwargs: P.kwargs) -> T: + logging.info(f'{f.__name__} was called') + return f(*args, **kwargs) + return inner + + @add_logging + def add_two(x: float, y: float) -> float: + '''Add two numbers together.''' + return x + y + + Parameter specification variables defined with covariant=True or + contravariant=True can be used to declare covariant or contravariant + generic types. These keyword arguments are valid, but their actual semantics + are yet to be decided. See PEP 612 for details. + + Parameter specification variables can be introspected. e.g.: + + P.__name__ == 'T' + P.__bound__ == None + P.__covariant__ == False + P.__contravariant__ == False + + Note that only parameter specification variables defined in global scope can + be pickled. + """ + + __slots__ = ('__name__', '__bound__', '__covariant__', '__contravariant__', + '__dict__') + + args = object() + kwargs = object() + + def __init__(self, name, bound=None, covariant=False, contravariant=False): + self.__name__ = name + super().__init__(bound, covariant, contravariant) + try: + def_mod = sys._getframe(1).f_globals.get('__name__', '__main__') + except (AttributeError, ValueError): + def_mod = None + if def_mod != 'typing': + self.__module__ = def_mod def _is_dunder(attr): @@ -783,21 +896,26 @@ def __getitem__(self, params): raise TypeError(f"Cannot subscript already-subscripted {self}") if not isinstance(params, tuple): params = (params,) - msg = "Parameters to generic types must be types." - params = tuple(_type_check(p, msg) for p in params) + params = tuple(_type_convert(p) for p in params) + if any(isinstance(t, ParamSpec) for t in self.__parameters__): + params = _prepare_paramspec_params(self, params) _check_generic(self, params, len(self.__parameters__)) subst = dict(zip(self.__parameters__, params)) new_args = [] for arg in self.__args__: - if isinstance(arg, TypeVar): + if isinstance(arg, _TypeVarLike): arg = subst[arg] elif isinstance(arg, (_GenericAlias, GenericAlias)): subparams = arg.__parameters__ if subparams: subargs = tuple(subst[x] for x in subparams) arg = arg[subargs] - new_args.append(arg) + # Required to flatten out the args for CallableGenericAlias + if self.__origin__ == collections.abc.Callable and isinstance(arg, tuple): + new_args.extend(arg) + else: + new_args.append(arg) return self.copy_with(tuple(new_args)) def copy_with(self, params): @@ -884,15 +1002,18 @@ def __ror__(self, right): class _CallableGenericAlias(_GenericAlias, _root=True): def __repr__(self): assert self._name == 'Callable' - if len(self.__args__) == 2 and self.__args__[0] is Ellipsis: + args = self.__args__ + if len(args) == 2 and (args[0] is Ellipsis + or isinstance(args[0], (ParamSpec, _ConcatenateGenericAlias))): return super().__repr__() return (f'typing.Callable' - f'[[{", ".join([_type_repr(a) for a in self.__args__[:-1]])}], ' - f'{_type_repr(self.__args__[-1])}]') + f'[[{", ".join([_type_repr(a) for a in args[:-1]])}], ' + f'{_type_repr(args[-1])}]') def __reduce__(self): args = self.__args__ - if not (len(args) == 2 and args[0] is ...): + if not (len(args) == 2 and (args[0] is Ellipsis + or isinstance(args[0], (ParamSpec, _ConcatenateGenericAlias)))): args = list(args[:-1]), args[-1] return operator.getitem, (Callable, args) @@ -992,6 +1113,10 @@ def __hash__(self): return hash(frozenset(_value_and_type_iter(self.__args__))) +class _ConcatenateGenericAlias(_GenericAlias, _root=True): + pass + + class Generic: """Abstract base class for generic types. @@ -1022,18 +1147,20 @@ def __class_getitem__(cls, params): if not params and cls is not Tuple: raise TypeError( f"Parameter list to {cls.__qualname__}[...] cannot be empty") - msg = "Parameters to generic types must be types." - params = tuple(_type_check(p, msg) for p in params) + params = tuple(_type_convert(p) for p in params) if cls in (Generic, Protocol): # Generic and Protocol can only be subscripted with unique type variables. - if not all(isinstance(p, TypeVar) for p in params): + if not all(isinstance(p, _TypeVarLike) for p in params): raise TypeError( - f"Parameters to {cls.__name__}[...] must all be type variables") + f"Parameters to {cls.__name__}[...] must all be type variables " + f"or parameter specification variables.") if len(set(params)) != len(params): raise TypeError( f"Parameters to {cls.__name__}[...] must all be unique") else: # Subscripting a regular Generic subclass. + if any(isinstance(t, ParamSpec) for t in cls.__parameters__): + params = _prepare_paramspec_params(cls, params) _check_generic(cls, params, len(cls.__parameters__)) return _GenericAlias(cls, params) diff --git a/Misc/NEWS.d/next/Library/2020-12-10-00-09-40.bpo-41559.1l4yjP.rst b/Misc/NEWS.d/next/Library/2020-12-10-00-09-40.bpo-41559.1l4yjP.rst new file mode 100644 index 0000000000000..539fdeccd14b3 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-12-10-00-09-40.bpo-41559.1l4yjP.rst @@ -0,0 +1,2 @@ +Implemented :pep:`612`: added ``ParamSpec`` and ``Concatenate`` to +:mod:`typing`. Patch by Ken Jin. diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c index 756a7ce474aee..4cc82ffcdf39a 100644 --- a/Objects/genericaliasobject.c +++ b/Objects/genericaliasobject.c @@ -156,13 +156,24 @@ ga_repr(PyObject *self) return NULL; } -// isinstance(obj, TypeVar) without importing typing.py. -// Returns -1 for errors. -static int -is_typevar(PyObject *obj) +/* Checks if a variable number of names are from typing.py. +* If any one of the names are found, return 1, else 0. +**/ +static inline int +is_typing_name(PyObject *obj, int num, ...) { + va_list names; + va_start(names, num); + PyTypeObject *type = Py_TYPE(obj); - if (strcmp(type->tp_name, "TypeVar") != 0) { + int hit = 0; + for (int i = 0; i < num; ++i) { + if (!strcmp(type->tp_name, va_arg(names, const char *))) { + hit = 1; + break; + } + } + if (!hit) { return 0; } PyObject *module = PyObject_GetAttrString((PyObject *)type, "__module__"); @@ -172,9 +183,25 @@ is_typevar(PyObject *obj) int res = PyUnicode_Check(module) && _PyUnicode_EqualToASCIIString(module, "typing"); Py_DECREF(module); + + va_end(names); return res; } +// isinstance(obj, (TypeVar, ParamSpec)) without importing typing.py. +// Returns -1 for errors. +static inline int +is_typevarlike(PyObject *obj) +{ + return is_typing_name(obj, 2, "TypeVar", "ParamSpec"); +} + +static inline int +is_paramspec(PyObject *obj) +{ + return is_typing_name(obj, 1, "ParamSpec"); +} + // Index of item in self[:len], or -1 if not found (self is a tuple) static Py_ssize_t tuple_index(PyObject *self, Py_ssize_t len, PyObject *item) @@ -209,7 +236,7 @@ make_parameters(PyObject *args) Py_ssize_t iparam = 0; for (Py_ssize_t iarg = 0; iarg < nargs; iarg++) { PyObject *t = PyTuple_GET_ITEM(args, iarg); - int typevar = is_typevar(t); + int typevar = is_typevarlike(t); if (typevar < 0) { Py_DECREF(parameters); return NULL; @@ -279,7 +306,14 @@ subs_tvars(PyObject *obj, PyObject *params, PyObject **argitems) if (iparam >= 0) { arg = argitems[iparam]; } - Py_INCREF(arg); + // convert all the lists inside args to tuples to help + // with caching in other libaries + if (PyList_CheckExact(arg)) { + arg = PyList_AsTuple(arg); + } + else { + Py_INCREF(arg); + } PyTuple_SET_ITEM(subargs, i, arg); } @@ -314,11 +348,19 @@ ga_getitem(PyObject *self, PyObject *item) int is_tuple = PyTuple_Check(item); Py_ssize_t nitems = is_tuple ? PyTuple_GET_SIZE(item) : 1; PyObject **argitems = is_tuple ? &PyTuple_GET_ITEM(item, 0) : &item; - if (nitems != nparams) { - return PyErr_Format(PyExc_TypeError, - "Too %s arguments for %R", - nitems > nparams ? "many" : "few", - self); + // A special case in PEP 612 where if X = Callable[P, int], + // then X[int, str] == X[[int, str]]. + if (nparams == 1 && nitems > 1 && is_tuple && + is_paramspec(PyTuple_GET_ITEM(alias->parameters, 0))) { + argitems = &item; + } + else { + if (nitems != nparams) { + return PyErr_Format(PyExc_TypeError, + "Too %s arguments for %R", + nitems > nparams ? "many" : "few", + self); + } } /* Replace all type variables (specified by alias->parameters) with corresponding values specified by argitems. @@ -333,7 +375,7 @@ ga_getitem(PyObject *self, PyObject *item) } for (Py_ssize_t iarg = 0; iarg < nargs; iarg++) { PyObject *arg = PyTuple_GET_ITEM(alias->args, iarg); - int typevar = is_typevar(arg); + int typevar = is_typevarlike(arg); if (typevar < 0) { Py_DECREF(newargs); return NULL; @@ -342,7 +384,13 @@ ga_getitem(PyObject *self, PyObject *item) Py_ssize_t iparam = tuple_index(alias->parameters, nparams, arg); assert(iparam >= 0); arg = argitems[iparam]; - Py_INCREF(arg); + // convert lists to tuples to help with caching in other libaries. + if (PyList_CheckExact(arg)) { + arg = PyList_AsTuple(arg); + } + else { + Py_INCREF(arg); + } } else { arg = subs_tvars(arg, alias->parameters, argitems); From webhook-mailer at python.org Thu Dec 24 06:31:18 2020 From: webhook-mailer at python.org (isidentical) Date: Thu, 24 Dec 2020 11:31:18 -0000 Subject: [Python-checkins] GH: Add isidentical to the CODEOWNERS (GH-23923) Message-ID: https://github.com/python/cpython/commit/a9ef95b811296604d577e241c9adebf4d8ef99ae commit: a9ef95b811296604d577e241c9adebf4d8ef99ae branch: master author: Batuhan Taskaya committer: isidentical date: 2020-12-24T14:30:46+03:00 summary: GH: Add isidentical to the CODEOWNERS (GH-23923) files: M .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8c76f54af5504..19ac3aac713fc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -19,6 +19,7 @@ Objects/frameobject.c @markshannon Objects/call.c @markshannon Python/ceval.c @markshannon Python/compile.c @markshannon +Python/ast_opt.c @isidentical # Hashing **/*hashlib* @python/crypto-team @tiran @@ -84,6 +85,12 @@ Include/pytime.h @pganssle @abalkin /Lib/test/test_peg_generator/ @pablogsal @lysnikolaou /Grammar/python.gram @pablogsal @lysnikolaou +# AST +Python/ast.c @isidentical +Parser/asdl.py @isidentical +Parser/asdl_c.py @isidentical +Lib/ast.py @isidentical + # SQLite 3 **/*sqlite* @berkerpeksag From webhook-mailer at python.org Thu Dec 24 12:16:13 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Dec 2020 17:16:13 -0000 Subject: [Python-checkins] closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) Message-ID: https://github.com/python/cpython/commit/b57ada98da0d5b0cf1ebc2c9c5502d04aa962042 commit: b57ada98da0d5b0cf1ebc2c9c5502d04aa962042 branch: master author: Augusto Hack committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-24T09:16:04-08:00 summary: closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) On Fedora 31 gdb is using python 3.7.9, calling `proxyval` on an instance with a dictionary fails because of the `dict.iteritems` usage. This PR changes the code to be compatible with py2 and py3. This changed seemed small enough to not need an issue and news blurb, if one is required please let me know. Automerge-Triggered-By: GH:benjaminp files: A Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst M Tools/gdb/libpython.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst new file mode 100644 index 0000000000000..01a6e7fe55f5b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst @@ -0,0 +1,2 @@ +Fixed Python 3 compatibility issue with gdb/libpython.py handling of attribute +dictionaries. diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index e6555dd96a373..e18ab0d873cce 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -468,7 +468,7 @@ def __init__(self, cl_name, attrdict, address): def __repr__(self): if isinstance(self.attrdict, dict): kwargs = ', '.join(["%s=%r" % (arg, val) - for arg, val in self.attrdict.iteritems()]) + for arg, val in self.attrdict.items()]) return '<%s(%s) at remote 0x%x>' % (self.cl_name, kwargs, self.address) else: From webhook-mailer at python.org Thu Dec 24 12:34:37 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Dec 2020 17:34:37 -0000 Subject: [Python-checkins] closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) Message-ID: https://github.com/python/cpython/commit/efd64c8ea0fed1c13839cec0feea450820da34f8 commit: efd64c8ea0fed1c13839cec0feea450820da34f8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-24T09:34:28-08:00 summary: closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) On Fedora 31 gdb is using python 3.7.9, calling `proxyval` on an instance with a dictionary fails because of the `dict.iteritems` usage. This PR changes the code to be compatible with py2 and py3. This changed seemed small enough to not need an issue and news blurb, if one is required please let me know. Automerge-Triggered-By: GH:benjaminp (cherry picked from commit b57ada98da0d5b0cf1ebc2c9c5502d04aa962042) Co-authored-by: Augusto Hack files: A Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst M Tools/gdb/libpython.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst new file mode 100644 index 0000000000000..01a6e7fe55f5b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst @@ -0,0 +1,2 @@ +Fixed Python 3 compatibility issue with gdb/libpython.py handling of attribute +dictionaries. diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index ffb1813720e45..aa674f6be6019 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -468,7 +468,7 @@ def __init__(self, cl_name, attrdict, address): def __repr__(self): if isinstance(self.attrdict, dict): kwargs = ', '.join(["%s=%r" % (arg, val) - for arg, val in self.attrdict.iteritems()]) + for arg, val in self.attrdict.items()]) return '<%s(%s) at remote 0x%x>' % (self.cl_name, kwargs, self.address) else: From webhook-mailer at python.org Thu Dec 24 12:37:11 2020 From: webhook-mailer at python.org (miss-islington) Date: Thu, 24 Dec 2020 17:37:11 -0000 Subject: [Python-checkins] closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) Message-ID: https://github.com/python/cpython/commit/3bb85672bb894403a787a9c5afc0ca5987d28fe0 commit: 3bb85672bb894403a787a9c5afc0ca5987d28fe0 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2020-12-24T09:37:07-08:00 summary: closes bpo-42726: gdb libpython: InstanceProxy support for py3 (GH-23912) On Fedora 31 gdb is using python 3.7.9, calling `proxyval` on an instance with a dictionary fails because of the `dict.iteritems` usage. This PR changes the code to be compatible with py2 and py3. This changed seemed small enough to not need an issue and news blurb, if one is required please let me know. Automerge-Triggered-By: GH:benjaminp (cherry picked from commit b57ada98da0d5b0cf1ebc2c9c5502d04aa962042) Co-authored-by: Augusto Hack files: A Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst M Tools/gdb/libpython.py diff --git a/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst new file mode 100644 index 0000000000000..01a6e7fe55f5b --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2020-12-23-19-42-11.bpo-42726.a5EkTv.rst @@ -0,0 +1,2 @@ +Fixed Python 3 compatibility issue with gdb/libpython.py handling of attribute +dictionaries. diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index 33bf5ac821fff..aeaa63e540d8b 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -468,7 +468,7 @@ def __init__(self, cl_name, attrdict, address): def __repr__(self): if isinstance(self.attrdict, dict): kwargs = ', '.join(["%s=%r" % (arg, val) - for arg, val in self.attrdict.iteritems()]) + for arg, val in self.attrdict.items()]) return '<%s(%s) at remote 0x%x>' % (self.cl_name, kwargs, self.address) else: From webhook-mailer at python.org Thu Dec 24 13:04:45 2020 From: webhook-mailer at python.org (ericsnowcurrently) Date: Thu, 24 Dec 2020 18:04:45 -0000 Subject: [Python-checkins] bpo-36876: [c-analyzer tool] Add a "capi" subcommand to the c-analyzer tool. (gh-23918) Message-ID: https://github.com/python/cpython/commit/7ec59d8861ef1104c3028678b2cacde4c5693e19 commit: 7ec59d8861ef1104c3028678b2cacde4c5693e19 branch: master author: Eric Snow committer: ericsnowcurrently date: 2020-12-24T11:04:19-07:00 summary: bpo-36876: [c-analyzer tool] Add a "capi" subcommand to the c-analyzer tool. (gh-23918) This will help identify which C-API items will need to be updated for subinterpreter support. https://bugs.python.org/issue36876 files: A Tools/c-analyzer/cpython/_capi.py A Tools/c-analyzer/cpython/_files.py M Tools/c-analyzer/c_analyzer/__main__.py M Tools/c-analyzer/c_common/scriptutil.py M Tools/c-analyzer/c_common/tables.py M Tools/c-analyzer/c_parser/__main__.py M Tools/c-analyzer/c_parser/preprocessor/__main__.py M Tools/c-analyzer/check-c-globals.py M Tools/c-analyzer/cpython/__main__.py M Tools/c-analyzer/cpython/_parser.py diff --git a/Tools/c-analyzer/c_analyzer/__main__.py b/Tools/c-analyzer/c_analyzer/__main__.py index 44325f2952e28..24fc6cd182656 100644 --- a/Tools/c-analyzer/c_analyzer/__main__.py +++ b/Tools/c-analyzer/c_analyzer/__main__.py @@ -263,7 +263,7 @@ def fmt_full(analysis): def add_output_cli(parser, *, default='summary'): parser.add_argument('--format', dest='fmt', default=default, choices=tuple(FORMATS)) - def process_args(args): + def process_args(args, *, argv=None): pass return process_args @@ -280,7 +280,7 @@ def _cli_check(parser, checks=None, **kwargs): process_checks = add_checks_cli(parser) elif len(checks) == 1 and type(checks) is not dict and re.match(r'^<.*>$', checks[0]): check = checks[0][1:-1] - def process_checks(args): + def process_checks(args, *, argv=None): args.checks = [check] else: process_checks = add_checks_cli(parser, checks=checks) @@ -428,9 +428,9 @@ def _cli_data(parser, filenames=None, known=None): if known is None: sub.add_argument('--known', required=True) - def process_args(args): + def process_args(args, *, argv): if args.datacmd == 'dump': - process_progress(args) + process_progress(args, argv) return process_args @@ -515,6 +515,7 @@ def parse_args(argv=sys.argv[1:], prog=sys.argv[0], *, subset=None): verbosity, traceback_cm = process_args_by_key( args, + argv, processors[cmd], ['verbosity', 'traceback_cm'], ) diff --git a/Tools/c-analyzer/c_common/scriptutil.py b/Tools/c-analyzer/c_common/scriptutil.py index 50dd754886919..ce69af2b6bdee 100644 --- a/Tools/c-analyzer/c_common/scriptutil.py +++ b/Tools/c-analyzer/c_common/scriptutil.py @@ -192,7 +192,7 @@ def add_verbosity_cli(parser): parser.add_argument('-q', '--quiet', action='count', default=0) parser.add_argument('-v', '--verbose', action='count', default=0) - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) key = 'verbosity' if key in ns: @@ -208,7 +208,7 @@ def add_traceback_cli(parser): parser.add_argument('--no-traceback', '--no-tb', dest='traceback', action='store_const', const=False) - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) key = 'traceback_cm' if key in ns: @@ -262,7 +262,7 @@ def add_sepval_cli(parser, opt, dest, choices, *, sep=',', **kwargs): #kwargs.setdefault('metavar', opt.upper()) parser.add_argument(opt, dest=dest, action='append', **kwargs) - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) # XXX Use normalize_selection()? @@ -293,7 +293,7 @@ def add_file_filtering_cli(parser, *, excluded=None): excluded = tuple(excluded or ()) - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) key = 'iter_filenames' if key in ns: @@ -323,7 +323,7 @@ def add_progress_cli(parser, *, threshold=VERBOSITY, **kwargs): parser.add_argument('--no-progress', dest='track_progress', action='store_false') parser.set_defaults(track_progress=True) - def process_args(args): + def process_args(args, *, argv=None): if args.track_progress: ns = vars(args) verbosity = ns.get('verbosity', VERBOSITY) @@ -339,7 +339,7 @@ def add_failure_filtering_cli(parser, pool, *, default=False): metavar=f'"{{all|{"|".join(sorted(pool))}}},..."') parser.add_argument('--no-fail', dest='fail', action='store_const', const=()) - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) fail = ns.pop('fail') @@ -371,7 +371,7 @@ def ignore_exc(exc): def add_kind_filtering_cli(parser, *, default=None): parser.add_argument('--kinds', action='append') - def process_args(args): + def process_args(args, *, argv=None): ns = vars(args) kinds = [] @@ -486,18 +486,18 @@ def _flatten_processors(processors): yield from _flatten_processors(proc) -def process_args(args, processors, *, keys=None): +def process_args(args, argv, processors, *, keys=None): processors = _flatten_processors(processors) ns = vars(args) extracted = {} if keys is None: for process_args in processors: - for key in process_args(args): + for key in process_args(args, argv=argv): extracted[key] = ns.pop(key) else: remainder = set(keys) for process_args in processors: - hanging = process_args(args) + hanging = process_args(args, argv=argv) if isinstance(hanging, str): hanging = [hanging] for key in hanging or (): @@ -510,8 +510,8 @@ def process_args(args, processors, *, keys=None): return extracted -def process_args_by_key(args, processors, keys): - extracted = process_args(args, processors, keys=keys) +def process_args_by_key(args, argv, processors, keys): + extracted = process_args(args, argv, processors, keys=keys) return [extracted[key] for key in keys] diff --git a/Tools/c-analyzer/c_common/tables.py b/Tools/c-analyzer/c_common/tables.py index 411152e3f9498..85b501925715d 100644 --- a/Tools/c-analyzer/c_common/tables.py +++ b/Tools/c-analyzer/c_common/tables.py @@ -1,4 +1,6 @@ import csv +import re +import textwrap from . import NOT_SET, strutil, fsutil @@ -212,3 +214,177 @@ def _normalize_table_file_props(header, sep): else: sep = None return header, sep + + +################################## +# stdout tables + +WIDTH = 20 + + +def resolve_columns(specs): + if isinstance(specs, str): + specs = specs.replace(',', ' ').strip().split() + return _resolve_colspecs(specs) + + +def build_table(specs, *, sep=' ', defaultwidth=None): + columns = resolve_columns(specs) + return _build_table(columns, sep=sep, defaultwidth=defaultwidth) + + +_COLSPEC_RE = re.compile(textwrap.dedent(r''' + ^ + (?: + [[] + ( + (?: [^\s\]] [^\]]* )? + [^\s\]] + ) #